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
00039
00040 namespace Gecode { namespace Scheduling { namespace Cumulative {
00041
00042
00043
00044
00045
00046 forceinline
00047 ManFixPTask::ManFixPTask(void) {}
00048 forceinline
00049 ManFixPTask::ManFixPTask(IntVar s, int p, int c)
00050 : Unary::ManFixPTask(s,p), _c(c) {}
00051 forceinline void
00052 ManFixPTask::init(IntVar s, int p, int c) {
00053 Unary::ManFixPTask::init(s,p); _c=c;
00054 }
00055 forceinline void
00056 ManFixPTask::init(const ManFixPTask& t) {
00057 Unary::ManFixPTask::init(t); _c=t._c;
00058 }
00059
00060 forceinline int
00061 ManFixPTask::c(void) const {
00062 return _c;
00063 }
00064 forceinline double
00065 ManFixPTask::e(void) const {
00066 return static_cast<double>(pmin())*c();
00067 }
00068
00069 forceinline void
00070 ManFixPTask::update(Space& home, bool share, ManFixPTask& t) {
00071 Unary::ManFixPTask::update(home,share,t); _c=t._c;
00072 }
00073
00074 template<class Char, class Traits>
00075 std::basic_ostream<Char,Traits>&
00076 operator <<(std::basic_ostream<Char,Traits>& os, const ManFixPTask& t) {
00077 std::basic_ostringstream<Char,Traits> s;
00078 s.copyfmt(os); s.width(0);
00079 s << t.est() << ":[" << t.pmin() << ',' << t.c() << "]:" << t.lct();
00080 return os << s.str();
00081 }
00082
00083
00084
00085
00086
00087 forceinline
00088 ManFixPSETask::ManFixPSETask(void) {}
00089 forceinline
00090 ManFixPSETask::ManFixPSETask(TaskType t, IntVar s, int p, int c)
00091 : Unary::ManFixPSETask(t,s,p), _c(c) {}
00092 forceinline void
00093 ManFixPSETask::init(TaskType t, IntVar s, int p, int c) {
00094 Unary::ManFixPSETask::init(t,s,p); _c=c;
00095 }
00096 forceinline void
00097 ManFixPSETask::init(const ManFixPSETask& t0) {
00098 Unary::ManFixPSETask::init(t0); _c=t0._c;
00099 }
00100
00101 forceinline int
00102 ManFixPSETask::c(void) const {
00103 return _c;
00104 }
00105 forceinline double
00106 ManFixPSETask::e(void) const {
00107 return static_cast<double>(pmin())*c();
00108 }
00109
00110 forceinline void
00111 ManFixPSETask::update(Space& home, bool share, ManFixPSETask& t) {
00112 Unary::ManFixPSETask::update(home,share,t); _c=t._c;
00113 }
00114
00115 template<class Char, class Traits>
00116 std::basic_ostream<Char,Traits>&
00117 operator <<(std::basic_ostream<Char,Traits>& os,const ManFixPSETask& t) {
00118 std::basic_ostringstream<Char,Traits> s;
00119 s.copyfmt(os); s.width(0);
00120 s << t.est() << ":[" << t.pmin() << ',' << t.c() << "]:" << t.lct();
00121 return os << s.str();
00122 }
00123
00124
00125
00126
00127
00128 forceinline
00129 ManFlexTask::ManFlexTask(void) {}
00130 forceinline
00131 ManFlexTask::ManFlexTask(IntVar s, IntVar p, IntVar e, int c)
00132 : Unary::ManFlexTask(s,p,e), _c(c) {}
00133 forceinline void
00134 ManFlexTask::init(IntVar s, IntVar p, IntVar e, int c) {
00135 Unary::ManFlexTask::init(s,p,e); _c=c;
00136 }
00137 forceinline void
00138 ManFlexTask::init(const ManFlexTask& t) {
00139 Unary::ManFlexTask::init(t); _c=t._c;
00140 }
00141
00142 forceinline int
00143 ManFlexTask::c(void) const {
00144 return _c;
00145 }
00146 forceinline double
00147 ManFlexTask::e(void) const {
00148 return static_cast<double>(pmin())*c();
00149 }
00150
00151 forceinline void
00152 ManFlexTask::update(Space& home, bool share, ManFlexTask& t) {
00153 Unary::ManFlexTask::update(home,share,t); _c=t._c;
00154 }
00155
00156 template<class Char, class Traits>
00157 std::basic_ostream<Char,Traits>&
00158 operator <<(std::basic_ostream<Char,Traits>& os, const ManFlexTask& t) {
00159 std::basic_ostringstream<Char,Traits> s;
00160 s.copyfmt(os); s.width(0);
00161 s << t.est() << ':' << t.lst() << ':' << t.pmin() << ':'
00162 << t.pmax() << ':' << t.c() << ':' << t.ect() << ':' << t.lct();
00163 return os << s.str();
00164 }
00165
00166
00167
00168
00169
00170 forceinline
00171 OptFixPTask::OptFixPTask(void) {}
00172 forceinline
00173 OptFixPTask::OptFixPTask(IntVar s, int p, int c, BoolVar m) {
00174 ManFixPTask::init(s,p,c); _m=m;
00175 }
00176 forceinline void
00177 OptFixPTask::init(IntVar s, int p, int c, BoolVar m) {
00178 ManFixPTask::init(s,p,c); _m=m;
00179 }
00180
00181 template<class Char, class Traits>
00182 std::basic_ostream<Char,Traits>&
00183 operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPTask& t) {
00184 std::basic_ostringstream<Char,Traits> s;
00185 s.copyfmt(os); s.width(0);
00186 s << t.est() << ":[" << t.pmin() << ',' << t.c() << "]:" << t.lct() << ':'
00187 << (t.mandatory() ? '1' : (t.optional() ? '?' : '0'));
00188 return os << s.str();
00189 }
00190
00191
00192
00193
00194
00195 forceinline
00196 OptFixPSETask::OptFixPSETask(void) {}
00197 forceinline
00198 OptFixPSETask::OptFixPSETask(TaskType t,IntVar s,int p,int c,BoolVar m) {
00199 ManFixPSETask::init(t,s,p,c); _m=m;
00200 }
00201 forceinline void
00202 OptFixPSETask::init(TaskType t, IntVar s, int p, int c, BoolVar m) {
00203 ManFixPSETask::init(t,s,p,c); _m=m;
00204 }
00205
00206 template<class Char, class Traits>
00207 std::basic_ostream<Char,Traits>&
00208 operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPSETask& t) {
00209 std::basic_ostringstream<Char,Traits> s;
00210 s.copyfmt(os); s.width(0);
00211 s << t.est() << ":[" << t.pmin() << ',' << t.c() << "]:" << t.lct() << ':'
00212 << (t.mandatory() ? '1' : (t.optional() ? '?' : '0'));
00213 return os << s.str();
00214 }
00215
00216
00217
00218
00219
00220 forceinline
00221 OptFlexTask::OptFlexTask(void) {}
00222 forceinline
00223 OptFlexTask::OptFlexTask(IntVar s, IntVar p, IntVar e, int c, BoolVar m) {
00224 ManFlexTask::init(s,p,e,c); _m=m;
00225 }
00226 forceinline void
00227 OptFlexTask::init(IntVar s, IntVar p, IntVar e, int c, BoolVar m) {
00228 ManFlexTask::init(s,p,e,c); _m=m;
00229 }
00230
00231 template<class Char, class Traits>
00232 std::basic_ostream<Char,Traits>&
00233 operator <<(std::basic_ostream<Char,Traits>& os, const OptFlexTask& t) {
00234 std::basic_ostringstream<Char,Traits> s;
00235 s.copyfmt(os); s.width(0);
00236 s << t.est() << ':' << t.lst() << ':' << t.pmin() << ':'
00237 << t.pmax() << ':' << t.c() << ':' << t.ect() << ':' << t.lct()
00238 << (t.mandatory() ? '1' : (t.optional() ? '?' : '0'));
00239 return os << s.str();
00240 }
00241
00242 }}}
00243
00244