CoinUtils
2.11.3
src
CoinPresolveEmpty.hpp
Go to the documentation of this file.
1
/* $Id: CoinPresolveEmpty.hpp 2083 2019-01-06 19:38:09Z unxusr $ */
2
// Copyright (C) 2002, International Business Machines
3
// Corporation and others. All Rights Reserved.
4
// This code is licensed under the terms of the Eclipse Public License (EPL).
5
6
#ifndef CoinPresolveEmpty_H
7
#define CoinPresolveEmpty_H
8
14
const
int
DROP_ROW
= 3;
15
const
int
DROP_COL
= 4;
16
34
class
drop_empty_cols_action
:
public
CoinPresolveAction
{
35
private
:
36
const
int
nactions_;
37
38
struct
action {
39
double
clo;
40
double
cup;
41
double
cost;
42
double
sol;
43
int
jcol;
44
};
45
const
action *
const
actions_;
46
47
drop_empty_cols_action
(
int
nactions,
48
const
action *
const
actions,
49
const
CoinPresolveAction
*
next
)
50
:
CoinPresolveAction
(
next
)
51
, nactions_(nactions)
52
, actions_(actions)
53
{
54
}
55
56
public
:
57
const
char
*
name
()
const
{
return
(
"drop_empty_cols_action"
); }
58
59
static
const
CoinPresolveAction
*
presolve
(
CoinPresolveMatrix
*,
60
const
int
*ecols,
61
int
necols,
62
const
CoinPresolveAction
*);
63
64
static
const
CoinPresolveAction
*
presolve
(
CoinPresolveMatrix
*prob,
65
const
CoinPresolveAction
*
next
);
66
67
void
postsolve
(
CoinPostsolveMatrix
*prob)
const
;
68
69
virtual
~drop_empty_cols_action
() {
deleteAction
(actions_, action *); }
70
};
71
86
class
drop_empty_rows_action
:
public
CoinPresolveAction
{
87
private
:
88
struct
action {
89
double
rlo;
90
double
rup;
91
int
row;
92
int
fill_row;
// which row was moved into position row to fill it
93
};
94
95
const
int
nactions_;
96
const
action *
const
actions_;
97
98
drop_empty_rows_action
(
int
nactions,
99
const
action *actions,
100
const
CoinPresolveAction
*
next
)
101
:
CoinPresolveAction
(
next
)
102
, nactions_(nactions)
103
, actions_(actions)
104
{
105
}
106
107
public
:
108
const
char
*
name
()
const
{
return
(
"drop_empty_rows_action"
); }
109
110
static
const
CoinPresolveAction
*
presolve
(
CoinPresolveMatrix
*prob,
111
const
CoinPresolveAction
*
next
);
112
113
void
postsolve
(
CoinPostsolveMatrix
*prob)
const
;
114
115
virtual
~drop_empty_rows_action
() {
deleteAction
(actions_, action *); }
116
};
117
#endif
118
119
/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
120
*/
drop_empty_cols_action
Physically removes empty columns in presolve, and reinserts empty columns in postsolve.
Definition:
CoinPresolveEmpty.hpp:34
drop_empty_cols_action::name
const char * name() const
A name for debug printing.
Definition:
CoinPresolveEmpty.hpp:57
drop_empty_rows_action::presolve
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
drop_empty_cols_action::~drop_empty_cols_action
virtual ~drop_empty_cols_action()
Definition:
CoinPresolveEmpty.hpp:69
drop_empty_rows_action::~drop_empty_rows_action
virtual ~drop_empty_rows_action()
Definition:
CoinPresolveEmpty.hpp:115
CoinPresolveAction::CoinPresolveAction
CoinPresolveAction(const CoinPresolveAction *next)
Construct a postsolve object and add it to the transformation list.
Definition:
CoinPresolveMatrix.hpp:187
drop_empty_cols_action::presolve
static const CoinPresolveAction * presolve(CoinPresolveMatrix *, const int *ecols, int necols, const CoinPresolveAction *)
drop_empty_rows_action::name
const char * name() const
A name for debug printing.
Definition:
CoinPresolveEmpty.hpp:108
CoinPresolveAction::next
const CoinPresolveAction * next
The next presolve transformation.
Definition:
CoinPresolveMatrix.hpp:180
CoinPostsolveMatrix
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during postsol...
Definition:
CoinPresolveMatrix.hpp:1554
DROP_COL
const int DROP_COL
Definition:
CoinPresolveEmpty.hpp:15
CoinPresolveAction
Abstract base class of all presolve routines.
Definition:
CoinPresolveMatrix.hpp:163
DROP_ROW
const int DROP_ROW
Definition:
CoinPresolveEmpty.hpp:14
deleteAction
#define deleteAction(array, type)
Definition:
CoinPresolveMatrix.hpp:38
drop_empty_rows_action
Physically removes empty rows in presolve, and reinserts empty rows in postsolve.
Definition:
CoinPresolveEmpty.hpp:86
CoinPresolveMatrix
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during presolv...
Definition:
CoinPresolveMatrix.hpp:907
drop_empty_cols_action::postsolve
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
drop_empty_rows_action::postsolve
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
Generated by
1.8.17