2 #include <boost/smart_ptr.hpp>
3 #include <boost/pool/object_pool.hpp>
4 #include <boost/bind.hpp>
6 double sg_maxmin_precision = 0.00001;
7 #define RENO_SCALING 1.0
9 void lmm_solve(lmm_system_t solver)
14 void lmm_print(lmm_system_t solver)
19 lmm_variable_t lmm_get_var_from_cnst(lmm_system_t sys, lmm_constraint_t cnst, lmm_element_t * elem)
24 lmm_constraint_t lmm_get_cnst_from_var(lmm_system_t sys, lmm_variable_t var, int num)
29 double lmm_get_cnst_weight_from_var(lmm_system_t sys, lmm_variable_t var, int num)
31 var->getCnstWeight(num);
34 int lmm_get_number_of_cnst_from_var(lmm_system_t sys, lmm_variable_t var)
36 var->getNumberOfCnst();
39 lmm_variable_t lmm_variable_new(lmm_system_t sys, void *id,
42 int number_of_constraints)
44 return sys->createVariable(id, weight_value, bound);
47 void *lmm_variable_id(lmm_variable_t var)
52 double lmm_variable_getvalue(lmm_variable_t var)
57 double lmm_get_variable_weight(lmm_variable_t var)
62 void lmm_variable_free(lmm_system_t sys, lmm_variable_t var)
67 lmm_constraint_t lmm_constraint_new(lmm_system_t sys, void *id,
70 return sys->createConstraint(id, bound_value);
73 void *lmm_constraint_id(lmm_constraint_t cnst)
78 void lmm_constraint_shared(lmm_constraint_t cnst)
83 int lmm_constraint_is_shared(lmm_constraint_t cnst)
85 return cnst->isShared();
88 int lmm_constraint_used(lmm_system_t sys, lmm_constraint_t cnst)
90 return (int) sys->constraintUsed(cnst);
93 void lmm_constraint_free(lmm_system_t sys, lmm_constraint_t cnst)
98 lmm_system_t lmm_system_new(int selective_update) {
99 return new Solver(selective_update);
102 void lmm_system_free(lmm_system_t sys) {
106 int lmm_system_modified(lmm_system_t solver)
110 void lmm_expand(lmm_system_t sys, lmm_constraint_t cnst, lmm_variable_t var, double value)
112 sys->expand(cnst, var, value);
115 void lmm_expand_add(lmm_system_t sys, lmm_constraint_t cnst,
116 lmm_variable_t var, double value)
118 sys->expandAdd(cnst, var, value);
121 void lmm_update_variable_bound(lmm_system_t sys, lmm_variable_t var,
124 sys->updateVariableBound(var, bound);
127 void lmm_update_variable_weight(lmm_system_t sys,
131 sys->updateVariableWeight(var, weight);
134 void lmm_update_constraint_bound(lmm_system_t sys,
135 lmm_constraint_t cnst,
138 sys->updateConstraintBound(cnst, bound);
145 int fix_constraint_is_active(lmm_system_t sys, lmm_constraint_t cnst)
148 std::vector<ConstraintPtr>::iterator cnstIt;
149 lmm_constraint_t cnst_tmp;
150 for (cnstIt=sys->m_activeConstraintSet.begin(); cnstIt!=sys->m_activeConstraintSet.end(); ++cnstIt) {
152 if (cnst_tmp == cnst) {