[gecode-users] help--Question about Channel constraints

Kayler Yao risoay at gmail.com
Mon Aug 10 10:33:21 CEST 2009


hi,

     A question came out when i used Channel constraints. One type of
Channel constrains is for two integer variable arrays x and y of same size,
for example
  "
   channel(home, x, y);
    posts the constraint
                      Xi   = j  <==>  Yj  = i    for 0 ≤ i, j < |x|
"
 When i made a test , the result was not what it should to be.
 My tools are VS2008,Gecode 3.1.0. My test is

 "
#include <gecode/driver.hh>
#include <gecode/int.hh>
using namespace Gecode;

class Fournum : public Script
{
protected:
  IntVarArray num;
  IntVarArray mun;

public:
 Fournum(const Options& opt) : num(*this,3,0,2),mun(*this,3,0,2)
 {


  channel(*this,num,mun);
  branch(*this, num, INT_VAR_NONE, INT_VAL_MIN);
  branch(*this,mun, INT_VAR_NONE, INT_VAL_MIN);
 }

 virtual void
 print(std::ostream& os) const
 {
    os << "\t" << num<<"-------"<<mun<<std::endl;
 }

  Fournum(bool share, Fournum& s) : Script(share,s)
 {
       num.update(*this, share, s.num);
       mun.update(*this,share,s.num);
    }

  virtual Space*  copy(bool share)
 {
   return new Fournum(share,*this);
 }

};

int main()
{
 Options opt("\tJust for test");
 opt.solutions(0);
 opt.iterations(20000);
 Script::run<Fournum,DFS,Options>(opt);
 system("pause");
 return 0;
}
"
  The result is
       {0, 1, 2}-------{0, 1, 2}
       {0, 2, 1}-------{0, 2, 1}
       {1, 0, 2}-------{1, 0, 2}
       {1, 2, 0}-------{1, 2, 0}
       {2, 0, 1}-------{2, 0, 1}
       {2, 1, 0}-------{2, 1, 0}
You can see that the fourth and the fifth are not right . Who can tell me
why ?

Look forward to your reply!

Kayler.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20090810/a6306f61/attachment.htm>


More information about the gecode-users mailing list