173 lp.addRow(LP::INF,3.0*(x[1]+x[2]*2-5*x[3]+12-x[4]/3)+2*x[4]-4,23); |
173 lp.addRow(LP::INF,3.0*(x[1]+x[2]*2-5*x[3]+12-x[4]/3)+2*x[4]-4,23); |
174 |
174 |
175 lp.addRow(x[1]+x[3]<=x[5]-3); |
175 lp.addRow(x[1]+x[3]<=x[5]-3); |
176 lp.addRow(-7<=x[1]+x[3]-12<=3); |
176 lp.addRow(-7<=x[1]+x[3]-12<=3); |
177 lp.addRow(x[1]<=x[5]); |
177 lp.addRow(x[1]<=x[5]); |
|
178 |
|
179 std::ostringstream buf; |
|
180 |
|
181 |
|
182 //Checking the simplify function |
|
183 |
|
184 // //How to check the simplify function? A map gives no information |
|
185 // //on the question whether a given key is or is not stored in it, or |
|
186 // //it does? |
|
187 // Yes, it does, using the find() function. |
|
188 e=((p1+p2)+(p1-p2)); |
|
189 e.simplify(); |
|
190 buf << "Coeff. of p2 should be 0"; |
|
191 // std::cout<<e[p1]<<e[p2]<<e[p3]<<std::endl; |
|
192 check(e.find(p2)==e.end(), buf.str()); |
|
193 |
|
194 |
|
195 |
|
196 |
|
197 e=((p1+p2)+(p1-0.99*p2)); |
|
198 double tolerance=0.001; |
|
199 e.simplify(tolerance); |
|
200 buf << "Coeff. of p2 should be 0.01"; |
|
201 check(e[p2]>0, buf.str()); |
|
202 |
|
203 tolerance=0.02; |
|
204 e.simplify(tolerance); |
|
205 buf << "Coeff. of p2 should be 0"; |
|
206 check(e.find(p2)==e.end(), buf.str()); |
|
207 |
|
208 |
178 } |
209 } |
179 |
210 |
180 { |
211 { |
181 LP::DualExpr e,f,g; |
212 LP::DualExpr e,f,g; |
182 LP::Row p1,p2,p3,p4,p5; |
213 LP::Row p1,p2,p3,p4,p5; |