That's an internal function, you don't have to understand what it does. The point is that it accesses a variable that has either not been initialised in the constructor or not been updated in the copy constructor.
Cheers, Guido On 4 Dec 2013, at 3:37 pm, lana light <lanalight1...@gmail.com> wrote: > thank you > > i did that but i get the some error !!!!! > > any way what does this function do because the compiler reffers to it > > IntVarImp::RangeList::min(void) const { > return _min; > } > > thank you very much Lana > > > 2013/12/4 Guido Tack <t...@gecode.org> > You have to update gain1 in your constructor for cloning. > > Cheers, > Guido > > On 4 Dec 2013, at 1:08 pm, lana light <lanalight1...@gmail.com> wrote: > >> hi all! >> >> So sorry to bother you , but this is my first model with gecode , when i >> run it it gave m this errer: "Access Violation when reading of the >> location0x0000001c" >> >> and the compiler redirect me to this function in int.hpp >> IntVarImp::RangeList::min(void) const { >> return _min; >> } >> here is my code : >> >> #include <gecode/driver.hh> >> #include <gecode/int.hh> >> #include <gecode/minimodel.hh> >> #include <iostream> >> >> >> #include <vector> >> using namespace Gecode; >> using namespace std; >> class manel : public MaximizeScript { >> protected: >> >> IntVar gain1; >> >> static const int n=6;//nbre des testeurs >> static const int m=6;// nbre des noeuds >> IntVarArray a; >> >> public: >> manel(void) >> : a(*this,m*n,0,1),gain1(*this,0,100000) { >> >> Matrix <IntVarArray> X (a,m,n); >> >> >> vector<int> R1; >> >> R1.push_back(20);R1.push_back(10);R1.push_back(15);R1.push_back(5);R1.push_back(25);R1.push_back(30); >> >> vector<int> C1; >> >> C1.push_back(50);C1.push_back(30);C1.push_back(15);C1.push_back(15);C1.push_back(60);C1.push_back(20); >> vector<int> B1; >> >> B1.push_back(10);B1.push_back(15);B1.push_back(40);B1.push_back(50);B1.push_back(60);B1.push_back(70); >> >> vector<int> Dr1; >> >> Dr1.push_back(1);Dr1.push_back(1);Dr1.push_back(10);Dr1.push_back(5);Dr1.push_back(15);Dr1.push_back(15); >> vector<int> Dc1; >> >> Dc1.push_back(1);Dc1.push_back(2);Dc1.push_back(20);Dc1.push_back(15);Dc1.push_back(15);Dc1.push_back(15); >> vector<int> Db1; >> >> Db1.push_back(1);Db1.push_back(2);Db1.push_back(10);Db1.push_back(10);Db1.push_back(20);Db1.push_back(20); >> /*int g [n][m] ; >> //for(unsigned int i=0; i < n; ++i) >> // g.emplace_back(std::vector<int>(m)); >> >> g[0][0]=125;g[0][1]=150;g[0][2]=1;g[0][3]=0;g[0][4]=0;g[0][5]=0; >> >> g[1][0]=125;g[1][1]=150;g[1][2]=1;g[1][3]=0;g[1][4]=0;g[1][5]=0; >> >> g[2][0]=125;g[2][1]=150;g[2][2]=1;g[2][3]=0;g[2][4]=0;g[2][5]=0; >> >> g[3][0]=125;g[3][1]=150;g[3][2]=1;g[3][3]=0;g[3][4]=0;g[3][5]=0; >> >> g[4][0]=125;g[4][1]=150;g[4][2]=1;g[4][3]=0;g[4][4]=0;g[4][5]=0; >> >> g[5][0]=125;g[5][1]=150;g[5][2]=1;g[5][3]=0;g[5][4]=0;g[5][5]=0; >> /*for(int i=0; i<n; i++) >> { >> for (int j =0; j<m;j++) >> g[i][j]=50; >> }*/ >> //creation of constraints >> // ... over rows >> >> for ( int j=0; j<n;j++) >> { >> >> linear(*this , X.row(j),IRT_EQ,1); >> >> } >> >> //... over columns >> >> for (int i = 0; i < m; i++) { >> >> linear(*this, >> Dr1,X.col(i),IRT_LQ,R1[i]); >> } >> >> for (int i = 0; i < m; i++) { >> linear (*this, Dc1, X.col(i), IRT_LQ,C1[i]); >> >> } >> >> for (int i = 0; i <m; i++) { >> linear (*this, Db1, X.col(i), IRT_LQ,B1[i]); >> >> } >> >> >> >> //objectiv function >> /* IntArgs res(m*n); >> IntVarArgs X1(m*n); >> IntVarArgs f(n*m); >> IntVar z; >> int count=0; >> int count1=0; >> int count2=0; >> int count3=0; >> >> //for (int i=0; i<n; i++) >> //{ >> >> //for (int j=0; j<m; j++) >> >> // { >> >> /* res[0] = g[0][0]; >> X1[0] = X(0,0); >> z >> =expr(*this,res[0]*X1[0]); >> f[0]=z; >> >> res[1] = g[0][1]; >> X1[1] = X(0,1); >> z >> =expr(*this,res[1]*X1[1]); >> f[1]=z; >> >> res[2] = g[0][2]; >> X1[2] = X(0,2); >> z >> =expr(*this,res[2]*X1[2]); >> f[2]=z; >> >> res[3] = g[0][3]; >> X1[3] = X(0,3); >> z >> =expr(*this,res[3]*X1[3]); >> f[3]=z; >> >> res[4] = g[0][4]; >> X1[4] = X(0,4); >> z >> =expr(*this,res[4]*X1[4]); >> f[4]=z; >> >> res[5] = g[0][5]; >> X1[5] = X(0,5); >> z >> =expr(*this,res[5]*X1[5]); >> f[5]=z; >> >> ////////////////////////////////////////////////////// >> res[6] = g[1][0]; >> X1[6] = X(1,0); >> z >> =expr(*this,res[6]*X1[6]); >> f[6]=z; >> >> res[7] = g[1][1]; >> X1[7] = X(1,1); >> z >> =expr(*this,res[7]*X1[7]); >> f[7]=z; >> >> res[8] = g[1][2]; >> X1[8] = X(1,2); >> z >> =expr(*this,res[8]*X1[8]); >> f[8]=z; >> >> res[9] = g[1][3]; >> X1[9] = X(1,3); >> z >> =expr(*this,res[9]*X1[9]); >> f[9]=z; >> >> res[10] = g[1][4]; >> X1[10] = X(1,4); >> z >> =expr(*this,res[10]*X1[10]); >> f[10]=z; >> >> res[11] = g[1][5]; >> X1[11] = X(1,5); >> z >> =expr(*this,res[11]*X1[11]); >> f[11]=z; >> >> /////////////////////////////////////////////////////////////////////// >> res[12] = g[2][0]; >> X1[12] = X(2,0); >> z >> =expr(*this,res[12]*X1[12]); >> f[12]=z; >> >> res[13] = g[2][1]; >> X1[13] = X(2,1); >> z >> =expr(*this,res[13]*X1[13]); >> f[13]=z; >> >> res[14] = g[2][2]; >> X1[14] = X(2,2); >> z >> =expr(*this,res[14]*X1[14]); >> f[14]=z; >> >> res[15] = g[2][3]; >> X1[15] = X(2,3); >> z >> =expr(*this,res[15]*X1[15]); >> f[15]=z; >> >> res[16] = g[2][4]; >> X1[16] = X(2,4); >> z >> =expr(*this,res[16]*X1[16]); >> f[16]=z; >> >> res[17] = g[2][5]; >> X1[17] = X(2,5); >> z >> =expr(*this,res[17]*X1[17]); >> f[17]=z; >> >> ///////////////////////////////////////////////////////////// >> res[18] = g[3][0]; >> X1[18] = X(3,0); >> z >> =expr(*this,res[18]*X1[18]); >> f[18]=z; >> >> res[19] = g[3][1]; >> X1[19] = X(3,1); >> z >> =expr(*this,res[19]*X1[19]); >> f[19]=z; >> >> res[20] = g[3][2]; >> X1[20] = X(3,2); >> z >> =expr(*this,res[20]*X1[20]); >> f[20]=z; >> >> res[21] = g[3][3]; >> X1[21] = X(3,3); >> z >> =expr(*this,res[21]*X1[21]); >> f[21]=z; >> >> res[22] = g[3][4]; >> X1[22] = X(3,4); >> z >> =expr(*this,res[22]*X1[22]); >> f[22]=z; >> >> res[23] = g[3][5]; >> X1[23] = X(3,5); >> z >> =expr(*this,res[23]*X1[23]); >> f[23]=z; >> >> ////////////////////////////////////////////////////////////////////// >> res[24] = g[4][0]; >> X1[24] = X(4,0); >> z >> =expr(*this,res[24]*X1[24]); >> f[24]=z; >> >> res[25] = g[4][1]; >> X1[25] = X(4,1); >> z >> =expr(*this,res[25]*X1[25]); >> f[25]=z; >> >> res[26] = g[4][2]; >> X1[26] = X(4,2); >> z >> =expr(*this,res[26]*X1[26]); >> f[26]=z; >> >> res[27] = g[4][3]; >> X1[27] = X(4,3); >> z >> =expr(*this,res[27]*X1[27]); >> f[27]=z; >> >> res[28] = g[4][4]; >> X1[28] = X(4,4); >> z >> =expr(*this,res[28]*X1[28]); >> f[28]=z; >> >> res[29] = g[4][5]; >> X1[29] = X(4,5); >> z >> =expr(*this,res[29]*X1[29]); >> f[29]=z; >> >> /////////////////////////////////////////////////// >> res[30] = g[5][0]; >> X1[30] = X(5,0); >> z >> =expr(*this,res[30]*X1[30]); >> f[30]=z; >> >> res[31] = g[5][1]; >> X1[31] = X(5,1); >> z >> =expr(*this,res[31]*X1[31]); >> f[31]=z; >> >> res[32] = g[5][2]; >> X1[32] = X(5,2); >> z >> =expr(*this,res[32]*X1[32]); >> f[32]=z; >> >> res[33] = g[5][3]; >> X1[33] = X(5,3); >> z >> =expr(*this,res[33]*X1[33]); >> f[33]=z; >> >> res[34] = g[5][4]; >> X1[34] = X(5,4); >> z >> =expr(*this,res[34]*X1[34]); >> f[34]=z; >> >> res[35] = g[5][5]; >> X1[35] = X(5,5); >> z >> =expr(*this,res[35]*X1[35]); >> f[35]=z; >> >> // } >> // res1=res*X1; >> >> //} >> >> // constraint over the objective function >> >> >> // linear(*this, f, IRT_EQ, gain);*/ >> >> //Branching >> branch(*this, a, INT_VAR_SIZE_MAX(), INT_VAL_MAX()); >> >> } >> >> virtual IntVar cost(void) const { >> return gain1; >> } >> /// Print solution >> virtual void print(void) const { >> std::cout << a << std::endl; >> >> >> } >> // Constructor for cloning \a s >> manel(bool share, manel& s) >> : MaximizeScript(share,s) { >> // gain.update(*this, share, s.gain); >> a.update(*this, share, s.a); >> } >> // Copy during cloning >> virtual Space* copy(bool share) { >> return new manel(share,*this); >> } >> >> >> }; >> >> int main(int argc, char* argv[]) { >> manel* m = new manel; >> if (manel* s = bab(m)) { >> s->print(); delete s; //Or whatever >> } >> >> system("pause"); >> return 0; >> } >> >> >> i really don't know where do i have the error and how to fix it >> >> Tha,k you very much for your help >> _______________________________________________ >> Gecode users mailing list >> users@gecode.org >> https://www.gecode.org/mailman/listinfo/gecode-users > >
_______________________________________________ Gecode users mailing list users@gecode.org https://www.gecode.org/mailman/listinfo/gecode-users