我可以获得IloNumVarArray的值吗?关于目标函数的定义
Can i get the value of IloNumVarArray? about definition of objective function
我正在使用CPLEX来解决mip。我的目标是最小化正的决策值之和。因此,在定义目标函数时,我需要判断决策值的符号。例如:
IloNumVarArray pp(env);
for (int i=0;i<N;i++)
{
pp.add(IloNumVar(env, -50.0, 50.0));
}
IloExpr obj(env);
for (int in=0;in<N;in++)
{
if (pp[in]>0) ///error:this expression is wrong, how to judge the value? ///
obj+=pp[in];
}
model.add(IloMinimize(env, obj));
obj.end();
我怎样才能恰当地表达它?当我定义目标函数时,我能得到"pp"的值吗?
根据定义,决策变量的值直到求解后才知道,因此(pp[i]>0(返回一个IloRange对象,而不是布尔值,因此会出现编译时错误。
为了最小化变量pp[i]的正部分,您需要定义第二个非零但大于pp[i]。
IloNumVarArray pp(env, N, -50, 50, ILOFLOAT);
IloNumVarArray pp_positive(env, N, 0, IloInfinity, ILOFLOAT);
for (int i=0; i<N; ++i)
{
model.add(pp[i] - pp_positive[i] <= 0);
}
model.add(IloMinimize(env, IloSum(pp_postiive));
因为pp_ppositive只出现在目标函数中,如果pp[i]为正,它将取pp[i]的值,如果pp[i]为负,则取0的值。
相关文章:
- 如何定义自定义生成配置类型,其中通常是.exe的目标改为 DLL
- '_HAS_CXX17'宏是否可用于自定义项目标头以启用C++17 语言集功能?
- 编译为目标 wasm 时未定义的符号
- 目标c是否需要一个标准来定义像c++11这样的内存模型
- 将自定义对象作为参数从目标 C 传递到 C++
- 为什么即使链接器找到目标文件,我的程序也看不到函数定义?
- 在多个目标上 CMake 后期构建自定义命令?
- Cmake :几个使用自定义目标进行测试的项目
- 如何使 extern 方法在共享库中定义,但使用 cmake 在其他目标中声明?
- CMAKE - 如何定义目标库的符号,具体取决于谁使用它
- CMAKE自定义目标仅运行一次
- 如何获取外部项目定义的目标的输出路径?
- Cmake:如何构建自定义编译器二进制文件,然后将其用于某些目标?
- antlr4 c++目标的未定义引用问题
- 如何在不定义目标变量大小的情况下逐个字符将字符串变量复制到另一个字符
- 如何为依赖项目标添加 cmake 定义
- 使用解决方案上的msbuild来调用某些项目上的自定义目标
- 如何创建一个qmake函数来创建一个自定义的make目标
- C++中同一类的不同定义 - 处理多个目标
- 编译错误 - 必须定义目标体系结构