Número de entradas en IloExpr.
Estoy creando un CPLEX LP (C++) y estoy creando restricciones usando IloExpr de la manera habitual. por ejemplo:
IloExpr cons(m_env);
for (auto& pID : values) {
if (pID != -1) {
cons += variables[pID];
}
}
m_model.add(IloRange(m_env, 0.0, cons, 1.0));
Al final del ciclo, cons puede no tener ninguna variable si todos los valores son -1. Me gustaría verificar esto para evitar agregar una restricción vacía al modelo.
¿Cómo puedo hacer esto?
Gracias.
davy.ai
Para comprobar si cons tiene alguna variable después del bucle, puedes llamar al método
isLinearZero()
en cons. Esto devolverá true si la expresión es lineal y su valor constante es cero, lo que significa que no hay variables en la expresión. Luego puedes usar una declaración if para agregar la restricción al modelo solo si la expresión no está vacía.Aquí tienes un ejemplo:
Esto solo agregará la restricción al modelo si cons no está vacío.