MA37A. Software para Programación Lineal

Documentos relacionados
(2.a) INTRODUCCIÓN A LA FORMULACIÓN DE MODELOS LINEALES

ANALISIS DE SENSIBILIDAD CON GAMS-CPLEX

Estructura de un modelo GAMS (1/3)

Programación Lineal y Entera

ANALISIS DE SENSIBILIDAD CON GAMS-CPLEX

Línea de trabajo: Control de los Procesos de Manufactura Optimización de los Procesos de Manufactura

Modelización Avanzada en Logística y Transporte

Herramientas de análisis numérico para la resolución de problemas de programación lineal

01 Introducción al lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales

FECHA DE ENTREGA AL ESTUDIANTE: Adjunto a la primera prueba parcial

OPL, un lenguaje de programación de restricciones.

Herramientas de análisis numérico aplicadas a la resolución de problemas de programación lineal en procesos metalúrgicos

GAMS (General Algebraic Modeling System)

Curso básico de GAMS Verano Cinetífico 2007 Gabriela Garcia Ayala

1. Introducción Instalación Ubuntu/Linux Windows... 2

El lenguaje de Programación C. Fernando J. Pereda

Lenguaje GAMS. José María Ferrer Caja Universidad Pontificia Comillas ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INDUSTRIAL DEPARTAMENTO DE ORGANIZACIÓN

Notas sobre el programa AMPL (Notas 1: dirigidas a los alumnos de 1º)

CAPITULO 6: PROBLEMAS DE TRANSPORTE

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Objective C (Desarrollo con Apple)

Programación lineal Optimización de procesos químicos DIQUIMA-ETSII

Lenguaje de Programación: C++, INPUT OUTPUT(Variables)

Introducción a la programación. El lenguaje de programación C

Facultad de Ciencias Económicas, Jurídicas y Sociales - Métodos Cuantitativos para los Negocios

Taller de Sistemas Operativos Introducción

1. RESOLVER el siguiente problema de programación lineal. max z =15x x 2 suj.a : 2x 1 + x x 1 + x x 1 500

Curso AVANZADO DE EXCEL 2013

Funciones como Subprogramas en C++

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

Programación. Test Autoevaluación Tema 3

Instrucciones de EXCEL Solver

CONECTIVIDAD TECNOLOGÍAS DE OPTIMIZACIÓN

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Programación lineal Optimización de procesos químicos DIQUIMA-ETSII

IO - Investigación Operativa

Introducción al programa WinQSB

Optimización de Problemas de Producción

DEPARTAMENTO DE ESTADÍSTICA E INVESTIGACIÓN OPERATIVA AMPLIACIÓN DE INVESTIGACIÓN OPERATIVA. Relación 6 (versión ) n n n.

1. ANTECEDENTES 2. ASPECTOS TÉCNICOS

Introducción a Programación Lineal

Optimización lineal con R José R. Berrendero

FÓRMULA PARA MATRIZ DE CORRELACIÓN Y DE COVARIANZA EN EXCEL Una alternativa dinámica y completa

TIPOS DE DATOS BASICOS EN LENGUAJE C

XXI Seminario de Ingeniería Química 2003 Instituto Tecnológico de Celaya

Realizar un modelo en GAMS que minimice la suma de los costos de combustible en todas las estaciones compresoras que se encuentran en la red.

Departamento de Matemáticas. ITAM Programación lineal (+ extensiones). Objetivos y panorama del c

EXCEL PARA INGENIEROS

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

PROGRAMACION LINEAL. Identificación de las soluciones con GAMS

Programación Estructurada

Expresiones Aritméticas

GAMS, ejemplos introductorios Héctor Manuel Mora Escobar Marzo de 2009

1. Qué se muestra en pantalla si se ejecutan las siguientes sentencias (suponiendo que el resto del programa que no se presenta es correcto)?

Sesión VI: Desarrollo de aplicaciones en el entorno MATLAB

Facultad de Ingeniería

OPTEX OPTIMIZATION SERVER

Unidad III El lenguaje de programación C

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD DE CIENCIAS PROGRAMA DE MATEMÁTICAS PLAN DE ESTUDIOS

PROGRAMACION CUADRATICA

250ST Modelos de Optimización de Redes de Transporte

Lenguaje de programación C. Introducción

CATÁLOGO: RESERVA DE PLAZA Y MATRÍCULA:

Universidad Nacional Autónoma de Nicaragua UNAN-Managua. Curso de Investigación de Operaciones

Apuntadores (Punteros)

Facultad De Ingeniería Programa de Ingeniería Industrial

Generador de analizadores sintácticos BISON

Sistemas Operativos Práctica 3

RELACIÓN DE PROBLEMAS DE CLASE DE PROGRAMACIÓN LINEAL ENTERA

UNIVERSIDAD DR. JOSE MATIAS DELGADO

Estructuración del programa en partes más pequeñas y sencillas

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

ESCUELA DE INFORMÁTICA

Lenguaje de Programación: C++ GLUT (como instalarlo)

LENG. PROG. I. Introduccion al C++ Ing. Javier Echegaray Rojo 1

DESARROLLO DE HERRAMIENTAS DE SIMULACIÓN VIA WEB BASADAS EN ECOSIMPRO

- Aprender una metodología de trabajo en Excel y VBA, eficaz, eficiente, ordenada y automatizable.

Universidad Autónoma del Estado de México Licenciatura en Matemáticas Programa de Estudios: Programación Lineal

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ACATLÁN LICENCIATURA EN MATEMÁTICAS APLICADAS Y COMPUTACIÓN

Asignatura: Estructuras de Datos. Año Escolar: Grado y Sección: 6to INF A-B Docente: Ing. Yesika Medina

EDITRAN/TR. Windows/Unix. Manual de referencia

GNU OCTAVE. Principales características

CAPITULO 14: GAMS INSTALACION DE GAMS

UNIVERSIDAD LIBRE SECCIONAL PEREIRA FACULTAD DE INGENIERÍAS PROGRAMA ACADÉMICO DE INGENIERÍA DE SISTEMAS

Optimización de Procesos

PRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato

Optimización y Toma de Decisiones

Modelos matemáticos de optimización

FUNDAMENTOS DE INFORMÁTICA

Programación Lineal y Optimización Segundo Examen Parcial Respuesta: :Solución Profr. Eduardo Uresti, Enero-Mayo 2011

Transcripción:

MA37A Sesión #6 Software para Programación Lineal Oscar Peredo 29 de Octubre del 2008

Esquema 1 Programación Lineal 2 Lenguajes de alto nivel MATLAB/OCTAVE AMPL GAMS 3 Solvers CPLEX GLPK 4 Otras alternativas Microsoft Excel Solver 5 Conclusiones

Esquema 1 Programación Lineal 2 Lenguajes de alto nivel MATLAB/OCTAVE AMPL GAMS 3 Solvers CPLEX GLPK 4 Otras alternativas Microsoft Excel Solver 5 Conclusiones

Objetivos Para ramos futuros y mundo laboral, puede ser útil saber utilizar un software para PL (aplicaciones en practicamente todas las ramas de la ingeniería). PL es la rama de la Optimización más entendible (y por lo tanto más personas e instituciones la utilizan). Matemáticas, Computación e Industrias.

Problema Para c R n, A R m n y b R m, nos interesa resolver min x R n c T x (PL) s.a Ax = b x 0

Diagrama de Software para PL

Esquema 1 Programación Lineal 2 Lenguajes de alto nivel MATLAB/OCTAVE AMPL GAMS 3 Solvers CPLEX GLPK 4 Otras alternativas Microsoft Excel Solver 5 Conclusiones

MATLAB/OCTAVE Software orientado al cálculo numérico (matrices). Desarrollados desde 1984 (MATLAB) y 1992 (OCTAVE), software comercial (MATLAB) y libre (OCTAVE). Soportan lenguaje M, desarrollado a partir de 1970. Diversas herramientas para Optimización: Optimization Toolbox, funciones propias, etc.

AMPL A Mathematical Programming Language Desarrollado en Bell Labs. posterior al 2000 por Fourer, Gay & Kernighan.

AMPL min x R P s.a P c j x j j=1 P j=1 1 a j x j b x j [0, u j ], j = 1,..., P set P; param a {j in P}; param b; param c {j in P}; param u {j in P}; var X {j in P}; maximize Total_Profit: sum {j in P} c[j] * X[j]; subject to Time: sum {j in P} (1/a[j]) * X[j] <= b; subject to Limit {j in P}: 0 <= X[j] <= u[j];

GAMS General Algebraic Modeling System Desarrollado por el Banco Mundial desde 1975 y por GAMS Development Corporation desde 1987, con la participación de diversos economistas y matemáticos (premios Nobel).

GAMS min x R P s.a P c j x j j=1 P j=1 1 a j x j b x j [0, u j ], j = 1,..., P Sets j indice /1,2,3,4/; Parameters a(j) coeficientes / 1 23 2 12 3 5 4 1.4 / u(j) cota superior / 1 100 2 100 3 100 4 100 / ; Scalar b lado derecho /90/; Variables x(j) variables; Positive Variable x ; Equations objetivo define funcion objectivo restr(j) restriccion j ; objetivo.. z =e= sum(j, c(j)*x(j)) ; restr(j).. sum(j, (1/a(j))*x(j)) =l= b ; Model ejemplo /all/ ; Solve ejemplo using lp minimizing z ; Display x.l, x.m ;

Esquema 1 Programación Lineal 2 Lenguajes de alto nivel MATLAB/OCTAVE AMPL GAMS 3 Solvers CPLEX GLPK 4 Otras alternativas Microsoft Excel Solver 5 Conclusiones

CPLEX CPLEX=C+Simplex (hoy contiene diversos métodos, además de Simplex) Desarrollado por Robert E. Bixby y vendido vía CPLEX Optimization Inc., adquirida por ILOG in 1997. Diversas empresas y universidades utilizan este solver comercial. Librería llamable desde el lenguaje C.

CPLEX #include <ilcplex/cplex.h> #include <stdlib.h> int main (int argc, char **argv) { env = CPXopenCPLEX (&status); status = CPXsetintparam (env, CPX_PARAM_SCRIND, CPX_ON); status = CPXsetintparam (env, CPX_PARAM_DATACHECK, CPX_ON); lp = CPXcreateprob (env, &status, "lpex1"); status = CPXlpopt (env, lp); status = CPXsolution (env, lp, &solstat, &objval, x, pi, slack, dj); status = CPXwriteprob (env, lp, "lpex1.lp", NULL); }

GLPK GNU Linear Programming Kit Desarrollado como proyecto GNU por Andrew Makhorin desde el año 2000. Librería llamable desde el lenguaje C.

GLPK #include <stdio.h> #include <stdlib.h> #include "glpk.h" int main(void) { LPX *lp; int ia[1+1000], ja[1+1000]; double ar[1+1000], Z, x1, x2, x3; lp = lpx_create_prob(); lpx_set_prob_name(lp, "sample"); lpx_set_obj_dir(lp, LPX_MAX); lpx_add_rows(lp, 3); lpx_set_row_name(lp, 1, "p"); lpx_set_row_bnds(lp, 1, LPX_UP, 0.0, 100.0); lpx_add_cols(lp, 3); lpx_set_col_name(lp, 1, "x1"); lpx_set_col_bnds(lp, 1, LPX_LO, 0.0, 0.0); lpx_load_matrix(lp, 9, ia, ja, ar); lpx_simplex(lp); Z = lpx_get_obj_val(lp); x1 = lpx_get_col_prim(lp, 1); lpx_delete_prob(lp); return 0; }

Esquema 1 Programación Lineal 2 Lenguajes de alto nivel MATLAB/OCTAVE AMPL GAMS 3 Solvers CPLEX GLPK 4 Otras alternativas Microsoft Excel Solver 5 Conclusiones

Microsoft Excel Solver Orientado a la planilla de cálculo (worksheet). Sirve para problemas pequeños. Posee poca escalabilidad (cuando el problema crece) y su interacción con otros sistemas es pobre (no es un sistema dedicado a la Optimización, está dedicado a la Gestión). Se puede complementar con Macros (VBA: Visual Basic for Applications)

Excel Sub SolverMacro() Example Solver VBA Macro SolverReset SolverOk SetCell:="$B$24", _ MaxMinVal:=2, _ ValueOf:="0", _ ByChange:="$B$16:$B$17" SolverSolve userfinish:=true End Sub

Esquema 1 Programación Lineal 2 Lenguajes de alto nivel MATLAB/OCTAVE AMPL GAMS 3 Solvers CPLEX GLPK 4 Otras alternativas Microsoft Excel Solver 5 Conclusiones

Conclusiones Existen muchas alternativas de software para Optimización en PL. Cómo se utiliza la Optimización en las empresas? Cada empresa modela e implementa de acuerdo a sus necesidades. Se debe utilizar la mejor alternativa de la que se disponga ($,tiempo,recurso humano).

FIN