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 #include <gecode/driver.hh>
00035 #include <gecode/int.hh>
00036
00037 using namespace Gecode;
00038
00047 class Eq20 : public Script {
00048 private:
00050 static const int x_n = 7;
00052 static const int e_n = 20;
00054 IntVarArray x;
00055 public:
00057 Eq20(const Options& opt)
00058 : Script(opt), x(*this,x_n,0,10) {
00059
00060 int eqs[e_n][x_n+1] = {
00061 {876370, -16105, 62397, -6704, 43340, 95100, -68610, 58301},
00062 {533909, 51637, 67761, 95951, 3834, -96722, 59190, 15280},
00063 {915683, 1671, -34121, 10763, 80609, 42532, 93520, -33488},
00064 {129768, 71202, -11119, 73017, -38875, -14413, -29234, 72370},
00065 {752447, 8874, -58412, 73947, 17147, 62335, 16005, 8632},
00066 {90614, 85268, 54180, -18810, -48219, 6013, 78169, -79785},
00067 {1198280, -45086, 51830, -4578, 96120, 21231, 97919, 65651},
00068 {18465, -64919, 80460, 90840, -59624, -75542, 25145, -47935},
00069 {1503588, -43277, 43525, 92298, 58630, 92590, -9372, -60227},
00070 {1244857, -16835, 47385, 97715, -12640, 69028, 76212, -81102},
00071 {1410723, -60301, 31227, 93951, 73889, 81526, -72702, 68026},
00072 {25334, 94016, -82071, 35961, 66597, -30705, -44404, -38304},
00073 {277271, -67456, 84750, -51553, 21239, 81675, -99395, -4254},
00074 {249912, -85698, 29958, 57308, 48789, -78219, 4657, 34539},
00075 {373854, 85176, -95332, -1268, 57898, 15883, 50547, 83287},
00076 {740061, -10343, 87758, -11782, 19346, 70072, -36991, 44529},
00077 {146074, 49149, 52871, -7132, 56728, -33576, -49530, -62089},
00078 {251591, -60113, 29475, 34421, -76870, 62646, 29278, -15212},
00079 {22167, 87059, -29101, -5513, -21219, 22128, 7276, 57308},
00080 {821228, -76706, 98205, 23445, 67921, 24111, -48614, -41906}
00081 };
00082
00083 for (int i = e_n; i--; ) {
00084 IntArgs c(x_n, &eqs[i][1]);
00085 linear(*this, c, x, IRT_EQ, eqs[i][0], opt.ipl());
00086 }
00087 branch(*this, x, INT_VAR_NONE(), INT_VAL_MIN());
00088 }
00089
00091 Eq20(Eq20& s) : Script(s) {
00092 x.update(*this, s.x);
00093 }
00095 virtual Space*
00096 copy(void) {
00097 return new Eq20(*this);
00098 }
00100 virtual void
00101 print(std::ostream& os) const {
00102 os << "\tx[] = " << x << std::endl;
00103 }
00104
00105 };
00106
00110 int
00111 main(int argc, char* argv[]) {
00112 Options opt("Eq20");
00113 opt.solutions(0);
00114 opt.iterations(1000);
00115 opt.parse(argc,argv);
00116 Script::run<Eq20,DFS,Options>(opt);
00117 return 0;
00118 }
00119
00120
00121
00122
00123