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.

MILP BigM: la variable debe mantenerse en los límites definidos o establecerse en 0.

Estoy modelando algunos sistemas de energía a través de MILP/Pyomo.

En ese contexto, estoy modelando un convertidor eléctrico bidireccional.

La energía/potencia puede fluir en ambas direcciones.
Sin embargo, en la primera dirección, la potencia P solo puede estar dentro de los límites [LB;UB], de lo contrario debe ser 0.

Utilizo esta formulación para garantizar que:

LB – P <= LB * x

P <= UB * (1 – x)

siendo x una variable binaria

y parece estar funcionando …

En la otra dirección, la potencia P solo puede estar dentro de [-UB;-LB], de lo contrario 0.
Pero estoy luchando para garantizar eso, simplemente no puedo entender la lógica detrás de construir ese tipo de restricción …

Cualquier ayuda y explicación sería apreciada.

Muchas gracias,
Max

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hola Max,

    Para asegurarse de que la potencia P solo esté dentro de [-UB;-LB], puede utilizar una formulación similar a la que ha utilizado para asegurarse de que P solo esté dentro de [LB;UB].

    Aquí le mostramos cómo puede hacerlo:

    • Defina una variable binaria y.
    • Utilice las siguientes dos restricciones:
    • -UB * y <= P <= -LB * y, lo que garantiza que si y es 0, entonces P debe ser 0, de lo contrario P debe estar dentro de [-UB;-LB].

    • y + x <= 1, lo que asegura que puede ser 1 o y, pero no ambos. Si y es 1, entonces P debe estar dentro de [-UB;-LB], en caso contrario P debe estar dentro de [LB;UB].

    Con esta formulación, puede asegurarse de que la energía/potencia pueda fluir en ambas direcciones, pero dentro de los límites especificados.

    ¡Espero que esto te ayude! Hazme saber si tienes alguna otra pregunta o inquietud.

    Atentamente,
    [Su nombre]

Comments are closed.