Вы находитесь на странице: 1из 10

Problema 1.

Considere el siguiente PPL con 101 variables

donde

1. Encuentre todas las SBF que son optimales. Haga una rutina en MATLAB

DESAROLLO

addpath(genpath('/Applications/MATLAB_R2017a.app/toolbox/glpkmex-master/'));
addpath(genpath('/Applications/MATLAB_R2017a.app/toolbox/YALMIP-master/'));

Definición de las Variables

x = sdpvar(101,1,'full');
b = [100;200];
 
%% Definicion Matriz A %%
A1 = [];
A2 = [];
 
for i=-100:0
A1 = [A1,i*-1];
end
 
for i=0:100
A2 = [A2,i];
end
 
A = [A1;A2];
 
%% Definicion Matriz c %%
c = [];
 
for i=-50:0
c = [c,i*-1];
end
 
for i=1:50
c = [c,i];
end
Definición Función Objetivo

z = c*x;

Definiciòn de Restricciones

R = [] ;
for i=1:2
R = [R,sum(A(i,:)*x) == b(i)];
end

Restriccion de positividad

R = [R, x>=0];

Solucion

option = sdpsettings('solver','glpk');
solucion = optimize(R,z,option);

Salida:

disp('Solucion optima')

Solucion optima

X_opt = value(x);
for i=1:size(X_opt)
if X_opt(i) > 0
valor_opt = X_opt(i);
disp({'X' i '=' valor_opt});
end
end

'X' [51] '=' [2.0000]


'X' [101] '=' [1]

%%X_opt = value(x)
disp('Valor optimo')

Valor optimo

Z_opt = value(z)
Z_opt = 50
Problema 2
Una empres. de la alimentación produce zumos de pera, naranja, limón, tomate, manzana, además de
otros dos tipos denominados H y G que son combinados de algunos de los anteriores. La disponiblidad
de fruta para el periodo próximo, asi como los costes de producción y los precios de venta para los
zumos, viene dado en el cuadro 1:

Fruta = {'Naranja';'Pera';'Limón';'Tomate';'Manzana'};
 
Disponibilidad_Maxima = [32000;25000;21000;18000;27000;];
Coste = [94;87;73;47;68;];
Precio_venta = [129;125;110;88;97];
 
T = table(Disponibilidad_Maxima,Coste,Precio_venta,...
'RowNames',Fruta)

T = 5×3 table
Disponibilidad_Maxima Coste Precio_venta
_____________________ _____ ____________

Naranja 32000 94 129


Pera 25000 87 125
Limón 21000 73 110
Tomate 18000 47 88
Manzana 27000 68 97

Definición de Variables:

Funcion Objetivo

Restricciones:

Concentración (H) :

Concentración (G) :
Disponibilidad:

No negatividad: para todo i=1,2 y j=1,2,3,4,5

Código:

addpath(genpath('/Applications/MATLAB_R2016b.app/toolbox/YALMIP-master'))

Definición de variable

x= sdpvar(2,5,'full') ;
y = sdpvar(2,1) ;

Definición Función objetivo:

z= 100*y(1) + 120*y(2) + 35*(x(1,1)+ x(2,1)) + 38*(x(1,2)+ x(2,2))...


+ 37*(x(1,3)+ x(2,3)) +41*(x(1,4)+ x(2,4)) +29*(x(1,5)+ x(2,5)) ;

Restricciones:

R = [] ;%arreglo para guardar las restricciones

Restriccion de concentración de H:

R= [R, x(1,5)<=0.5*y(1)] ;
R= [R, x(1,2)<=0.2*y(1)] ;
R= [R, x(1,3)<=0.1*y(1)] ;
R= [R, x(1,1)+x(1,2)+x(1,3)+x(1,4)+x(1,5)==y(1)];

Restriccion de concetravion de G:

R= [R, x(2,1)==0.4*y(2)] ;
R= [R, x(2,3)==0.35*y(2)] ;
R= [R, x(2,2)==0.25*y(2)] ;
R= [R, x(2,1)+x(2,2)+x(2,3)+x(2,4)+x(2,5)==y(2)];

Disponibilidad:

R= [R, x(1,1) + x(2,1)<=32000] ;


R= [R, x(1,2) + x(2,2)<=25000] ;
R= [R, x(1,3) + x(2,3)<=21000] ;
R= [R, x(1,4) + x(2,4)<=18000] ;
R= [R, x(1,5) + x(2,5)<=27000] ;
R= [R,x>=0];
R= [R,y>=0];

Solución:

Selección de solver:

option = sdpsettings('solver','linprog') ;% option o cualquier palabra


 

solucion = optimize(R,-z,option)%-z maximizar//z minimizar

Warning: YALMIP has detected that your drive or network is unusually slow.
This causes a severe delay in SOLVESDP when I try to find available solvers.
To avoid this, use the options CACHESOLVERS in SDPSETTINGS.
See the FAQ for more information.
Optimization terminated.
solucion =
yalmiptime: 1.6038
solvertime: 0.3402
info: 'Successfully solved (LINPROG)'
problem: 0

disp('el valor optimal es :')

el valor optimal es :

value(z)

ans = 1.7868e+07

disp('los valores optimales a producir son:')

los valores optimales a producir son:

value(x)

ans =
1.0e+04 *
0.8000 1.0000 0.0000 1.8000 2.7000
2.4000 1.5000 2.1000 0.0000 -0.0000

disp('valores de los combinados a producir:')

valores de los combinados a producir:

value(y)

ans =
1.0e+04
6.3000
6.0000

Problema 3
Una fabrica de papel produce bobinas con una medida estándar de 1000 m de longuitud y 1 m de
ancho. recibe semanalmente pedidos de diferentes centros de suministros. Para la semana entrante
este pedido es de 320 bobinas de 20 cm de anchos, 365 de 30 cm, 480 de 40 cm y 176 de 70 cm
( todas con la misma longitud estándar de 1000 m)

El fabricante debe cortar a lo ancho las bobinas de 1 metro para satisfacer la demanda.

Desea producir el minimo número posible de bobinas de 1 m ( se supone que los sobrantes se recicla,
por lo que tienen un costo despreciable)

1. Formularun programa linea que responda a los deseos del fabricante


2. escriba una rutina en MATLAB para resolver el modelo construido en el item anterior
3. Si el papel sobrante tubiera un coste no despreciable ¿ cuál seria entonces la función objetivo
4. Vuelva a construir un modelo con función objetivo definida en el item anterior y compare sus
resultados. Haga una rutina en MATLAB.

= bobinas que se obtiene segun el tipo de corte

Xi = {'X1';'X2';'X3';'X4';'X5';'X6';'X7';'X8';'X9';'X10'};
 
veinte_cm = [5;3;3 ;1;0;1;0;0;1;2];
treinta_cm = [0;0;1 ;0;1;1;2;3;0;2];
cuarenta_cm = [0;1;0 ;0;0;1;1;0;2;0];
cincuneta_cm = [0;0;0;1;1;0;0;0;0;0];
cm_sobrantes = [0;0;10;10;0;10;0;10;0;0];
T = table(veinte_cm,treinta_cm,cuarenta_cm,cincuneta_cm,cm_sobrantes,...
'RowNames',Xi)

T = 10×5 table
veinte_cm treinta_cm cuarenta_cm cincuneta_cm cm_sobrantes
_________ __________ ___________ ____________ ____________

X1 5 0 0 0 0
X2 3 0 1 0 0
X3 3 1 0 0 10
X4 1 0 0 1 10
X5 0 1 0 1 0
X6 1 1 1 0 10
X7 0 2 1 0 0
X8 0 3 0 0 10
X9 1 0 2 0 0
X10 2 2 0 0 0

Funcion objetivo despreciando los residuos


min Z = X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10

Restricciones
Segunda parte
= bobinas que se obtiene segun el tipo de corte

Yi = {'Y1';'Y2';'Y3';'Y4';'Y5';'Y6';'Y7';'Y8';'Y9';'Y10'};

Funcion objetivo conciderando los residuos


min z = 10*Y3 + 10*Y4 + 10*Y6 + 10*Y8 + 20*(5*Y1 + 3*Y2 + 3*Y3 + Y4 + Y6 + Y9 + 2*Y10 - 320) +
30*(Y3 + Y5 + Y6 + 2*Y7 + 3*Y8 + 2*Y10 - 365) + 40*(Y2 + Y6 + Y7 + 2*Y9 - 480) + 70*(Y4 + Y5 -176)

Restricciones

addpath(genpath('C:\Program Files\MATLAB\R2017a\toolbox\YALMIP-master'))

definicion de variable primera parte

X= sdpvar(1,2,3,4,5,6,7,8,9,10);

funcion objetivo

Z = (X(1)+X(2)+X(3)+X(4)+X(5)+X(6)+X(7)+X(8)+X(9)+X(10));

Restricciones

R = [];
R = [R,5*X(1) + 3*X(2) + 3*X(3) + X(4) + X(6) + X(9) + 2*X(10) >= 320];
R = [R,X(3) + X(5) + X(6) + 2*X(7) + 3*X(8) +2*X(10) >= 365];
R = [R,X(2) + X(6) + X(7) + 2*X(9) >= 480];
R = [R,X(4) + X(5) >= 176];
R = [R,X >=0];

SOLUCION

option1 = sdpsettings('solver','linprog') % option o cualquier nombre a la variable

 
solucion = optimize(R, Z, option1);
Optimal solution found.

disp('la solucion optima es:')

la solucion optima es:

value(Z)

ans = 598.5000

definicion de variable segunda parte

Y = sdpvar(1,2,3,4,5,6,7,8,9,10);

funcion objetivo

z = (10*Y(3) + 10*Y(4) + 10*Y(6) + 10*Y(8) + 20*(5*Y(1) + 3*Y(2) + 3*Y(3) + Y(4) + Y(6) + Y(9)

Linear scalar (real, 10 variables)

Restricciones

r = [];
r = [r,5*Y(1) + 3*Y(2) + 3*Y(3) + Y(4) + Y(6) + Y(9) + 2*Y(10) >= 320];
r = [r,Y(3) + Y(5) + Y(6) + 2*Y(7) + 3*Y(8) +2*Y(10) >= 365];
r = [r,Y(2) + Y(6) + Y(7) + 2*Y(9) >= 480];
r = [r,Y(4) + Y(5) >= 176];
r = [r,Y >=0];

SOLUCION

option2 = sdpsettings('solver','linprog') % option o cualquier nombre a la variable

 
solucion = optimize(r, z, option2);

Optimal solution found.

disp('la solucion optima es:')

la solucion optima es:

value(z)

ans = 1.0980e+04

Вам также может понравиться