09 2017 档案

摘要:遍历所有方法,查看是否有属性_constrains或是_onchange,如果有的话则说明是_constraint_methods或_onchange_methods @property def _constraint_methods(self): """ Return a list of methods implementing Python constraints... 阅读全文
posted @ 2017-09-10 08:29 crax 阅读(275) 评论(0) 推荐(0)
摘要:这个其实很简单,都不用popagator,直接区域求交就完成了 void dom(Home home, const IntVarArgs& x, const IntVarArgs& d, IntPropLevel) { using namespace Int; if (x.size() != d.s 阅读全文
posted @ 2017-09-04 00:03 crax 阅读(205) 评论(0) 推荐(0)
摘要:主要通过两个类来实现 ViewValuesBrancher 和 valselcommitint,前一个针对min和max, 后一个针对其它情况 void branch(Home home, const IntVarArgs& x, IntVarBranch vars, IntValBranch vals, IntBranchFilter bf, IntVa... 阅读全文
posted @ 2017-09-03 19:59 crax 阅读(268) 评论(0) 推荐(0)
摘要:实际应用中,往往要比官方的示例复杂很多,这里对变量的选择等往往需要以自定义的方式进行选择,这个时候就需要自定义brancher,相关注释在代码中 commit函数在worker中被调用 阅读全文
posted @ 2017-09-03 18:01 crax 阅读(304) 评论(0) 推荐(0)
摘要:1、定义。 /** * \brief %Choice for performing commit * * Must be refined by inheritance such that the information stored * inside a choice is sufficient to redo a commit performed by a * p... 阅读全文
posted @ 2017-09-03 15:49 crax 阅读(203) 评论(0) 推荐(0)
摘要:这个类只是个基类,并没有实现什么,主要作用是给子类提供统一的接口 阅读全文
posted @ 2017-09-02 12:45 crax 阅读(288) 评论(0) 推荐(0)
摘要:gecode中变量比较,如是否包括等是放在reltest这个文件中,代码很简单,需要注意的就是dom中能中间因为hole被分隔成为很多个部份,所以这里需要通过形如ViewRanges<VX> rx(x);进行遍历,需要下一个时直接++rx; 阅读全文
posted @ 2017-09-02 12:40 crax 阅读(216) 评论(0) 推荐(0)
摘要:代码如下: 1、声明两个变量 2、订阅事件,也就是说在变量发生改变,如dom,值等发生改变的时候调用 propagate 函数。 reschedue的时候需要重新订阅。 dipose的时候取消订阅 3、处理具体业务逻辑。 说明,这里只是检查了是否完成,返回的都是ES_NOFIX, 没有进行FIX状态 阅读全文
posted @ 2017-09-01 10:12 crax 阅读(251) 评论(0) 推荐(0)