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.

@Error: No se encontró solución”; se devuelve cuando se utiliza gekko para la optimización.

Estoy tratando de completar un problema de optimización de batería de un año (8760 horas). “ind1” e “ind2” son listas de longitud 8760 que contienen 0s/1s. Ciertas horas del año pueden generar ingresos adicionales, por lo que estas listas indicadoras se utilizan para distinguir esas horas (que se utilizan posteriormente en la función de maximización).

m = Gekko(remote=False)
#variables
e_battery = m.Var(lb=0, ub=4000, value=2000) #energía en la batería en el tiempo t, tamaño de la batería 4 MWh, valor inicial es 2 MWh
command = m.Var(lb=-1000, ub=1000) #potencia de comando -1 a 1 (en MW)
e_price = m.Param(value=price) #price es una lista de 8760 valores
ind_1 = m.Param(value=ind_1)
ind_2 = m.Param(value=ind_2)
m.time = np.linspace(0, 8759, 8760)
m.Equation(e_battery.dt() == e_battery + command)
m.Maximize((-command) * (e_price + ind_1 * ind1_price + ind_2 * ind2_price))
m.options.IMODE = 6
m.solve()

Cuando ejecuto el modelo anterior, se ejecuta durante aproximadamente 20 iteraciones y luego devuelve el error: “@error: Solución no encontrada”. El objetivo de esta tarea es devolver una matriz de 8760 valores (la variable de comando) que maximice el rendimiento. ¿Alguna idea de dónde viene este error?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede haber varias razones por las que se devuelve el error “Solución no encontrada”. Una posible razón es que el problema puede ser inviable, es decir, puede que no exista una solución que satisfaga todas las restricciones. Otra razón podría ser que el solucionador haya alcanzado su límite máximo de iteraciones sin converger a una solución.

    Para investigar más a fondo, podría intentar aumentar el límite máximo de iteraciones del solucionador estableciendo la opción “max_iter” en un valor más alto. Además, podría consultar el informe de convergencia del solucionador para ver si hay algún problema con la viabilidad del problema o las restricciones.

    También es posible que haya un problema con la función objetivo o las propias restricciones, en cuyo caso puede que necesite revisarlas para asegurarse de que están formuladas correctamente. Por último, podría intentar utilizar un solucionador o backend de solucionador diferente para ver si eso resuelve el problema.

Comments are closed.