使用 CPLEX 将成本函数内的多个元素相乘
Multiply several elements inside the cost function using CPLEX
我在 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
)?我没有找到太多关于这个主题的信息。
您似乎想要制定 CPLEX 不支持的模型(例如,它既不是线性的也不是二次的)。那正确吗?如果没有,请提供更多详细信息。有关 CPLEX 可以求解的模型类型的说明,请参阅 here。
您的 A*B
示例看起来或多或少是正确的(取决于 objective
的类型),但我认为您可能缺少指定系数的第一个参数。例如,参见 IloLQNumExpr.addTerm。
如果您还没有看过,您应该查看 CPLEX 附带的 java 示例(例如,QPex1.java、SocpEx1.java 等)。
我在 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
)?我没有找到太多关于这个主题的信息。
您似乎想要制定 CPLEX 不支持的模型(例如,它既不是线性的也不是二次的)。那正确吗?如果没有,请提供更多详细信息。有关 CPLEX 可以求解的模型类型的说明,请参阅 here。
您的 A*B
示例看起来或多或少是正确的(取决于 objective
的类型),但我认为您可能缺少指定系数的第一个参数。例如,参见 IloLQNumExpr.addTerm。
如果您还没有看过,您应该查看 CPLEX 附带的 java 示例(例如,QPex1.java、SocpEx1.java 等)。