Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Apuntes GAMS 2015-2016, Apuntes de Matemáticas

Asignatura: Matematicas I, Profesor: Manuel Mocholí, Carrera: Economia, Universidad: UV

Tipo: Apuntes

2016/2017

Subido el 28/02/2017

n_pinedo
n_pinedo 🇪🇸

4.3

(7)

4 documentos

1 / 38

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
GRADO EN
ADE
MATEMATICAS II
APUNTES GAMS
CURSO 2015/2016
DEPARTAMENTO DE MATEMÀTICAS PARA LA
ECONOMÍA Y LA EMPRESA
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26

Vista previa parcial del texto

¡Descarga Apuntes GAMS 2015-2016 y más Apuntes en PDF de Matemáticas solo en Docsity!

GRADO EN

ADE

MATEMATICAS II

APUNTES GAMS

CURSO 2015/

DEPARTAMENTO DE MATEMÀTICAS PARA LA

ECONOMÍA Y LA EMPRESA

INDICE DE CONTENIDO

................................................................................................................................ 3 ....................................................................................... 4 ....................................................... 7 .............................................................. 9

4.1 Inclusión de texto ........................................................................................................................ 9

4.2 Opciones ................................................................................................................................... 10

4.3 Declaración de variables ........................................................................................................... 10

4.4 Declaración de ecuaciones ........................................................................................................ 11

4.5 Declaración de modelos ............................................................................................................ 12

4.6 Solución de modelos ................................................................................................................. 13

........................................................................................... 13 ......................................................................................................... 14 ........................................................................................................ 17 ........................................................ 18

8.1 Declaración de conjuntos .......................................................................................................... 19

8.2 Declaración de escalares ........................................................................................................... 20

8.3 Declaración de vectores ............................................................................................................ 20

8.4 Declaración de Matrices............................................................................................................ 21

8.5 Declaración de variables indexadas .......................................................................................... 22

8.6 Declaración de ecuaciones indexadas ....................................................................................... 23

8.7 Comprobación del modelo y lectura del fichero LST ............................................................... 24

8.8 Comando display ...................................................................................................................... 26

8.9 Operador condicional $ ............................................................................................................. 28

.................................................................... 30 ...................................................................................... 32

10.1 Cotas sobre las variables ........................................................................................................... 32

10.2 Tolerancia ................................................................................................................................. 32

................................................................................................ 33

11.1 Punto de inicio .......................................................................................................................... 35

..................................................................... 37

Para la instalación de la última versión “demo”, de gams hay que acceder a la página http://gams.com/download/ y elegir la versión que corresponda

Una vez, descargado el fichero ejecutable la instalación es muy sencilla, basta ejecutar dicho fichero y seguir la secuencia siguiente

Una vez instalado el programa, este se ejecuta desde el icono creado en el escritorio o desde el menú de programas. La ejecución de GAMS por defecto se realiza en la misma carpeta donde se ha instalado y durante la ejecución además de los ficheros fuente (gms) que nosotros creamos y los de solución (LST), GAMS genera otros ficheros y carpeta que al finalizar elimina y otros que mantiene como lxi,*log, motivo por el cual la carpeta de instalación después de un tiempo de uso puede contener innumerables ficheros que no corresponden a la instalación, Por este motivo resulta conveniente cambiar el directorio de trabajo por defecto, creando un nuevo proyecto, lo cual se realiza a partir de la pantalla de inicio

Se selecciona file / Project /New Project

En esta pantalla se elige el directorio de trabajo deseado, en nuestro caso Problemas GAMS y se introduce el nombre que se quiera para el proyecto, en nuestro caso proyecto El proyecto además de guardar la configuración del directorio de trabajo, también permite guardar nuestra configuración personal sobre márgenes, tipos y tamaño de letra, colores, solvers, etc.

EJEMPLO

Una empresa produce tres modelos (modelo1, modelo2 y modelo 3) de estructuras metálicas. La fábrica tiene cuatro secciones, el número de horas necesarias de cada sección para producir cada modelo, así como las disponibilidades, aparecen reflejados en la siguiente tabla.

Necesidades (horas/unidad) Sección Modelo 1 Modelo 2 Modelo 3 Horas dis. Cortar 0’02 0'04 0'01 500 Ensamblar 0’04 0’03 0'04 600 Pintar 0'03 0'03 0'02 500 Montar 0'05 0'04 0'04 1000

Además dispone de 70000 m^2 de chapa metálica para la semana próxima. En cada modelo se utilizan 6, 5 y 4 m^2 , respectivamente. La demanda mínima semanal de cada modelo así como los precios de venta y el coste unitario variable, son:

Modelo Precio vta Coste var. Dem. min 1 100 30 1000 2 120 35 1000 3 75 25 1000

Determinar la cantidad a producir de cada modelo para maximizar el beneficio, teniendo en cuenta la limitación de chapa y sin ella.

 VARIABLE DEPENDIENTE

Para poder plantear matemáticamente nuestro problema lo primero que hemos de averiguar es cuál es la variable dependiente (objetivo) que pretendemos maximizar o minimizar y como la vamos a denominar, en nuestro caso como el objetivo que pretende la empresa es maximizar el beneficio que podrá obtener la próxima semana. Declararemos la variable

B beneficio de la próxima semana en euros

 VARIABLES DE DECISIÓN

Las variables deben representar las decisiones que podemos tomar con el fin de alcanzar

el objetivo previsto. En nuestro problema lo que podemos decidir es el número de

unidades a producir de cada modelo de estructura lo cual determinará el beneficio que se

obtendrá, por tanto las variables serán

M1 número de estructuras metálicas a producir del modelo 1 la próxima semana

M2 número de estructuras metálicas a producir del modelo 2 la próxima semana

M3 número de estructuras metálicas a producir del modelo 3 la próxima semana

Dado que se trata estructuras a producir, es evidente que no pueden tomar valores

negativos (M1≥0, M2≥0, M3≥0) en principio suponemos que las estructuras que no se

terminan esta semana se terminan la próxima y por tanto admitimos variables continuas,

posteriormente se considerará el caso en que no se admita producción en curso y por tanto

las variables sean enteras.

Cotas sobre variables

De cada tipo de estructura se nos dice que no se pueden producir menos de 1000 unidades,

por tanto las variables están acotadas inferiormente, es decir

M1≥1000 M2≥1000, M3≥

ECUACIONES

El siguiente paso consiste en identificar (asignándoles nombre) todas aquellas limitaciones que hacen que la empresa no puede construir un número ilimitado de estructuras de cada modelo. Así pues, como limitaciones se tienen

Corte máximo 500 h semanales en la sección de corte Ensamblaje máximo 600 h semanales en la sección de ensamblaje Pintura máximo 500 h semanales en la sección de pintura Montar máximo 1000 h semanales en la sección de montaje Chapa máximo 70.000 m^2 de chapa para la próxima semana Objetivo ecuación para calcular el beneficio de la próxima semana B

Además de las limitaciones, hay que introducir otra ecuación adicional que permita calcular el valor de la variable dependiente B.

Una vez identificadas las variables y las limitaciones, el siguiente paso consiste en escribir cada una de las limitaciones y el objetivo en función de dichas variables:

Corte.. 0.02M1+0.04M2+0.01*M3 ≤ 500 Ensamblaje.. 0.04M1+0.03M2+0.04*M3 ≤ 600 Pintura.. 0.03M1+0.03M2+0.02*M3 ≤ 500 Montar.. 0.05M1+0.04M2+0.04*M3 ≤ 1000

4.2 Opciones

Existen una gran cantidad de opciones disponibles en GAMS, pero en este apartado únicamente nos referiremos a aquellas que utilizaremos con más frecuencia. Opciones para elegir el solver a utilizar: OPTION LP=CPLEX MIP=CPLEX NLP=MINOS; Con estas tres opciones le estamos indicando a GAMS que cuando el problema a resolver sea lineal (LP) o lineal entero (MIP) utilice como solver el CPLEX, y cuando sea no lineal (NLP) utilice el MINOS. Otras opciones pueden ser para ajustar el margen de tolerancia para problemas lineales enteros (por defecto el 10%): OPTION OPTCR=0.01; Para ajustar el número de restricciones o variables a visualizar de cada bloque en el fichero LST en los modelos indexados OPTION LIMROW= LIMCOL=7; Para ajustar el número de decimales a mostrar con el comando DISPLAY OPTION DECIMALS=2;

4.3 Declaración de variables

Hay cinco tipos básicos de variables que podemos utilizar

COMANDO

Cota Inferior

Cota Superior Los valores de las cotas pueden ser cambiados Free -∞ +∞ Por defecto si se pone variables son free Positive 0 +∞ Negative -∞ 0 Binary 0 1 Variables que sólo pueden tomar el valor 0 ó 1 Integer 0 100 valores enteros no negativos

La introducción de las variables se inicia con el comando correspondiente a cada tipo de variable. Positive variables, binary variables, etc. y a continuación se introduce el nombre de cada variable (hasta 63 caracteres máximo, empezando por una letra) y a continuación se puede poner un texto explicativo de lo que representa la variables. Las variables pueden definirse una por línea (recomendado) o separadas por comas. En GAMS la variable dependiente que hay que optimizar obligatoriamente debe ser una variable libre. Las variables correspondientes a nuestro ejemplo se introducen del siguiente modo

VARIABLES B beneficio semanal en euros;

POSITIVE VARIABLES M1 número de estructuras metálicas a producir del modelo 1 la próxima semana M2 número de estructuras metálicas a producir del modelo 2 la próxima semana

M3 número de estructuras metálicas a producir del modelo 3 la próxima semana ;

Obsérvese que el final de cada bloque se indica con ;

Sufijos Sobre las variables

.LO Cota Inferior .UP Cota Superior .FX Para fijar el valor de una variable .L Devuelve el valor de una variable o permite inicializarla .M Devuelve el marginal de una variable

La forma de utilizar los sufijos es poniendo el nombre de la variable, el punto, el sufijo e indicando igual al valor que corresponda. En nuestro ejemplo todas las variables están acotadas inferiormente por el valor 1000, por tanto habría que añadir

M1.LO =1000; M2.LO =1000; M3.LO =1000;

Si alguna de ellas tuviera una cota superior, por ejemplo producir 10000 unidades máximo de M3 se pondría

M3.UP=10000;

4.4 Declaración de ecuaciones

Al igual que se ha realizado en el modelado del problema, en GAMS también hay que indicar en primer lugar los nombres que vamos a utilizar para denominar a cada restricción y a la función objetivo y a continuación ya se expresan matemáticamente cada ecuación. Así pues el bloque de ecuaciones comienza con el comando EQUATIONS a continuación se declaran los nombres (hasta 63 caracteres) que vamos a utilizar para cada ecuación que pueden ir seguidos opcionalmente (recomendado) de un texto explicativo

EQUATIONS Corte máximo 500 h semanales en la sección de corte Ensamblaje máximo 600 h semanales en la sección de ensamblaje Pintura máximo 500 h semanales en la sección de pintura Montar máximo 1000 h semanales en la sección de montaje Chapa máximo 70.000 m2 de chapa para la próxima semana Objetivo ecuación para calcular el beneficio de la próxima semana B ;

MODEL CON_CHAPA modelo que tiene en cuenta todas las limitaciones /ALL/;

Cuando el modelo incluye todas las limitaciones no es necesario escribirlas todas de forma explícita basta con poner ALL.

4.6 Solución de modelos

Dado que se pueden declarar varios modelos en el mismo fichero también es necesario decirle cuáles de ellos queremos que resuelva. Para indicarle que resuelva un modelo la instrucción comienza con el comando SOLVE, seguido del NOMBRE del modelo que se quiere resolver a continuación el comando USING ó US le indica el tipo de solver a utilizar según el tipo de problema a resolver LP, MIP, NLP, etc y por último la dirección de optimización MAXIMIZING (MAX) o MINIMIZING (MIN) seguido de la variable dependiente a optimizar. En el ejemplo que se plantea como los modelos a resolver son de programación lineal (LP) sería

SOLVE SIN_CHAPA USING LP MAXIMIZING B; SOLVE CON_CHAPA US LP MAX B;

El fichero fuente Produccion_1.gms después de introducir todos los apartados quedaría del siguiente modo

La ejecución de este fichero se puede realizar de varias formas

 Pulsando la tecla de función “F9”  Haciendo clic con el botón izquierdo del ratón sobre el icono con una flecha roja

 Desde el menú File Run

Una vez ejecutado el fichero por cualquiera de los procedimientos anterior aparecerá una pantalla en la cual, tendremos una ventana donde además de la pestaña correspondiente al fichero Produccion_1.gms, tendremos otra visible con el fichero producción_1.lst y a la derecha otra ventana con el fichero Produccion_1.log. similar a la siguiente

Si se han cometido errores en la introducción del fichero en esa ventana aparecerán unas líneas en rojo que indican los errores cometidos, cuando se tiene un mayor conocimiento

El error 96 GAMS sugiere que es debido a que

falta un espacio en blanco entre el identificador y el texto Este error se produce cuando introducimos un nombre de variable, ecuación, etc y su explicación o un comando y texto todo junto, lo cual no es el caso dado que la ecuación se ha de deficnir con el nombre seguido de ..

Carácter ilegal en el identificador En la palabra corte no hay ningún carácter ilegal (acento, ñ,@, etc)

Compruebe si falta un ; en una línea anterior Efectivamente el bloque de declaración hay que finalizarlo con un ; por eso al no haberlo puesto intenta leer corte.. como una nueva ecuación y en ese caso el nombre corte si que debe ir separado del texto o .. es ilegal.

Una vez que ya sabemos que el error es debido a que falta un ; al final del bloque ecuaciones volvemos al fichero producción_1.gms ponemos el ; en su lugar y volvemos a ejecutar, hasta que ya no aparezcan más errores.

El error 140 de la línea 28 Ensamblaje.. 0.04M+0.03M2+0.04M3 =L= 600; **** $ corresponde a símbolo desconocido y esto es debido a que hemos escrito 0.04M en lugar de 0.04*M

En la línea 29 29 Pintura.. 0.03M1+0.03M2+0.02M3 =L= 500 ; ****** $37,** El error 37 corresponde a que falta un operador , efectivamente no se ha puesto el * es decir 0.02*M

Los errores 257 de las líneas 35 SOLVE SIN_CHAPA USING LP MAXIMIZING B; ****** $** 36 SOLVE CON_CHAPA US LP MAX B; ****** $**

Nos indican que no ha resuelto a causa de errores previos, por lo tanto una vez corrijamos los errores anteriores en el fichero Producción_1.gms y volvamos a ejecutar estos errores desaparecerán.

Si no ha habido errores la solución aparecerá en el fichero Produccion_1.lst en el cual podemos apreciar el bloque de ecuaciones, en la columna LEVEL aparecen las horas o m^2 realmente utilizados y como todas las restricciones eran ≤ en la columna UPPER aparecen las horas o m^2 disponibles, por último la columna MARGINAL corresponde al multiplicador asociado a dicho restricción en el cual nos indica la variación que sufrirá la función objetivo si se incrementa en una unidad el valor del término independiente

LOWER LEVEL UPPER MARGINAL ---- EQU Corte -INF 500.000 500.000 818. ---- EQU Ensamblaje -INF 447.273 600.. ---- EQU Pintura -INF 408.182 500.. ---- EQU Montar -INF 573.636 1000.. ---- EQU Chapa -INF 70000.000 70000.000 10. ---- EQU Objetivo... 1.

Corte máximo 500 h semanales en la sección de corte Ensamblaje máximo 600 h semanales en la sección de ensamblaje Pintura máximo 500 h semanales en la sección de pintura Montar máximo 1000 h semanales en la sección de montaje Chapa máximo 70.000 m2 de chapa para la próxima semana Objetivo ecuación para calcular el beneficio de la próxima semana B

OBSÉRVESE QUE TODAS LAS CIFRAS VIENEN CON PUNTO DECIMAL Y
TRES DECIMALES

En el bloque de variables, dado que todas eran ≥ 1000 en la columna LOWER aparece el valor 1000, la columna LEVEL indica el número de estructuras que hay que fabricar para maximizar el beneficio, la columna UPPER puesto que las variables no están acotadas superiormente es +INF y por último la columna MARGINAL, en el caso de la variable M1 nos indica que si se pudieran producir menos unidades de dicha estructura por cada unidad menos el beneficio aumentaría en 9,091€

LOWER LEVEL UPPER MARGINAL ---- VAR B -INF 1.1318E+6 +INF. ---- VAR M1 1000.000 1000.000 +INF -9. ---- VAR M2 1000.000 11636.364 +INF. ---- VAR M3 1000.000 1454.545 +INF. B beneficio semanal en euros M1 número de estructuras metálicas a producir del modelo 1 la próxima semana M2 número de estructuras metálicas a producir del modelo 2 la próxima semana M3 número de estructuras metálicas a producir del modelo 3 la próxima semana

**** REPORT SUMMARY : 0 NONOPT 0 INFEASIBLE 0 UNBOUNDED

Puede expresarse como

Y en forma compacta

݆ܾܱ݁ ݋ݒ݅ݐ ܸܲൌ ෍ሺ ܤ (^) ௠ ܥ ܲെ (^) ௠ ௠

Siguiendo este mismo procedimiento podemos construir en GAMS modelos indexados a partir de la declaración de índices, vectores, matrices, etc

8.1 Declaración de conjuntos

El bloque de conjuntos debe comenzar obligatoriamente con la palabra SET o SETS. La forma de definir los Conjuntos es la siguiente

SET R restricciones /corte,ensamblar,pintar,montar,chapa/ M modelos a producir /Mod1Mod3/*

Donde R es el nombre que hemos dado al conjunto, restricciones es un texto opcional que se puede poner para aclarar qué representa el conjunto R, entre barras, separados por comas (o por salto de línea) se ponen los nombres de los elementos del conjunto R. Los nombres de los conjuntos y los elementos pueden tener una longitud de hasta 63 caracteres, deben comenzar por una letra y sólo pueden contener caracteres alfanuméricos (no ñ ni acentos) Cuando los elementos del conjunto siguen una serie, como en el caso del conjunto M, se pude poner el primer elemento seguido de un * y el último elemento y GAMS generará toda la serie. Ejemplos de SETS abreviados con *

A años /20002004/; L letras /ad/;

O Otros /a1mda4md/; I Inversiones /proy1proy3,inv1*inv4 /;

También se pueden poner comentarios a los elementos del conjunto. El conjunto R se podía haber declarado como

SET R restricciones /corte máximo 500 horas semanales Ensamblar máximo 600 horas semanales Pintar máximo 500 horas semanales Montar máximo 1.000 horas semanales Chapa máximo 70.000 metros cuadrados semanales /

8.2 Declaración de escalares

se utilizan para declarar o inicializar constantes y se introducen con el comando SCALAR seguido del nombre que se quiere dar, un texto explicativo opcional y el valor que debe tomar entre //, es decir

SCALAR K Coste de capital /0.065/

PHMO precio de la hora de mano de obra SM sueldo semanal ;

PHMO=10;

SM=40*PH;

8.3 Declaración de vectores

El comando PARAMETER puede ser utilizado indistintamente para definir escalares,

vectores y matrices. El bloque comienza con el comando PARAMETER seguido del

nombre que queremos dar al parámetro, entre paréntesis el nombre del conjunto que

indica la dimensión del vector, texto explicativo opcional, y a continuación entre barras

(/) los valores correspondientes a cada elemento del conjunto.

PARAMETER

PV(M) precio de venta de cada modelo

/mod1 100

mod2 120

mod3 75/