Está en la página 1de 4

ABP Investigación de operaciones

1. Ejercicio de los rollos

a) Archivo de las constantes y datos (ABP1.dat):

set anchos:= 135 108 93 92; #anchos (cm) de los rollos a cortar
set cortes:= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; #numero de
cortes que se le pueden hacer al rollo de 3 metros

param cantidad: #combinaciones de los cortes con los anchos

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16:=
135 2 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0
108 0 2 0 0 1 0 0 1 1 1 0 0 0 1 0 0
93 0 0 3 0 0 1 0 2 1 0 2 1 0 0 1 0
92 0 0 0 3 0 0 1 0 1 2 1 2 0 0 0 1;

param ordenes:= #pedido de rollos por ancho


135 97
108 610
93 395
92 211;

Archivo del modelo algebraico (ABP2.mod):

set anchos;
set cortes;

param cantidad{i in anchos, j in cortes};


param ordenes{i in anchos};

var rollos{j in cortes} >= 0; #cantidad de rollos a producir

minimize totalRollos: sum {j in cortes} rollos[j];

subject to demanda {i in anchos}: sum{j in cortes} rollos [j] *


cantidad[i,j] >= ordenes[i];

Solución óptima:

sw: ampl
ampl: model C:\ampl.mswin32\models\ABP1.mod;
ampl: data C:\ampl.mswin32\models\ABP1.dat;
ampl data: option solver cplex;
ampl: solve;
CPLEX 12.6.3.0: optimal solution; objective 505
4 dual simplex iterations (0 in phase I)
ampl: display rollos;
rollos [*] :=
1 48.5 (48,5*2) = 97 135 cm
2 153.5 (153,5*2) = 307 108 cm
3 0
4 0
5 0
6 0
7 0
8 197.5 (197,5*2) = 395 93 cm y (197,5*1) = 197,5 108 cm
9 0
10 105.5 (105,5*2) = 211 92 cm y (105,5*1) = 105,5 108 cm
11 0
12 0
13 0
14 0
15 0
16 0

R//: El número más pequeño de rollos que deben se producidos y cortados para
satisfacer la orden es de 505 rollos de 3 metros.

Los rollos deben ser cortados de forma tal que:

Cortes/Anchos 135 cm 108 cm 93 cm 92 cm Total rollos


(3 metros)
Corte 1 97 rollos 0 0 0 48,5
Corte 2 0 307 rollos 0 0 153,5
Corte 8 0 197,5 rollos 395 rollos 0 197,5
Corte 10 0 105,5 rollos 0 211 rollos 105,5
Total rollos 97 610 395 211 505

b). En caso tal que la empresa reciba alguno otro tipo de pedido solo se tendrá que
modificar el archivo en el que se encuentran todos los datos, es decir, el archivo
guardado como ABP1.dat. En caso de cambiar a otro tipo de anchos simplemente
se modifican los valores que se ingresaron en AMPL en lugar de los que ya están
(135 cm, 108 cm, 93 cm, 92 cm), en la parte de la definición de este conjunto llamado
anchos; set anchos. Se tendría que modificar de igual forma, la matriz que fue
construida a partir de realizar una serie de combinaciones posibles en las que se
podía cortar el rollo de 3 metros en los anchos requeridos para satisfacer la
demanda, y en la cual se estipularon 16 tipos de cortes diferentes en los que se
podían cortar los rollos de la orden. Para hacer esto, primero se modificaría el
conjunto set cortes dependiendo de la cantidad de cortes que sean viables con
los anchos requeridos. Seguido se modificaría el parámetro cantidad, que es el
que contiene la matriz de los cortes y los anchos.
En caso de que se realice otra orden diferente a la empresa en cuestión de cantidad
de rollos requeridos para satisfacer la demanda, se haría necesaria la modificación
del parámetro ordenes en el mismo archivo .dat, de tal forma que se le ingresen los
nuevos anchos (en caso de cambiarlos) y las nuevas cantidades requeridas para
satisfacer la demanda.

Es importante recordar que, en caso de modificación de los datos, al momento de


escribir en AMPL se debe seguir una sintaxis y se recomienda seguir la forma de
escritura como se muestra en el archivo de las constates y datos (.dat). También se
hace importante recalcar en la forma de usar AMPL en la ventana sw, pues se hace
necesario dar el lugar exacto donde el programa puede encontrar los archivos .dat
y .mod, por esto también se recomienda seguir la misma sintaxis de la parte de
solución óptima.

Si el problema cambia en sentido que se le agrega alguna otra restricción, este


modelo no será válido y se hará necesario agregar la nueva restricción en el archivo
.mod.

2). Ejercicio de transporte

Archivo de constantes y datos (ABP2.dat):

set enlatadoras:= E1 E2 E3;


set almacenes:= 1 2 3 4;

param costos:
1 2 3 4:=
E1 464 513 654 867
E2 352 416 690 791
E3 995 682 388 685;

param prod:= E1 75
E2 125
E3 100;

param cargas:= 1 80
2 65
3 70
4 85;

Archivo del modelo algebraico (ABP2.mod):

set enlatadoras; #numero de enlatadoras en la fabrica


set almacenes; #numero de almacenes de distribucion

param costos {i in enlatadoras, j in almacenes}; #matriz de costos de


transporte
param prod {i in enlatadoras}; #cantidad de produccion de las
enlatadoras
param cargas {j in almacenes}; #cantidad de carga a ser transportada

var cantidad {i in enlatadoras, j in almacenes} >= 0; #cantidad a ser


transportada de la enlatadora i al almacen j

minimize cost: sum{i in enlatadoras, j in almacenes} cantidad[i,j] *


costos[i,j];

subject to demanda{j in almacenes}: sum{i in enlatadoras}


cantidad[i,j] = cargas[j];
subject to oferta{i in enlatadoras}: sum{j in almacenes} cantidad[i,j]
= prod[i];

Solución optima:
sw: ampl
ampl: model C:\ampl.mswin32\models\ABP2.mod;
ampl: data C:\ampl.mswin32\models\ABP2.dat;
ampl: option solver cplex;
ampl: solve;
CPLEX 12.6.3.0: optimal solution; objective 152535
7 dual simplex iterations (0 in phase I)
ampl: display cantidad;
cantidad :=
E1 1 0
E1 2 20
E1 3 0
E1 4 55
E2 1 80
E2 2 45
E2 3 0
E2 4 0
E3 1 0
E3 2 0
E3 3 70
E3 4 30

R//: El costo mínimo de transporte de las cargas desde las enlatadoras hasta los
almacenes es de $152535 y se distribuyen las cargas de la forma como se
muestra en la información anterior.

También podría gustarte