Contenuto principale

Ottimizzare

Ottimizzare o risolvere equazioni in Live Editor

Descrizione

L'attività Optimize (Ottimizza) consente di scegliere tra due modalità per ottimizzare i problemi o per risolvere sistemi di equazioni non lineari in modo interattivo:

  • Basata sui problemi (consigliata): creare variabili simboliche di ottimizzazione ed espressioni per rappresentare la funzione obiettivo e i vincoli o le equazioni.

  • Basata sul risolutore: rappresentare la funzione obiettivo e i vincoli o le equazioni utilizzando il codice standard di MATLAB®.

L'attività genera automaticamente codice MATLAB per lo script live.

Utilizzando la versione basata sui problemi di questa attività, è possibile:

  • Specificare gli array delle variabili di ottimizzazione, compresi i loro limiti e i valori iniziali.

  • Specificare il tipo di problema: minimizzazione, massimizzazione, fattibilità o risoluzione di equazioni.

  • Specificare le funzioni obiettivo e di vincolo, scrivendo le espressioni oppure selezionandole dall'elenco delle funzioni disponibili.

  • Scegliere, opzionalmente, un risolutore e specificare le opzioni non predefinite.

  • Eseguire l'ottimizzazione.

Utilizzando la versione basata sul risolutore di questa attività, è possibile:

  • Scegliere un risolutore in base alle caratteristiche del problema. Se si dispone di Global Optimization Toolbox, è possibile scegliere di utilizzare anche i relativi risolutori.

  • Specificare le funzioni obiettivo e di vincolo, scrivendo le funzioni oppure selezionandole dall'elenco delle funzioni disponibili.

  • Specificare le opzioni del risolutore.

  • Eseguire l'ottimizzazione.

Per iniziare ad utilizzare Optimize (Ottimizza), vedere Get Started with Solver-Based Optimize Live Editor Task e Introduzione a Optimize task di Live Editor basato sui problemi. Per suggerimenti su come utilizzare Optimize (Ottimizza), vedere Use Solver-Based Optimize Live Editor Task Effectively o Use Problem-Based Optimize Live Editor Task Effectively. Al momento non è possibile utilizzare i risolutori fseminf, GlobalSearch o MultiStart con Optimize (Ottimizza).

Per informazioni generali sulle attività di Live Editor, vedere Add Interactive Tasks to a Live Script.

Optimize task in Live Editor: Choose between problem-based (recommended) and solver-based

Apri l'attività

Per aggiungere Optimize task a uno script live nell'Editor di MATLAB, nella scheda Insert in Live Editor, selezionare Task > Optimize.

Insert an Optimize Live Editor task

In alternativa, in un blocco di codice all'interno dello script, digitare una parola chiave pertinente, come optim o fmincon. Selezionare Optimize tra i suggerimenti di completamento del comando.

Choosing Optimize from command completion suggestions

Dopo aver inserito l'attività, selezionare Problem-based (recommended) o Solver-based.

Parametri

espandi tutto

I nomi delle variabili basati sui problemi sono dinamici; è possibile scegliere qualsiasi nome si desideri, nel rispetto delle consuete restrizioni relative alla denominazione (vedere Nomi delle variabili).

Approccio basato sui problemi

Tipo di problema, specificato facendo clic sul pulsante contrassegnato con l'etichetta corrispondente.

Funzione obiettivo, specificata come espressione di ottimizzazione, funzione locale o file di funzione. Si applica quando Goal è Minimize o Maximize.

Vincoli sulla soluzione, specificati come espressione di ottimizzazione, funzione locale o file di funzione. Aggiungere vincoli al problema facendo clic sul pulsante +.

Equazioni del problema, specificate come espressione di ottimizzazione, funzione locale o file di funzione. Si applica quando Goal è Solve equations. Aggiungere equazioni al problema facendo clic sul pulsante +.

Stato dell'attività, specificato come Define problem o Solve problem. Per ulteriori informazioni, vedere Use Problem-Based Optimize Live Editor Task Effectively.

Approccio basato sul risolutore

Tipo di funzione obiettivo, specificato facendo clic sul pulsante contrassegnato con l'etichetta corrispondente. La funzione obiettivo selezionata determina quali risolutori sono disponibili e quale risolutore è consigliato per il problema (vedere Solver).

Tipi di vincoli, specificati facendo clic sui pulsanti contrassegnati con le etichette corrispondenti. È possibile specificare più di un tipo di vincolo. I vincoli selezionati determinano quali risolutori sono disponibili e quale risolutore è consigliato per il problema (vedere Solver).

Risolutore di ottimizzazione che MATLAB utilizza per risolvere il problema, specificato selezionando un risolutore dall'elenco dei risolutori disponibili. I risolutori disponibili e quello consigliato dipendono dalla licenza in uso e dalle opzioni Objective e Constraints selezionate.

Limitazioni

  • Al momento, Optimize (Ottimizza) presenta le seguenti limitazioni per l'ottimizzazione multiobiettivo.

    • È necessario specificare le funzioni obiettivo utilizzando un'unica funzione con più output. In altre parole, la funzione obiettivo deve restituire un vettore di valori, con una voce per ciascun obiettivo.

    • Tutte le funzioni obiettivo devono utilizzare lo stesso orientamento: minimizzazione per l'attività basata sul risolutore e minimizzazione o massimizzazione per l'attività basata sui problemi.

Suggerimenti

  • Per le funzioni con input aggiuntivi, le attività Optimize (Ottimizza) basate sul risolutore e quelle basate sui problemi presentano requisiti leggermente diversi.

    • Basate sul risolutore: scegliere la variabile di ottimizzazione e specificare quali variabili del workspace contengono gli input di dati fissi. Ad esempio, vedere Place Optimization Variables in One Vector and Data in Other Variables, che contiene tre input della funzione:

      Optimization input = vars, Fixed input y = y, Fixed input w = w.

      Optimize (Ottimizza) genera codice solo dopo che sono stati specificati tutti gli input della funzione.

    • Basate sui problemi: specificare il nome di una variabile di ottimizzazione o di una variabile del workspace per ciascun input della funzione. Se il nome di un argomento di input nella firma della funzione corrisponde al nome della variabile di ottimizzazione o del workspace già esistente, Optimize (Ottimizza) seleziona automaticamente quel nome.

      Function inputs = x, y, a.

      Optimize (Ottimizza) genera codice solo dopo che sono stati specificati tutti gli input della funzione.

  • Optimize (Ottimizza) non è in grado di analizzare una funzione contenente l'input varargin o una funzione che contiene un errore.

  • Se si seleziona una funzione da un file, Optimize (Ottimizza) aggiunge la posizione del file al percorso di MATLAB.

  • Se Optimize (Ottimizza) presenta un errore di analisi o se più funzioni locali hanno lo stesso nome, l'elenco delle funzioni locali disponibili è vuoto.

Cronologia versioni

Introdotto in R2020b

espandi tutto

Vedi anche

App

Funzioni