Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
lpsolution.inc
Go to the documentation of this file.
1
29#pragma once
30
34#include <ogdf/lib/abacus/sub.h>
35
36#pragma GCC visibility push(default)
37namespace abacus {
38
39
40template <class BaseType, class CoType>
42 Sub *sub,
43 bool primalVariables, Active<BaseType, CoType> *active )
44 :
45 master_(sub->master_),
46 nVarCon_(primalVariables ? sub->nVar() : sub->nCon()),
47 idSub_(sub->id_),
48 idLp_(sub->nIter_),
49 zVal_(master_, nVarCon_)
50{
51 if(active == 0)
52 active_ = 0;
53 else
54 active_ = new Active<BaseType, CoType>(*active);
55
56 double *p;
57 if(primalVariables==true)
58 p = sub->xVal_;
59 else
60 p = sub->yVal_;
61
62 for(int i = 0; i < nVarCon_; i++)
63 zVal_[i] = p[i];
64}
65
66
67template <class BaseType, class CoType>
68LpSolution<BaseType, CoType>::LpSolution(Master *master)
69 :
70 master_(master),
71 nVarCon_(0),
72 idSub_(0),
73 idLp_(0),
74 zVal_(master_, 0)
75{
76 active_=0;
77}
78
79
80template <class BaseType, class CoType>
81LpSolution<BaseType, CoType>::LpSolution(const LpSolution<BaseType, CoType> &rhs)
82 :
83 master_(rhs.master_),
84 nVarCon_(rhs.nVarCon_),
85 idSub_(rhs.idSub_),
86 idLp_(rhs.idLp_),
87 zVal_(rhs.zVal_)
88{
89 if(rhs.active_)
90 active_=new Active<BaseType,CoType>(*rhs.active_);
91}
92
93
94template <class BaseType, class CoType>
95LpSolution<BaseType, CoType>::~LpSolution()
96{
97 delete active_;
98}
99
100
101template <class BaseType, class CoType>
102std::ostream &operator<<(std::ostream &os, const LpSolution<BaseType, CoType> &rhs)
103{
104 double machEps=rhs.master_->machineEps();
105 os << rhs.idSub_ << " ";
106 os << rhs.idLp_ << " ";
107 os << rhs.nVarCon_ << " ";
108 for(int i = 0; i < rhs.nVarCon_; i++)
109 if(fabs(rhs.zVal_[i]) < machEps)
110 os << "0.0 ";
111 else
112 os << rhs.zVal_[i] << " " ;
113 os << std::endl;
114 return os;
115}
116
117
118template <class BaseType, class CoType>
119int LpSolution<BaseType, CoType>::nVarCon() const
120{
121 return nVarCon_;
122}
123
124
125template <class BaseType, class CoType>
126double* LpSolution<BaseType, CoType>::zVal()
127{
128 return &(zVal_[0]);
129}
130
131
132template <class BaseType, class CoType>
133Active<BaseType, CoType> * LpSolution<BaseType, CoType>::active()
134{
135 return active_;
136}
137
138
139template <class BaseType, class CoType>
140int LpSolution<BaseType, CoType>::idSub() const
141{
142 return idSub_;
143}
144
145
146template <class BaseType, class CoType>
147int LpSolution<BaseType, CoType>::idLp() const
148{
149 return idLp_;
150}
151
152}
153#pragma GCC visibility pop
LpSolution(Sub *sub, bool primalVariables, Active< BaseType, CoType > *active)
The constructor.
lpsolution.
the master of the optimization.
std::ostream & operator<<(std::ostream &os, const ogdf::Array< E, INDEX > &a)
Prints array a to output stream os.
Definition Array.h:983