2011-09-30 20 views
7

Sto cercando di risolvere alcune semplici equazioni in .NET. Mi sono imbattuto in Math.NET e lo valuto. I metodi Solver() sembravano essere ciò di cui avevo bisogno ma non riesco a capire come utilizzare le condizioni laterali con questo metodo.Risolvere equazioni in .NET

Per illustrare il mio problema vi darò un esempio:

Given: 
0 <= a_i <= 100 
0 <= b <= 100 
0 <= c 
a_i, b and c are given 

x_1, ..., x_n should be optimized 

f(x) = x_1*a_1 + x_2*a_2 + ... + x_n*a_n = b 

Side conditions: 
g(x) = x_1 + x_2 + ... + x_n = c 
0 <= x_i 

È possibile risolvere tale problema utilizzando il metodo risolvere o qualsiasi altro componente del Math.NET o Sapete qualsiasi (gratuito per uso commerciale) Libreria .NET che può essere utilizzata per risolvere questo? Non vorrei scrivere da solo un algoritmo per un problema così comune.

migliori saluti & grazie in anticipo

+0

possibile duplicato di [Libreria di ottimizzazione gratuita in C#] (http://stackoverflow.com/questions/1211201/free-optimization-library-in-c) – duffymo

risposta

1

È necessario un ottimizzatore con vincoli come il metodo simplex o l'ottimizzazione non lineare Marquardt.

+0

il problema mi sembra piuttosto lineare;) - proprio dal libro, Simplex o Interior Points vanno bene per questo - ma questa è davvero una risposta? – Carsten

+0

Non riesci a trovare quello che cerchi, a meno che tu non ne conosca il nome. – duffymo

+0

Alla fine ho deciso di portare il mio Simplex che ho scritto una volta all'università in NET, funziona bene :) – Jay

2

ALGLIB è grande per questi compiti. Controlla la loro pagina su constrained optimization.

EDIT: Ha sia una licenza libera (GPL) che una licenza commerciale a partire da $ 370.

+0

grazie - non ho controllato per un po 'di tempo - + 1 per il promemoria;) – Carsten

2

IMHO Microsoft Solver Foundation è la strada da percorrere per questo. La versione Express è gratuita AFAIK e abbastanza potente per la maggior parte delle applicazioni più piccole.

Come vedo ora la versione Express è solo indentata per l'esplorazione - ma c'è (ora?) Uno standard-Lib per gli abbonati MSDN quindi non rimuoverò questo post ancora, poiché potresti avere una sottoscrizione MSDN.

Problemi correlati