Cálculos de optimización con lenguaje de programación

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))

Fuente:
Fundación Carlos Slim – Curso Analista de Datos.

 


Comentarios

Lo más popular de la semana

25 Trabalenguas de Oficios

Infografía 4. Mapa Conceptual de Antecedentes de los Filósofos de la Calidad

25 Preguntas de Administración