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],eqs[i][2],eqs[i][3],eqs[i][4],
00085 eqs[i][5],eqs[i][6],eqs[i][7]);
00086 linear(*this, c, x, IRT_EQ, eqs[i][0], opt.ipl());
00087 }
00088 branch(*this, x, INT_VAR_NONE(), INT_VAL_MIN());
00089 }
00090
00092 Eq20(Eq20& s) : Script(s) {
00093 x.update(*this, s.x);
00094 }
00096 virtual Space*
00097 copy(void) {
00098 return new Eq20(*this);
00099 }
00101 virtual void
00102 print(std::ostream& os) const {
00103 os << "\tx[] = " << x << std::endl;
00104 }
00105
00106 };
00107
00111 int
00112 main(int argc, char* argv[]) {
00113 Options opt("Eq20");
00114 opt.solutions(0);
00115 opt.iterations(1000);
00116 opt.parse(argc,argv);
00117 Script::run<Eq20,DFS,Options>(opt);
00118 return 0;
00119 }
00120
00121
00122
00123
00124