Умножьте несколько элементов внутри функции затрат с помощью CPLEX

#java #cplex

#java #cplex

Вопрос:

Я использую 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:

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

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

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