Sei sulla pagina 1di 10

Ejercicios resueltos a manera de ejemplo

Ejemplo 1:
Una empresa manufacturera elabora tres componentes: 1, 2 y 3 para
vender a compaas de refrigeracin. Los componentes son procesados
en dos mquinas 1 y 2. La mquina 1 est disponible por 120 horas y la
mquina 2 est disponible por 110 horas. No ms de 200 unidades de
componente 3 podrn ser vendidos, pero hasta 1000 unidades de cada
uno de los otros dos componentes pueden ser vendidas. De hecho, la
empresa tiene ya rdenes de 600 unidades de componente 1 que deben
ser satisfechas. Los beneficios de cada unidad de los componentes 1, 2 y
3 son de $ 8, 6 y 9 respectivamente.
Los tiempos en minutos necesarios para cada elaborar cada componente
en cada mquina son:

La formulacin del modelo es:


Max=8*C1+6*C2+9*C3
6*C1+4*C2+4*C3<=7200
4*C1+5*C2+2*C3<=6600
C3<=200
C1<=1000
C2<=1000
C1>=600

Solucin en Lingo:
SETS:
COMPONENTES/C1,C2,C3/:
BENEFICIO,CANTIDAD;

RECURSOS/MAQUINA1,MAQUINA2,COMPONENTE3,
COMPONENTE1,COMPONENTE2/:DISPONIBLE;
DEMANDAS/DCOMPONENTE1/:DEMANDADO;
RXC(RECURSOS,COMPONENTES):UTILIZADO;
DXC(DEMANDAS,COMPONENTES):REQUERIDO;
ENDSETS
DATA:
BENEFICIO=
8
6
9;
DISPONIBLE=
7200660020010001000;
DEMANDADO=
600;
UTILIZADO=644
452
001
100
010;
REQUERIDO=100;
ENDDATA
MAX=@SUM(COMPONENTES:
BENEFICIO*CANTIDAD);
@FOR(RECURSOS(I):
@SUM(COMPONENTES(J):
UTILIZADO(I,J)*CANTIDAD(J))<=
DISPONIBLE(I));
@FOR(DEMANDAS(I):
@SUM(COMPONENTES(J):
REQUERIDO(I,J)*CANTIDAD(J))>=
DEMANDADO(I));

Para ser solucionado con el programa LINGO se pulsa sobre la expresin


SOLVER. Si no ha seleccionado el algoritmo de solucin, el programa lo
selecciona. La solucin se encuentra en la hoja siguiente:

Ejemplo 2:
Una empresa manufacturera elabora un producto en tres pases
diferentes P1, P2 y P3, que debe ser transportado a tres distribuidores
situados en tres diferentes ciudades C1, C2 y C3 para su posterior venta.
La cantidad de unidades de producto disponible en P1 es de 9.000, en
P2 existen 4.000 y en P3 es de 8.000. Las unidades de producto
requeridas en C1 es de 6.000, en C2 es de 5.000 y en C3 es de 7.000.
Los costos unitarios de transporte, en unidades monetarias, desde cada
pas hasta cada una de los distribuidores de las tres ciudades se
muestran en la siguiente matriz.

Solucin:
MODEL:
!Unproblemadetransportecon3paisesy3distribuidores;
SETS:
PAISES/P1P2P3/:CAPACIDAD;
DISTRIBUIDORES/D1D2D3/:DEMANDA;
LINKS(Pases,Distribuidores):COSTO,CANTIDAD;
ENDSETS
!Theobjective;
MIN=@SUM(LINKS(I,J):
COSTO(I,J)*CANTIDAD(I,J));
!Thedemandconstraints;
@FOR(DISTRIBUIDORES(J):
@SUM(PAISES(I):CANTIDAD(I,J))=
DEMANDA(J));

!Thecapacityconstraints;
@FOR(PAISES(I):
@SUM(DISTRIBUIDORES(J):CANTIDAD(I,J))<=
CAPACIDAD(I));
!Hereisthedata;
DATA:
CAPACIDAD=900040008000;
DEMANDA=600050007000;
COSTO=10209
8106
10307;
ENDDATA
END

Global optimal solution found.


Objective value:

169000.0

Infeasibilities:

0.000000

Total solver iterations:

Model Class:

Total variables:

LP

Nonlinear variables:

Integer variables:

Total constraints:

Nonlinear constraints:

Total nonzeros:
Nonlinear nonzeros:

27
0

Variable

Value

Reduced Cost

CAPACIDAD( P1)

9000.000

0.000000

CAPACIDAD( P2)

4000.000

0.000000

CAPACIDAD( P3)

8000.000

0.000000

DEMANDA( D1)

6000.000

0.000000

DEMANDA( D2)

5000.000

0.000000

DEMANDA( D3)

7000.000

0.000000

COSTO( P1, D1)

10.00000

0.000000

COSTO( P1, D2)

20.00000

0.000000

COSTO( P1, D3)

9.000000

0.000000

COSTO( P2, D1)

8.000000

0.000000

COSTO( P2, D2)

10.00000

0.000000

COSTO( P2, D3)

6.000000

0.000000

COSTO( P3, D1)

10.00000

0.000000

COSTO( P3, D2)

30.00000

0.000000

COSTO( P3, D3)

7.000000

0.000000

CANTIDAD( P1, D1)

6000.000

0.000000

CANTIDAD( P1, D2)

1000.000

0.000000

CANTIDAD( P1, D3)

0.000000

2.000000

CANTIDAD( P2, D1)

0.000000

8.000000

CANTIDAD( P2, D2)

4000.000

0.000000

CANTIDAD( P2, D3)

0.000000

9.000000

CANTIDAD( P3, D1)

0.000000

0.000000

CANTIDAD( P3, D2)

0.000000

10.00000

CANTIDAD( P3, D3)

7000.000

0.000000

Row

Slack or Surplus

Dual Price

169000.0

-1.000000

0.000000

-10.00000

0.000000

-20.00000

0.000000

-7.000000

2000.000

0.000000

0.000000

10.00000

1000.000

0.000000

Ejemplo 3:
Supongamos la siguiente formulacin en LINGO: un modelo de
transporte desde
6 bodegas a 8 vendedores o clientes.
Existe
informacin sobre la demanda de cada uno de los clientes, como
tambin informacin sobre la capacidad de cada una de las bodegas.
El modelo en LINGO es:
MODEL:
! A 6 Warehouse 8 Vendor Transportation Problem;
SETS:
WAREHOUSES: CAPACITY;
VENDORS: DEMAND;
LINKS( WAREHOUSES, VENDORS): COST, VOLUME;
ENDSETS
! Here is the data;
DATA:
!set members;
WAREHOUSES = WH1 WH2 WH3 WH4 WH5 WH6;
VENDORS = V1 V2 V3 V4 V5 V6 V7 V8;
!attribute values;
CAPACITY = 60 55 51 43 41 52;
DEMAND = 35 37 22 32 41 32 43 38;
COST = 6 2 6 7 4 2 5 9
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
ENDDATA
! The objective;
MIN = @SUM( LINKS( I, J):
COST( I, J) * VOLUME( I, J));

! The demand constraints;


@FOR( VENDORS( J):
@SUM( WAREHOUSES( I): VOLUME( I, J)) =
DEMAND( J));
! The capacity constraints;
@FOR( WAREHOUSES( I):
@SUM( VENDORS( J): VOLUME( I, J)) <=
CAPACITY( I));
END

El valor de la funcin objetivo en el ptimo es de: $664.

Importando datos desde Excel


Con el mismo ejemplo anterior, veamos ahora cmo se formula en
LINGO cuando importamos algunos datos desde una planilla Excel.

MODEL:
! A 6 Warehouse 8 Vendor Transportation Problem;
SETS:
! Import warehouses and vendors from Excel;
WAREHOUSES: CAPACITY;
VENDORS
: DEMAND;
LINKS( WAREHOUSES, VENDORS): COST, VOLUME;
ENDSETS
! The objective;
MIN = @SUM( LINKS( I, J):
COST( I, J) * VOLUME( I, J));
! The demand constraints;
@FOR( VENDORS( J):
@SUM( WAREHOUSES( I):
VOLUME( I, J)) = DEMAND( J));
! The capacity constraints;
@FOR( WAREHOUSES( I):
@SUM( VENDORS( J): VOLUME( I, J))
<= CAPACITY( I));
DATA:
! Import the data from Excel;
WAREHOUSES, VENDORS, CAPACITY, DEMAND, COST =
@OLE( '\LINGO13\SAMPLES\WIDGETS.XLS',
'WAREHOUSES', ' VENDORS', 'CAPACITY',
'DEMAND', 'COST');
ENDDATA
END

Como podemos ver lo nico que cambia es la seccin de Datos. Es


importante que en el archivo Excel se definan los rangos de los nombres
de cada uno de los conjuntos utilizados (en Excel, ir a formulas y luego a
Asignar nombre a un rango). Ver el archivo Excel de ejemplo llamado
widget.xls.

Exportando resultados a Excel


Ahora con este mismo problema vamos a agregar la exportacin de los
resultados a Excel. La programacin del problema quedara de la
siguiente forma:

MODEL:
! A 6 Warehouse 8 Vendor Transportation Problem;
SETS:
! Import warehouses and vendors from Excel;
WAREHOUSES: CAPACITY;
VENDORS
: DEMAND;
LINKS( WAREHOUSES, VENDORS): COST, VOLUME;
ENDSETS
! The objective;
MIN = @SUM( LINKS( I, J):
COST( I, J) * VOLUME( I, J));
! The demand constraints;
@FOR( VENDORS( J):
@SUM( WAREHOUSES( I):
VOLUME( I, J)) = DEMAND( J));
! The capacity constraints;
@FOR( WAREHOUSES( I):
@SUM( VENDORS( J): VOLUME( I, J))
<= CAPACITY( I));
DATA:
! Import the data from Excel;
WAREHOUSES, VENDORS, CAPACITY, DEMAND, COST =
@OLE( '\LINGO13\SAMPLES\WIDGETS.XLS',
'WAREHOUSES', ' VENDORS', 'CAPACITY',
'DEMAND', 'COST');
! Export the solution back to Excel;
@OLE( '\LINGO13\SAMPLES\WIDGETS.XLS',
'VOLUME') = VOLUME;
ENDDATA
END

Es importante que en el archivo Excel se definan los rangos de los


nombres de cada uno de los conjuntos utilizados (en Excel, ir a formulas
y luego a Asignar nombre a un rango). Ver el archivo Excel de
ejemplo llamado widget.xls.

Potrebbero piacerti anche