Wolfram 优化 | 应用示例
Wolfram 优化 | 应用示例
在代码中点击并按下 ,即可编辑并运行任何代码。
+
建模,求解与分析设计。Wolfram 优化提供了一整套综合解决方案,用于在给定约束条件下找到最佳设计方案或做出最优决策,并与高度自动化的机器学习、统计学、即时可计算的内置数据等功能完全集成。
寻找局部极值或全局极值
寻找局部极值或全局极值
绘制一个既有全局极值又有局部极值的函数: |
In[]:=
Plot[+-5,{x,-3,3}]
4
x
3
x
2
x
使用数值方法在 x1 |
In[]:=
FindMinimum[+-5,{x,1}]
4
x
3
x
2
x
现在使用数值方法在 x-1.8 |
In[]:=
FindMinimum[+-5,{x,-1.8}]
4
x
3
x
2
x
In[]:=
Minimize[+-5,x]
4
x
3
x
2
x
还可以添加约束条件,以在受限域中查找最小值: |
In[]:=
Minimize[{+-5,0<x<2},x]
4
x
3
x
2
x
如果需要数值结果, |
In[]:=
NMinimize[{+-5,0<x<2},x]
4
x
3
x
2
x
如果没有受限域,该函数会寻找全局最小值并返回数值结果: |
In[]:=
NMinimize[+-5,x]
4
x
3
x
2
x
可视化找到的全局最小值和局部最小值: |
In[]:=
Plot+-5,{x,-3,3},Epilog->
4
x
3
x
2
x
高维空间极值求解
高维空间极值求解
同样的方法也适用于更高维度的情况。定义一个可以在三维空间中可视化的目标函数和约束条件: |
In[]:=
objective=3Sin[+]-x-2y;constraints=Norm[{x,y}]>=1&&+<=10;
2
x
2
(y-1)
4
x
4
y
在约束区域上可视化目标函数: |
regionandobjective=ShowPlot3Dobjective,{x,-2,2},{y,-2,2},AxesLabel{x,y,z},,DiscretizeRegionImplicitRegion[constraints&&z-9,{{x,-2,2},{y,-2,2},z}],
找到目标函数在 (0,1) |
In[]:=
{localmin3D,localminimizer3D}=FindMinimum[objective,{{x,0},{y,1}}]
找到目标函数在约束区域中的全局最小值: |
In[]:=
{globalmin3D,globalminimizer3D}=NMinimize[{objective,constraints},{x,y}]
可视化找到的全局最小值(显示为红色)和局部最小值(显示为蓝色): |
In[]:=
Show[regionandobjective,Graphics3D[{PointSize[Large],Blue,Point[{x,y,localmin3D}]/.localminimizer3D,Red,Point[{x,y,globalmin3D}]/.globalminimizer3D}]]
约束条件下最小化目标函数
约束条件下最小化目标函数
通过约束条件、交集和内置图形来定义区域: |
In[]:=
ℛ
1
,ImplicitRegion[2x-y>=3,{x,y}];
ℛ
2
,ImplicitRegion[2x-y<3,{x,y}];
在先前定义的区域上可视化目标函数: |
In[]:=
ShowPlot3D+,{x,y}∈,,Plot3D+,{x,y}∈,
3
(x+1)
2
(y-1)
ℛ
1
3
(x+1)
2
(y-1)
ℛ
2
使用 |
In[]:=
NMinimize[+,{x,y}∈]
3
(x+1)
2
(y-1)
ℛ
1
使用 |
In[]:=
{minvalue,minimizer}=Minimize[+,{x,y}∈]
3
(x+1)
2
(y-1)
ℛ
1
显示找到的约束最小值以及目标函数: |
In[]:=
ShowPlot3D+,{x,y}∈,,Plot3D+,{x,y}∈,,Graphics3D[{Red,PointSize[Large],Point[{x,y,minvalue}/.minimizer]}]
3
(x+1)
2
(y-1)
ℛ
1
3
(x+1)
2
(y-1)
ℛ
2
求解凸优化问题
求解凸优化问题
通过约束定义两个隐式区域: |
In[]:=
1
2
x
2
y
2
2
(x-2)
2
(y-1)
可视化这些区域: |
In[]:=
RegionPlot[{,},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False]
1
2
找出两个区域间距离最近的点对(每个区域各取一点): |
In[]:=
closest2D=ConvexOptimization[Norm[p1-p2],{},{p1∈ImplicitRegion[,{x,y}],p2∈ImplicitRegion[,{x,y}]}]
1
2
可视化找到的点对及其间距: |
In[]:=
RegionPlot{,},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False,Epilog->
1
2
使用内置形状快速定义三维区域: |
In[]:=
1
2
可视化这些形状: |
In[]:=
Graphics3D[{,}]
1
2
找出两个区域间距离最近的点对(每个区域各取一点): |
In[]:=
closest3D=ConvexOptimization[Norm[p1-p2],{},{p1∈,p2∈}]
1
2
用连接线可视化找到的点: |
In[]:=
Graphics3D[{,,{Red,Thick,Line[{p1,p2}/.closest3D]}}]
1
2
求解并可视化前一个示例的动态版本: |
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]
使用最优拟合平滑数据
使用最优拟合平滑数据
最短路径问题
最短路径问题
符号优化问题的精确求解
符号优化问题的精确求解
符号优化问题的参数化求解
符号优化问题的参数化求解