Optimisation basée sur les problèmes avec Optimization Toolbox
Utiliser une syntaxe naturelle pour définir et résoudre des problèmes d'optimisation, des problèmes de moindres carrés et des systèmes d'équations non linéaires.
| 1. Définir le problème |
|---|
Dans le cadre du workflow basé sur les problèmes, commencez par créer un problème d'optimisation avec Exemples : assignmentProb = optimproblem responseProb = optimproblem initialStateProb = eqnproblem |
| 2. Définir les variables |
|---|
Créez des variables d'optimisation avec Exemples : 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. Définir les expressions à utiliser dans l'objectif, les contraintes et les équations | |
|---|---|
Spécifiez directement une Exemples : response = -3*(y - x.^3 - x).^2 - (x - 4/3).^2; totalCost = sum(sum(cost.*assign)); sumByEmployee = sum(assign,2); sumByTask = sum(assign,1); |
Utilisez n'importe quelle fonction MATLAB® en la convertissant en expression d'optimisation avec Exemples : a = 4; xyfcn = @(x,y,a)gamma(y)*a*x.^2; xyexpr = fcn2optimexpr(xyfcn,x,y,a); |
| 4. Définir l'objectif | |
|---|---|
Définissez le sens de l’optimisation. Définissez la fonction objectif avec une |
Exemples : responseProb.ObjectiveSense = "maximize"; responseProb.Objective = response; assignmentProb.ObjectiveSense = "minimize"; assignmentProb.Objective = totalCost; |
| 5. Définir les contraintes et les équations |
|---|
Combinez des Exemples : 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. Évaluer | |
|---|---|
Affichez les informations sur la variable d’optimisation avec show et showbounds. Enregistrer les informations sur la variable dans un fichier avec write et writebounds.
|
Visualisez les informations sur la variable dans le navigateur de l'espace de travail.
|
| 7. Résoudre et analyser | |
|---|---|
Résolvez le problème en indiquant un point initial pour les problèmes non linéaires. La fonction Exemple : x0.x = 0; x0.y = 0; [sol,fval,exitflag] = solve(responseProb,x0)
|
Résolvez le problème avec des options d'optimisation. Exemple : o = optimoptions(assignmentProb,"MaxTime",10); sol = solve(assignmentProb,"Options",o) Aller plus loin
|