我正在Java中使用CPLEX,我想在成本函数中添加以下乘法:
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
)相乘?我没有找到有关此主题的太多信息。
答案 0 :(得分:1)
您似乎想制定一个CPLEX不支持的模型(例如,它既不是线性的也不是平方的)。那正确吗?如果没有,请提供更多详细信息。有关CPLEX可以解决的模型类型的说明,请参见here。
您为A*B
设计的示例看起来或多或少是正确的(取决于objective
的类型),但是我认为您很可能缺少指定系数的第一个参数。例如,请参见IloLQNumExpr.addTerm。
如果还没有,请看看CPLEX随附的Java示例(例如QPex1.java,SocpEx1.java等)。