Optimization Toolbox

Risoluzione di problemi di ottimizzazione lineare, quadratica, conica, intera e non lineare

Optimization Toolbox™ offre funzioni al fine di trovare parametri in grado di minimizzare o massimizzare gli obiettivi e allo stesso tempo soddisfare i vincoli. Il toolbox include risolutori per la programmazione lineare (LP), la programmazione lineare mista intera (MILP), la programmazione quadratica (QP), la programmazione a cono di secondo ordine (SOCP), la programmazione non lineare (NLP), i minimi quadrati lineari vincolati, i minimi quadrati non lineari e le equazioni non lineari.

È possibile definire il proprio problema di ottimizzazione mediante l’uso di funzioni e matrici oppure specificando espressioni variabili che riflettano la matematica sottostante. È possibile usare la derivazione automatica delle funzioni obiettivo e di vincolo per soluzioni più rapide e più accurate.

I risolutori di questo toolbox si possono utilizzare per trovare soluzioni ottimali a problemi continui e discreti, per eseguire l’analisi di bilanciamento e incorporare metodi di ottimizzazione in algoritmi e applicazioni. Il toolbox consente di eseguire attività di ottimizzazione di un progetto, come la stima dei parametri, la selezione dei componenti e la regolazione dei parametri. Consente anche di trovare soluzioni ottimali nelle applicazioni, come l’ottimizzazione del portafoglio, la gestione e il trading dell’energia e la pianificazione di produzione.

Inizia ora:

Definizione dei problemi di ottimizzazione

Modella un problema decisionale o di progettazione come un problema di ottimizzazione. Imposta le decisioni e i parametri di progettazione come variabili di ottimizzazione. Usa questi dati nella definizione di una funzione obiettivo per l’ottimizzazione e usa dei vincoli per limitare i possibili valori variabili.

Modellazione

Trasforma la descrizione di un problema in forma matematica definendo variabili, obiettivi e vincoli, in modo da poter procedere alla soluzione con tecniche di ottimizzazione.

Ottimizzazione basata su problemi

Scrivi obiettivi e vincoli usando espressioni di variabili di ottimizzazione. Risolvi i problemi in modo più rapido ed efficace applicando la derivazione automatica sulle espressioni non lineari. Applica un risolutore selezionato automaticamente.

Ottimizzazione basata su risolutori

Scrivi obiettivi e vincoli non lineari usando le funzioni; scrivi obiettivi e vincoli lineari usando le matrici di coefficienti. Crea e risolvi il problema in modo interattivo con l’attività Optimize di Live Editor, poi genera codice da condividere o usare nella tua applicazione.

Risoluzione dei problemi di ottimizzazione

Applica un risolutore al problema di ottimizzazione per trovare la soluzione ottimale: una serie di valori variabili di ottimizzazione in grado di produrre il valore ottimale della funzione obiettivo, se presente, e rispettino i vincoli, se presenti.

Scelta del risolutore

Usa l’attività Optimize di Live Editor per aiutarti a scegliere un risolutore adatto al tipo di problema quando usi l’approccio basato su risolutori. Quando si implementa l’approccio basato su problemi, il risolutore viene selezionato automaticamente.

Impostazione delle opzioni

Imposta le opzioni di ottimizzazione per regolare il processo di ottimizzazione, ad esempio per scegliere l’algoritmo di ottimizzazione usato dal risolutore oppure per impostare le condizioni di conclusione. Imposta le opzioni per monitorare e tracciare i progressi del risolutore di ottimizzazione.

Verifica e miglioramento dei risultati

Verifica i messaggi di chiusura, le misure di ottimalità e la visualizzazione iterativa per valutare la soluzione. Migliora le prestazioni per i problemi non lineari adottando la derivazione automatica, aggiungendo dei gradienti o usando il calcolo parallelo per stimare i gradienti.

Monitoraggio dei progressi del risolutore con la visualizzazione iterativa.

Programmazione non lineare

Risolvi problemi di ottimizzazione che presentano un obiettivo non lineare o sono soggetti a vincoli non lineari.

Risolutori

Applica algoritmi del simplesso Nelder-Mead, trust-region o quasi-Newton per risolvere problemi senza vincoli. Applica algoritmi di tipo interior-point, di programmazione quadratica sequenziale (SQP) o trust-region-reflective per risolvere problemi con vincoli.

Applicazioni

Usa l’ottimizzazione non lineare per stimare e regolare i parametri, individuare le progettazioni ottimali, calcolare le traiettorie ottimali, costruire portafogli robusti e altre applicazioni in cui le variabili sono collegate da un rapporto non lineare.

Programmazione lineare, quadratica e conica

Risolvi problemi di ottimizzazione convessa che presentano obiettivi quadratici o lineari e che sono soggetti a vincoli lineari o conici di secondo ordine.

Risolutori per la programmazione lineare

Applica algoritmi del simplesso duale o di tipo interior-point per risolvere programmi lineari.

Regione praticabile e soluzione ottimale per un programma lineare.

Risolutori per la programmazione quadratica e conica di secondo ordine

Applica algoritmi di tipo interior-point, active-set o trust-region-reflective per risolvere programmi quadratici. Applica metodi interior-point per risolvere programmi conici di secondo ordine.

Regione praticabile e soluzione ottimale per un programma quadratico.

Applicazioni

Usa la programmazione lineare per problemi quali l’allocazione delle risorse, la pianificazione della produzione, il blending e la pianificazione degli investimenti. Usa la programmazione quadratica e conica di secondo ordine per problemi quali l’ottimizzazione di progettazione, l’ottimizzazione del portafoglio e il controllo delle centrali idroelettriche.

Strategia di controllo ottimale trovata grazie alla programmazione quadratica.

Programmazione lineare mista intera

Risolvi problemi di ottimizzazione che presentano obiettivi lineari soggetti a vincoli lineari, con l’ulteriore vincolo per cui alcune o tutte le variabili devono avere un valore intero.

Risolutori

Risolvi problemi di programmazione lineare mista intera usando l’algoritmo Branch and Bound, che include la pre-elaborazione, l’euristica per la generazione di punti praticabili e i piani di taglio.

Applicazione dell’algoritmo Branch and Bound. 

Algoritmi basati sulla programmazione lineare mista intera

Usa il risolutore di programmazione lineare mista intera per costruire algoritmi specifici.

Tragitto più breve per passare da ogni città una sola volta.

Applicazioni

Modella con le variabili intere in presenza di decisioni on/off o vincoli logici, nonché quando i valori delle variabili devono essere integrali. Tra le applicazioni tipiche compaiono problemi di routing, programmazione, pianificazione, assegnazione e capital budgeting.

Programmazione per due generatori con prezzi dell’elettricità variabili.

Ottimizzazione multiobiettivo

Risolvi problemi di ottimizzazione che hanno funzioni multiobiettivo soggette a una serie di vincoli.

Risolutori

Formula problemi di tipo goal-attainment o minimax. Usa la versione goal-attainment in presenza di valori obiettivo opzionalmente ponderati per ciascuno degli obiettivi. Usa la versione minimax per minimizzare il valore di caso peggiore di una serie di funzioni obiettivo.

Fronte di Pareto calcolato usando la funzione fgoalattain.

Applicazioni

Usa l’ottimizzazione multiobiettivo quando sono necessari dei tradeoff per obiettivi in conflitto. Degli esempi possono essere il peso e la forza nella progettazione strutturale e il rischio e la redditività nell’ottimizzazione del portafoglio.

Risposta in ampiezza per coefficienti del filtro iniziali e ottimizzati.

Risoluzione di equazioni e minimi quadrati

Risolvi problemi di minimi quadrati non lineari e sistemi non lineari di equazioni soggetti a vincoli di limite. Risolvi problemi di minimi quadrati lineari soggetti a vincoli di limite e lineari.

Confronto tra l’approccio locale e l’approccio globale.

Applicazioni dei minimi quadrati lineari

Usa i risolutori dei minimi quadrati lineari per adattare un modello lineare a dei dati acquisiti o per risolvere un sistema di equazioni lineari, compresi i casi in cui i parametri sono soggetti a vincoli di limite e lineari.

Recupero di un’immagine sfocata risolvendo un problema di minimi quadrati lineari.

Applicazioni dei minimi quadrati non lineari

Usa i risolutori dei minimi quadrati non lineari per adattare un modello non lineare a dei dati acquisiti o per risolvere un sistema di equazioni non lineari, compresi i casi in cui i parametri sono soggetti a vincoli di limite.

Fitting di un percorso circolare su un sistema di Lorenz di equazioni differenziali ordinarie.

Distribuzione

Costruisci strumenti di progettazione e supporto decisionale basati sull’ottimizzazione, integrali con sistemi enterprise e distribuisci gli algoritmi di ottimizzazione sui sistemi embedded.

Supporto per MATLAB Compiler

Usa MATLAB Compiler™ e MATLAB Compiler SDK™ per distribuire modelli di ottimizzazione MATLAB® come eseguibili standalone, app per il web, librerie condivise C/C++, assembly Microsoft® .NET, classi Java® e pacchetti Python®.

App che calcola un programma di generazione di potenza ottimale.

Generazione di codice

Genera codice C o C++ portabile e leggibile per risolvere problemi di ottimizzazione utilizzando MATLAB Coder™. Compila il codice generato per qualsiasi hardware, compresi i sistemi embedded.

Report di MATLAB Coder per una funzione di ottimizzazione della traiettoria.

Ultime Novità

Attività Optimize di Live Editor

Creazione e soluzione interattiva di problemi di ottimizzazione

Derivazione automatica

Risoluzione di problemi nel modo più rapido e accurato possibile usando gradienti di funzioni obiettivo e di vincolo calcolati automaticamente

Programmazione conica di secondo ordine

Risoluzione di problemi di ottimizzazione convessa con vincoli conici di secondo ordine, vincoli lineari e un obiettivo lineare

Generazione di codice

Generazione di codice C/C++ per risolvere sistemi di equazioni non lineari con fsolve (richiede MATLAB Coder)

Generazione di codice

Generazione di codice C/C++ per risolvere problemi dei minimi quadrati non lineari con lsqcurvefit o lsqnonlin (richiede MATLAB Coder)

Consulta le note della release per ulteriori informazioni su queste caratteristiche e sulle funzioni corrispondenti.