Wolfram 최적화 | 시도해 볼 것들

모든 코드는 클릭 한 다음
+
를 눌러 편집하거나 실행할 수 있습니다.
설계 모델링, 해결 및 분석 Wolfram의 최적화는 최적의 설계를 찾거나 제약 조건 내에서 최상의 결정을 내리는 도구의 포괄적 세트를 제공합니다. 이 도구는 고도로 자동화된 기계 학습 및 통계 기능 및 현장에서 계산 가능한 내장 데이터 등과 완벽하게 통합됩니다.

국소 또는 전역 극값 찾기

전역 극값과 국소 극값을 모두 가지는 함수를 그래프로 그립니다:
실행
In[]:=
Plot[
4
x
+
3
x
-5
2
x
,{x,-3,3}]
수치적 방법을 사용하여
x1
근처에서 국소 최소값을 찾습니다:
실행
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,1}]
수치적 방법을 사용하여
x-1.8
근처에서 국소 최소값을 찾습니다:
실행
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,-1.8}]
Minimize
는 정확한 전역 최소값을 찾는 반면,
FindMinimum
은 탐색 과정에서 만나는 국소 최소값을 반환합니다:
실행
In[]:=
Minimize[
4
x
+
3
x
-5
2
x
,x]
제약 조건을 포함하여 제한된 영역에서 최소값을 찾을 수도 있습니다:
실행
In[]:=
Minimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
NMinimize
는 수치적 결과가 필요할 경우
Minimize
와 동일한 구문으로 사용할 수 있습니다. 제한된 영역에서의 최소값은 이전 탐색을 통해 찾은 국소 최소값에 해당한다는 점에 유의합니다:
실행
In[]:=
NMinimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
제한된 영역이 없는 경우, 전역 최소값을 찾고 수치적 결과를 반환하는 것을 목표로 합니다:
실행
In[]:=
NMinimize[
4
x
+
3
x
-5
2
x
,x]
찾은 전역 최소값과 국소 최소값을 시각화합니다:
실행
In[]:=
Plot
4
x
+
3
x
-5
2
x
,{x,-3,3},Epilog->
Epilog for global and local minima


더 높은 차원에서 극값 찾기

같은 기능을 더 높은 차원에서 사용할 수 있습니다. 세 차원에서 시각화할 수 있는 목표 함수와 제약 조건을 정의합니다:
실행
In[]:=
objective=3Sin[
2
x
+
2
(y-1)
]-x-2y;​​constraints=Norm[{x,y}]>=1&&
4
x
+
4
y
<=10;
제약된 영역에서 목표 함수를 시각화합니다:
실행
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
​​
목표 함수의 국소 최소값을
(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
=RegionIntersection
,ImplicitRegion[2x-y>=3,{x,y}];​​
ℛ
2
=RegionIntersection
,ImplicitRegion[2x-y<3,{x,y}];
이전에 정의된 영역에서 목표 함수를 시각화합니다:
실행
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
​​
위에서 정의한 두 영역 중 첫 번째 영역에서 목표 함수의 최소값을 수치적으로 찾기 위해
NMinimize
를 사용합니다:
실행
In[]:=
NMinimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
관심 있는 영역에서 목표 함수의 정확한 최소값을 찾기 위해
Minimize
를 사용합니다:
실행
In[]:=
{minvalue,minimizer}=Minimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
제약 조건이 적용된 최소값과 목표 함수를 함께 보여줍니다:
실행
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]}]​​

볼록 최적화 문제 해결

두 개의 암묵적인 영역을 제약 조건을 통해 정의합니다:
실행
In[]:=

1
=
2
x
+
2
y
<=1;​​

2
=
2
(x-2)
+
2
(y-1)
<=1;
영역을 시각화합니다:
실행
In[]:=
RegionPlot[{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False]
각 영역에서 하나씩 선택된 점의 쌍을 찾아 그 사이의 거리를 최소화합니다:
실행
In[]:=
closest2D=ConvexOptimization[Norm[p1-p2],{},{p1∈ImplicitRegion[

1
,{x,y}],p2∈ImplicitRegion[

2
,{x,y}]}]
찾은 점의 쌍과 그 사이의 거리를 시각화합니다:
실행
In[]:=
RegionPlot{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False,Epilog->
Epilog for points and line

내장된 도형을 사용하여 3D 영역을 빠르게 정의합니다:
실행
In[]:=

1
=Dodecahedron[{0,0,0},{0,0}];​​

2
=Ellipsoid[{4,0,0},DiagonalMatrix[{2,3,1}]];
도형을 시각화합니다:
실행
In[]:=
Graphics3D[{

1
,

2
}]
각 영역에서 하나씩 선택된 점의 쌍을 찾아 그 사이의 거리를 최소화합니다:
실행
In[]:=
closest3D=ConvexOptimization[Norm[p1-p2],{},{p1∈

1
,p2∈

2
}]
찾은 점과 그 사이를 연결하는 선을 시각화합니다:
실행
In[]:=
Graphics3D[{

1
,

2
,{Red,Thick,Line[{p1,p2}/.closest3D]}}]
이전 예제의 동적 버전을 해결하고 시각화합니다:
실행
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​​]​​

최적 적합을 사용하여 데이터 부드럽게 하기

최단 경로 찾기

기호 최적화 문제에 대한 정확한 해 구하기

기호 최적화 문제에 대한 매개변수적 해 구하기