Passa ai contenuti principali

Separazione per la programmazione lineare intera

La separazione, o generazione di tagli validi, è una tecnica classica per risolvere problemi di programmazione lineare intera con algoritmi del tipo branch and cut.

Dalla tesi di Giuseppe Andreello, curata dal prof. Matteo Fischetti, possiamo imparare molte cose. Di seguito il sommario della tesi.

Sommario
Problema considerato L'oggetto di questo lavoro di tesi `e stato testare l'efficacia dei tagli 0-1/2 usando Ilog CPLEX8, un ambiente per la programmazione lineare intera.
Come è stato risolto E' stata studiata una strategia di applicazione del separatore e di selezione dei tagli generati sulla base delle loro caratteristiche geometriche. Una implementazione in C++ di queste nuove funzionalità è stata affiancata all'implementazione originale, in C, della procedura di separazione.
Risultati principali I tagli 0-1/2 sono particolarmente efficaci per le versioni “lp” dei problemi di “satisfiability” e “maximum satisfiability”, la cui struttura è di tipo combinatorio. Più in generale si riescono a generare facilmente e sembrano essere utili per problemi la cui formulazione lp ha un numero di vincoli molto maggiore del numero di variabili. Nel caso opposto, invece, si generano con molta difficoltà e influenzano poco la soluzione del problema.
Significato dei risultati I tagli 0-1/2 sono utili in casi abbastanza semplici da individuare.
Inoltre, si è dimostrata molto efficace la selezione dei tagli da aggiungere alla formulazione sulla base delle loro proprietà geometriche.

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 ...

Digital Twin – Il caso Hyperloop

  Con il termine  hyperloop  si identificano una serie di tecnologie che promettono di rivoluzionare il trasporto di persone e cose. L’idea di base è molto semplice: far viaggiare all’interno di tubi, dove viene creato il vuoto, delle capsule ad alta velocità con binari a levitazione magnetica.   Credits: Virgin Hyperloop on instagram.com/p/CRHEB9ctQ6u/   Qualche tempo fa, mi è capitato di leggere un interessante articolo su come la progettazione della soluzione guidata dal gruppo Virgin, sia stata affiancata da analisi svolte mediante un sistema di ottimizzazione matematica. Come meglio descritto nel seguito, un digital twin, completamente basato su un modello matematico di ottimizzazione, permette di valutare le migliori scelte progettuali tenendo in considerazione i vari obiettivi di progetto.   La necessità di avere un digital twin nasce probabilmente dal fatto che le tecnologie  hyperloop  non hanno una base di partenza già esistente. No...

Che cos'è la riottimizzazione

Che cos'è la riottimizzazione Quando si parla di processi di ottimizzazione, la riottimizzazione copre un ruolo particolare. Scopriamo insieme cosa vuol dire. Introduzione Partiamo dalle basi e diciamo che risolvere un  problema di ottimizzazione  è la migliore risposta ad un problema del tipo:  “Qual è il modo migliore per fare una certa cosa? Facciamo un esempio.  Qual è il modo migliore per andare da Palermo a Bolzano, nel più breve tempo possibile, passando da 100 diverse località sparse per l’Italia?  Forse in tanti hanno riconosciuto il problema del  cammino di costo minimo : come visitare un grafo partendo da un nodo origine per arrivare ad un nodo destinazione minimizzando la somma dei costi, che vengono pagati ad ogni arco attraversato. A parte la difficoltà di descrivere in termini matematici il problema da risolvere e trascrivere tutto in un software funzionante, ci sono due aspetti specifici da tenere in considerazione: il...