Main Content

Las restricciones semi-infinitas unidimensionales

Encuentre valores que minimicenx

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

Dónde

K1(x,w1)=sin(w1x1)cos(w1x2)11000(w150)2sin(w1x3)x31,K2(x,w2)=sin(w2x2)cos(w2x1)11000(w250)2sin(w2x3)x31,

para todos los valores dew1 Yw2 sobre los rangos

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

Tenga en cuenta que las restricciones semi-infinitas son unidimensionales, es decir, vectores. Dado que las restricciones deben estar en el formulario Ki(x,wi) ≤ 0, debe calcular las restricciones como

K1(x,w1)=sin(w1x1)cos(w1x2)11000(w150)2sin(w1x3)x310,K2(x,w2)=sin(w2x2)cos(w2x1)11000(w250)2sin(w2x3)x310.

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

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

En segundo lugar, escriba un archivo que calcule las restricciones de igualdad y desigualdad no lineales y las restricciones semi-infinitas.mycon.m

function [c,ceq,K1,K2,s] = mycon(X,s) % Initial sampling interval if isnan(s(1,1)),    s = [0.2 0; 0.2 0]; end % Sample set w1 = 1:s(1,1):100; w2 = 1:s(2,1):100;  % Semi-infinite constraints  K1 = sin(w1*X(1)).*cos(w1*X(2)) - 1/1000*(w1-50).^2 -...        sin(w1*X(3))-X(3)-1; K2 = sin(w2*X(2)).*cos(w2*X(1)) - 1/1000*(w2-50).^2 -...        sin(w2*X(3))-X(3)-1;  % No finite nonlinear constraints c = []; ceq=[];

% Plot a graph of semi-infinite constraints
plot(w1,K1,'-',w2,K2,':')
title('Semi-infinite constraints')
drawnow

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

x0 = [0.5; 0.2; 0.3];      % Starting guess [x,fval] = fseminf(@myfun,x0,2,@mycon);

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

x
x =     0.6675     0.3012     0.4022

El valor de la función y los valores máximos de las restricciones semi-infinitas en la solución sex

fval
fval =     0.0771
[c,ceq,K1,K2] = mycon(x,NaN); % Initial sampling interval max(K1)
ans =    -0.0077
max(K2)
ans =    -0.0812

Se produce una trama de las restricciones semi-infinitas.

Esta gráfica muestra cómo los picos en ambas restricciones están en el límite de restricción.

El comando Plot dentro ralentiza el cálculo.mycon.m Quite esta línea para mejorar la velocidad.

Consulte también

Temas relacionados