fmincon - Implementación de esta restricción no lineal
Publicado por Aitor (49 intervenciones) el 14/06/2017 10:46:11
Buenos días a todos,
Necesito implementar un problema de optimización con `fmincon` que incluya la siguiente restricción que os adjunto -la resta del término de la izquierda menos el de la derecha debe ser estrictamente menor que cero para cualquier número real `mv` durante cualquier iteración `l`.
Aquí podéis encontrar mi código:
Algo no debe estar funcionando bien, ya que no he incluido ningún indicio de recursividad en él, y además no menciona por ninguna parte que ha de cumplirse para cualquier número real. Me temo que no sé cómo continuar a partir de aquí. ¿Podría alguien echarme una mano? Se lo agradecería mucho.
Muchas gracias de antemano, y un saludo.
Necesito implementar un problema de optimización con `fmincon` que incluya la siguiente restricción que os adjunto -la resta del término de la izquierda menos el de la derecha debe ser estrictamente menor que cero para cualquier número real `mv` durante cualquier iteración `l`.
Aquí podéis encontrar mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mu0 = 2/sigma;
mv = 0;
l_idle = zeros(1,length(v));
r_idle = zeros(1,length(r));
syms x;
Q_1 = exp(-0.4527*x^0.86 + 0.0218);
Q_2 = sqrt(pi/x)*exp((-x/4)*(1-20/(7*x)));
for i = 2:length(l_idle)
if ((mu0 + (i-1)*mv) < 10)
l_idle(i) = double(subs(Q_1,x,(mu0 + (i-1)*mv)));
else
l_idle(i) = double(subs(Q_2,x,(mu0 + (i-1)*mv)));
end
end
lambda = v(2:length(v))*transpose(l_idle(2:length(l_idle)));
for j = 2:length(r_idle)
b = 1-(1-lambda)^(j-1);
if b < 10, r_idle(j) = subs(0.4527^(-1/0.86)*(0.0218-log(x))^(1/0.86),x,b);
else, r_idle(j) = subs(finverse(Q_2,x),x,b);
end
end
c = zeros(1,2);
c(1) = mv - r(2:length(r))*transpose(r_idle(2:length(r_idle)));
% There is an additional constraint that has not been included.
Algo no debe estar funcionando bien, ya que no he incluido ningún indicio de recursividad en él, y además no menciona por ninguna parte que ha de cumplirse para cualquier número real. Me temo que no sé cómo continuar a partir de aquí. ¿Podría alguien echarme una mano? Se lo agradecería mucho.
Muchas gracias de antemano, y un saludo.
Valora esta pregunta
0