Умножьте несколько элементов внутри функции стоимости, используя CPLEX - PullRequest
1 голос
/ 01 апреля 2019

Я использую CPLEX в Java, и я хочу добавить в функцию стоимости следующее умножение:

Minimize(A*B*X)

where:
A ∈ ℝ^1*n
B ∈ ℝ^m*n
X ∈ ℝ^n*1

Насколько я знаю, A*B будет выглядеть примерно так:

for(int i = 0; i < m; i++)
  for(int j = 0; j < n; j++)
    objective.addTerm(A[i], B[i][j]);

Но как мне умножить эти три члена (A*B*X)?Я не нашел много информации по этой теме.

1 Ответ

1 голос
/ 01 апреля 2019

Похоже, вы хотите сформулировать модель, которая не поддерживается CPLEX (например, она не является линейной или квадратичной).Это правильно?Если нет, пожалуйста, дайте больше деталей.См. здесь для объяснения типов моделей, которые CPLEX может решить.

Ваш пример для A*B выглядит более или менее правильным (в зависимости от типа objective), ноЯ думаю, что вы, вероятно, пропускаете первый аргумент, определяющий коэффициент.Например, см. IloLQNumExpr.addTerm .

Если вы еще этого не сделали, вам следует взглянуть на примеры Java, включенные в CPLEX (например, QPex1.java, SocpEx1.Java и т. д.).

...