AMPL ejercios resuelto

Facultad de Ingeniería Escuela de Ingeniería Industrial y Estadística Profesor: Julio César Londoño O Técnicas de sol

Views 137 Downloads 4 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Facultad de Ingeniería Escuela de Ingeniería Industrial y Estadística

Profesor: Julio César Londoño O

Técnicas de solución • Este tipo de modelos pueden llegar a tener decenas (e incluso cientos) de miles de variables y restricciones. • Lenguajes generadores de modelos, como por ejemplo AMPL, OPL, GAMS, XPRESS. • Software para resolver problemas de programación mixta, por ejemplo CPLEX, MINTO, MINOS. • Métodos heurísticos, basados en transformaciones del modelo no-lineal y en PL sucesivos. • Algoritmos de optimización global.

Marco general de un generador de modelos FORMULACIÓN DEL MODELO MATEMÁTICO ARCHIVO DEL MODELO

SOLUCIÓN Y RESULTADOS

ARCHIVO DE DATOS

GENERADOR DE MODELOS (AMPL)

SOLVER (CPLEX)

MODELO ESPECÍFICO (Archivo MPS)

AMPL A Modeling Language for Mathematical Programming AMPL is a comprehensive and powerful algebraic modeling language for linear and nonlinear optimization problems, in discrete or continuous variables.

Using the NEOS Server for MINTO • ARCHIVO MODELO: Contiene la definición de conjuntos, parámetros variables, la función objetivo y el conjunto de restricciones • ARCHIVO DATOS: Contiene los elementos de los conjuntos y la información tabulada de los parámetros • ARCHIVO COMANDOS: Son las instrucciones que se dan al sistema acerca de cómo se desea que salgan los resultados y cuáles de éstos se quieren tener en la salida.

Problema Red de Abastecimiento

Ejercicio del libro de Chopra

Parámetros y variables Parámetros

D j = Demanda anual del mercado j K i = Capacidad potencial de la instalacion i f i = Costo fijo de apertura de la instalacion i cij = Costo de transportar una unidad desde la instalacion i al mercado j Variables de Decisión

xij = Cantidad en unidades a transportar desde i hacia j yi = 1 si la instalacion se abre, 0 de lo contrario

Formulación Algebraica Minimizar Costo Total : n

n

m

∑ f × y + ∑∑ C

Min

i =1

i

i

i =1 j =1

ij

× xij

Sujeto A : n

∑x i =1

ij

m

∑x j =1

ij

= D j ∀ j = 1, 2, ...., m ≤ K i yi ∀ i = 1, 2, ...., n

xij ≥ 0

yi ∈ [0,1]

∀ i = 1, 2, ...., n

Modelo AMPL

Conjuntos set INSTALACIONES; # Conjunto de instalaciones candidatas set MERCADOS; # Conjunto de mercados

Parámetros param demanda{j in MERCADOS} >=0; # Demanda Dj anual del mercado j param cap{i in INSTALACIONES} >=0; # Capacidad Ki de la instalacion i param c_fijo{i in INSTALACIONES} >=0; # Costo fi de apertura de la instalacion i param c_tran{i in INSTALACIONES, j in MERCADOS} >=0; # Costo de transportar una unidad desde la instalacion i hacia el mercado j

Variables var x{i in INSTALACIONES, j in MERCADOS} >= 0; var y{i in INSTALACIONES} binary;

Función Objetivo minimize costo_total: sum{i in INSTALACIONES} (c_fijo[i]*y[i]) + sum{i in INSTALACIONES, j in MERCADOS} (c_tran[i,j]*x[i,j]);

Restricciones subject to cump_dem{j in MERCADOS}: sum{i in INSTALACIONES} (x[i,j]) = demanda[j]; subject to capacidad{i in INSTALACIONES}: sum{j in MERCADOS} (x[i,j]) = 0; # Capacidad de la planta ubicada en la localidad i (Toneladas de producto/ año) param Dem_clientesk{k in K} >= 0; # Demanda de producto de los clientes ubicados en la zona de consumo k (Toneladas de producto/año) param Cost_tteij{i in I, j in J}; # Costo de transporte de producto de la planta i al sitio de transbordo j ($/Ton) param Cost_ttejk{j in J, k in K}; # Costo de transporte de producto del sitio de transbordo j a la zona de consumo k ($/Ton)

# VARIABLES DE DECISIÓN var x{i in I, j in J}>= 0; # Toneladas de producto a enviar de i a j por año (Ton/año) var y{j in J, k in K}>= 0; # Toneladas de producto a enviar de j a k por año (Ton/año) # FUNCION OBJETIVO minimize costo_total: # ($/año) sum{i in I, j in J} (x[i,j]*Cost_tteij[i,j]) # Costo anual de enviar producto de i a j + sum{j in J, k in K} (y[j,k]*Cost_ttejk[j,k]; # Costo anual de enviar producto de j a k

# RESTRICCIONES # Por capacidad de la planta i (Ton/año): subject to Cap_pdni{i in I}: sum {j in J} (x[i,j]) > nombre_ sol.txt; printf "*************************************\n\n" >> nombre_ sol.txt; printf "\nCOSTO TOTAL = \t%12.1f", costo_total >> nombre_ sol.txt; printf "\nFLUJO DESDE PROVEEDORES HACIA ZONAS TRASBORDO=\n\n" >> nombre_ sol.txt ; display x >> nombre_ sol.txt;

Archivo Comandos # COMANDOS DE IMPRESIÓN DE RESULTADOS: display y >> nombre_ sol.txt; printf "\nCAPACIDAD SOBRANTE DE PROVEEDORES =\n\n" >> nombre_ sol.txt; display Cap_plantai.slack >> nombre_ sol.txt; printf "\nCOSTOS DE OPORTUNIDAD DE PROVEEDORES =\n\n" >> nombre_ sol.txt; display Dem_clientek >> nombre_ sol.txt t; SIGNIFICADO DE LOS COMANDOS DE IMPRESIÓN

• \n significa salto de línea; • \t tabulador; %12.1f significa que se va a imprimir un número de punto flotante (un número real) con 12 espacios, de los cuales uno es decimal

Modelo de Bauxita

Problema de una cadena de abastecimiento Una compañía multinacional de aluminio tiene depósitos de bauxita (materia prima) en tres lugares del mundo A, B y C. Tiene además cuatro plantas donde la bauxita se convierte en alúmina (un producto intermedio), en lugares B, C, D y E. También tiene plantas de esmaltado en los lugares D y E. El proceso de conversión de la bauxita en alúmina es relativamente poco costoso. El esmaltado, sin embargo, es costoso puesto que se requiere de un equipo electrónico especial. Una tonelada de alúmina produce 0.4 toneladas de aluminio terminado. Los datos siguientes están disponibles:

Problema de una cadena de abastecimiento

Problema de una cadena de abastecimiento Las ventas anuales de aluminio terminado son de 1000 ton en la planta D y de 1200 ton en la planta E.

Problema de una cadena de abastecimiento Los lingotes de producto terminado no se transportan entre D y E y viceversa. Formule y resuelva un modelo de optimización para determinar la mejor configuración y diseño de la cadena de abastecimiento presentada. Note que existe el problema de determinar cuáles plantas de alúmina deben ser abiertas.

El problema de la Bauxita Variables de decisión Xij = Ton/año de bauxita a transportar desde la mina i hacia la planta de alúmina j; i = A, B, C; j = B, C, D, E. Yjk = Ton/año de alúmina a transportar desde la planta de alúmina j hacia la planta de esmaltado k; j = B, C, D, E; k = D, E. Wj = 1, si la planta de alúmina j se abre; 0, de lo contrario; j = B, C, D, E. Función objetivo – Minimizar costo total anual

Función Objetivo Problema Bauxita Costo anual de explotación de bauxita ($/año):

Costo anual de producción de alúmina ($/año):

Función Objetivo Problema Bauxita Costo anual de procesamiento de alúmina en las plantas de esmaltado ($/año):

Costo anual de transporte desde las minas de bauxita hacia las plantas de alúmina ($/año):

Función Objetivo Problema Bauxita Costo anual de transporte desde las plantas de alúmina hacia las plantas de esmaltado ($/año):

Costo fijo anual de plantas de alúmina ($/año):

Restricciones Problema Bauxita 1) Por capacidad anual de explotación de bauxita en cada mina (Ton de bauxita/año):

2) Por capacidad anual de procesamiento de bauxita en cada planta de alúmina (Ton de bauxita/año):

Restricciones Problema Bauxita 3) Por capacidad anual de procesamiento de alúmina en cada planta de esmaltado (Ton de alúmina/año):

4) Por ventas anuales de aluminio terminado en cada planta de esmaltado (Ton de aluminio terminado/año):

5) Por balance de masa en cada una de las plantas de alúmina:

Restricciones Problema Bauxita 6) Por límites en los valores de cada una de las variables:

CONJUNTOS PRINCIPALES MINAS = Conjunto de minas de bauxita indexado por I PLALU = Conjunto de plantas de alúmina indexado por j PLESM = Conjunto de plantas de esmaltado indexado por k PARÁMETROS capal_es = Capacidad de procesamiento de alúmina en la planta de esmaltado k (Ton de alúmina/año) capb_al = Capacidad de procesamiento de bauxita en la planta de alúmina j (Ton de bauxita/año) capbaux = Capacidad de explotación de bauxita de la mina i (Ton de bauxita/año) cexp = Costo de explotación de la mina i ($/Ton de bauxita) cfijo = Costo fijo de la planta de alúmina j ($/año) cpal = Costo de producción de alúmina en la planta de alúmina j ($/Ton de alúmina) cpes = Costo de procesamiento de la alúmina para producir aluminio terminado en la planta de esmaltado k ($/Ton de alúmina) ctran_al = Costo de transporte de alúmina desde la planta de alúmina j hacia la planta de esmaltado k ($/Ton de alúmina) ctran_b = Costo de transporte de bauxita desde la mina de bauxita i hacia la planta de alúmina j ($/Ton de bauxita) demanda = Demanda de aluminio terminado en la planta de esmaltado k (Ton de aluminio terminado/año) rendal = Rendimiento de alúmina de la bauxita extraída de la mina i (Ton de alúmina/Ton de bauxita) rendim = Rendimiento de alúmina para producir aluminio terminado (Ton de aluminio terminado/Ton de alúmina)

Variables de decisión Variables de decisión Xij = Ton/año de bauxita a transportar desde la mina i hacia la planta de alúmina j; i = A, B, C; j = B, C, D, E. Yjk = Ton/año de alúmina a transportar desde la planta de alúmina j hacia la planta de esmaltado k; j = B, C, D, E; k = D, E. Wj = 1, si la planta de alúmina j se abre; 0, de lo contrario; j = B, C, D, E. Código AMPL var x{i in MINAS, j in PLALU} >= 0; var y{j in PLALU, k in PLESM} >= 0; var w{j in PLALU} binary;

Función Objetivo Código AMPL Minimizar costo_total:

minimize costo_total:

∑∑cexp(i)× x

sum{i in MINAS, j in PLALU} (cexp[i]*x[i,j])

ij

i

j

∑∑cpal(j)× y j

+ sum{j in PLALU, k in PLESM} (cpal[j]*y[j,k])

jk

k

∑∑cpes(k)× y j

+ sum{j in PLALU, k in PLESM} (cpes[k]*y[j,k])

jk

k

∑∑ctran_b(i,j) × x

+ sum{i in MINAS, j in PLALU} (ctran_b[i,j]*x[i,j])

ij

i

j

∑∑ctran_al(j,k)× y j

jk

+ sum{j in PLALU, k in PLESM} (ctran_al[j,k]*y[j,k])

k

∑cfijo(j)× w(j) j

+ sum{j in PLALU} (cfijo[j]*w[j]);

Restricciones Código AMPL subject to cap_exp{i in MINAS}: sum{j in PLALU} (x[i,j])