You should read the files in the "examples" directory. By making your example inherits from Script, you see that it has no solution. See the test.cpp attached file.
Vincent 2013/7/4 Christian Schulte <cschu...@kth.se> > Please read MPG, at least the introductory material (especially Chapter 3 > answers your question). This mailing list assumes that you read the > documentation and not that it is being spoon-fed to you on the users > mailing list.**** > > ** ** > > Christian**** > > ** ** > > --**** > > Christian Schulte, Professor of Computer Science, KTH, > www.ict.kth.se/~cschulte/**** > > ** ** > > *From:* users-boun...@gecode.org [mailto:users-boun...@gecode.org] *On > Behalf Of *manel askri > *Sent:* Thursday, July 04, 2013 4:21 AM > *To:* users@gecode.org; users-requ...@gecode.org; users-ow...@gecode.org > *Subject:* [gecode-users] generation of a solution with success but no > display at the console**** > > ** ** > > hi every one!**** > > ** ** > > i m new with gecode and this is my first model, it consists in displaying > the following result :**** > > ** ** > > 2 19 22 12 10**** > > 11 13 18 17 6**** > > 21 16 1 7 20**** > > 8 14 15 24 4**** > > 23 3 9 5 25**** > > CSTE_65:65 **** > > ** ** > > so this is my code :**** > > #include <gecode/int.hh>**** > > #include <gecode/driver.hh>**** > > #include <gecode/minimodel.hh>**** > > #include <gecode/search.hh>**** > > ** ** > > using namespace Gecode;**** > > ** ** > > class E1 : public Space {**** > > private :**** > > **** > > static const int n =5;**** > > protected:**** > > ** ** > > IntVarArray v1;**** > > ** ** > > IntVar v2;**** > > ** ** > > public:**** > > ** ** > > E1(void) : v1(*this, n*n,1,n*n), > v2(*this,n*(n*n+1)/2,n*(n*n+1)/2){**** > > **** > > distinct (*this, v1);**** > > IntVarArgs rowArray (*this,n , 1, n);**** > > IntVarArgs colArray (*this,n , 1, n);**** > > IntVarArgs diag1Array (*this,n , 1, n);**** > > IntVarArgs diag2Array (*this,n , 1, n);**** > > ** ** > > **** > > **** > > //IntVarArgs sumConstraints ;**** > > ** ** > > for (int i =0; i<n;i++)**** > > {**** > > for (int j=0; j<n; j++)**** > > {**** > > rowArray[j]= v1[i*n+1];*** > * > > colArray[j]= v1[j*n+1];*** > * > > }**** > > **** > > // rel (*this, sum(rowArray),IRT_EQ, v2);**** > > // rel ( *this , sum(colArray), IRT_EQ ,v2);**** > > ** ** > > linear( *this , rowArray, IRT_EQ, v2);**** > > linear( *this , colArray, IRT_EQ, v2);**** > > diag1Array[i]=v1[i * n + i];**** > > diag2Array[i]= v1[i*n+n-i-1];**** > > }**** > > ** ** > > //rel(*this , sum(diag1Array), IRT_EQ,v2);**** > > //rel(*this, sum(diag2Array), IRT_EQ,v2);**** > > ** ** > > **** > > linear( *this , diag1Array, IRT_EQ, v2);**** > > linear( *this , diag2Array, IRT_EQ, v2);**** > > ** ** > > ** ** > > // post branching**** > > branch(*this, v1, INT_VAR_SIZE_MIN(), > INT_VAL_MIN());**** > > ** ** > > }**** > > // search support**** > > E1(bool share, E1& s) : Space(share, s) {**** > > v1.update(*this, share, s.v1);**** > > **** > > }**** > > ** ** > > virtual Space* copy(bool share) {**** > > return new E1(share,*this);**** > > }**** > > ** ** > > // print solution**** > > void print(void) const {**** > > for(int i = 0; i < n; i++) {**** > > for(int j = 0; j < n; j++) {**** > > v1[i * n + j];**** > > std::cout << v1[i * n + j] > << std::endl;**** > > **** > > }**** > > }**** > > }**** > > ** ** > > };**** > > // main function**** > > int main(int argc, char* argv[]) {**** > > // create model and search engine**** > > E1* m = new E1;**** > > DFS<E1> e(m);**** > > delete m;**** > > // search and print all solutions**** > > while (E1* s = e.next()) {**** > > s->print(); delete s;**** > > }**** > > return 0;**** > > }**** > > ** ** > > my problem is that when i generat the solution i do it successfly but when > i use the command prompt to execute the executable the console displays > nothing**** > > so please if any one have any idea obout this i will be so greatful **** > > ** ** > > thanks very much for any help**** > > ** ** > > ASKRI Manel**** > > ** ** > > **** > > ** ** > > ** ** > > _______________________________________________ > Gecode users mailing list > users@gecode.org > https://www.gecode.org/mailman/listinfo/gecode-users > > -- Vincent Barichard Université d'Angers (LERIA) Tel: 02 41 73 52 06 Département Informatique Fax: 02 41 73 50 73 H203
#include <gecode/int.hh> #include <gecode/driver.hh> #include <gecode/minimodel.hh> #include <gecode/search.hh> using namespace Gecode; class E1 : public Script { private : static const int n =5; protected: IntVarArray v1; IntVar v2; public: E1(const Options&) : v1(*this, n*n,1,n*n), v2(*this,n*(n*n+1)/2,n*(n*n+1)/2){ distinct (*this, v1); IntVarArgs rowArray (*this,n , 1, n); IntVarArgs colArray (*this,n , 1, n); IntVarArgs diag1Array (*this,n , 1, n); IntVarArgs diag2Array (*this,n , 1, n); //IntVarArgs sumConstraints ; for (int i =0; i<n;i++) { for (int j=0; j<n; j++) { rowArray[j]= v1[i*n+1]; colArray[j]= v1[j*n+1]; } // rel (*this, sum(rowArray),IRT_EQ, v2); // rel ( *this , sum(colArray), IRT_EQ ,v2); linear( *this , rowArray, IRT_EQ, v2); linear( *this , colArray, IRT_EQ, v2); diag1Array[i]=v1[i * n + i]; diag2Array[i]= v1[i*n+n-i-1]; } //rel(*this , sum(diag1Array), IRT_EQ,v2); //rel(*this, sum(diag2Array), IRT_EQ,v2); linear( *this , diag1Array, IRT_EQ, v2); linear( *this , diag2Array, IRT_EQ, v2); // post branching branch(*this, v1, INT_VAR_SIZE_MIN(), INT_VAL_MIN()); } // search support E1(bool share, E1& s) : Script(share, s) { v1.update(*this, share, s.v1); v2.update(*this, share, s.v2); } virtual Space* copy(bool share) { return new E1(share,*this); } // print solution void print(std::ostream& os) const { for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { v1[i * n + j]; os << v1[i * n + j] << std::endl; } } } }; // main function int main(int argc, char* argv[]) { // // create model and search engine // E1* m = new E1; // DFS<E1> e(m); // delete m; // // search and print all solutions // while (E1* s = e.next()) { // s->print(); delete s; // } Options opt("Test Problem"); opt.parse(argc,argv); Script::run<E1,DFS,Options>(opt); return 0; }
_______________________________________________ Gecode users mailing list users@gecode.org https://www.gecode.org/mailman/listinfo/gecode-users