es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reduciendo el tamaño de mi ecuación en Gekko o aumentando la longitud máxima de la cadena en APMonitor.

Estoy usando gekko para optimizar un modelo con cientos de variables ui y cientos de ecuaciones. Hay muchas ecuaciones del tipo:


m.Minimze(m.cos(m.sum(a_i*u_i)))

donde ai es solo un flotante no dependiente del modelo gekko. Sin embargo, estos tipos de ecuaciones producen un error:

Error del modelo APM: cadena > 15000 caracteres
Considere dividir la línea en varias ecuaciones.

Esto puede ser debido a usar solo el carácter de nueva línea CR en lugar de CR LF (para Windows) o LF (para MacOS / Linux). Para solucionar este problema, guarde el archivo APM con los caracteres de nueva línea apropiados.

Dado que toda la suma debe estar dentro del cos, dividir la ecuación no es posible. ¿Es posible aumentar la longitud máxima de cadena? Esto parece ser posible de alguna manera, sin embargo, no está claro para mí cómo hacerlo. El tiempo de ejecución y los recursos informáticos no serían un problema aquí.

Otra idea sería usar variables intermedias, pero no está claro para mí cómo se manejan internamente. Aquí la documentación me da problemas. Sería genial si alguien pudiera explicármelo en palabras más simples que la documentación y tal vez incluso decirme si esta es una estrategia sensata a seguir.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Si está recibiendo un mensaje de error que indica que el modelo Gekko ha superado los 15000 caracteres, entonces debe guardar el archivo APM con los caracteres de salto de línea apropiados. También es posible aumentar la longitud máxima de la cadena. Sin embargo, no está claro cómo hacerlo.

    Un enfoque posible para manejar este problema es utilizar variables intermedias. Las variables intermedias se definen en el problema de optimización y se utilizan para simplificar ecuaciones complejas. Cuando se define una variable intermedia, Gekko la optimiza junto con las demás variables, pero también la introduce en la función objetivo y en las restricciones en lugar de la ecuación original. Esto puede ayudar a simplificar ecuaciones largas y complejas, lo que facilita la solución del modelo.

    Para utilizar variables intermedias, es necesario declararlas utilizando la función m.Intermediate(). A continuación, se muestra un ejemplo de cómo utilizarla:

    u = m.Var(value=1.0)
    a = 2.0
    v = m.Intermediate(a * u)
    m.Minimize(m.cos(v))
    

    En este ejemplo, se define una variable intermedia v como a * u. El valor de v se optimiza junto con u, pero se utiliza en la función objetivo en lugar de la ecuación original.

    El uso de variables intermedias puede ayudar a optimizar ecuaciones con muchas variables y facilitar la solución del modelo. Sin embargo, es importante tener en cuenta que no siempre mejora la solución e incluso puede empeorarla. Por lo tanto, se recomienda utilizarlo con precaución y realizar un análisis de sensibilidad para evaluar el impacto de las variables intermedias en la solución.

Comments are closed.