5

estoy resolviendo grandes problemas de optimización con CPLEX API Java. Actualmente acabouso óptimo de CPLEX Java para alto rendimiento

IloCplex cplex = new IloCplex(); 
... add lots of variables and constraints ... 
cplex.solve(); 
cplex.end(); 

Esto funciona muy bien, pero repito el proceso con frecuencia cuando estoy solo cambiando coeficientes. Cada vez que repito creo un nuevo objeto cplex y vuelvo a crear todas las variables.

¿Hay una manera más eficiente de hacer esto? La documentación de IBM tiene un lenguaje como 'agregar el modelo a la instancia del modelo', que suena raro, pero pensé que daba a entender que podía reutilizar cosas.

Cualquier sugerencia de los usuarios más experimentados sería grande. Gracias.

+2

Probablemente obtendrá mejores respuestas de los foros de discusión de IBM o de OR-Exchange, un sitio hermano de Stack Overflow. –

Respuesta

6

Si lo que desea es cambiar los coeficientes de las restricciones (o los de la función objetivo), puede modificar los coeficientes en el objeto IloCplex existente. No deberías crear un modelo desde cero.

retval = cplex.solve(); 
// verify that the solve was successful 

// change coeficients on constraints (or in the objective) 
cplex.setLinearCoef(constraint, newCoef, variable); 
cplex.setLinearCoef(objective, newObjCoef, variable); 

// change right bounds on constraints 
constraint.setBounds(newLB, newUB); 

// change variable bounds 
var.setBounds(newLB, newUB); 

retval = cplex.solve(); 
// verify the solve 
+0

Gracias. Esto aclaró mi confusión sobre la API. –

Cuestiones relacionadas