Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

lpsolution.inc
Go to the documentation of this file.
1 
29 #pragma once
30 
31 #include <ogdf/lib/abacus/master.h>
33 #include <ogdf/lib/abacus/active.h>
34 #include <ogdf/lib/abacus/sub.h>
35 
36 #pragma GCC visibility push(default)
37 namespace abacus {
38 
39 
40 template <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 
67 template <class BaseType, class CoType>
68 LpSolution<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 
80 template <class BaseType, class CoType>
81 LpSolution<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 
94 template <class BaseType, class CoType>
95 LpSolution<BaseType, CoType>::~LpSolution()
96 {
97  delete active_;
98 }
99 
100 
101 template <class BaseType, class CoType>
102 std::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 
118 template <class BaseType, class CoType>
119 int LpSolution<BaseType, CoType>::nVarCon() const
120 {
121  return nVarCon_;
122 }
123 
124 
125 template <class BaseType, class CoType>
126 double* LpSolution<BaseType, CoType>::zVal()
127 {
128  return &(zVal_[0]);
129 }
130 
131 
132 template <class BaseType, class CoType>
133 Active<BaseType, CoType> * LpSolution<BaseType, CoType>::active()
134 {
135  return active_;
136 }
137 
138 
139 template <class BaseType, class CoType>
140 int LpSolution<BaseType, CoType>::idSub() const
141 {
142  return idSub_;
143 }
144 
145 
146 template <class BaseType, class CoType>
147 int LpSolution<BaseType, CoType>::idLp() const
148 {
149  return idLp_;
150 }
151 
152 }
153 #pragma GCC visibility pop
abacus::LpSolution::LpSolution
LpSolution(Sub *sub, bool primalVariables, Active< BaseType, CoType > *active)
The constructor.
sub.h
lpsolution.h
lpsolution.
abacus
Definition: ILPClusterPlanarity.h:50
ogdf::operator<<
std::ostream & operator<<(std::ostream &os, const ogdf::Array< E, INDEX > &a)
Prints array a to output stream os.
Definition: Array.h:983
active.h
master.h
the master of the optimization.