Solución temporal para limitar la longitud máxima de las ecuaciones en APmonitor.
Estoy usando GEKKO para encontrar los coeficientes de Fourier 2D de una función desconocida u expandida en términos de vectores 2D g. Para lograr esto, he establecido diccionarios y necesito calcular muchos términos de la forma:
u{ u_fourier_i_j: [m.Var(),m.Var()] ....}
g{ g_i_j : [gx_i_j, gy_i_j].....}
m.Minimize(m.cos(sup.function()))
donde sup.función se define como:
dummy = 0
for i in fourier_x:
for j in fourier_y:
dummy += u_fourier_i_j * np.cos(np.dot(g_i_j,[x,y]))
return dummy
Ahora me gustaría usar muchos coeficientes de Fourier, pero Gekko me da el error:
APM model error: string > 15000 characters
Considere dividir la línea en varias ecuaciones
El problema también puede deberse a que solo se usa 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.
¿Existe una forma de aumentar el tamaño máximo de cadena en el modelo APM o una forma de evitar este error en su totalidad estructurando el programa de manera diferente? Los recursos computacionales no deberían ser un problema.
davy.ai
Sí, hay una manera de aumentar el tamaño máximo de cadena en el modelo APM estableciendo la opción
apm.max_chars
en un valor más alto. Por ejemplo, puedes agregar la siguiente línea antes de configurar tu modelo GEKKO:Como alternativa, puedes dividir la larga ecuación en múltiples ecuaciones más pequeñas para evitar un error. Por ejemplo, puedes definir una ecuación separada para cada término
u_fourier_i_j
:Esto creará
2 * len(u)
ecuaciones, pero cada ecuación será más corta y más fácil de manejar para GEKKO.