Matlab - Optimización con matlab

   
Vista:

Optimización con matlab

Publicado por Lorea (2 intervenciones) el 25/04/2013 19:01:09
¿Como puedo calcular un problema de optimización entera con varias variables? ¿ Conocéis alguna función? Es decir, tengo una función con 8 variables y la única restricción es que sean mayores que 0, además las soluciones tienen que ser enteras. Encuentro funciones para optimización (fminbnd,fminunc) pero no me salen resultados enteros. Gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

Optimización con matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3437 intervenciones) el 26/04/2013 18:35:35
Podrías ser claro en tu pregunta.
Podrías poner tu función y ser mas detallado en tu pregunta.
Derrepente necesitas hacer un código personalizado para tu función.
Quieres minimizar o maximizar tu función?.


http://www.mathworks.com/help/optim/ug/fmincon.html

http://www.mathworks.com/help/optim/ug/passing-extra-parameters.html


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Optimización con matlab

Publicado por Lorea (2 intervenciones) el 27/04/2013 15:45:58
Hola:

Gracias por tu respuesta pero creo que esas funciones no me sirven.
Tengo que minimizar la siguiente función pero el resultado de todas las mi-s tiene que ser enteros y mayores que 0.
f=(120+30/m(1)+50/m(2)+20/m(3)+30/m(4)+20/m(5)+40/m(6)+10/m(7)+80/m(8))*(m(1)*400*0.2+m(2)*200*0.4+m(3)*350*0.6+m(4)*250+m(5)*850*0.25+m(6)*700*0.3+m(7)*525*0.5+m(8)*1000*0.6);

Gracias,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO

Optimización con matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3437 intervenciones) el 27/04/2013 17:27:31
Por esa razón, es que debes ser clara en tu pregunta al momento de hacer, uno no es adivino para saber como es tu función.
Justamente por eso evito dar sugerencias muchas veces, porque al final el usuario no esta contento con la respuesta que uno brinda en el foro. Además los enlaces solo eran, unas sugerencias y no te estaba diciendo que con ese sale tu problema.
Bueno hay que revisar mas informacion.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Optimización con matlab

Publicado por Adriana Rocio Ramirez Lopez (1 intervención) el 01/07/2014 23:58:56
Hola tienes que hacer un archivo .m con las restricciones, te paso un ejemplo de una funcion que hice para maximizar Epsilon y Beta.
function [c, ceq] = confun(x)
% Nonlinear inequality constraints
c = [-x(1)+0.0001; -x(2)+0.0001];
% Nonlinear equality constraints
ceq = [];
end
------------------------------
function f= myfun(x,y,u)
h = log( (1/x(1)) * ((1+ (x(2)*(y(1)-u) ) / x(1) ) ^ (-1-1/x(2))))+log( (1/x(1)) * ((1+ (x(2)*(y(2)-u) ) / x(1) ) ^ (-1-1/x(2))));
h = h + log( (1/x(1)) * ((1+ (x(2)*(y(3)-u) ) / x(1) ) ^ (-1-1/x(2))))+log( (1/x(1)) * ((1+ (x(2)*(y(4)-u) ) / x(1) ) ^ (-1-1/x(2))));
h = h + log( (1/x(1)) * ((1+ (x(2)*(y(5)-u) ) / x(1) ) ^ (-1-1/x(2))))+ log( (1/x(1)) * ((1+ (x(2)*(y(6)-u) ) / x(1) ) ^ (-1-1/x(2))));
h = h + log( (1/x(1)) * ((1+ (x(2)*(y(7)-u) ) / x(1) ) ^ (-1-1/x(2))))+ log( (1/x(1)) * ((1+ (x(2)*(y(8)-u) ) / x(1) ) ^ (-1-1/x(2))));
h = h + log( (1/x(1)) * ((1+ (x(2)*(y(9)-u) ) / x(1) ) ^ (-1-1/x(2))))+ log( (1/x(1)) * ((1+ (x(2)*(y(10)-u) ) / x(1) ) ^ (-1-1/x(2))));
f = -h;
end
-------------------------------------
options = optimoptions('fmincon','Algorithm','interior-point','MaxFunEvals',100,'MaxIter',200);
f = @(x)myfun(x,y,u);
[x,fval]=fmincon(f,x0,[],[],[],[],[],[],@confun,options);
beta = x(1);
epsilon = x(2);
q=0.95;
nu=10;
n=500;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar