2009-07-30 10 views
14

Sto esaminando le opzioni per un framework di programmazione (ottimizzazione) lineare e non lineare.Microsoft Solver Foundation soddisfa le mie esigenze?

I requisiti sono:

  1. Supporto problemi di programmazione non lineare con circa lineari e. 100-1000 variabili e fino a circa 1000 vincoli (ritengo che sia piuttosto semplice). I problemi non lineari hanno vincoli che implicano la moltiplicazione o la divisione di più variabili - niente di più complicato di così.

  2. si integra bene con gli ambienti MS (SQL Server, MS Access, NET, Excel)

  3. Bello avere sarebbe il supporto per ad hoc definizione del problema (vale a dire una sorta di linguaggio di scripting o di supporto per la definizione e risolvere il problema in un front-end Excel)

  4. Vorrei utilizzare Excel da solo, ma ho anche bisogno della possibilità di interfacciarlo al risolutore in modo programmatico (ambiente .NET) per i problemi più grandi.

Per l'accesso programmatico intendevo sviluppare un'interfaccia di astrazione per il risolutore (in modo da poter modificare i risolutori se necessario). Poi sono incappato in MS Solver Foundation (http://code.msdn.microsoft.com/solverfoundation) che ha già questa interfaccia. Mi chiedo se si adatta al conto in relazione alle nostre altre esigenze e che opinione gli utenti ne hanno.

risposta

4

Bene, Microsoft Solver Foundation non supporta la programmazione non lineare. A partire da gennaio 2010, il official word della squadra su questo è che stanno valutandolo ma che non è nei loro piani immediati.

Quindi ho impostato su AMPL come interfaccia di lingua di modellazione e KNITRO per l'algoritmo del risolutore. KNITRO sembra buono perché apparentemente consiste di tre algoritmi in uno (2 varianti di Interior Point Method e 1 di Active Set method). Vedi anche la pagina di Wikipedia per KNITRO.

Mi sono stabilito su AMPL e KNITRO dopo aver provato le versioni di valutazione di entrambi su un eccellente portale Web apparentemente finanziato dalla US National Science Foundation e US Dept of Energy negli Stati Uniti Argonne National Laboratory chiamato NEOS. NEOS fornisce un'interfaccia web per caricare il tuo modello matematico usando AMPL o GAMS (e per alcuni solutori, pochi altri) e poi recuperando i tuoi risultati tramite una pagina web dei risultati e via email. C'è presumibilmente un'interfaccia email per l'invio di problemi, ma non ho avuto successo nel farlo funzionare.

Ora, tutto questo costa denaro. KNITRO e AMPL sono prodotti commerciali. Alla fine la soluzione costerà circa $ 8000 US.Non economico. Se cerchi soluzioni gratuite, penso che le opzioni siano praticamente limitate a IPOPT per il solutore (che ho anche provato su NEOS e ho trovato che funzionava bene ma non ero in grado di selezionarlo a causa di altri motivi non tecnici) e rinunciare all'interfaccia AMPL. Puoi impostare il tuo problema tramite l'API di IPOPT. A differenza dell'API di Micrsoft Solver Foundation, l'interfaccia IPOPT è un po 'più complicata e, soprattutto, richiede che l'applicazione chiamante implementi i callback che calcolano le prime (e, possibilmente, seconde) derivazioni delle equazioni non lineari del modello. Le interfacce del linguaggio di modellazione (come AMPL) si prendono cura di questo per te perché sono in grado di calcolare derivati ​​simbolici da tutte le equazioni scritte nella loro lingua.

+6

a partire da ora [gli stati della pagina iniziale] (http://code.msdn.microsoft.com/solverfoundation) __ "Solver Foundation 3.0 offre nuove funzionalità per la creazione e la risoluzione di problemi non lineari modelli. "__ – bobobobo

+1

Solver Foundation è stato sospeso come prodotto standalone circa un anno fa: http://nathanbrixius.wordpress.com/2012/05/25/no-more-standalone-releases-of-microsoft-solver-foundation / – vitaut

2

In base ai requisiti elencati, sembra che Microsoft Solver Foundation soddisfi tutti i requisiti e alcuni. Leggi la rivista "What Is Solver Foundation?" documento sul sito della Solver Foundation. Si menziona la programmazione lineare, la programmazione non lineare, Develop in .NET, può essere utilizzata in Excel, Solver Foundation include anche un componente aggiuntivo Microsoft Office Excel per fornire un ambiente di modellazione completo in un'interfaccia familiare.

+2

Ho provato Microsoft Solver Foundation ma non supporta problemi non lineari. – Emmanuel

+4

A partire da novembre 2010 Solver Foundation 3.0 supporta modelli non lineari – bobobobo

3

Ho provato Solver Foundation su un problema che ho provato (senza successo) a risolvere in passato, e ho risolto il problema in 2 giorni, incluso l'apprendimento dell'API Solver. Le prestazioni del Risolutore sono eccezionali e l'API SFS (Solver Foundation Services) è IMPRESSIONANTE.

1

La libreria GLPK basata su GNU è una grande opzione gratuita. Ho gettato 1000 e 1000 problemi di colonne senza preoccupazioni. Sono necessari diversi formati di definizione dei problemi, ma per me è stato più facile utilizzarli tramite l'API C o C++. I miglioramenti ai motori dietro di esso si verificano in ogni momento. Credo che alcuni wrapper siano disponibili anche (per esempio, Python).