25 using namespace Couenne;
39 int nq = qmap.
Map().size (),
46 nl = lmap.
Map().size(),
52 qi [nq] =
li [nl] = -1;
54 std::map <int, CouNumber>::iterator lit = lmap.
Map().begin ();
57 for (
int i=0; i<nl; i++, lit++) {
59 li [i] = lit -> first;
60 lc [i] = lit -> second;
63 std::map <std::pair <int, int>,
CouNumber>::iterator qit = qmap.
Map().begin ();
66 for (
int i=0; i < nq; i++, qit++) {
67 qi [i] = qit -> first. first;
68 qj [i] = qit -> first. second;
69 qc [i] = qit -> second;
72 nl = lmap.
Map().size ();
73 nq = qmap.
Map().size ();
80 if ((nq==0) && (nl==0))
84 else if ((nq==0) && (fabs (c0) <
COUENNE_EPS) && (nl==1)) {
91 }
else if ((nl==0) && (fabs (c0) <
COUENNE_EPS) && (nq==1)) {
112 std::vector <std::pair <exprVar *, CouNumber> > lcoeff;
115 std::vector <quadElem> qcoeff;
118 if (!nq) ret =
new exprGroup (c0, lcoeff);
119 else ret =
new exprQuad (c0, lcoeff, qcoeff);
129 printf (
"\nlinstand (addaux = %d) ==> ", addAux);
130 ret ->
print (); printf (
"\n");
class Group, with constant, linear and nonlinear terms:
exprAux * linStandardize(bool addAux, CouNumber c0, LinMap &lmap, QuadMap &qmap)
standardization of linear exprOp's
void print(std::ostream &=std::cout)
Display current representation of problem: objective, linear and nonlinear constraints, and auxiliary variables.
Power of an expression (binary operator), with constant.
exprAux * addAuxiliary(expression *)
Add auxiliary variable and associate it with expression given as argument (used in standardization) ...
expression clone (points to another expression)
const Ipopt::EJournalCategory J_REFORMULATE(Ipopt::J_USER7)
exprVar * Var(int i) const
Return pointer to i-th variable.
Domain domain_
current point and bounds;
std::map< int, CouNumber > & Map()
public access
double CouNumber
main number type in Couenne
class exprQuad, with constant, linear and quadratic terms
std::map< std::pair< int, int >, CouNumber > & Map()
public access
JnlstPtr jnlst_
SmartPointer to the Journalist.
void analyzeSparsity(CouNumber, LinMap &, QuadMap &)
analyze sparsity of potential exprQuad/exprGroup and change linear/quadratic maps accordingly...
void indcoe2vector(int *indexL, CouNumber *coeff, std::vector< std::pair< exprVar *, CouNumber > > &lcoeff)
translates pair (indices, coefficients) into vector with pointers to variables