【发布时间】:2020-09-17 21:10:12
【问题描述】:
在我的数学模型中,我有两个目标函数,我想根据其重要性为它们分配权重并将它们加在一起作为一个目标函数。 这是我的两个目标加上权重:
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);
当我运行代码时,它会冻结并在第二个目标行设置断点。 另外,如果我想拥有两个独立的目标并分别获得两个目标的输出,我应该怎么做?
【问题讨论】:
-
M是如何声明的?它为断点处的变量显示什么值? -
实际上我认为问题在于我如何设置变量 M[cc] 但我不知道如何修复它或查看它现在得到的值。