2010-04-15 2 views
5

Ho un'applicazione in C#, ho bisogno di fare alcuni calcoli di ottimizzazione, come fa Excel Solver Add-in, una opzione è sicuramente quella di scrivere la mia implementazione del solutore, ma ho poco tempo a disposizione, quindi sono esaminando le librerie già esistenti che possono aiutarmi con questo.Come implementare la funzionalità di Excel Solver in C#?

Ho provato Microsoft Solver Foundation, che sembra abbastanza pulito e interessante, il problema è che non sembra funzionare con il tipo di calcoli che devo fare.

Alla fine di questa domanda sto aggiungendo le informazioni sui calcoli che devo eseguire e ottimizzare.

Quindi in pratica la mia domanda è se qualcuno di voi sa di qualsiasi altra libreria che posso usare per questo scopo, o qualsiasi tutorial che possa aiutare a fare il mio risolutore, o qualsiasi idea che mi dia un indizio per risolvere questo problema .

Grazie.

Informazione supplementare:

Questi sono i dati che ho bisogno di calcolare:

Ho 7 variabili, permette di chiamarli var1, var2, ..., var7

I vincoli per queste variabili sono:

  • Tutti loro devono essere 0 = < varn < = 0,5 (dove n è il numero o f variabile)
  • La somma di tutte le variabili dovrebbe essere uguale a 1

L'obiettivo è quello di massimizzare la formula bersaglio, che in Excel assomiglia a questo:

(MMULT(TRANSPOSE(L26:L32),M14:M20))/(SQRT(MMULT(MMULT(TRANSPOSE(L26:L32),M4:S10),L26:L32)))

L'intervallo vedi in questa formula, L26: L32, è in realtà l'intervallo con le variabili da sopra, var1, var2, ..., varn.

M14: M20 e M4: S10 sono intervalli con dati che ottengo da fonti diverse, ci sono più probabilmente valori decimali.

come ho detto prima, stavo usando Microsoft Risolutore Fondazione, ho modellato praticamente tutto con esso, ho creato le funzioni che gestiscono le operazioni della formula bersaglio, ma quando ho cercato di risolvere il modello è sempre esito negativo, penso è a causa della complessità delle operazioni.

In ogni caso, volevo solo mostrare questi dati in modo da poter avere un'idea del tipo di calcoli che devo implementare.

risposta