fmincon con restricción no lineal y parámetros
Publicado por javiera dlc (4 intervenciones) el 09/08/2017 15:58:58
Hola, tengo un problema de optimización donde uso fmincon que tiene restricciones no lineales y parámetros. Además es una iteración de varios periodos. Mi problema está en que la función objetivo tiene un vector de variables q, pero en las restricciones no lineales hay otra variable w. Entonces, tengo que obtener un vector con las variables q y w, pero, lo tengo escrito todo como matriz, entonces no se como decirle a fmincon que tiene que optimizar las variables q y además la variable w.
Esta es mi función objetivo:
Esta son mis restricciones:
Este es el main:
No se como poner que me optimice el q y el w, dado que los q son 24 diferentes por periodo ii y el w es el mismo para las 24 ecuaciones de cada periodo, pero cambia por los periodos ii.
Además me aparece ''Index exceeds matrix dimensions''.
Gracias!
Esta es mi función objetivo:
1
2
3
4
function I= objfunmalo(q,E,D,fc,vpasaj,alpha,rw2,v)
R = (E.*q - (D.*q.^2)./2 - q.*(fc - vpasaj + (exp(alpha*sum(q,2)./rw2))*v));
I=-sum(R,2);
end
Esta son mis restricciones:
1
2
3
4
5
6
function [c,ceq] = mycon(q3aux,E,D,D11,fc,vpasaj,lf2,alpha,rw2,v,v111)
q=q3aux(1:24);
w=q3aux(25);
c=[];
ceq = E - D.*q - D11.*q - fc + vpasaj - lf2 - (exp(alpha*sum(q,2)./rw2))*v - ((exp(alpha*sum(q,2)./rw2))*alpha./rw2)*(q.*v111) - w;
end
Este es el main:
1
2
3
4
5
6
7
8
9
10
11
12
13
options.MaxIter = 10000;
options.MaxFunEvals = 100000;
Qpu = [];
for ii=1:8760;
for i=50
q0= ones(1,25);
lb= zeros(1,25);
q=q3aux(1:24);
w=q3aux(25);
[q33,fval] = fmincon(@(q)objfunmalo(q,E(ii,:),D(ii,:),fc(ii,:),vpasaj(ii,:),alpha,rw2,v),q0,[],[],[],[],lb,[],@(q3aux)mycon(q3aux,E(ii,:),D(ii,:),D11(ii,:),fc(ii,:),vpasaj(ii,:),lf2(ii,:),alpha,rw2,v,v111(ii,:)),options);
Qpu = [Qpu;q33];
end
end
No se como poner que me optimice el q y el w, dado que los q son 24 diferentes por periodo ii y el w es el mismo para las 24 ecuaciones de cada periodo, pero cambia por los periodos ii.
Además me aparece ''Index exceeds matrix dimensions''.
Gracias!
Valora esta pregunta
0