在CPLEX中添加两个具有权重的目标函数

问题描述

在我的数学模型中,我有两个目标函数,根据其重要性,我想为其分配权重并将它们加在一起作为一个目标函数。 这是我的两个目标加上重量:

IloExpr objExpression(env);
for (cc = 0; cc < NumberOfCourses; cc++)
    for (ww = 0; ww < AvailableWeeks; ww++) {
        objExpression += Weight * Diff[cc][ww]; // objective a
    }

for (cc = 0; cc < NumberOfCourses; cc++) {
    objExpression += (1 - Weight) * (M[cc] * Students[cc]); // objective b
}
IloObjective theObjective(env,objExpression,IloObjective::Minimize);
mod.add(theObjective);
objExpression.end();

我将参数和变量设置如下:

const int NumberOfCourses = 15;
const int AvailableWeeks = 8;
const float Weight = 0.5;
double Students[NumberOfCourses];

IloNumVarArray2 Diff(env,NumberOfCourses);
for (cc = 0; cc < NumberOfCourses; cc++)
    Diff[cc] = IloNumVarArray(env,AvailableWeeks,0.0,8);

IloNumVarArray M(env,NumberOfCourses);

当我运行代码时,它冻结并将断点设置在第二个目标行。 另外,如果我想有两个单独的目标并分别获得两个目标的输出,该怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)