Wolfram Otimização | Experimente!

Edite e execute qualquer trecho de código clicando dentro do código e pressionando
+
.
Modelar, Resolver & Analisar Designs. Wolfram Otimização fornece um conjunto abrangente de ferramentas para encontrar o melhor design ou tomar a melhor decisão dentro de restrições, totalmente integrado com machine learning, altamente automatizado, estatísticas, dados computáveis integrados e muito mais.

Encontre Extremos Locais ou Globais

Represente graficamente uma função que possui extremos globais e locais:
Executar
In[]:=
Plot[
4
x
+
3
x
-5
2
x
,{x,-3,3}]
Busque um mínimo local próximo de
x1
usando métodos numéricos:
Executar
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,1}]
Agora busque um mínimo local próximo de
x-1.8
usando métodos numéricos:
Executar
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,-1.8}]
Minimize
encontra o mínimo global exato, enquanto
FindMinimum
retorna mínimos locais encontrados durante a busca:
Executar
In[]:=
Minimize[
4
x
+
3
x
-5
2
x
,x]
Restrições também podem ser incluídas para encontrar o valor mínimo em um domínio restrito:
Executar
In[]:=
Minimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
NMinimize
pode ser usada com a mesma sintaxe de
Minimize
se forem desejados resultados numéricos. Observe que o valor mínimo em um domínio restrito corresponde ao mínimo local encontrado anteriormente:
Executar
In[]:=
NMinimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
Sem um domínio restrito, a busca visa encontrar mínimos globais e retornar resultados numéricos:
Executar
In[]:=
NMinimize[
4
x
+
3
x
-5
2
x
,x]
Visualize os mínimos globais e locais encontrados:
Executar
In[]:=
Plot
4
x
+
3
x
-5
2
x
,{x,-3,3},Epilog->
Epilog for global and local minima


Encontrar Extremos em Dimensões Superiores

A mesma funcionalidade pode ser usada em dimensões superiores. Defina uma função objetivo e restrições que possam ser visualizadas em três dimensões:
Executar
In[]:=
objective=3Sin[
2
x
+
2
(y-1)
]-x-2y;​​constraints=Norm[{x,y}]>=1&&
4
x
+
4
y
<=10;
Visualize a função objetivo sobre a região restrita:
Executar
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
​​
Encontre o mínimo local da função objetivo próximo de
(0,1)
:
Executar
In[]:=
{localmin3D,localminimizer3D}=FindMinimum[objective,{{x,0},{y,1}}]
Encontre o mínimo global da função objetivo na região restrita:
Executar
In[]:=
{globalmin3D,globalminimizer3D}=NMinimize[{objective,constraints},{x,y}]
Visualize o mínimo global (em vermelho) e o mínimo local (em azul) encontrados:
Executar
In[]:=
Show[​​regionandobjective,​​Graphics3D[{​​PointSize[Large],​​Blue,Point[{x,y,localmin3D}]/.localminimizer3D,​​Red,Point[{x,y,globalmin3D}]/.globalminimizer3D​​}]​​]

Minimizar uma Função Objetivo Sujeita a Restrições

Defina regiões em termos de restrições, interseções e formas embutidas:
Executar
In[]:=
ℛ
1
=RegionIntersection
,ImplicitRegion[2x-y>=3,{x,y}];​​
ℛ
2
=RegionIntersection
,ImplicitRegion[2x-y<3,{x,y}];
Visualize uma função objetivo sobre as regiões previamente definidas:
Executar
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
​​
Use
NMinimize
para encontrar numericamente o mínimo da função objetivo sobre a primeira das duas regiões definidas acima:
Executar
In[]:=
NMinimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
Use
Minimize
para encontrar o mínimo exato da função objetivo sobre a região de interesse:
Executar
In[]:=
{minvalue,minimizer}=Minimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
Mostre o mínimo restrito encontrado junto com a função objetivo:
Executar
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]}]​​

Resolver Problemas de Otimização Convexa

Defina duas regiões implícitas por meio de restrições:
Executar
In[]:=

1
=
2
x
+
2
y
<=1;​​

2
=
2
(x-2)
+
2
(y-1)
<=1;
Visualize the regions:
Executar
In[]:=
RegionPlot[{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False]
Encontre o par de pontos (um de cada região) que minimiza a distância entre eles:
Executar
In[]:=
closest2D=ConvexOptimization[Norm[p1-p2],{},{p1∈ImplicitRegion[

1
,{x,y}],p2∈ImplicitRegion[

2
,{x,y}]}]
Visualize o par de pontos encontrados e a distância entre eles:
Executar
In[]:=
RegionPlot{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False,Epilog->
Epilog for points and line

Defina rapidamente regiões 3D usando formas embutidas:
Executar
In[]:=

1
=Dodecahedron[{0,0,0},{0,0}];​​

2
=Ellipsoid[{4,0,0},DiagonalMatrix[{2,3,1}]];
Visualize as formas:
Executar
In[]:=
Graphics3D[{

1
,

2
}]
Encontre o par de pontos (um de cada região) que minimiza a distância entre as duas:
Executar
In[]:=
closest3D=ConvexOptimization[Norm[p1-p2],{},{p1∈

1
,p2∈

2
}]
Visualize os pontos encontrados com uma linha conectando-os:
Executar
In[]:=
Graphics3D[{

1
,

2
,{Red,Thick,Line[{p1,p2}/.closest3D]}}]
Resolva e visualize uma versão dinâmica do exemplo anterior:
Executar
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​​]​​

Aplicar o Ajuste Ideal para Suavizar Dados

Encontrar o Menor Percurso

Obter Soluções Exatas para Problemas de Otimização Simbólica

Obter Soluções Paramétricas para Problemas de Otimização Simbólica