// Overload double Constraint::coefficient(ilp::Var *var) const { ASSERT(var); Var *lvar = sys->getVar(var); ASSERT(lvar); for(Factor *fact = facts; fact; fact = fact->next()) if(fact->variable() == lvar) return fact->coefficient(); ASSERT(false); }
/** * Dump the constraint to the given output. * @param out Used output. */ void Constraint::dump(elm::io::Output& out) { bool first = true; for(Factor *fact = facts; fact; fact = fact->next()) { if(first) first = false; else out << " + "; out << (int)fact->coefficient() << " "; if(fact->variable()->variable()->name()) out << fact->variable()->variable()->name(); else out << "_" << fact->variable()->column(); } }
/** * Fill a row of the lp_solve matrice with the current constraint. * @param row Row to fill. */ void Constraint::fillRow(double *row) { ASSERT(row); for(Factor *fact = facts; fact; fact = fact->next()) row[fact->variable()->column()] = fact->coefficient(); }