Stały termin w programie kwadratowym z CPLEX?

Używam CPLEX 12.5.0.0 przez API C #.

Do tej pory nigdy nie miałem sytuacji, w której cel miałby stały termin - tylko ograniczenia. Z ograniczeniami zawsze byłem w stanie zmienić układ równania, więc stała jest zawsze po jednej stronie, co oznacza każdąILinearNumExpr nie ma własnego terminu stałego.

Teraz mam problem z kwadratowym programowaniem, którego celem jest następujący typ:

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 [,] jest stałą, symetryczną macierzą kosztów. a [i] są zmiennymi binarnymi.

Tak więc patrząc na lewe połówki 3 linii powyżej, posiadanie razem a [i] i a [j] przyczyni się do c [i, j] do wartości obiektywnej. To jest obecnie wdrażane, testowane i działające.

Chcę zmodyfikować cel, aby, jeśli [i] i a [j] nie były oba równe 1, zamiast nie przyczyniać się do c [i, j] do wartości obiektywnej, odejmie to.

Teraz przejrzałem dokumentację CPLEX (której autorzy są najwyraźniej uczuleni na dostarczanie jasnych wyjaśnień lub przykładów) i wydaje się, że istniejeILinearNumExpr.Constant właściwość, która pozwala mi ustawić stałą dla danego wyrażenia.

Kiedy próbowałem zmodyfikować mój kod za pomocąIQuadNumExpr, Zauważyłem, że tego nie ma.Constant własność.

Czy jest jakiś sposób na dodanie stałych terminów do akwadratowy cel funkcja w CPLEX?

questionAnswers(1)

yourAnswerToTheQuestion