m3pl: un lenguaje de dominio específico para definir

15
PARADIGMA Revista Electrónica en Construcción de Software ISSN: 2011-0065 VOL. 7 No. 3, Diciembre 2013 M3PL: Un Lenguaje de dominio específico para definir modelos matemáticos de programación lineal Resumen. La creación de modelos matemáticos a partir de una realidad es uno de los procesos más importantes a la hora de optimizar un sistema. Actualmen- te, los modeladores deben aprender lenguajes para expresar sus modelos en di- ferentes plataformas de modelado algebraico, como AMPL o GAMS, para ob- tener su solución. En este artículo presentamos M3PL, un lenguaje, construida bajo el enfoque MDE, que cuenta con un lenguaje de dominio específico a tra- vés del cual permite expresar modelos matemáticos de programación lineal y realizar su transformación al formato requerido por algunas de las herramientas que ofrecen la funcionalidad de resolverlos, como AMPL y GAMS. La valida- ción del trabajo se realizó a través de un caso de estudio enmarcado en el con- texto de una empresa productora de gomas de mascar. Palabras Clave: metamodelo, modelo matemático, programación lineal, trans- formaciones 1 Introducción Muchas empresas encuentran en los modelos matemáticos una poderosa herra- mienta para estudiar el comportamiento de un sistema o algún componente del mis- mo. Específicamente, las empresas los utilizan para optimizar sus procesos [1], como por ejemplo el proceso de producción de Columbia Candies Factory, quienes buscan establecer la combinación de la cantidad de producción, de tipos de goma de mascar, que maximice sus ganancias con un límite de recursos. Este ejemplo se ampliará más adelante al presentarse como el caso de estudio de este trabajo. Para abordar este tipo de problemas, En primer lugar se busca realizar una representación del sistema o del componente que se desea estudiar, luego se realiza una representación abstracta de éste por medio de un modelo matemático, se buscan programas o plataformas que permitan resolver el modelo planteado y finalmente se interpretan los resultados por estos programas. Sin embargo, debido a que existen una gran cantidad de plataformas para resolver este tipo de modelos los modeladores deben aprender diferentes lengua- jes para expresarlos en cada una de ellas. Para liberar al modelador de la responsabilidad de aprender tantos lenguajes como herramientas utilice, se implementó una herramienta llamada M3PL que permite la creación y posterior transformación de modelos a dos diferentes plataformas AMPL 1 y GAMS 2 . En dicha implementación, se desarrolló un leguaje de dominio específico para definir los modelos matemáticos de programación lineal a partir de los cuales se genera, de manera automática, código valido para las plataformas. Esta herramienta 1 A Modeling Language for Mathematical Programming (AMPL). http://www.ampl.com/ 2 The General Algebraic Modeling System (GAMS). http://www.gams.com/

Upload: others

Post on 02-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: M3PL: Un Lenguaje de dominio específico para definir

PARADIGMA – Revista Electrónica en Construcción de Software

ISSN: 2011-0065

VOL. 7 No. 3, Diciembre 2013

M3PL: Un Lenguaje de dominio específico para definir

modelos matemáticos de programación lineal

Resumen. La creación de modelos matemáticos a partir de una realidad es uno de los procesos más importantes a la hora de optimizar un sistema. Actualmen-te, los modeladores deben aprender lenguajes para expresar sus modelos en di-

ferentes plataformas de modelado algebraico, como AMPL o GAMS, para ob-tener su solución. En este artículo presentamos M3PL, un lenguaje, construida bajo el enfoque MDE, que cuenta con un lenguaje de dominio específico a tra-vés del cual permite expresar modelos matemáticos de programación lineal y realizar su transformación al formato requerido por algunas de las herramientas que ofrecen la funcionalidad de resolverlos, como AMPL y GAMS. La valida-ción del trabajo se realizó a través de un caso de estudio enmarcado en el con-texto de una empresa productora de gomas de mascar.

Palabras Clave: metamodelo, modelo matemático, programación lineal, trans-formaciones

1 Introducción

Muchas empresas encuentran en los modelos matemáticos una poderosa herra-

mienta para estudiar el comportamiento de un sistema o algún componente del mis-

mo. Específicamente, las empresas los utilizan para optimizar sus procesos [1], como

por ejemplo el proceso de producción de Columbia Candies Factory, quienes buscan

establecer la combinación de la cantidad de producción, de tipos de goma de mascar,

que maximice sus ganancias con un límite de recursos. Este ejemplo se ampliará más

adelante al presentarse como el caso de estudio de este trabajo. Para abordar este tipo

de problemas, En primer lugar se busca realizar una representación del sistema o del

componente que se desea estudiar, luego se realiza una representación abstracta de

éste por medio de un modelo matemático, se buscan programas o plataformas que

permitan resolver el modelo planteado y finalmente se interpretan los resultados por

estos programas. Sin embargo, debido a que existen una gran cantidad de plataformas

para resolver este tipo de modelos los modeladores deben aprender diferentes lengua-

jes para expresarlos en cada una de ellas.

Para liberar al modelador de la responsabilidad de aprender tantos lenguajes como

herramientas utilice, se implementó una herramienta llamada M3PL que permite la

creación y posterior transformación de modelos a dos diferentes plataformas AMPL1

y GAMS2. En dicha implementación, se desarrolló un leguaje de dominio específico

para definir los modelos matemáticos de programación lineal a partir de los cuales se

genera, de manera automática, código valido para las plataformas. Esta herramienta

1A Modeling Language for Mathematical Programming (AMPL). http://www.ampl.com/ 2The General Algebraic Modeling System (GAMS). http://www.gams.com/

Page 2: M3PL: Un Lenguaje de dominio específico para definir

fue construida utilizando el IDE de Eclipse, en el marco del proyecto EMF con he-

rramientas como ATL y Acceleo, las cuales soportadas bajo el enfoque MDE permi-

ten realizar transformaciones requeridas para la generación de código.

Este artículo empieza por hacer una presentación del contexto de programación li-

neal y el problema a resolver junto con el caso de estudio utilizado para validar la

herramienta. Luego, se presenta la herramienta desarrollada para dar solución al pro-

blema, el lenguaje de dominio creado, los metamodelos y transformaciones que hacen

parte de la solución y los resultados obtenidos de la validación. Posteriormente se

mostrará el trabajo futuro, las conclusiones y finalmente la bibliografía.

2 Programación Lineal

La programación lineal es una técnica de investigación de operaciones para la de-

terminación de la asignación óptima de recursos escasos cuando la función objetivo y

las restricciones son lineales [2]. Según esto, se puede decir que, el problema que la

programación lineal aborda, se resume en la asignación optima de recursos limitados

a actividades, también conocidas como variables, que compiten por ellos para ser

realizadas. Poniéndolo de esta manera, la variedad de situaciones que se adaptan a

esta descripción son muchas, desde la planeación presupuestal en una casa de familia

hasta la planeación presupuestal en una nación; desde la programación de una dieta de

comida hasta la programación de complicadas mezclas químicas, pasando por la pla-

neación de transportes en una pequeña ciudad o la planeación de las rutas aéreas de

una aerolínea de talla mundial.

2.1 Modelos Matemáticos de PL

Para la solución de los problemas planteados anteriormente, la programación li-

neal ha desarrollado diferentes métodos, cada uno de los cuales tiene como requisito

la construcción de un modelo matemático para describir la situación que se pretende

resolver. Estos modelos matemáticos tienen los siguientes elementos, terminología y

notación, según Hillier y Lieberman [3]:

Variables: En los problemas de programación lineal son las actividades que reali-

za el sujeto del problema, usualmente una empresa productora, un inversionista o una empresa que vende o compra.

Recursos: Son los elementos que el sujeto del problema utiliza para llevar a cabo

las actividades o variables, como materias primas, dinero o máquinas.

Nivel de Variable: Es el resultado que la programación lineal desea encontrar;

básicamente el número o cantidad de elementos de una variable, sujeto a unos ob-

jetivos y a unos recursos limitados.

Función Objetivo: Es el valor que se quiere optimizar. Esta optimización está

sujeta a los niveles de variable y a la limitación de los recursos.

Page 3: M3PL: Un Lenguaje de dominio específico para definir

Los modelos matemáticos de programación lineal plantean el problema en térmi-

nos de toma de decisiones sobre los niveles de las variables. Teniendo en cuenta los

elementos descritos anteriormente, se formula el modelo matemático del problema

general de asignar recursos a variables. En particular, este modelo consiste en elegir

valores de para:

Sujeta a las restricciones:

y

La estructura de los modelos de programación lineal se puede resumir así:

Función Objetivo: Está compuesta por un objetivo, en este caso Maximizar,

y por una ecuación que es el valor que se quiere optimizar.

Restricciones Estructurales: Son la limitaciones de los recursos. Usualmente

por cada limitante de los recursos aparece una o más restricciones.

Restricciones de no Negatividad: Son restricciones inherentes a las variables

ya que éstas, para este tipo de problemas, no pueden ser negativas.

A esta forma general que se acaba de describir, donde el objetivo es maximizar ; las restricciones funcionales son desigualdades con sentido menor o igual; las varia-

bles de decisión tienen restricciones de no negatividad y no negativos, se la deno-

mina forma estándar del modelo. [3]

2.2 Caso de Estudio

De acuerdo a lo anterior y con el fin de demostrar la funcionalidad de la herramien-

ta se propone un caso de estudio, el cual fue escogido gracias a que permite probar

todas las funcionalidades de la herramienta y corresponde al siguiente enunciado y

modelo de problema de programación lineal:

Page 4: M3PL: Un Lenguaje de dominio específico para definir

Columbia Candies Factory produce diferentes tipos de goma de mascar. Cada tipo

de goma de mascar representa a la compañía una ganancia determinada. El tiempo de

producción de los paquetes de goma de mascar no puede exceder el tiempo de pro-

ducción total de la empresa y para cada tipo de goma de mascar existe un límite de

producción establecido por la compañía. [4]

Su modelo matemático sería:

Dado:

.

∑( )

Sujeta a las restricciones:

∑( )

2.3 Herramientas de Modelado Algebraico

Las herramientas de modelado algebraico permiten expresar y resolver modelos

matemáticos como los que se construyen a partir de los problemas de programación

lineal. Para expresar los modelos, las diferentes herramientas utilizan sintaxis especí-

ficas en las cuales deben ser escritos, lo cual obliga a los usuarios a aprender dichos

lenguajes, es decir que el modelador debe aprender tantas sintaxis como herramientas

utilice. A continuación se presentan las dos plataformas que se tienen como referen-

cia en este proyecto con el caso de estudio escrito en sus sintaxis.

AMPL: Es un lenguaje de modelado algebraico para planteamiento y solución

problemas de optimización lineal y no lineal con variables continuas o discretas [4].

El cual ofrece una versión gratuita para estudiantes que fue utilizada en este proyecto

para realizar las pruebas. Para expresar y solucionar los modelos, AMPL utiliza los

siguientes tres archivos [5]:

Page 5: M3PL: Un Lenguaje de dominio específico para definir

.mod: Este script contiene la definición del modelo matemático de PL.

Definición de variables, parámetros, función objetivo y restricciones.

.dat: Cuando el modelo tiene parámetros, este script contiene los valores

de los parámetros con los cuales se va a resolver el modelo.

.run: Este script llama al archivo del modelo y de los datos, si existe, para

ejecutar la solución.

La siguiente figura presenta los scripts que el modelador debe construir para expre-

sar el modelo del caso de estudio propuesto, se puede ver el contenido de los tres

archivos: Dulces.mod con la definición de parámetros, variables, función objetivo y

restricciones, Dulces.dat con los valores para cada parámetro y Dulces.run el cual

ejecuta la solución a partir de los otros dos scripts mostrando el valor obtenido para la

función objetivo y la variable.

Fig1. Scripts en AMPL para caso de estudio propuesto.

GAMS: Es un programa para la solución de modelos matemáticos de optimiza-

ción, como AMPL, maneja los conceptos de variable, parámetro, índice, función obje-

tivo y restricciones, su diferencia está en que el modelo se expresa en un solo archivo

compuesto por los siguientes bloques [6]:

Page 6: M3PL: Un Lenguaje de dominio específico para definir

VARIABLES: Declaración de variables.

EQUATIONS: Declaración de ecuaciones.

MODEL: Se definen las ecuaciones que componen el modelo.

SOLVE: Se define los métodos de solución del modelo.

SET: Declaración de conjuntos. (Opcional)

PARAMETERS: Declaración de parámetros y sus valores. (Opcional)

DISPLAY: Se definen las variables que se deben mostrar como resultado.

(Opcional)

Fig2. Archivo Dulces.gms con el modelo matemático del caso de estudio.

La figura anterior presenta el contenido del archivo Dulces.gms, en el editor propio

de GAMS, el cual corresponde al modelo matemático del caso de estudio propuesto.

En este se pueden observar los bloques descritos anteriormente señalados por el editor

con letras azules.

Page 7: M3PL: Un Lenguaje de dominio específico para definir

3 M3PL

Con el fin de liberar al modelador de la responsabilidad de aprender los lenguajes

específicos de cada plataforma que utilice, a través de este trabajo, se creó una he-

rramienta que permite expresar los modelos de programación lineal y traducirlos a los

lenguajes específicos, en este caso, de AMPL y GAMS. La herramienta, llamada

M3PL, se construyó bajo el enfoque MDE y está compuesta de dos partes:

3.1 Lenguaje de Dominio Especifico

Para permitir a los usuarios expresar los modelos matemáticos se creó un lengua-

je de dominio específico a partir del metamodelo [7] de modelos matemáticos de pro-

gramación lineal, que se expondrá en la siguiente sección. La sintaxis y gramática del

lenguaje fue definida en EMFText3. El modelo matemático del caso de estudio pro-

puesto, expresado en el lenguaje de M3PL, se puede observar en la siguiente figura:

Fig3. Representación del modelo matemático del caso de estudio en el lenguaje M3PL.

Como se puede ver el lenguaje permite expresar los siguientes conceptos:

Modelo Matemático: Con la palabra reservada ModeloMatematicoPL el

lenguaje permite expresar el concepto de modelo matemático con el cual

se empieza a expresar el modelo, después de la palabra reservada es nece-

sario que el usuario especifique el nombre del modelo en este caso Dul-

ces.

Parámetro Simple: Permite expresar un parámetro que tiene un solo valor

asociado, con la palabra reservada ParametroSimple, después de la pala-

bra se debe especificar el nombre del parámetro, la letra que lo simboliza

dentro del modelo y su respectivo valor. Los parámetros simples del caso

de estudio serían el número de sabores y el total de horas.

Parámetro Vector: Permite expresar un parámetro que tiene más de un va-

lor asociado, formando un vector, con la palabra reservada ParametroVec-

tor, después de la palabra se debe especificar el nombre del parámetro, la

3EMFTexthttp://www.emftext.org/EMFTextGuide.php

Page 8: M3PL: Un Lenguaje de dominio específico para definir

letra que lo simboliza dentro del modelo, el índice asociado y los valores

separados por comas (,). En el caso de estudio los parámetros vectores se-

rían las ganancias, la producción y las demandas máximas de los dulces.

Índice: Cuando los modelos matemáticos involucran una gran cantidad de

variables o parámetros es necesario que estos elementos tengan asociado

un subíndice, en el lenguaje propuesto esto se expresa con la palabra re-

servada Indice seguido del símbolo, su valor mínimo y máximo. Para el

caso de estudio planteado el índice está relacionado con el número de sa-

bores.

Variables: Permiten expresar las variables de un modelo, a través de la pa-

labra reservada Variable, seguida de su nombre y también se debe especi-

ficar la letra que lo simboliza dentro del modelo, su índice asociado, si lo

tiene, y la relación de no negatividad si existe. Para el ejemplo se especifi-

ca una variable de símbolo X que tiene asociada un índice.

Función Objetivo: Permite expresar la función objetivo de los modelos

matemáticos de PL, con la palabra reservada FuncionObjetivo seguido de

su nombre, además de su objetivo y expresión matemática. En el caso de

estudio se establece la función objetivo ganancias para maximizar.

Restricción Estructural: Permite expresar las restricciones del modelo, a

través de la palabra RestriccionEstructural seguida por su nombre y la ex-

presión matemática correspondiente, incluyendo iteradores. Para el ejem-

plo las restricciones son la del tiempo disponible y demanda máxima de

cada sabor.

Restricción de No Negatividad: Con la palabra reservada RestriccionNo-

Negatividad permite indicar cuando una variable o un grupo de variables

debe cumplir restricciones de no negatividad. En el ejemplo se establece

la restricción de no negatividad sobre la variable X.

El lenguaje establece que los conceptos del modelo matemático deben ir con su

respectivo nombre, lo cual permite crear modelos con metadatos que permiten inter-

pretar mejor los resultados obtenidos al final de la generación de código para las pla-

taformas. Por otro lado, también existen atributos propios de cada concepto, como lo

son Letra, Valor, Valores, Objetivo, Operación, Mínimo y Máximo. Además se utili-

zaron los corchetes como símbolos que abren y cierran bloques en donde se deben

especificar dichos atributos.

Al ser un lenguaje para representar modelos matemáticos, es importante que éste

permita escribir expresiones matemáticas, la palabra reservada para ello es Operación

con la cual se pueden escribir las siguientes operaciones:

Suma: Con el signo + entre los dos sumandos.

Resta: Con el signo - entre minuendo y sustraendo .

Page 9: M3PL: Un Lenguaje de dominio específico para definir

Multiplicación: Con el signo * entre los dos factores.

División: Con el signo / entre dividendo y divisor.

Sumatoria: Con la palabra reservada Sumatoria, también se debe espe-

cificar el índice asociado y la operación que se debe sumar.

Cabe resaltar que los sumandos, el minuendo, sustraendo, los factores, el dividendo

y divisor, pueden a su vez ser un conjunto de operaciones con lo cual se pueden escri-

bir expresiones como: (x+y) * z.

3.2 Cadena de Transformación

Esta sección explica el proceso para traducir los modelos matemáticos, desde la

sintaxis de la herramienta, a las sintaxis de AMPL y GAMS.

Como se muestra en la figura 4, se creó una cadena de transformación donde el

usuario exprese un modelo, en el lenguaje específico, conforme a un metamodelo de

modelos matemáticos [8]. Luego a través de una transformación modelo a modelo se

obtiene un modelo intermedio, conforme al metamodelo intermedio, el cual es some-

tido, nuevamente, a transformaciones de modelo a modelo para obtener dos modelos

conformes a los metamodelos AMPL y GAMS respectivamente. Finalmente, se reali-

za una transformación de modelo a texto para obtener los archivos válidos para las

plataformas.

Fig4. Representación de la cadena de transformación realizada para la traducción a las dos

plataformas.

Las transformaciones modelo a modelo (M2M), se realizan a través de reglas de-

clarativas programadas en la herramienta ATL [9]. Por su parte las transformaciones

de modelo a texto (M2T), se realizan con la herramienta Acceleo en donde se definen

las reglas de generación de código para los archivos correspondientes, estas reglas se

basan en los metamodelos y lenguajes específicos de las plataformas.

Page 10: M3PL: Un Lenguaje de dominio específico para definir

En cuanto a los metamodelos [7], se creó un metamodelo de modelos matemáticos

de programación lineal, basado en la estructura descrita en secciones anteriores. Co-

mo se puede ver en la figura 5, se definió que la función objetivo es siempre una

ecuación y las restricciones pueden ser ecuaciones o inecuaciones. En el caso de la

función objetivo esta tiene una expresión matemática en su parte derecha y en el caso

de las restricciones estas tienen una expresión matemática en su parte derecha, un

sentido (<,<=,=,>=,>) y una expresión matemática en su parte izquierda.

Fig5. Representación del metamodelo de modelos matemáticos de PL con sus elementos

principales y las relaciones entre ellos.

En el contexto de este proyecto definimos que una expresión matemática puede ser

una constante, un parámetro, una variable, una sumatoria o una operación entre dos

expresiones, la cual además cuenta con un operador (+, -, *, /), esto corresponde a la

parte del metamodelo presentada en la siguiente figura.

Fig6. Representación de la expresión en el metamodelo de modelos matemáticos.

El metamodelo intermedio, por su parte, tiene como objetivo preparar los datos del

modelo para ser traducidos a los lenguajes específicos de las plataformas. Este meta-

modelo ofrece las siguientes ventajas en el proceso de transformación:

Permite pasar todos los datos numéricos a cadenas de texto ya que nuestra

herramienta generara texto.

Page 11: M3PL: Un Lenguaje de dominio específico para definir

Permite transformar las restricciones de no negatividad en atributos de cada

variable con el fin de facilitar la manipulación final.

Permite construir una cadena de texto con el vector de valores del parámetro

con su posición y valor ya que de esta forma deben ser escritos en las dos

plataformas.

En la figura 7, se muestran las variaciones de los conceptos que representan venta-

jas en el metamodelo intermedio.

Fig7. Representación de una variable y un parámetro en un metamodelo intermedio.

Finalmente, se crearon los metamodelos de cada una de las plataformas, los cuales

permiten aplicar las reglas de generación de código valido. Como se puede ver en la

siguiente figura en el metamodelo de AMPL aparecen los conceptos de archivos o

scripts quienes son los que agrupan o se relacionan con los demás elementos del mo-

delo. Al igual que en el metamodelo de modelos matemáticos de PL inicial la función

objetivo y restricciones se componen de sentido y expresiones, conceptos que se mo-

delan de la misma forma.

Fig8. Representación de un metamodelo AMPL y sus principales elementos.

Por otro lado en GAMS la función objetivo y restricciones se componen de expre-

siones que se modelan de la misma forma que en el metamodelo de modelos matemá-

ticos de PL. Como se muestra en la siguiente figura el metamodelo de GAMS cuenta

con los conceptos de archivo y bloques que componen dicho archivo.

Page 12: M3PL: Un Lenguaje de dominio específico para definir

Fig9. Representación de un metamodelo GAMS en donde se muestran los principales blo-

ques con los que éste cuenta

4. Resultados Obtenidos

Al aplicar la cadena de transformación y metamodelos propuestos al modelo ma-

temático del caso de estudio, definido en la sintaxis M3PL se obtuvo:

En el caso de AMPL, como se puede ver en la siguiente imagen, los tres bloques de

código con los cuales trabaja la herramienta, es importante resaltar que el código ge-

nerado para el archivo del modelo esta comentado lo que da facilidad de interpreta-

ción para el usuario final.

Fig10. Resultado de la transformación a 3 archivos de texto para la plataforma AMPL.

Por su parte en GAMS, se generó el archivo con los bloques correspondientes de la misma

forma el código generado cuenta con metadatos que permiten una mejor interpretación por

parte del usuario, tal cual se evidencia en la siguiente figura.

Page 13: M3PL: Un Lenguaje de dominio específico para definir

Fig11. Resultado de la transformación a un archivo de texto para la plataforma GAMS.

Cabe anotar que tanto el código generado para AMPL como el generado para

GAMS, fueron compilados y solucionados correctamente en las respectivas herra-

mientas, tal como se puede observar a continuación.

Fig12. Resultado de la ejecución del código generado en plataformas.

Page 14: M3PL: Un Lenguaje de dominio específico para definir

4. Trabajos relacionados y futuros

Realizando la búsqueda de herramientas similares a la propuesta en este artículo,

no se encontró ninguna que ofrezca funcionalidades parecidas a M3PL, los hallazgos

se limitaron a herramientas que, como las plataformas, sirven para resolver los pro-

blemas ya planteados, algunas de ellas con sintaxis específicas, de esto se concluye

como primer trabajo futuro la creación de metamodelos y reglas de transformación a

nuevas herramientas que enriquezcan el listado de plataformas para las cuales M3PL

puede generar código, gracias a la flexibilidad que el enfoque MDE brinda, esta tarea

no representa mayores complicaciones.

Por otro lado encontramos que el lenguaje matemático es muy amplio por ello las

plataformas exploradas incluyen conceptos en su sintaxis que no fueron contemplados

en este proyecto, la extensión del metamodelo de modelos matemáticos de programa-

ción lineal permitirá, en un futuro, expresar diferentes conceptos a través del lenguaje

específico definido en M3PL, esto con el fin de permitir a los usuarios escribir diver-

sos tipos de modelos. Cabe anotar que la forma en que está construido el metamodelo

en mención, permite adicionar nuevos conceptos de forma fácil, gracias al manejo del

concepto expresión.

Finalmente encontramos que además de la programación lineal, existen muchas

otras áreas del conocimiento que utilizan los modelos matemáticos para plantear y

resolver sus problemas, en este sentido la creación de herramientas similares a M3PL

para estas áreas del conocimiento es un campo de acción e investigación que se abre a

partir de este trabajo.

5. Conclusiones

Desde el punto de vista del modelador de problemas de PL, la herramienta

lo libera de la obligación de aprender diferentes lenguajes de sintaxis espe-

cífica para expresar sus modelos.

En particular M3PL puede servir como base para una herramienta que faci-

lite la labor de los modeladores.

El desarrollo a partir de metamodelos, modelos y transformaciones da un

grado alto de flexibilidad, en nuestro caso por ejemplo sería muy fácil aña-

dir una nueva plataforma para la cual generar código.

El metamodelo de modelos matemáticos de programación lineal presenta

flexibilidad al permitir adicionar nuevos elementos del lenguaje para facili-

tar la expresión de otros conceptos de modelos matemáticos diferentes a los

lineales.

La parte del metamodelo de modelos matemáticos correspondiente a expre-

siones matemáticas también permite adicionar de forma sencilla nuevos

Page 15: M3PL: Un Lenguaje de dominio específico para definir

conceptos u operaciones. Actualmente se encuentran la suma, resta, multi-

plicación, división y sumatoria.

La definición del metamodelo inicial debe ser lo más correcta posible desde

el principio de lo contrario un cambio en su estructura puede generar gran-

des modificaciones en todo el desarrollo del proyecto.

La creación de un modelo intermedio facilita la preparación de los datos y

elementos para la transformación a los diferentes modelos finales.

Las plataformas exploradas en este proyecto utilizan un lenguaje algebraico

similar debido a que comparten el mismo dominio, las diferencias están en

la forma de agrupación de dichos elementos del lenguaje y el modelo ma-

temático. Estas diferencias fueron modeladas en sus respectivos metamode-

los.

Las herramientas utilizadas en el proyecto en general mostraron un correcto

desempeño.

Referencias

[1] Taha H. A.: Investigación de operaciones, Séptima Ed. Pearson Prentice Hall. Universty of Arkansas, Fayetteville.(2004)

[2] Moskowitz H., Wright G.: Investigación de Operaciones, Primera Ed., Prentice - Hall, México D.F. (1982)

[3] Hillier F,;Liberman G.: Introducción a la Investigación de Operaciones, Octava Ed. Mc GRAW-HILL, México D.F.(2006)

[4].Herrera T.: AMPL Tutorial.Columbia University.

http://www.columbia.edu/~dano/courses/4600/lectures/6/AMPLTutorialV2.pdf.

(2009).Accedido el 23 de Mayo de 2013

[5] Fourer R.; Gay D. M.;Kernighan B. W: AMPL: A Modeling Language

for Mathematical Programming, Second Ed.Duxbury Press, Brooks, Cole Publishing Com-

pany. (2002).

[6] SalaGarrido R.: Capítulo 14: GAMS: GAMS: Spanish Reference Manual. Universidad de

Valencia.http://www.uv.es/~sala/gams/14.PDF. Accedido el 23 de Mayo de 2013.

[7] Steinberg D.; Budinsky F.; Paternostro M.;Merks E.:EMF: Eclipse Modeling Framework, Second Ed. Addison-Wesley Professional ( 2008).

[8] Bézivin J.: In Search of a Basic Principle for Model Driven Engineering. UPGRADE.http://www.dei.isep.ipp.pt/~alex/publico/mde/up5-2Bezivin.pdf.(2004). Ac-

cedido el 23 de Mayo de 2013 [9] Jouault F.;Kurtev I.: TransformingModelswith ATL.In Proceedings of the Model Trans-

formations in Practice Workshop, Montego Bay, Jamaica. pp. 128-138 (2005).