Sie sind auf Seite 1von 14

UNIVERSIDAD CENTRAL DEL ECUADOR

INVESTIGACION OPERATIVA TEMA: MINIMIZACION DE COSTOS PROBLEMA DE LA DIETA DARWIN CUBI

Como ejemplo intuitivo de un modelo de minimizacin de


costos, se utilizara el conocido Problema de la dieta, que encuentra una mezcla de alimentos que satisfaga las necesidades de las cantidades de varias vitaminas.

Volveremos a construir un pequeo programa lineal,


explcito y, a continuacin, mostrar cmo un modelo general puede ser formulado para todos los programas lineales de este tipo.

PROBLEMA
Considere el problema de la eleccin de los alimentos preparados para
cumplir con ciertos requerimientos nutricionales. Supongamos que cenas precocinadas de los siguientes tipos estn disponibles para los siguientes precios por paquete:

Estas cenas ofrecen los siguientes porcentajes, por paquete, del mnimo diario
de requisitos de las vitaminas A, C, B1 y B2:

El problema es encontrar la combinacin ms barata de paquetes que se reunir


a la semana los requisitos - es decir, al menos 700% de las necesidades diarias para cada nutriente.

A continuacin, el costo total de la dieta ser:

El porcentaje total de la vitamina A requerimiento est dada por una frmula similar:

Esta cantidad debe ser mayor que o igual a 700 por ciento. Hay una frmula similar
para cada una de las otras vitaminas, y cada uno de ellos tambin debe ser 700.

Poniendo todos estos juntos, tenemos el siguiente programa lineal:

Un modelo AMPL para el problema de la dieta


Este modelo trata de dos cosas: nutrientes y alimentos. As comenzamos un
modelo AMPL al declarar conjuntos de cada uno:

set NUTR;
set FOOD;

Lo siguiente que necesitamos para especificar los nmeros requeridos por el


modelo. Sin duda un costo positivo se debe dar para cada alimento:
param cost {FOOD} > 0;

Tambin se especifica que para cada comida hay lmites inferior y superior sobre
el nmero de paquetes en la dieta: param f_min {FOOD} >= 0;

param f_max {j in FOOD} >= f_min[j];

Tambin especificamos lmites inferior y superior similares en la cantidad de


cada nutriente en la dieta:

param n_min {NUTR} >= 0;


param n_max {i in NUTR} >= n_min[i];

Por ltimo, para cada combinacin de un nutriente y un alimento, necesitamos


un nmero que representala cantidad de un nutriente en un solo paquete de los alimentos
param amt {NUTR,FOOD} >= 0;

Las referencias a este parmetro requieren dos ndices. Por ejemplo, amt [i, j] es
el importe i de nutrientes en un paquete de comida j

Las variables de decisin para este modelo son el nmero de paquetes de


compra de los diferentes alimentos: var Buy {j in FOOD} >= f_min[j], <= f_max[j];

El nmero de paquetes de algunos j alimentos para comprar se llamar Buy [j];


en cualquier solucin aceptable que tendr que estar entre f_min [j] y f_mx [j].

El costo total de la compra de un alimento j es el costo por paquete, el cost [j],


multiplicado por el nmero de paquetes, buy [j]. El objetivo a minimizar es la suma de este producto en todos los alimentos j:

Del mismo modo, la cantidad de un nutriente i suministrados por un alimento j


es el nutriente por cada paquete, amt [i, j], multiplicado por el nmero de paquetes Buy [j].

La cantidad total de nutrientes i sumintrada es la suma de este producto sobre todos los alimentos j: sum {j in FOOD} amt[i,j] * Buy[j]

Para completar el modelo, slo es necesario especificar que cada dicha suma
debe estar entre el lmites adecuados. Comienza la declaracin de la restriccin: subject to Diet {i in NUTR}: para decir que una restriccin llamada Diet [i] debe ser impuesta para cada miembro i de NUTR

El resto de la declaracin da la afirmacin algebraica de la limitacin de nutrientes para i: las variables deben satisfacer
n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i]

SCRIPT DEL MODELO GENERAL


set NUTR; set FOOD; param cost {FOOD} > 0; param f_min {FOOD} >= 0;

param f_max {j in FOOD} >= f_min[j];


param n_min {NUTR} >= 0; param n_max {i in NUTR} >= n_min[i]; param amt {NUTR,FOOD} >= 0; var Buy {j in FOOD} >= f_min[j], <= f_max[j]; minimize Total_Cost: sum {j in FOOD} cost[j] * Buy[j]; subject to Diet {i in NUTR}: n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i];

MEJORAS DEL MODELO GENERAL


Ahora supongamos que queremos hacer las siguientes mejoras. Promover la
variedad, la dieta semanal debe contener entre 2 y 10 paquetes de cada alimento. La cantidad de Tambin se da sodio y caloras en cada paquete; sodio total no debe superar los 40.000 mg, y las caloras totales deben estar entre 16.000 y 24.000.

Todos estos cambios pueden ser realizados a travs de unas pocas


modificaciones en la data.

El mensaje del problema inviable nos dice que hemos limitado la dieta
demasiado bien, no hay manera de que todas las restricciones que se pueden satisfacer.

AMPL nos permite examinar una variedad de valores producidos por un


programa de solucin en su intento de encontrar una solucin. En el captulo 1, se utilizaron los valores marginales (o dual) para investigar la sensibilidad de una solucin ptima a los cambios en las restricciones. Aqu no hay ptima, pero el solver hace volver la ltima solucin que encontr al tratar de satisfacer las restricciones. Podemos buscar el origen de la inviabilidad mostrando algunos valores asociados con esta solucin:

Das könnte Ihnen auch gefallen