Para facilitar y automatizar el proceso de optimización, en este artículo se utilizará el programa de Python. Primero debes instalar las siguientes bibliotecas (GLPK, Swig, Pulp) en Python.
Datos del problema.
En el siguiente ejemplo se definen los datos del
problema: Una empresa productora de balones requiere saber cuántos balones de
fútbol y básquetbol tiene que hacer con una cantidad de caucho determinada para
maximizar sus ganancias.
· Las ganancias que se generan por las ventas de cada uno de los tipos de balones. 50 monedas por cada balón de fútbol y 40 por los de básquetbol.
·
La cantidad de materia usada para
cada uno de los balones, se pueden crear máximo 500 balones de fútbol o 400 de
básquetbol.
·
El tiempo que tarda en hacer cada
tipo de balón, sólo se pueden hacer 400 balones de fútbol y 300 de básquetbol
al mes.
Define, declara y agrega las variables y restricciones del problema del problema de la siguiente forma:
·
Inicia tu programa mandando a
llamar la biblioteca pulp (from pulp import*).
·
Declara tus variables de decisión
siguiendo esta sintaxis:
o Escribe el nombre de la variable (pelotaFutbol,
pelotaBasquetbol), iguálala a la función Lp Variable y como parámetros de entrada
escribe el nombre de la variable y las restricciones que le correspondan.
o pelota futbol = LpVariable(“pelotaFutbol”,0,400)#0<=x1<400
o pelota basquetbol = LpVariable(“pelotaBasquetbol”,0,300)#0<=x1<300
·
Declara las constantes y
variables que necesitas para delimitar y resolver el problema.
·
Guarda en una variable el
problema y especifica de qué tipo va a ser. Maximización o Minimización
siguiendo esta sintaxis:
o problema = LpProblem(“problema”,LpMaximize)
·
Agrega las restricciones
faltantes del problema:
o problema+=(materialUnidadF*pelotaFutbol)+(materialUnidadB*pelotaBasquetbol)<=materialDisponible.
·
Por último, agrega al problema la
función objetivo definida anteriormente:
o problema+=(pelotaFutbol*gananciaF)+(pelotaBasquetbol*gananciaB)
Solución del problema.
Ya que tienes tu problema bien definido, obtén la
solución del problema de la siguiente forma:
·
Utiliza el método Solve de tu
variable problema, agrega como parámetro la siguiente instrucción:
problema.solve(GLPK(msg=0))
·
Guarda en una variable el status
de la resolución del problema: status=problema.solve (GLPK(msg=0))
·
Los status que puede arrojar el
método son:
o Optimal: Significa que tiene una solución óptima.
o Not Solved: Significa que el problema no tiene
solución óptima.
o Undefined: Significa que el problema no tiene
restricciones suficientes para ser resuelta.
Para terminar imprime en consola el status y los valores de las variables de Decisión, y así comprobar que todo se realizó de forma correcta.
print(Lpstatus)
print(valve(pelotaFutbol))
print(valve(pelotaBasquetbol))
Fundación Carlos Slim – Curso Analista de Datos.
No hay comentarios.:
Publicar un comentario