Optimisation avec Wolfram | Choses à essayer

Effectuez des modifications et exécutez n’importe quel morceau de code en cliquant à l’intérieur du code et en appuyant sur
+
.
Modélisez, résolvez et analysez des conceptions. L’optimisation avec Wolfram dispose d’un ensemble complet d’outils permettant de trouver la meilleure conception ou de prendre la meilleure décision en fonction des contraintes, entièrement intégrés avec l’apprentissage automatique, les statistiques, les données intégrées immédiatement calculables et bien plus encore.

Trouvez des extrema locaux ou globaux

Tracez une fonction qui possède des extrema globaux et locaux :
Exécuter
In[]:=
Plot[
4
x
+
3
x
-5
2
x
,{x,-3,3}]
Recherchez un minimum local au voisinage de
x1
en utilisant des méthodes numériques :
Exécuter
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,1}]
Recherchez maintenant un minimum local au voisinage de
x-1.8
en utilisant des méthodes numériques :
Run
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,-1.8}]
Minimize
trouve le minimum global exact, tandis que
FindMinimum
renvoie les minima locaux rencontrés lors de la recherche :
Exécuter
In[]:=
Minimize[
4
x
+
3
x
-5
2
x
,x]
Des contraintes peuvent également être incluses pour trouver la valeur minimale dans un domaine restreint :
Exécuter
In[]:=
Minimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
NMinimize
peut être utilisé avec la même syntaxe que
Minimize
si vous souhaitez obtenir des résultats numériques. Remarquez que la valeur minimale sur un domaine restreint correspond au minimum local trouvé lors de la recherche précédente :
Exécuter
In[]:=
NMinimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
Sans domaine restreint, il vise à trouver des minima globaux et à renvoyer des résultats numériques :
Exécuter
In[]:=
NMinimize[
4
x
+
3
x
-5
2
x
,x]
Visualisez les minima globaux et locaux qui ont été trouvés :
Exécuter
In[]:=
Plot
4
x
+
3
x
-5
2
x
,{x,-3,3},Epilog->
Epilog for global and local minima


Trouvez des extrema dans des dimensions supérieures

Vous pouvez utiliser la même fonctionnalité dans des dimensions plus élevées. Définissez une fonction objective et des contraintes que vous pouvez visualiser en trois dimensions :
Exécuter
In[]:=
objective=3Sin[
2
x
+
2
(y-1)
]-x-2y;​​constraints=Norm[{x,y}]>=1&&
4
x
+
4
y
<=10;
Visualisez la fonction objective sur la région contrainte :
Exécuter
regionandobjective=Show​​Plot3Dobjective,{x,-2,2},{y,-2,2},AxesLabel{x,y,z},
Options settings
,​​DiscretizeRegionImplicitRegion[constraints&&z-9,{{x,-2,2},{y,-2,2},z}],
Options settings
​​
Trouvez le minimum local de la fonction objective au voisinage de
(0,1) 
:
Exécuter
In[]:=
{localmin3D,localminimizer3D}=FindMinimum[objective,{{x,0},{y,1}}]
Trouvez le minimum global de la fonction objectif dans la région contrainte :
Exécuter
In[]:=
{globalmin3D,globalminimizer3D}=NMinimize[{objective,constraints},{x,y}]
Visualisez le minimum global (en rouge) et le minimum local (en bleu) qui ont été trouvés :
Exécuter
In[]:=
Show[​​regionandobjective,​​Graphics3D[{​​PointSize[Large],​​Blue,Point[{x,y,localmin3D}]/.localminimizer3D,​​Red,Point[{x,y,globalmin3D}]/.globalminimizer3D​​}]​​]

Minimisez une fonction objective soumise à des contraintes

Définissez les régions en termes de contraintes, d’intersections et de formes intégrées :
Exécuter
In[]:=
ℛ
1
=RegionIntersection
,ImplicitRegion[2x-y>=3,{x,y}];​​
ℛ
2
=RegionIntersection
,ImplicitRegion[2x-y<3,{x,y}];
Visualisez une fonction objective sur les régions précédemment définies :
Exécuter
In[]:=
Show​​Plot3D
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
,
Options settings
,​​Plot3D
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
2
,
Options settings
​​
Utilisez
NMinimize
pour trouver numériquement le minimum de la fonction objective sur la première des deux régions définies ci-dessus :
Exécuter
In[]:=
NMinimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
Utilisez
Minimize
pour trouver le minimum exact de la fonction objective sur la région d’intérêt :
Exécuter
In[]:=
{minvalue,minimizer}=Minimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
Affichez le minimum contraint trouvé ainsi que la fonction objective :
Exécuter
In[]:=
Show​​Plot3D
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
,
Options settings
,​​Plot3D
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
2
,
Options settings
,​​Graphics3D[{Red,PointSize[Large],Point[{x,y,minvalue}/.minimizer]}]​​

Résolvez des problèmes d’optimisation convexe

Définissez deux régions implicites par le biais de contraintes :
Exécuter
In[]:=

1
=
2
x
+
2
y
<=1;​​

2
=
2
(x-2)
+
2
(y-1)
<=1;
Visualisez les régions :
Exécuter
In[]:=
RegionPlot[{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False]
Trouvez la paire de points (un de chaque région) qui minimise la distance entre eux :
Exécuter
In[]:=
closest2D=ConvexOptimization[Norm[p1-p2],{},{p1∈ImplicitRegion[

1
,{x,y}],p2∈ImplicitRegion[

2
,{x,y}]}]
Visualisez la paire de points trouvés et la distance qui les sépare :
Exécuter
In[]:=
RegionPlot{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False,Epilog->
Epilog for points and line

Définissez rapidement des régions en 3D à l’aide de formes intégrées :
Exécuter
In[]:=

1
=Dodecahedron[{0,0,0},{0,0}];​​

2
=Ellipsoid[{4,0,0},DiagonalMatrix[{2,3,1}]];
Visualisez les formes :
Exécuter
In[]:=
Graphics3D[{

1
,

2
}]
Trouvez la paire de points (un dans chaque région) qui minimise la distance entre les deux régions :
Exécuter
In[]:=
closest3D=ConvexOptimization[Norm[p1-p2],{},{p1∈

1
,p2∈

2
}]
Visualisez les points trouvés avec une ligne les reliant :
Exécuter
In[]:=
Graphics3D[{

1
,

2
,{Red,Thick,Line[{p1,p2}/.closest3D]}}]
Résolvez et visualisez une version dynamique de l’exemple précédent :
Exécuter
In[]:=
Manipulate[​​shape1=Dodecahedron[{0,0,0},{theta,phi}];​​shape2=Ellipsoid[{4,0,0},DiagonalMatrix[{2,3,1}]];​​dynamic3D=ConvexOptimization[Norm[p1-p2],{},{p1∈shape1,p2∈shape2}];​​Graphics3D[{shape1,shape2,{Red,Thick,Line[{p1,p2}/.dynamic3D]}},PlotRange->{{-1.5,5.5},{-2,2},{-1.4,1.4}}​​],​​{{theta,0,"Rotation about Z"},0,2Pi},{{phi,0,"Rotation about Y"},0,2Pi},​​ControlPlacement->Top,SaveDefinitions->True​​]​​

Utilisez l’ajustement optimal pour lisser les données

Trouvez l’itinéraire le plus court

Obtenez des solutions exactes aux problèmes d’optimisation symbolique

Obtenez des solutions paramétriques aux problèmes d’optimisation symbolique