2 using std::cout;
using std::endl;
4 #include "system_constants.hpp" 6 #include "glpk_solver.hpp" 11 CONSTR_TYPE cdata[5] { 1, -1, 0, 0, 0 };
13 cdata[0] = -1; cdata[1] = 4;
15 vector<constraint> cs;
16 cs.push_back(c1); cs.push_back(c2);
17 cout <<
"adding " << c1 <<
" , " << c2 << endl;
18 bool success = gs.solve(cs);
20 cout <<
"inconsistent system!\n";
22 const set<ray> & rays = gs.get_rays();
23 cout <<
"consistent system! solutions are:\n";
24 for (
const ray & r : rays)
25 cout <<
'\t' << r << endl;
29 cdata[0] = 1; cdata[1] = 0; cdata[2] = -1;
31 cdata[0] = 0; cdata[1] = -1; cdata[2] = 1;
33 cdata[0] = 0; cdata[1] = 3; cdata[2] = -1;
35 cs.push_back(c3); cs.push_back(c4); cs.push_back(c5);
36 cout <<
"adding " << c3 <<
" , " << c4 <<
" , " << c5 << endl;
37 success = gs.solve(cs);
39 cout <<
"inconsistent system!\n";
41 const set<ray> & rays = gs.get_rays();
42 cout <<
"consistent system! solutions are:\n";
43 for (
const ray & r : rays)
44 cout <<
'\t' << r << endl;
61 cout <<
"copying original\n";
64 cdata[0] = -1; cdata[1] = 0; cdata[2] = 0; cdata[3] = 0; cdata[4] = 1;
66 cout <<
"adding " << another_constr << endl;
67 success = gs2.solve(another_constr);
68 cout <<
"success? " << (success ?
'T' :
'F') << endl;
69 const set<ray> new_rays = gs2.get_rays();
70 cout <<
"new solution:\n";
71 for (
const ray & r : new_rays)
72 cout <<
'\t' << r << endl;
73 cout <<
ray_sum(new_rays) << endl;
75 cout <<
"now making it inconsistent...\n";
77 cdata[0] = 1; cdata[1] = -5; cdata[4] = 0;
79 cout <<
"adding " << final_constr << endl;
80 success = gs2.solve(final_constr);
81 cout <<
"success? " << (success ?
'T' :
'F') << endl;
ray ray_sum(const set< ray > &rs)
Add all the rays in a set.
approximate skeleton of a polyhedral cone, using GLPK linear solver
a ray defined by nonnegative coordinates