Matlab - Problema optimizando, no encuentra solver

 
Vista:
sin imagen de perfil

Problema optimizando, no encuentra solver

Publicado por Cristian (1 intervención) el 09/05/2017 19:02:14
Estoy intentado resolver un problema ocupando yalmip y glpk, pero el programa no corre, arroja solo resultados NaN.

Este es el 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
%% Parametros del problema
n=3; % gasolina a producir
m=3; % barriles a usar 
 
%% Definicion de variables
x = sdpvar(n,m); % Cantidad e barriles del cruso utilizados para producir gasolina
y= sdpvar(m); % Cantidad de publicidad
costos=4*(sum(sum(x))); % costos de produccion
prima= 45*(sum(x(1,:)))+35*(sum(x(2,:)))+25*(sum(x(3,:))); % Costo de crudo
v= 70*(sum(x(:,1)))+60*(sum(x(:,2)))+50*(sum(x(:,3))); % venta de gasolina
publi=sum(m,1); % publicidad
 
%% Funcion objetivo
z=v-publi-prima-costos; % funcion objetivo
 
%% Formulacion_Restricciones
R=[]; % _guardar_restricciones
 
% Restricciones produccion
 
R= [R,sum(sum (x(:,1)))<=14000];
R= [R,sum(sum (x(:,2)))<=14000];
R= [R,sum(sum (x(:,3)))<=14000];
 
 
% Restricciones_compra
 
R= [R, sum(x(1,:))<=5000];
R= [R, sum(x(2,:))<=5000];
R= [R, sum(x(3,:))<=5000];
 
% Restriccion de publicidad
 
R= [R, sum(x(1,1))==3000+10*y(1)];
R= [R, sum(x(1,2))==2000+10*y(2)];
R= [R, sum(x(1,3))==1000+10*y(3)];
R= [R, sum(x(2,1))==3000+10*y(1)];
R= [R, sum(x(2,2))==2000+10*y(2)];
R= [R, sum(x(2,3))==1000+10*y(3)];
R= [R, sum(x(3,1))==3000+10*y(1)];
R= [R, sum(x(3,2))==2000+10*y(2)];
R= [R, sum(x(3,3))==1000+10*y(3)];
 
%restriccion de azufre
 
R= [R, 0.5*(x(1,1))+2*(x(2,1))+2*(x(3,1))<=sum(x(1,1))];
R= [R, 0.5*(x(1,2))+2*(x(2,2))+2*(x(3,2))<=2*(sum(x(1,2)))];
R= [R, 0.5*(x(1,3))+2*(x(2,3))+2*(x(3,3))<=sum(x(1,3))];
R= [R, 0.5*(x(1,1))+2*(x(2,1))+2*(x(3,1))<=sum(x(2,1))];
R= [R, 0.5*(x(1,2))+2*(x(2,2))+2*(x(3,2))<=2*(sum(x(2,2)))];
R= [R, 0.5*(x(1,3))+2*(x(2,3))+2*(x(3,3))<=sum(x(2,3))];
R= [R, 0.5*(x(1,1))+2*(x(2,1))+2*(x(3,1))<=sum(x(3,1))];
R= [R, 0.5*(x(1,2))+2*(x(2,2))+2*(x(3,2))<=2*(sum(x(3,2)))];
R= [R, 0.5*(x(1,3))+2*(x(2,3))+2*(x(3,3))<=sum(x(3,3))];
 
% restriccion de octanaje
 
R = [R 12*(x(1,1))+6*(x(2,1))+8*(x(3,1))>=10*(sum(x(1,1)))];
R = [R 12*(x(1,2))+6*(x(2,2))+8*(x(3,2))>=8*(sum(x(1,2)))];
R = [R 12*(x(1,3))+6*(x(2,3))+8*(x(3,3))>=6*(sum(x(1,3)))];
R = [R 12*(x(1,1))+6*(x(2,1))+8*(x(3,1))>=10*(sum(x(2,1)))];
R = [R 12*(x(1,2))+6*(x(2,2))+8*(x(3,2))>=8*(sum(x(2,2)))];
R = [R 12*(x(1,3))+6*(x(2,3))+8*(x(3,3))>=6*(sum(x(2,3)))];
R = [R 12*(x(1,1))+6*(x(2,1))+8*(x(3,1))>=10*(sum(x(3,1)))];
R = [R 12*(x(1,2))+6*(x(2,2))+8*(x(3,2))>=8*(sum(x(3,2)))];
R = [R 12*(x(1,3))+6*(x(2,3))+8*(x(3,3))>=6*(sum(x(3,3)))];
 
R=[R x>=0]; % Restriccion_de_no_negatividad
R=[R y>=0];
 
%% llamada_solvers
option = sdpsettings('solver','GLPK');
solucion = optimize (R,-z,option);
 
%% mostrar_solucion
disp('la cantidad que se debe ocupar es:')
value(x)
 
disp('Ganancia maxima:')
value(z)
 
disp('cantidad de publicidad:')
value(y)
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