跳至主内容
框架 无框架

IlcAnd

publicIlcGoal IlcAnd(constIlcGoal g1, constIlcGoal g2)
public 'IlcGoal'IlcAnd(const 'IlcGoal'g1, const 'IlcGoal'g2, const 'IlcGoal'g3)
public 'IlcGoal'IlcAnd(const 'IlcGoal'g1, const 'IlcGoal'g2, const 'IlcGoal'g3, const 'IlcGoal'g4' )
public 'IlcGoal'IlcAnd(const 'IlcGoal'g1, const 'IlcGoal'g2, const 'IlcGoal'g3, const 'IlcGoal'g4, const 'IlcGoal'g5)
定义文件: ilcp/cpext.h
包含文件: <ilcp/cpextilcp/cpext.h
返回一个目标,该目标是多个目标的组合。

一个目标可以用其他目标(称为子目标)来定义。 函数 "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 优化器中的目标

另请参阅: