| 概述 | 组 | 树 | 图形 | 不推荐 | 索引 | 概念 |
一个目标可以用其他目标(称为子目标)来定义。 函数 "IlcAnd创建了一个由一系列其他目标(2 到 5 个子目标)组成的目标。 执行该目标会从左到右执行子目标。 由于 "IlcAnd是关联的,因此可以通过多次调用函数来克服五个子目标的明显限制。
如果目标为空(即其实现为空),则会被静默忽略。
示例:
首先,我们要定义一个目标 "PrintX,就像这样:
ILCGOAL1(PrintX,IlcInt,value){
IlcCPEngine cp = getCPEngine();
cp.out() <<"PrintX:有一个数据成员的目标" << std::endl;
cp.out() << value << std::endl;
return 0;
}
那么下面的陈述
cp.solve(IlcAnd(PrintX(cp, 1), PrintX(cp, 2), PrintX(cp, 3));
会产生以下输出结果:
PrintX:用一个数据成员执行一个目标 1 PrintX:用一个数据成员执行一个目标 2 PrintX:用一个数据成员执行一个目标 3
下面介绍如何定义一个包含八个子目标的选择点:
IlcAnd(IlcAnd(g1, g2, g3, g4, g5),
IlcAnd(g6, g7, g8));
更多信息,请参见概念 "CP 优化器中的目标。
另请参阅: