Wolfram Optimierung | Zum Ausprobieren

Nehmen Sie Änderungen vor und führen Sie jeden Code aus, indem Sie in den Code klicken und die Tastenkombination
+
drücken.
Entwürfe modellieren, lösen und analysieren. Wolfram Optimierung bietet ein umfassendes Set von Werkzeugen, um den besten Entwurf zu finden oder die beste Entscheidung unter Berücksichtigung gegebener Nebenbedingungen zu treffen – mit vollständig integrierten Funktionen im Bereich hochautomatisiertes maschinelles Lernen, Statistik, mit sofort berechenbaren eingebauten Daten und mehr.

Lokale oder globale Extrema finden

Plotten Sie eine Funktion, die sowohl globale als auch lokale Extrema hat:
Ausführen
In[]:=
Plot[
4
x
+
3
x
-5
2
x
,{x,-3,3}]
Suchen Sie nach einem lokalen Minimum in der Nähe von x==1 mit numerischen Methoden:
Ausführen
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,1}]
Suchen Sie nun mit numerischen Methoden nach einem lokalen Minimum bei
x-1.8
:
Ausführen
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,-1.8}]
Minimize
findet das exakte globale Minimum, während
FindMinimum
die bei der Suche gefundenen lokalen Minima zurückgib::
Ausführen
In[]:=
Minimize[
4
x
+
3
x
-5
2
x
,x]
Um das Minimum in einem eingeschränkten Bereich zu finden, können auch Beschränkungen angegeben werden:
Ausführen
In[]:=
Minimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
NMinimize
kann mit der gleichen Syntax wie
Minimize
verwendet werden, wenn numerische Ergebnisse gewünscht sind. Beachten Sie, dass der Mindestwert in einem eingeschränkten Bereich dem durch die vorherige Suche gefundenen lokalen Minimum entspricht:
Ausführen
In[]:=
NMinimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
Ohne einen begrenzten Bereich zielt es darauf ab, globale Minima zu finden und numerische Ergebnisse zu liefern:
Ausführen
In[]:=
NMinimize[
4
x
+
3
x
-5
2
x
,x]
Visualisieren Sie die gefundenen globalen und lokalen Minima:
Ausführen
In[]:=
Plot
4
x
+
3
x
-5
2
x
,{x,-3,3},Epilog->
Epilog for global and local minima


Extrema in höheren Dimensionen finden

Die gleiche Funktionalität kann auch in höheren Dimensionen verwendet werden. Definieren Sie eine Zielfunktion und Nebenbedingungen, die in drei Dimensionen visualisiert werden können:
Ausführen
In[]:=
objective=3Sin[
2
x
+
2
(y-1)
]-x-2y;​​constraints=Norm[{x,y}]>=1&&
4
x
+
4
y
<=10;
Veranschaulichen Sie die Zielfunktion in der eingeschränkten Region:
Ausführen
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
​​
Finden Sie das lokale Minimum der Zielfunktion in der Nähe von
(0,1)
:
Ausführen
In[]:=
{localmin3D,localminimizer3D}=FindMinimum[objective,{{x,0},{y,1}}]
Ermitteln Sie das globale Minimum der Zielfunktion in der begrenzten Region:
Ausführen
In[]:=
{globalmin3D,globalminimizer3D}=NMinimize[{objective,constraints},{x,y}]
Visualisieren Sie das gefundene globale Minimum (in rot) und das lokale Minimum (in blau):
Ausführen
In[]:=
Show[​​regionandobjective,​​Graphics3D[{​​PointSize[Large],​​Blue,Point[{x,y,localmin3D}]/.localminimizer3D,​​Red,Point[{x,y,globalmin3D}]/.globalminimizer3D​​}]​​]

Eine Zielfunktion unter Beschränkungen minimieren

Definieren Sie Regionen in Form von Nebenbedingungen, Schnittpunkten und eingebauten Formen:
Ausführen
In[]:=
ℛ
1
=RegionIntersection
,ImplicitRegion[2x-y>=3,{x,y}];​​
ℛ
2
=RegionIntersection
,ImplicitRegion[2x-y<3,{x,y}];
Visualisieren Sie eine Zielfunktion über den zuvor definierten Regionen:
Ausführen
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
​​
Verwenden Sie
NMinimize
, um numerisch das Minimum der Zielfunktion in der ersten der beiden oben definierten Regionen zu finden:
Ausführen
In[]:=
NMinimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
Verwenden Sie
Minimize
, um das exakte Minimum der Zielfunktion in der gewünschten Region zu finden:
Ausführen
In[]:=
{minvalue,minimizer}=Minimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
Zeigen Sie das gefundene eingeschränkte Minimum zusammen mit der Zielfunktion:
Ausführen
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]}]​​

Konvexe Optimierungsaufgaben lösen

Definieren Sie zwei implizite Regionen durch Nebenbedingung:
Ausführen
In[]:=

1
=
2
x
+
2
y
<=1;​​

2
=
2
(x-2)
+
2
(y-1)
<=1;
Visualisieren Sie die Regionen:
Ausführen
In[]:=
RegionPlot[{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False]
Finden Sie das Punktpaar (einen aus jeder Region), das den Abstand zwischen ihnen minimiert:
Ausführen
In[]:=
closest2D=ConvexOptimization[Norm[p1-p2],{},{p1∈ImplicitRegion[

1
,{x,y}],p2∈ImplicitRegion[

2
,{x,y}]}]
Visualisieren Sie das gefundene Punktepaar und den Abstand zwischen ihnen:
Ausführen
In[]:=
RegionPlot{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False,Epilog->
Epilog for points and line

Definieren Sie ohne Aufwand 3D-Regionen mit integrierten Formen:
Ausführen
In[]:=

1
=Dodecahedron[{0,0,0},{0,0}];​​

2
=Ellipsoid[{4,0,0},DiagonalMatrix[{2,3,1}]];
Visualisieren Sie die Form:
Ausführen
In[]:=
Graphics3D[{

1
,

2
}]
Finden Sie das Paar von Punkten (einen aus jeder Region), das den Abstand zwischen den beiden minimiert:
Ausführen
In[]:=
closest3D=ConvexOptimization[Norm[p1-p2],{},{p1∈

1
,p2∈

2
}]
Visualisieren Sie die gefundenen Punkte mit einer Verbindungslinie:
Ausführen
In[]:=
Graphics3D[{

1
,

2
,{Red,Thick,Line[{p1,p2}/.closest3D]}}]
Lösen und visualisieren Sie eine dynamische Version des vorherigen Beispiels:
Ausführen
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​​]​​

Optimale Anpassung zum Glätten von Daten verwenden

Die kürzeste Route ermitteln

Exakte Lösungen für symbolische Optimierungsprobleme finden

Parametrische Lösungen für symbolische Optimierungsprobleme finden