| 概述 | 组 | 树 | 图形 | 不推荐 | 索引 | 概念 |
该宏定义了一个名为 "_thisI的目标类,其中有n 个数据成员。 当 n 大于零时,数据成员的类型和名称必须以参数形式提供给这个宏。 每个数据成员由其类型 "ti和名称 "ai 定义。
You can use the macro ILOCPGOALWRAPPER to wrap an existing instance of IlcGoal when you want to use it within IBM® ILOG® Concert Technology model objects. 要以这种方式使用 "IlcGoal实例,您需要遵循以下步骤:
IlcGoal实例封装到 "
IloGoal实例中。
IlcCPEngine::solve和 "
IlcCPEngine:startNewSearch"生成的 "
IloGoal。示例
下面介绍如何用一个数据成员定义目标包装器:
ILOCPGOALWRAPPER1(MyGenerate, cp,IloIntVarArray,vars) {
返回IlcGenerate(cp.getIntVarArray(vars),IlcChooseMinSizeMin);
}该宏生成的代码与下面几行类似:
classMyGenerateConcertI: publicIloGoalI{
IloIntVarArrayvars ;
public:
MyGenerateConcertI (IloEnvI*, IloIntVarArray );
~MyGenerateConcertI ();
virtual IlcGoal extract(const IloCPEngine) const;
};
MyGenerateConcertI::MyGenerateConcertI(IloEnvI*env、
IloIntVarArrayvarsvars):
IloGoalI(env), vars (varsvars) {}
MyGenerateConcertI::~MyGenerateConcertI () {}
IloGoal MyGenerateIloEnv,IloIntVarArrayvarsvars) {
return new (env)MyGenerateConcertIenv.getImpl(), varsvars);
}
IlcGoal MyGenerateConcertI::extract(const IloCPEnginesolver) const {
返回IlcGenerate(cp.getIntVarArray(vars),IlcChooseMinSizeMin);
}目标的抽取不会抽取也不得抽取其参数。 因此,在使用目标时,您必须确保将由模型抽取这些参数。 确保这一点的好办法是在模型中添加参数。
下面的例子可以说明这一点:
IloEnv env; IloModel model(env); IloIntVarArrayx(env、3、0、10); model.add(x); // 这是必须的,否则将无法提取变量 求解器(模型); cp.solveMyGenerate(env,x)); env.end();
另请参阅: