stress-domain.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include <gecode/driver.hh>
00039 #include <gecode/int.hh>
00040
00041 using namespace Gecode;
00042
00049 class StressDomain : public Script {
00050 protected:
00052 IntVarArray x;
00053 public:
00055 StressDomain(const SizeOptions& opt)
00056 : x(*this,5,0,5*opt.size()) {
00057
00058
00059 for (int i = 5; i--; ) {
00060 for (unsigned int j = 0; j <= 5*opt.size(); j++)
00061 rel(*this, x[i], IRT_NQ, 5*j);
00062 for (unsigned int j = 0; j <= 5*opt.size(); j++)
00063 rel(*this, x[i], IRT_NQ, 5*j+2);
00064 for (unsigned int j = 0; j <= 5*opt.size(); j++)
00065 rel(*this, x[i], IRT_NQ, 5*j+4);
00066 }
00067
00068 for (unsigned int j = 0; j <= 5*opt.size()/2; j++)
00069 for (unsigned int i = 5; i--; ) {
00070 rel(*this, x[i], IRT_GQ, 5*j);
00071 rel(*this, x[i], IRT_LQ, 5*(j + (5*opt.size()/2)));
00072 }
00073 }
00075 StressDomain(bool share, StressDomain& s) : Script(share,s) {
00076 x.update(*this, share, s.x);
00077 }
00079 virtual Space*
00080 copy(bool share) {
00081 return new StressDomain(share,*this);
00082 }
00084 virtual void
00085 print(std::ostream&) const {}
00086 };
00087
00091 int
00092 main(int argc, char* argv[]) {
00093 SizeOptions opt("StressDomain");
00094 opt.iterations(200);
00095 opt.size(1000);
00096 opt.parse(argc,argv);
00097 Script::run<StressDomain,DFS,SizeOptions>(opt);
00098 return 0;
00099 }
00100
00101
00102