Wolfram Optimización | Ejemplos a probar

Edite y ejecute cualquier pieza de código haciendo clic dentro del código y presionando
+
.
Modele, resuelva y analice diseños. Wolfram Optimización proporciona un conjunto completo de herramientas para encontrar el mejor diseño o realizar la mejor decisión de acuerdo con las restricciones, completamente integrado con aprendizaje automático altamente automatizado, estadística, datos incorporados inmediatamente computables y más.

Encuentre extremos locales o globales

Represente una función que posea extremos tanto globales como locales:
Ejecutar
In[]:=
Plot[
4
x
+
3
x
-5
2
x
,{x,-3,3}]
Busque un mínimo local cerca de
x1
usando métodos numéricos:
Ejecutar
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,1}]
Ahora busque un mínimo local cerca de
x-1.8
usando métodos numéricos:
Ejecutar
In[]:=
FindMinimum[
4
x
+
3
x
-5
2
x
,{x,-1.8}]
Minimize
encuentra el mínimo global exacto, mientras que
FindMinimum
devuelve mínimos locales encontrados mediante búsqueda:
Ejecutar
In[]:=
Minimize[
4
x
+
3
x
-5
2
x
,x]
Además se pueden incluir restricciones para encontrar el valor mínimo en un dominio restringido:
Ejecutar
In[]:=
Minimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
NMinimize
puede usarse con la misma sintaxis que
Minimize
si se desean resultados numéricos. Note que el valor mínimo en un dominio restringido corresponde al mínimo local encontrado mediante la búsqueda anterior:
Ejecutar
In[]:=
NMinimize[{
4
x
+
3
x
-5
2
x
,0<x<2},x]
Sin un dominio restringido, busca encontrar mínimos globales y devolver resultados numéricos:
Ejecutar
In[]:=
NMinimize[
4
x
+
3
x
-5
2
x
,x]
Visualice los mínimos global y local encontrados:
Ejecutar
In[]:=
Plot
4
x
+
3
x
-5
2
x
,{x,-3,3},Epilog->
Epilog for global and local minima


Encuentre extremos en dimensiones superiores

La misma funcionalidad puede utilizarse en dimensiones superiores. Defina una función objetivo y restricciones que pueden visualizarse en tres dimensiones:
Ejecutar
In[]:=
objective=3Sin[
2
x
+
2
(y-1)
]-x-2y;​​constraints=Norm[{x,y}]>=1&&
4
x
+
4
y
<=10;
Visualice la función objetivo sobre la región restringida:
Ejecutar
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
​​
Encuentre el mínimo local de la función objetivo cerca de
(0,1)
:
Ejecutar
In[]:=
{localmin3D,localminimizer3D}=FindMinimum[objective,{{x,0},{y,1}}]
Encuentre el mínimo global de la función objetivo en la región restringida:
Ejecutar
In[]:=
{globalmin3D,globalminimizer3D}=NMinimize[{objective,constraints},{x,y}]
Visualice el mínimo global (mostrado en rojo) y el mínimo local (en azul) encontrados:
Ejecutar
In[]:=
Show[​​regionandobjective,​​Graphics3D[{​​PointSize[Large],​​Blue,Point[{x,y,localmin3D}]/.localminimizer3D,​​Red,Point[{x,y,globalmin3D}]/.globalminimizer3D​​}]​​]

Minimice una función objetivo sujeta a restricciones

Defina regiones en términos de restricciones, intersecciones y formas incorporadas:
Ejecutar
In[]:=
ℛ
1
=RegionIntersection
,ImplicitRegion[2x-y>=3,{x,y}];​​
ℛ
2
=RegionIntersection
,ImplicitRegion[2x-y<3,{x,y}];
Visualice una función objetivo sobre las regiones previamente definidas:
Ejecutar
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 de forma numérica el mínimo de la función objetivo sobre la primera de las dos regiones definidas anteriormente:
Ejecutar
In[]:=
NMinimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
Use
Minimize
para encontrar el mínimo exacto de la función objetivco sobre la región de interés:
Ejecutar
In[]:=
{minvalue,minimizer}=Minimize[
3
(x+1)
+
2
(y-1)
,{x,y}∈
ℛ
1
]
Muestre el mínimo restringido encontrado junto con la función objetivo:
Ejecutar
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]}]​​

Resuelva problemas de optimización convexa

Defina dos regiones implícitas mediante restricciones:
Ejecutar
In[]:=

1
=
2
x
+
2
y
<=1;​​

2
=
2
(x-2)
+
2
(y-1)
<=1;
Visualice las regiones:
Ejecutar
In[]:=
RegionPlot[{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False]
Encuentre el par de puntos (uno de cada región) que minimiza la distancia entre ellos:
Ejecutar
In[]:=
closest2D=ConvexOptimization[Norm[p1-p2],{},{p1∈ImplicitRegion[

1
,{x,y}],p2∈ImplicitRegion[

2
,{x,y}]}]
Visualice el par de puntos encontrado y la distancia entre ellos:
Ejecutar
In[]:=
RegionPlot{

1
,

2
},{x,-1,3},{y,-1,3},PlotTheme->"Minimal",Axes->False,Epilog->
Epilog for points and line

Defina regiones 3D con rapidez usando formas incorporadas:
Ejecutar
In[]:=

1
=Dodecahedron[{0,0,0},{0,0}];​​

2
=Ellipsoid[{4,0,0},DiagonalMatrix[{2,3,1}]];
Visualice las formas:
Ejecutar
In[]:=
Graphics3D[{

1
,

2
}]
Encuentre el par de puntos (uno de cada región) que minimiza la distancia entre los dos:
Ejecutar
In[]:=
closest3D=ConvexOptimization[Norm[p1-p2],{},{p1∈

1
,p2∈

2
}]
Visualice los puntos encontrados con una línea que los conecta:
Ejecutar
In[]:=
Graphics3D[{

1
,

2
,{Red,Thick,Line[{p1,p2}/.closest3D]}}]
Resuelva y visualice una versión dinámica del ejemplo anterior:
Ejecutar
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​​]​​

Use el ajuste óptimo para suavizar datos

Encuentre el camino más corto

Obtenga soluciones exactas para problemas de optimización simbólica

Obtenga soluciones paramétricas para problemas de optimización simbólica