12 #include "CoinHelperFunctions.hpp"
17 using namespace Ipopt;
22 IpoptWarmStart::IpoptWarmStart
23 (
bool empty,
int numvars,
int numcont):
24 CoinWarmStartPrimalDual(),
29 setSize(numvars,numcont);
34 CoinWarmStartPrimalDual(tnlp->num_variables(),
35 2*tnlp->num_variables()+tnlp->num_constraints(),
36 tnlp->x_sol(), tnlp->duals_sol() ),
38 warm_starter_(warm_starter),
41 int numcols = tnlp->num_variables();
42 int numrows = tnlp->num_constraints();
44 setSize(numcols,numrows);
49 const double * primal,
const double * dual):
50 CoinWarmStartPrimalDual(primal_size, dual_size, primal, dual),
55 setSize(primal_size, dual_size - 2* primal_size);
59 CoinWarmStartPrimalDual(other),
60 CoinWarmStartBasis(other),
69 CoinWarmStartPrimalDual(pdws),
83 CoinWarmStartDiff *
diff = CoinWarmStartPrimalDual::generateDiff(ws);
85 CoinWarmStartPrimalDualDiff * pdDiff =
86 dynamic_cast<CoinWarmStartPrimalDualDiff*
>(
diff);
88 CoinWarmStartDiff* retval =
101 DBG_ASSERT(ipoptDiff);
102 CoinWarmStartPrimalDual::applyDiff(ipoptDiff);
112 CoinWarmStartPrimalDual::clear();
118 CoinWarmStartPrimalDualDiff::clear();
static Bigint * diff(Bigint *a, Bigint *b)
Class for storing warm start informations for Ipopt.
virtual CoinWarmStartDiff * generateDiff(const CoinWarmStart *const oldCWS) const
Generate the "differences" between two IpoptWarmStart.
virtual void applyDiff(const CoinWarmStartDiff *const cwsdDiff)
Apply 'differences' to an Ipopt warm start.
void fint fint fint real fint real real real real real real real real real fint real fint fint fint real * ws
Ipopt::SmartPtr< IpoptInteriorWarmStarter > warm_starter() const
Accessor to warm start information obecjt.
virtual ~IpoptWarmStart()
Abstract destructor.
Ipopt::SmartPtr< IpoptInteriorWarmStarter > warm_starter_
warm start information object
Diff class for IpoptWarmStart.
IpoptWarmStart(bool empty=1, int numvars=0, int numcont=0)
Default constructor.
void flushPoint()
flush the starting point