SoPlex
Toggle main menu visibility
Loading...
Searching...
No Matches
src
soplex
spxvectorst.h
Go to the documentation of this file.
1
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2
/* */
3
/* This file is part of the class library */
4
/* SoPlex --- the Sequential object-oriented simPlex. */
5
/* */
6
/* Copyright (c) 1996-2026 Zuse Institute Berlin (ZIB) */
7
/* */
8
/* Licensed under the Apache License, Version 2.0 (the "License"); */
9
/* you may not use this file except in compliance with the License. */
10
/* You may obtain a copy of the License at */
11
/* */
12
/* http://www.apache.org/licenses/LICENSE-2.0 */
13
/* */
14
/* Unless required by applicable law or agreed to in writing, software */
15
/* distributed under the License is distributed on an "AS IS" BASIS, */
16
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17
/* See the License for the specific language governing permissions and */
18
/* limitations under the License. */
19
/* */
20
/* You should have received a copy of the Apache-2.0 license */
21
/* along with SoPlex; see the file LICENSE. If not email to soplex@zib.de. */
22
/* */
23
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24
25
/**@file spxvectorst.h
26
* @brief Solution vector based start basis.
27
*/
28
#ifndef _SPXVECTORST_H_
29
#define _SPXVECTORST_H_
30
31
#include <assert.h>
32
33
#include "
soplex/spxweightst.h
"
34
#include "
soplex/vector.h
"
35
36
namespace
soplex
37
{
38
39
/**@brief Solution vector based start basis.
40
@ingroup Algo
41
42
This version of SPxWeightST can be used to construct a starting basis for
43
an LP to be solved with SoPlex if an approximate solution vector or dual
44
vector (possibly optained by a heuristic) is available. This is done by
45
setting up weights for the SPxWeightST it is derived from.
46
47
The primal vector to be used is loaded by calling method #primal() while
48
#dual() setups for the dual vector. Methods #primal() or #dual() must be
49
called \em before #generate() is called by SoPlex to set up a
50
starting basis. If more than one call of method #primal() or #dual()
51
occurred only the most recent one is valid for generating the starting base.
52
*/
53
template
<
class
R>
54
class
SPxVectorST
:
public
SPxWeightST
<R>
55
{
56
private
:
57
58
//-------------------------------------
59
/**@name Types */
60
///@{
61
/// specifies whether to work on the primal, the dual, or not at all.
62
enum
{
NONE
,
PVEC
,
DVEC
}
state
;
63
///@}
64
65
//-------------------------------------
66
/**@name Data */
67
///@{
68
/// the current (approximate) primal or dual vector
69
VectorBase<R>
vec
;
70
///@}
71
72
protected
:
73
74
//-------------------------------------
75
/**@name Protected helpers */
76
///@{
77
/// sets up variable weights.
78
void
setupWeights
(
SPxSolverBase<R>
& base);
79
///@}
80
81
public
:
82
83
//-------------------------------------
84
/**@name Construction / destruction */
85
///@{
86
/// default constructor.
87
SPxVectorST
()
88
:
state
(
NONE
)
89
{
90
this->
m_name
=
"vector"
;
91
}
92
/// copy constructor
93
SPxVectorST
(
const
SPxVectorST
& old)
94
:
SPxWeightST
<R>(old)
95
,
state
(old.
state
)
96
,
vec
(old.
vec
)
97
{
98
assert(this->
isConsistent
());
99
}
100
/// assignment operator
101
SPxVectorST
&
operator=
(
const
SPxVectorST
& rhs)
102
{
103
if
(
this
!= &rhs)
104
{
105
SPxWeightST<R>::operator=
(rhs);
106
state
= rhs.
state
;
107
vec
= rhs.
vec
;
108
109
assert(this->
isConsistent
());
110
}
111
112
return
*
this
;
113
}
114
/// destructor.
115
virtual
~SPxVectorST
()
116
{}
117
/// clone function for polymorphism
118
inline
virtual
SPxStarter<R>
*
clone
()
const
119
{
120
return
new
SPxVectorST
(*
this
);
121
}
122
///@}
123
124
//-------------------------------------
125
/**@name Modification */
126
///@{
127
/// sets up primal solution vector.
128
void
primal
(
const
VectorBase<R>
& v)
129
{
130
vec
= v;
131
state
=
PVEC
;
132
}
133
/// sets up primal solution vector.
134
void
dual
(
const
VectorBase<R>
& v)
135
{
136
vec
= v;
137
state
=
DVEC
;
138
}
139
///@}
140
141
};
142
143
}
// namespace soplex
144
145
// For general templated files
146
#include "spxvectorst.hpp"
147
#endif
// _SPXVECTORST_H_
soplex::SPxSolverBase
Sequential object-oriented SimPlex.
Definition
spxsolver.h:104
soplex::SPxStarter
SoPlex start basis generation base class.
Definition
spxstarter.h:52
soplex::SPxStarter::m_name
const char * m_name
name of the starter
Definition
spxstarter.h:59
soplex::SPxVectorST::dual
void dual(const VectorBase< R > &v)
sets up primal solution vector.
Definition
spxvectorst.h:134
soplex::SPxVectorST::setupWeights
void setupWeights(SPxSolverBase< R > &base)
sets up variable weights.
soplex::SPxVectorST::clone
virtual SPxStarter< R > * clone() const
clone function for polymorphism
Definition
spxvectorst.h:118
soplex::SPxVectorST::~SPxVectorST
virtual ~SPxVectorST()
destructor.
Definition
spxvectorst.h:115
soplex::SPxVectorST::SPxVectorST
SPxVectorST(const SPxVectorST &old)
copy constructor
Definition
spxvectorst.h:93
soplex::SPxVectorST::DVEC
@ DVEC
Definition
spxvectorst.h:62
soplex::SPxVectorST::PVEC
@ PVEC
Definition
spxvectorst.h:62
soplex::SPxVectorST::NONE
@ NONE
Definition
spxvectorst.h:62
soplex::SPxVectorST::SPxVectorST
SPxVectorST()
default constructor.
Definition
spxvectorst.h:87
soplex::SPxVectorST::operator=
SPxVectorST & operator=(const SPxVectorST &rhs)
assignment operator
Definition
spxvectorst.h:101
soplex::SPxVectorST::primal
void primal(const VectorBase< R > &v)
sets up primal solution vector.
Definition
spxvectorst.h:128
soplex::SPxVectorST::state
enum soplex::SPxVectorST::@233020350005172310073361342154337330154242044333 state
specifies whether to work on the primal, the dual, or not at all.
soplex::SPxVectorST::vec
VectorBase< R > vec
the current (approximate) primal or dual vector
Definition
spxvectorst.h:69
soplex::SPxWeightST::operator=
SPxWeightST & operator=(const SPxWeightST &rhs)
assignment operator
Definition
spxweightst.h:155
soplex::SPxWeightST::SPxWeightST
SPxWeightST()
default constructor.
Definition
spxweightst.h:120
soplex::SPxWeightST::isConsistent
virtual bool isConsistent() const
consistency check.
soplex::VectorBase
Dense vector.
Definition
vectorbase.h:86
soplex
Everything should be within this namespace.
spxweightst.h
Weighted start basis.
vector.h
Dense vector for linear algebra.
Generated by
1.17.0