GAMS (General Algebraic Modeling System)



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

Estructura de un modelo GAMS (1/3)

BREVE MANUAL DE SOLVER

Introduction to Optimization Ángel Marín. Second Laboratory Lecture options, file input-output, dollar,

Introducción al programa WinQSB

FUNDAMENTOS DE INFORMÁTICA

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Minimización De Pérdidas En Media Tensión Con Intervención De Generadores Dispersos En El Control ANEXO I: PROGRAMA GAMS

Práctica 1ª: Introducción a Matlab. 1er curso de Ingeniería Industrial: Ingeniería de Control

Preliminares. Tipos de variables y Expresiones

Introducción a Matlab.

Proyecto de Innovación Docente: Guía multimedia para la elaboración de un modelo econométrico.

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Resolución de Problemas

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

SQL Los fundamentos del lenguaje

1 Estructura básica de un programa C++

Semántica Denotacional

Práctica de informática del programa LINDO

Ejemplos de conversión de reales a enteros

6. Uso de sistemas operativos 7. Uso de un entorno integrado de desarrollo de programas

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Programación en Pascal

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

ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental]

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Se guardan en archivos con extencion c y los cabezales con extension h

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

Modulo 1 El lenguaje Java

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Tema 7: Programación con Matlab

Introducción. Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

CAPITULO 14: GAMS INSTALACION DE GAMS

Estructura de Datos y de la Información. Pilas y expresiones aritméticas

GNU OCTAVE. Principales características

Tecnología de la Información y la Comunicación. Base de datos. Consultas

Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando su:

Creación de Funciones de Conducción

Gestión de operaciones

Basic Object Oriented Programming (BOOP) Gramática del Lenguaje. Ever Mitta Flores

ESTRUCTURAS ALGEBRAICAS. Parte 1

a) Presente la información en una tabla de distribución de frecuencias b) Determine e interprete: n 4

Práctica 1: Introducción al entorno de trabajo de MATLAB *

Material N 15 GUÍA TEÓRICO PRÁCTICA Nº 12

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Programación: QBASIC

Funciones y subrutinas

Práctica 3: Funciones

OR (+) AND( ). AND AND

Práctica Obtener el código y el doble del precio de los artículos cuyo precio es inferior a 5 céntimos de euro.

COMANDOS EN LENGUAJE DE PROGRAMACIÓN BASIC

Carmen. Estándares de codificación. Manuel Arias Calleja

Operadores lógicos y matemáticos en Visual Basic. Math. Comentarios en VB. Rem. Ejemplos. (CU00314A)

2) Se ha considerado únicamente la mano de obra, teniéndose en cuenta las horas utilizadas en cada actividad por unidad de página.

3.2 Operaciones aritmético-lógicas en Pascal

Proyecto Unico Interpretador de SetCalc

1 UNIDAD 4 - CREA TABLAS DINÁMICAS Y GRÁFICOS DINÁMICOS

Cómo nombrar variables ( 2&

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Charla No 3: Fórmulas de mayor uso.

Ecuaciones de segundo grado

U i n d id d a 3. El Element os á bá i s cos de un programa

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Matlab para Análisis Dinámico de Sistemas

Bases de datos y tablas

3.8 Construcción de una ALU básica

TEMA 20: CONCEPTOS BÁSICOS DE SQL

CREACIÓN Y CONFIGURACIÓN DE WIKIS

CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS

XML y XQuery. Qué es XML? Qué es XML? (II) Ejemplo de fichero XML. Cuerpo de un documento XML. Estructura de un documento XML

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Tema 2. El lenguaje de programación Java (Parte 1)

Tutorial Básico de vbscript

Introducción al lenguaje JAVA

scripting en praat sesión n.1 fundamentos de programación Universidad de Tokyo de Estudios Extranjeros

COMO CREAR UN DIAGRAMA DE FLUJO

Complemento Microsoft Mathematics

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

Las matrices Parte 1-2 o bachillerato

INTRODUCCION A LA PROGRAMACION DE PLC

NOTAS TÉCNICAS SOBRE EL SIT: Comunicados (I)

Diseño de algoritmos

Manual de Introducción a SIMULINK

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

1 Espacios y subespacios vectoriales.

Caracteres alfanuméricos Las 26 letras del alfabeto inglés y los 10 dígitos decimales:

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Estándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008

SOLUCION DE MODELOS DE PROGRAMACION LINEAL EN UNA HOJA DE CALCULO. PROBLEMAS DE TRANSPORTE Y ASIGNACION.

I. RELACIONES Y FUNCIONES 1.1. PRODUCTO CARTESIANO { }

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

2.1.- EJEMPLO DE UN PROGRAMA FORTRAN

Activación de un Escritorio Remoto

Manual de rol gestor de GAV para moodle 2.5

Tema: Arreglos de Objetos en C++.

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Transcripción:

GAMS (General Algebraic Modeling System) GAMS Creado en 1987. Entorno de desarrollo GAMSIDE Manual de usuario Help-Docs-gams-gamsusersguide.pdf Manuales de optimizadores Help-Docs-solvers Modelo: nombre_fichero.gms Resultados: nombre_fichero.lst Lenguajes algebraicos de modelado. GAMS - 2

Formato general de las instrucciones GAMS Líneas con * en primera columna son de comentario No se aceptan tildes ni siquiera en comentarios No se distingue entre mayúsculas y minúsculas El paréntesis () se utiliza para separar expresiones algebraicas y para concretar argumentos En GAMSIDE las palabras reservadas del lenguaje aparecen resaltadas Instrucciones acaban en un ; Lenguajes algebraicos de modelado. GAMS - 3 Estructura general de un modelo Declaración de conjuntos. Asignación de valores. Inclusión y manipulación de datos de entrada y parámetros auxiliares. Variables Ecuaciones Modelo Acotamiento e inicialización de variables Resolución del problema de optimización Presentación de resultados Lenguajes algebraicos de modelado. GAMS - 4

Bloques de un modelo en GAMS Obligatorios VARIABLES EQUATIONS MODEL SOLVE Opcionales SETS ALIAS:ALIAS (i,j) i y j se pueden utilizar indistintamente DATA: SCALARS, PARAMETERS, TABLE Los valores de INF, EPS son válidos como datos Lenguajes algebraicos de modelado. GAMS - 5 TABLE (i) Ejemplos de sets y tablas SETS i / MAD, BCN / j / A1, A2, A3, A4, A5, A6 / TABLE CAPACIDAD(i,j) capacidad máxima A1 A2 A3 MAD 1 0 3 BCN 2 1 2 + Continuación de tablas con múltiples columnas A4 A5 A6 MAD 2 1 3 BCN 3 2 2 Lenguajes algebraicos de modelado. GAMS - 6

TABLE (ii) Tablas con más de dos dimensiones SETS i / MAD, BCN / j / A1, A2, A3, A4, A5, A6 / K / A, B, C / TABLE CAPACIDAD(i,j,k) capacidad máxima A B C MAD.A1 1 0 3 MAD.A2 2 1 2 TABLE CAPACIDAD(i,j,k) capacidad máxima A1.A A1.B A1.C A2.A A2.B MAD 1 0 3 6 8 BCN 2 1 2 2 4 Lenguajes algebraicos de modelado. GAMS - 7 VARIABLES Siempre debe haber una variable libre para representar el valor de la función objetivo. Los valores de las variables son guardados siempre. Tipos: FREE (por omisión) - a + POSITIVE 0 a + NEGATIVE - a 0 BINARY 0 ó 1 INTEGER 0 a 100 Sufijos: nombre_var.lo cota inferior nombre_var.up cota superior nombre_var.l valor inicial antes y valor óptimo después nombre_var.m valor marginal (coste reducido) nombre_var.fx fija una variable a un valor Lenguajes algebraicos de modelado. GAMS - 8

EQUATIONS Bloques: Declaración con comentario explicativo Expresiones matemáticas Tipos de restricciones: =E= =, =L=, =G= Sufijos: nombre_ec.lo cota inferior (ej. si entonces rhs, si entonces -inf) nombre_ec.up cota superior (ej. si entonces inf, si entonces rhs) nombre_ec.l valor inicial antes y valor óptimo después (rhs) nombre_ec.m valor marginal (variable dual o precio sombra o precio justo) Lenguajes algebraicos de modelado. GAMS - 9 MODEL y SOLVE MODEL nombre_modelo / nombre_ecuaciones / MODEL nombre_modelo / ALL / SOLVE nombre_modelo USING tipo_problema MINIMIZING (MAXIMIZING) variable_f.o. Lenguajes algebraicos de modelado. GAMS - 10

Tipos de problemas y optimizadores LP, RMIP (programación lineal): BDMLP MILP(programación lineal entera mixta): CPLEX, OSL, XA, XPRESS NLP(programación no lineal): CONOPT, MINOS, SNOPT, PATHNLP, LGO, MOSEK MINLP(programación no lineal entera mixta): DICOPT, SBB, BARON, OQNLP GAMS Solvers (docs: http://www.gams.com/solvers/index.htm) Lenguajes algebraicos de modelado. GAMS - 11 Operador $ en asignaciones, sumatorios, restricciones Establece una condición $(VALOR > 0) $(NUMERO1 <> NUMERO2) A la izquierda de una asignación: Realiza la asignación SÓLO cuando se cumple la condición X(i)$(Z(i) > 0)=1 A la derecha de una asignación: Realiza SIEMPRE la asignación tomando ésta el valor 0 si no se cumple la condición X(i) =1$(Z(i) > 0) Lenguajes algebraicos de modelado. GAMS - 12

Operaciones relacionales LT<, GT >, EQ =, NE <>, LE <=, GE >= NOT, AND, OR, XOR DIAG(elemento_conjunto,elemento_conjunto)={1,0} z = sum((i,j)$(diag(i,j) eq 0), x(i,j)) SAMEAS(elemento_conjunto,elemento_conjunto)={V,F} z = sum((i,j)$(not sameas(i,j)), x(i,j)) Lenguajes algebraicos de modelado. GAMS - 13 Funciones Elementales: +, -, *, /, ** ó POWER(x,n) ORD, CARD ordinal y cardinal de un conjunto Con índices: SUM, PROD, SMAX, SMIN Otras funciones: ABS, ARCTAN, SIN, COS, CEIL, FLOOR, EXP, LOG, LOG10, MAX, MIN, MOD, ROUND, SIGN, SQR, SQRT, TRUNC, NORMAL, UNIFORM, GYEAR, GMONTH, GDAY, GHOUR, GMINUTE Lenguajes algebraicos de modelado. GAMS - 14

Conjuntos dinámicos Subconjuntos de conjuntos estáticos cuyo contenido puede cambiar mediante asignaciones SETS M meses / 1 * 12 / MP(m) meses pares ; display m ; MP(m) $[MOD(ord(m),2) = 0] = YES ; display mp ; MP('3') = yes ; display mp ; MP(m) $(ord(m) = 3) = NO ; display mp ; Elementos fundamentales en el desarrollo de modelos en GAMS Deben utilizarse sistemáticamente para evitar formular ecuaciones o variables o asignaciones innecesarias. Lenguajes algebraicos de modelado. GAMS - 15 Operaciones con conjuntos Intersección D(a) = B(a) * C(a) Unión D(a) = B(a) + C(a) Complementario D(a) = NOT C(a) Diferencia D(a) = B(a) - C(a) Lenguajes algebraicos de modelado. GAMS - 16

Repeticiones LOOP (conjunto, ) ; WHILE (condición, ) ; REPEAT UNTIL condición; IF (condición, ELSE Secuencia decreciente ) ; FOR (i=inicio TO/DOWNTO final (BY incremento), ) ; Lenguajes algebraicos de modelado. GAMS - 17 Entrada/salida de datos Entrada de datos por fichero $include nombre_del_fichero DISPLAY nombre_identificador (muestra su valor o contenido) Salida de datos por fichero file nombre_interno / nombre_externo / put nombre_interno put nombre_identificador putclose nombre_interno Existen opciones específicas de control de formato de la salida Lenguajes algebraicos de modelado. GAMS - 18

Control del tiempo y del espacio La supresión de la información de salida (lista y tabla de referencias entre los símbolos del código) en el nombre_fichero.lst se consigue con las siguientes opciones. $OFFSYMLIST, OFFSYMXREF, OFFUELLIST, OFFUELXREF OPTION LIMROW=0, LIMCOL=0, SOLPRINT=OFF, SYSOUT=OFF o escribiendo en la invocación de GAMS gams nombre_modelo.gms suppress 1 Además, también se puede suprimir la información en pantalla que produce el optimizador con los consiguientes parámetros (por ejemplo, para CPLEX simdisplay 0 mipdisplay 0). gams nombre_modelo.gms simdisplay 0 Lenguajes algebraicos de modelado. GAMS - 19 Detección de infactibilidades Infactibilidades Anular el preproceso preind 0 Detección del conjunto mínimo de infactibilidades iis yes Análisis de sensibilidad (http://www.uv.es/~sala/gams/ascplex.pdf) En coeficientes de función objetivo (VARIABLE NAME) objrng all En cotas de restricciones (ECUATION NAME) rhsrng all Resolución de problemas MIP MODEL.OPTCA=criterio_abs_optimalidad en MIP MODEL.OPTCR=criterio_rel_optimalidad en MIP Lenguajes algebraicos de modelado. GAMS - 20

Mejoras en la formulación reformulación manual del problema (especialmente indicado en problemas MIP) no crear variables ni ecuaciones superfluas reducción de número de restricciones y/o elementos escaladoalrededor de 1 (especialmente indicado en problemas NLP) partir de un punto inicial (especialmente indicado en problemas NLP) acotamiento de variables Lenguajes algebraicos de modelado. GAMS - 21