Passa ai contenuti principali

OpenOpt

La mia predilezione per il python come linguaggio ospite per framework di ottimizzazione non è un mistero per chi mi segue e per chi lavora con me.
Dopo aver parlato più volte di pulp, ora vorrei portare in risalto OpenOpt.
Si tratta di un framework di sviluppato all'Accademia Nazionale delle Scienze Ucraina dal dipartimento di ottimizzazione. Le potenzialità mi sembrano interessanti, anche se non l'ho mai provato in concreto.

Il livello di astrazione a cui si pone è molto basso, rispetto a pulp. Ad esempio, un problema di programmazione lineare si scrive come:

"""

Example:

Let's concider the problem

15x1 + 8x2 + 80x3 -> min (1)

subjected to

x1 + 2x2 + 3x3 <= 15 (2)

8x1 + 15x2 + 80x3 <= 80 (3)

8x1 + 80x2 + 15x3 <=150 (4)

100x1 + 10x2 + x3 >= 800 (5)

80x1 + 8x2 + 15x3 = 750 (6)

x1 + 10x2 + 100x3 = 80 (7)

x1 >= 4 (8)

-8 >= x2 >= -80 (9)

"""

from numpy import *

from scikits.openopt import LP

f = array([15,8,80])

A = mat('1 2 3; 8 15 80; 8 80 15; -100 -10 -1') # numpy.ndarray is also allowed

b = [15, 80, 150, -800] # numpy.ndarray, matrix etc are also allowed

Aeq = mat('80 8 15; 1 10 100') # numpy.ndarray is also allowed

beq = (750, 80)


lb = [4, -80, -inf]

ub = [inf, -8, inf]

p = LP(f, A=A, Aeq=Aeq, b=b, beq=beq, lb=lb, ub=ub)

#or p = LP(f=f, A=A, Aeq=Aeq, b=b, beq=beq, lb=lb, ub=ub)

r = p.solve('cvxopt_lp') # CVXOPT must be installed

"""

Other:

r = p.solve('glpk') # CVXOPT & glpk must be installed

r = p.solve('lpSolve')#lp_solve must be installed

or using converter lp2nlp:

r = p.solve('nlp:ralg', xtol=1e-8, ftol=1e-7) # for ralg reducing xtol, ftol is usually required

r = p.solve('nlp:algencan')

r = p.solve('nlp:ipopt')

r = p.solve('nlp:scipy_slsqp')

"""

print 'objFunValue:', r.ff # should print 204.48841578

print 'x_opt:', r.xf # should print [ 9.89355041 -8. 1.5010645 ]

però questo può essere interessante in alcuni contesti, quali la prototipazione di solver ad-hoc.
All'indirizzo http://openopt.blogspot.com/ si trova un blog dove vengono pubblicati gli annunci relativi ad OpenOpt.
Sono graditi i commenti di eventuali utilizzatori.

Commenti

Post popolari in questo blog

PuLP – Un valido strumento per la didattica

L'insegnamento dei concetti di base della ricerca operativa, ovvero la programmazione lineare, ha trovato nel corso degli ultimi anni diversi strumenti di supporto. Sono ormai parecchi i software gratuiti e open source che permettono agli studenti e agli insegnanti di toccare con mano le nozioni e i concetti spiegati e studiati sui banchi. Ricordiamo, ad esempio, glpk che con il suoi linguaggio di modellazione MathProg permettete di scrivere e risolvere anche complessi modelli di programmazione lineare intera. Oppure citiamo anche lp_solve che con il suo ambiente impropriamente chiamato lp_solve IDE permette di scrivere e risolvere modelli di programmazione lineare direttamente nella formulazione matematica. A mio avviso però le proposte appena citate sono limitate nella potenza espressiva e nelle capacità di integrarsi con altri software o moduli esterni. Queste limitazioni sono egregiamente risolte da PuLP : un modellatore di problemi di programmazione lineare intera basato

Ci arricchiremo con la ricerca operativa?

A questa domanda forse possiamo rispondere sì :-) , rimandando al lavoro molto fresco ed interessante di Giancarlo Volpe dal titolo " Scommesse sportive: un modello di Ricerca Operativa che descrive la “vincita perfetta” " E' possibile scaricare il documento da scribd.com . Dall'apprezzabile contenuto didattico la parte entrale, dove si illustra passo passo come è possibile usare il risolutore di excel per applicarlo al modello descritto. Buona lettura e giocate con moderazione. Un Modello di Ricerca Operativa per Scommesse Sportive

Dispense di ricerca operativa

Ho trovato sulla home page del prof. Agnetis, delle interessanti dispense di ricerca operativa. I temi trattati sono tutti molto interessanti: Appunti sul duale del problema del massimo flusso Appunti sui problemi di matching Appunti su classi di complessità e problemi NP-completi Appunti sul problema del TSP euclideo Appunti sulla generazione di colonne Appunti sui modelli di lot sizing: Wagner-Whitin, Zangwill, Florian-Klein Appunti sui problemi di scheduling Appunti sui metodi metaeuristici di ricerca Introduzione all'ottimizzazione non vincolata   Introduzione all'ottimizzazione vincolata Esercizi di ottimizzazione non vincolata  Condizioni di KKT e Programmazione Lineare  Esercizi di ottimizzazione vincolata   Raccolta di esercizi di PL svolti  Esercizi di esame di PL svolti Esercizi di PLI svolti Appunti sui metodi basati sul rilassamento Lagrangiano Esercizi d'esame (R.O.) di ottimizzazione non vincolata e vincolata Ottimizzazione nella Gestione