141 bool defaultParam =
false;
149 std::vector<int> vIdx;
151 std::vector<double> vValue;
157 set_lp_name(
m_lpModel, (
char*)
"LPSolveLinearApi");
162 for (
unsigned int i = 0, ie =
m_model->numVariables(); i < ie; ++i)
164 variable_type var (i);
166 sprintf(buf,
"%s",
m_model->variableName(var).c_str());
168 switch (
m_model->variableNumericType(var))
186 for (
typename std::vector<term_type>::const_iterator it =
m_model->objective().terms().begin(), ite =
m_model->objective().terms().end(); it != ite; ++it)
188 vIdx.push_back(it->variable().id()+1);
189 vValue.push_back(it->coefficient());
202 for (
unsigned int i = 0, ie =
m_model->constraints().size(); i < ie; ++i)
204 constraint_type
const& constr =
m_model->constraints().at(i);
208 for (
typename std::vector<term_type>::const_iterator it = constr.
expression().
terms().begin(), ite = constr.
expression().
terms().end(); it != ite; ++it)
210 vIdx.push_back(it->variable().id()+1);
211 vValue.push_back(it->coefficient());
214 limboAssertMsg(set_rowex(
m_lpModel, i+1, vIdx.size(), &vValue[0], &vIdx[0]),
"failed to set constraint for LP");
215 switch (constr.
sense())
230 sprintf(buf,
"%s",
m_model->constraintName(constr).c_str());
235#ifdef DEBUG_LPSOLVEAPI
236 write_lp(
m_lpModel, (
char*)
"problem.lp");
244 for (
unsigned int i = 0; i <
m_model->numVariables(); ++i)
246 REAL value = get_var_primalresult(
m_lpModel,
m_model->constraints().size()+1+i);
250#ifdef DEBUG_LPSOLVEAPI
251 std::vector<REAL> vSol (1+
m_model->constraints().size()+
m_model->numVariables());
253 std::ofstream out (
"problem.sol");
254 limboAssertMsg(out.good(),
"failed to open %s for write",
"problem.sol");
255 out <<
"# Solution for model " << get_lp_name(
m_lpModel) <<
"\n";
256 out <<
"# Objective value = " << get_objective(
m_lpModel) <<
"\n";
257 for (
unsigned int i = 0; i <
m_model->numVariables(); ++i)
259 out << get_col_name(
m_lpModel, i+1) <<
" " << vSol[1+
m_model->constraints().size()+i] <<
"\n";