¿Término constante en objetivo para programa cuadrático con CPLEX?

Estoy usando CPLEX 12.5.0.0 a través de la API de C #.

Hasta ahora, nunca he tenido una situación con un objetivo con un término constante: solo restricciones. Con restricciones, siempre he podido reorganizar la ecuación, por lo que la constante está siempre en un lado, es decir, cada unaILinearNumExpr no tiene un término constante en sí mismo.

Ahora tengo un problema de programación cuadrática, con un objetivo del siguiente tipo:

MAX Z = 
  c[1,2] * a[1] * a[2] - c[1,2] * (1 - a[1] * a[2]) +
  c[1,3] * a[1] * a[3] - c[1,2] * (1 - a[1] * a[3]) +
  c[2,3] * a[2] * a[3] - c[2,2] * (1 - a[2] * a[3])

c [,] es una matriz de costos constante y simétrica. a [i] son ​​variables binarias.

Por lo tanto, al observar las mitades izquierdas de las 3 líneas anteriores, tener tanto a [i] como a [j] juntas contribuirá con c [i, j] al valor objetivo. Esto es lo que actualmente está implementado, probado y funcionando.

Quiero modificar el objetivo para que, si a [i] y a [j] no sean ambos iguales a 1, en lugar de no contribuir con c [i, j] al valor objetivo, lo restará.

Ahora, he buscado la documentación de CPLEX (cuyos autores son aparentemente alérgicos a proporcionar explicaciones o ejemplos claros), y parece que hay unaILinearNumExpr.Constant propiedad que me permite establecer una constante para una expresión dada.

Cuando intenté modificar mi código conIQuadNumExpr, Noté que no tiene eso.Constant propiedad.

¿Hay alguna manera de agregar términos constantes a unobjetivo cuadrático Funciona en CPLEX?

Respuestas a la pregunta(1)

Su respuesta a la pregunta