Toggle navigation
SCIP Optimization Suite
SCIP
SoPlex
ZIMPL
UG
GCG
Documentation
SoPlex 7.1.2
SoPlex 6.0.3
SoPlex 5.0.2
SoPlex 4.0.2
SoPlex 3.1.0
SoPlex 3.0.1
SoPlex 2.2.1
SoPlex
Sequential object-oriented simPlex
soplex-vectors_overview.cpp
Go to the documentation of this file.
1
/*
2
DVector primRhs; ///< rhs vector for computing the primal vector
3
UpdateVector primVec; ///< primal vector
4
Vector dualRhs; ///< rhs vector for computing the dual vector
5
UpdateVector dualVec; ///< dual vector
6
UpdateVector addVec; ///< storage for thePvec = &addVec
7
8
Vector theURbound; ///< Upper Row Feasibility bound
9
Vector theLRbound; ///< Lower Row Feasibility bound
10
Vector theUCbound; ///< Upper Column Feasibility bound
11
Vector theLCbound; ///< Lower Column Feasibility bound
12
13
14
Column Enter
15
------------
16
theFrhs = &primRhs = -A_N x_N
17
theFvec = &primVec = B^-1 theFrhs
18
theCoPrhs = &dualRhs =
19
theCoPvec = theRPvec = &dualVec = B^-1 theCoPrhs
20
thePvec = theCPvec = &addVec = dualVec * A
21
theUbound = &theUCbound = SPxLP::upper() // Upper Column Feasibility bound
22
theLbound = &theLCbound = SPxLP::lower() // Lower Column Feasibility bound
23
theCoUbound = &theURbound = -lhs() // Upper Row Feasibility bound
24
theCoLbound = &theLRbound = -rhs() // Lower Row Feasibility bound
25
theUBbound = -lhs()/upper()/infinity
26
theLBbound = -rhs()/lower()/-infinity
27
28
29
Column Leave
30
------------
31
theFrhs = &primRhs = -A_N x_N
32
theFvec = &primVec
33
theCoPrhs = &dualRhs
34
theCoPvec = theRPvec = &dualVec
35
thePvec = theCPvec = &addVec = dualVec * A
36
theUbound = &theUCbound = +/-infinity/-maxobj // Upper Column Feasibility bound
37
theLbound = &theLCbound = +/-infinity/-maxobj // Lower Column Feasibility bound
38
theCoUbound = &theURbound = +/-infinity/0 // Upper Row Feasibility bound
39
theCoLbound = &theLRbound = +/-infinity/0 // Lower Row Feasibility bound
40
theUBbound = 0/infinity/-lhs()/upper()
41
theLBbound = 0/-infinity/-rhs()/lower()
42
43
Row Enter
44
---------
45
theFrhs = &dualRhs
46
theFvec = &dualVec
47
theCoPrhs = &primRhs
48
theCoPvec = theCPvec = &primVec
49
thePvec = theRPvec = &addVec = primVec * A
50
theUbound = &theURbound = +/-infinity/0 // Upper Row Feasibility bound
51
theLbound = &theLRbound = +/-infinity/0 // Lower Row Feasibility bound
52
theCoUbound = &theUCbound = +/-infinity/0 // Upper Column Feasibility bound
53
theCoLbound = &theLCbound = +/-infinity/0 // Lower Column Feasibility bound
54
theUBbound = -lhs()/upper()/infinity
55
theLBbound = -rhs()/lower()/-infinity
56
57
Row Leave
58
---------
59
theFrhs = &dualRhs = maxObj()
60
theFvec = &dualVec
61
theCoPrhs = &primRhs
62
theCoPvec = theCPvec = &primVec
63
thePvec = theRPvec = &addVec = primVec * A
64
theUbound = &theURbound = rhs() // Upper Row Feasibility bound
65
theLbound = &theLRbound = lhs() // Lower Row Feasibility bound
66
theCoUbound = &theUCbound = SPxLP::upper() // Upper Column Feasibility bound
67
theCoLbound = &theLCbound = SPxLP::lower() // Lower Column Feasibility bound
68
theUBbound = 0/infinity/-lhs()/upper()
69
theLBbound = 0/-infinity/-rhs()/lower()
70
71
72
// Column Representation Row
73
colset() = thevectors = rowset()
74
rowset() = thecovectors = colset()
75
&primRhs = theFrhs = &dualRhs
76
&primVec = theFvec = &dualVec
77
&dualRhs = theCoPrhs = &primRhs
78
&dualVec = theCoPvec = &primVec
79
&addVec = thePvec = &addVec
80
theCoPvec = theRPvec = thePvec
81
thePVec = theCPvec = theCoPvec
82
&theUCbound = theUbound = &theURbound
83
&theLCbound = theLbound = &theLRbound
84
&theURbound = theCoUbound = &theUCbound
85
&theLRbound = theCoLbound = &theLCbound
86
theUBbound
87
theLBbound
88
89
90
theLBbound < theFvec = B^-1 theFrhs < theUBbound
91
theLbound < thePvec = A * theCoPvec < theUbound
92
theCoLbound < theCoPvec = B^-1 theCoPrhs < theCoUbound
93
94
95
$x_B = A_B^{-1} b - A_B^{-1} A_N x_N$
96
97
98
In columnwise case, |theFvec| = $x_B = A_B^{-1} (- A_N x_N)$, where $x_N$
99
are either upper or lower bounds for the nonbasic variables (depending on
100
the variables |Status|). If these values remain unchanged throughout the
101
simplex algorithm, they may be taken directly from LP. However, in the
102
entering type algorith they are changed and, hence, retreived from the
103
column or row upper or lower bound vectors.
104
105
In rowwise case, |theFvec| = $\pi^T_B = (c^T - 0^T A_N) A_B^{-1}$. However,
106
this applies only to leaving type algorithm, where no bounds on dual
107
variables are altered. In entering type algorithm they are changed and,
108
hence, retreived from the column or row upper or lower bound vectors.
109
110
111
112
theFvec = $x_B = A_B^{-1} ( - A_N x_N$ ) // Column
113
= $\pi^T_B = (c^T - 0^T A_N) A_B^{-1}$ // Row
114
115
116
theUCbound = upper
117
theLCbound = lower
118
119
// Column Row
120
- lhs = theURbound = rhs
121
- rhs = theLRbound = lhs
122
123
124
125
126
127
*/
128
129
130
131
132
133
134
135
136
137
138
139
140
141