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.

AMPL CPLEX: no es un mensaje de restricción de indicador.

Tengo este modelo AMPL:

model;

param n >= 1 integer;

set V = 1..n;
set T = 1..n;
set R = {(i, j) in {V, V}: i <> j};

param capacity >= 0;

var m{V} binary;
var path{T, R} binary;
var u{T} binary;

minimize obj:
    sum{t in T} u[t]
;

subject to max_capacity{t in T}:
    u[t] = 1 =>
        sum{(i, j) in R} m[j] * path[t, i, j] <= capacity
;

Pero cuando intento resolverlo usando CPLEX, devuelve este mensaje:

CPLEX 20.1.0.0: la restricción lógica _slogcon[1] no es una restricción indicadora.

¿Qué significa este mensaje? ¿Hay alguna manera simple de solucionar el problema?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que la restricción lógica “max_capacity” no es una restricción indicadora. Una restricción indicadora es un tipo especial de restricción lógica que involucra una variable binaria que indica si se cumple o no una determinada condición. En AMPL, las restricciones indicadoras deben especificarse utilizando el símbolo “->” en lugar del símbolo “=”.

    Para solucionar el problema, puedes modificar la restricción “max_capacity” para usar una restricción indicadora reemplazando el símbolo “=” por “->”. Aquí tienes la restricción actualizada:

    subject to max_capacity{t in T}:
        u[t] -> sum{(i, j) in R} m[j] * path[t, i, j] <= capacity
    ;
    

    Esto debería permitirte resolver el modelo utilizando CPLEX.

Comments are closed.