Main Content

Restricción semi-infinita bidimensional

Encuentre valores que minimicenx

( ) = (fxx1 – 0,2)2 + (x2– 0,2)2 + (x3– 0,2)2,

Dónde

K1(x,w)=sin(w1x1)cos(w2x2)11000(w150)2sin(w1x3)x3+...                 sin(w2x2)cos(w1x1)11000(w250)2sin(w2x3)x31.5,

para todos los valores dew1 Yw2 sobre los rangos

1 ≤w1 ≤ 100, 1 ≤
w2 ≤ 100,

comenzando en el punto x = [0.25,0.25,0.25].

Tenga en cuenta que la restricción semi-infinita es bidimensional, es decir, una matriz.

En primer lugar, escriba un archivo que calcule la función objetiva.

function f = myfun(x,s) % Objective function f = sum((x-0.2).^2);

En segundo lugar, escriba un archivo para las restricciones, llamado.mycon.m Incluya código para dibujar la gráfica de superficie de la restricción semi-infinita cada vez que se llame.mycon Esto le permite ver cómo cambia la restricción a medida que se minimiza.X

function [c,ceq,K1,s] = mycon(X,s) % Initial sampling interval if isnan(s(1,1)),    s = [2 2]; end  % Sampling set w1x = 1:s(1,1):100; w1y = 1:s(1,2):100; [wx,wy] = meshgrid(w1x,w1y);  % Semi-infinite constraint  K1 = sin(wx*X(1)).*cos(wx*X(2))-1/1000*(wx-50).^2 -...        sin(wx*X(3))-X(3)+sin(wy*X(2)).*cos(wx*X(1))-...        1/1000*(wy-50).^2-sin(wy*X(3))-X(3)-1.5;  % No finite nonlinear constraints c = []; ceq=[];  % Mesh plot m = surf(wx,wy,K1,'edgecolor','none','facecolor','interp'); camlight headlight title('Semi-infinite constraint') drawnow

A continuación, invoque una rutina de optimización.

x0 = [0.25, 0.25, 0.25];    % Starting guess [x,fval] = fseminf(@myfun,x0,1,@mycon)

Después de nueve iteraciones, la solución es

x
x =     0.2523    0.1715    0.1938

y el valor de la función en la solución es

fval
fval =     0.0036

El objetivo era minimizar el objetivo () de tal que la restricción semi-infinita satisficierafx K1(x,w) ≤ 1.5. Evaluar en la solución y mirar el elemento máximo de la matriz muestra que la restricción se satisface fácilmente.myconxK1

[c,ceq,K1] = mycon(x,[0.5,0.5]);  % Sampling interval 0.5 max(max(K1))
ans =    -0.0370

Esta llamada para producir la siguiente gráfica de surf, que muestra la restricción semi-infinita en.myconx

Consulte también

Temas relacionados