Ottimizzazione basata su problemi con Optimization Toolbox
Utilizza una sintassi naturale per definire e risolvere problemi di ottimizzazione, problemi di minimi quadrati e sistemi di equazioni non lineari.
| 1. Definizione del problema |
|---|
Seguendo il workflow basato su problemi, crea innanzitutto un problema di ottimizzazione con Esempi: assignmentProb = optimproblem responseProb = optimproblem initialStateProb = eqnproblem |
| 2. Definizione delle variabili |
|---|
Crea variabili di ottimizzazione con Esempi: x = optimvar("x");
y = optimvar("y");
employees = ["a","b","c"];
tasks = ["t1","t2","t3"];
assign = optimvar("assign",employees,tasks,"LowerBound",0,"UpperBound",1,"Type","integer")
|
| 3. Definizione delle espressioni da utilizzare nella funzione obiettivo, nei vincoli e nelle equazioni | |
|---|---|
Specifica direttamente una Esempi: response = -3*(y - x.^3 - x).^2 - (x - 4/3).^2; totalCost = sum(sum(cost.*assign)); sumByEmployee = sum(assign,2); sumByTask = sum(assign,1); |
Utilizza qualsiasi funzione MATLAB® convertendola in un’espressione di ottimizzazione con Esempi: a = 4; xyfcn = @(x,y,a)gamma(y)*a*x.^2; xyexpr = fcn2optimexpr(xyfcn,x,y,a); |
| 4. Definizione della funzione obiettivo | |
|---|---|
Imposta il criterio dell’ottimizzazione. Imposta la funzione obiettivo con una |
Esempi: responseProb.ObjectiveSense = "maximize"; responseProb.Objective = response; assignmentProb.ObjectiveSense = "minimize"; assignmentProb.Objective = totalCost; |
| 5. Definizione di vincoli ed equazioni |
|---|
Combina le Esempi: responseProb.Constraints.ellipse = x.^2/2 + y.^2/4 <= 1; responseProb.Constraints.xyconstr = xyexpr >= 1; assignmentProb.Constraints.oneTaskPerEmployee = sumByTask <= 1; assignmentProb.Constraints.oneEmployeePerTask = sumByEmployee == 1; initialStateProb.Equations.eq1 = x*cos(y) + y*sin(x) == 1/2; initialStateProb.Equations.eq2 = exp(-exp(-(x + y))) == y*(1 + x^2); |
| 6. Verifica | |
|---|---|
Visualizza con show e showbounds. Scrivi su un file con write e writebounds.
|
Visualizza con il browser dell’area di lavoro.
|
| 7. Risoluzione e analisi | |
|---|---|
Risolvi il problema, specificando un punto iniziale per i problemi non lineari. La funzione Esempio: x0.x = 0; x0.y = 0; [sol,fval,exitflag] = solve(responseProb,x0)
|
Risolvi con le opzioni di ottimizzazione. Esempio: o = optimoptions(assignmentProb,"MaxTime",10); sol = solve(assignmentProb,"Options",o) Altre azioni
|