Lenguaje de dominio específico embebido para programación estocástica multietapa en Scala

El soporte brindado por los lenguajes de modelado algebraico para trabajar con problemas de programación estocástica multietapa basada en escenarios es, en general, limitado y poco práctico. Las problemáticas incluyen excesiva verbosidad o redundancia, expresividad limitada, dificultad de integració...

Volledige beschrijving

Bewaard in:
Bibliografische gegevens
Hoofdauteur: Ferrari, Germán (author)
Formaat: masterThesis
Taal:Spaans
Gepubliceerd in: 2022
Onderwerpen:
Online toegang:https://hdl.handle.net/20.500.12008/33136
Tags: Voeg label toe
Geen labels, Wees de eerste die dit record labelt!
Omschrijving
Samenvatting:El soporte brindado por los lenguajes de modelado algebraico para trabajar con problemas de programación estocástica multietapa basada en escenarios es, en general, limitado y poco práctico. Las problemáticas incluyen excesiva verbosidad o redundancia, expresividad limitada, dificultad de integración con sistemas externos, ecosistemas cerrados, y dificultad para desarrollar extensiones. Los problemas de programación estocástica basados en escenarios suelen ser tratados como problemas de programación entera mixta a través de su forma extensiva, lo que permite utilizar todas las herramientas disponibles para ese tipo de problemas en la implementación computacional y resolución de los problemas estocásticos. Tratar a los problemas de programación estocástica como problemas enteros mixtos no es ideal. En primer lugar, exige la incorporación del control de la no anticipatividad de las decisiones en los modelos. Por otra parte, no brinda ninguna asistencia en la construcción del árbol de escenarios y la especificación de los valores de los parámetros estocásticos en forma consistente. Por último, no permite explotar la estructura particular de los problemas de programación estocástica en su resolución. En este trabajo se desarrolla un lenguaje de dominio específico (DSL), denominado amphip, en el que se explora una extensión al lenguaje de modelado algebraico para problemas de programación entera mixta, GNU MathProg, para incorporar soporte directo para programación estocástica multietapa basada en escenarios. El DSL es embebido en el lenguaje de programación Scala, permitiendo que los modelos puedan ser transformados y manipulados. El desarrollo es realizado utilizando íntegramente programación funcional, aprovechando el soporte provisto por Scala. El DSL desarrollado permite modelar los problemas de programación estocástica utilizando la formulación con escenarios separados. Las entidades del modelo son declaradas con una sintaxis que logra replicar con gran fidelidad la de MathProg. El DSL provee primitivas para la especificación del árbol de escenarios, las probabilidades, y los valores de los parámetros estocásticos en forma concisa y flexible. Aplicando transformaciones al modelo, se generan automáticamente las restricciones de no anticipatividad y versiones alternativas de los parámetros estocásticos sin escenarios separados, lo que permite construir una forma extensiva que es más eficiente que la se construiría manualmente. La funcionalidad provista puede ser extendida por el usuario, pudiendo definir, con pocas líneas de código, funciones para la construcción de árboles de escenarios con estructuras particulares, esquemas alternativos para definir las probabilidades de los escenarios, y funciones auxiliares para especificar los datos de los parámetros estocásticos tomando en cuenta las instancias particulares de los problemas.