ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Informe sobre Pyomo


Enviado por   •  2 de Mayo de 2020  •  Informes  •  1.631 Palabras (7 Páginas)  •  134 Visitas

Página 1 de 7

República Bolivariana de Venezuela Ministerio del Poder Popular Para la Defensa

Universidad Nacional Experimental Politécnica de la Fuerza Armada Nacional Bolivariana

6° Semestre Sección: D-01 Asignatura: Optimización no lineal Carrera: Ingeniería de Sistemas

Optimización no lineal

Profesor:        Integrantes:

Rodolfo Quijada        * Rommy Fernández

  • Estefany Rivas
  • Johan Vargas

Caracas, 05 de julio de 2019

Antes de comenzar a resolver los ejercicios propuestos en esta ocasión, vale la pena detenerse antes para describir brevemente los mecanismos utilizados para la obtención de estos resultados.

Para la resolución de los problemas planteados fue usado Pyomo, un paquete de software muy popular por su filosofía Open source y su sintaxis basada en la Programación Orientada a Objetos en Python.

En cuanto a los solvers, que son paquetes diseñados para brindar el soporte algorítmico para la resolución de problemas de Optimización y en vista de la gran variedad de estos, decidimos utilizar uno de los más conocidos en cuanto a Programación No Lineal se refiere: IPOPT (Interior Point OPTimizer); la cual es una librería de Software para la Optimización No Lineal de sistemas continuos a gran escala.

IPOPT implementa un método de punto interior primal-dual, y usa búsquedas de líneas basado en métodos de filtrado (Fletcher and Leyffer). IPOPT está diseñado para explotar la información de la primera y segunda derivada (Hessianos) si es proporcionada (usualmente mediante rutinas de derivación automática en entornos de modelado tales como AMPL). Si los Hessianos no son proporcionados, IPOPT los aproximará usando un método de quasi-Newton.

Teniendo en cuenta cómo funciona el solver a utilizar y conociendo el entorno donde manejaremos nuestros ejercicios, procedemos entonces a la resolución de los mismos.

Ejercicio 2: Resolver con Python los siguientes ejercicios:

[pic 1]

El primer problema tal como se observa es un problema de Maximización sujeto a ciertas condiciones que condicionan su solución, así que procedemos a hacer el algoritmo:

Ya teniendo instalados y configurados Python, Pyomo e IPOPT; Lo primero que hacemos es importar las dependencias de Pyomo para poder usarlo en nuestro ejercicio, esto se hace con las siguientes líneas de código:

from         future         import division from pyomo.environ import *

Ya importadas las dependencias, procedemos a instanciar un modelo para nuestro ejercicio, algo que podemos hacer con la siguiente línea de código:

modelo = ConcreteModel() #Creación e Instanciación del Modelo

Luego de Creado el Modelo, que representará el ámbito donde tendrá lugar nuestro ejercicio, procedemos a crear las variables que formarán parte de nuestro modelo, en este caso necesitamos 2 variables (X1 y X2), por lo cual procedemos a su creación, de la siguiente manera:

modelo.x = Var([1,2], domain = Reals) #Creación de Variables

Como se muestra, se crean 2 variables que llamamos X[1] y X[2], cuyo dominio se encuentra en el campo de los números reales. Ahora bien, ya teniendo las variables necesarias podemos proceder a formular la Función Objetivo, la cual representamos a continuación:

#Función Objetivo:

modelo.OBJ = Objective(expr = modelo.x[1] - exp(-modelo.x[2]), sense = maximize)

Como podemos ver, ésta se define por el método Objective() y recibe 2 parámetros: La expresión a optimizar (Es decir, la función objetivo, denotada por expr) y el objetivo (es decir, si se quiere maximizar o minimizar la función, representado por sense).

Ya descrita la función objetivo, procedemos a establecer las restricciones por la cual se va a regir nuestro modelo, estas son:

#Restricciones:

modelo.Restriccion1 = Constraint(expr = -sin(modelo.x[1]) + modelo.x[2] <= 0) modelo.Restriccion2 = Constraint(expr = modelo.x[1] <= 3)

Estas son definidas por medio del método Constraint() que puede recibir varios parámetros; en este caso usamos la expresión que queremos restringir para hallar la solución deseada.

Ahora procedemos a configurar la obtención de los valores finales de las variables X[1] y X[2], debido a que de lo contrario no se nos mostrarán, esto lo hacemos con la función mostrada más abajo; luego definimos el solver a utilizar y llamamos a la resolución de nuestro problema de optimización:

#Resolvemos e imprimimos los Resultados de las Variables

def pyomo_postprocess(options=None, instance=None, results=None): modelo.x.display()        #Desplegamos los valores de las variables x[1] y X[2]

opt = SolverFactory("ipopt")        #Definición del solver a usar

resultados = opt.solve(modelo)        #Volcado de los datos en la variable resultados

pyomo_postprocess(None, None, resultados) #llamamos a la función pasando los resultados (ubicados en la variable resultados) como parámetro para que sean desplegados

...

Descargar como (para miembros actualizados)  txt (9.4 Kb)   pdf (425.3 Kb)   docx (300.1 Kb)  
Leer 6 páginas más »
Disponible sólo en Clubensayos.com