Академический Документы
Профессиональный Документы
Культура Документы
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/'));
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_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
_____________________ _____ ____________
Definición de Variables:
Funcion Objetivo
Restricciones:
Concentración (H) :
Concentración (G) :
Disponibilidad:
Código:
addpath(genpath('/Applications/MATLAB_R2016b.app/toolbox/YALMIP-master'))
Definición de variable
x= sdpvar(2,5,'full') ;
y = sdpvar(2,1) ;
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:
Solución:
Selección de solver:
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
el valor optimal es :
value(z)
ans = 1.7868e+07
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
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)
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
Restricciones
Segunda parte
= bobinas que se obtiene segun el tipo de corte
Yi = {'Y1';'Y2';'Y3';'Y4';'Y5';'Y6';'Y7';'Y8';'Y9';'Y10'};
Restricciones
addpath(genpath('C:\Program Files\MATLAB\R2017a\toolbox\YALMIP-master'))
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
solucion = optimize(R, Z, option1);
Optimal solution found.
value(Z)
ans = 598.5000
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)
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
solucion = optimize(r, z, option2);
value(z)
ans = 1.0980e+04