source: trunk/Clp/src/AbcDualRowDantzig.hpp @ 2385

Last change on this file since 2385 was 2385, checked in by unxusr, 3 months ago

formatting

  • Property svn:keywords set to Id
File size: 2.6 KB
Line 
1/* $Id: AbcDualRowDantzig.hpp 2385 2019-01-06 19:43:06Z unxusr $ */
2// Copyright (C) 2002, International Business Machines
3// Corporation and others, Copyright (C) 2012, FasterCoin.  All Rights Reserved.
4// This code is licensed under the terms of the Eclipse Public License (EPL).
5
6#ifndef AbcDualRowDantzig_H
7#define AbcDualRowDantzig_H
8
9#include "AbcDualRowPivot.hpp"
10
11//#############################################################################
12
13/** Dual Row Pivot Dantzig Algorithm Class
14   
15    This is simplest choice - choose largest infeasibility
16   
17*/
18
19class AbcDualRowDantzig : public AbcDualRowPivot {
20
21public:
22  ///@name Algorithmic methods
23  //@{
24
25  /// Returns pivot row, -1 if none
26  virtual int pivotRow();
27
28  /** Updates weights and returns pivot alpha.
29      Also does FT update */
30  virtual double updateWeights(CoinIndexedVector &input, CoinIndexedVector &updatedColumn);
31  virtual double updateWeights1(CoinIndexedVector &input, CoinIndexedVector &updateColumn);
32  virtual void updateWeightsOnly(CoinIndexedVector & /*input*/) {};
33  /// Actually updates weights
34  virtual void updateWeights2(CoinIndexedVector &input, CoinIndexedVector & /*updateColumn*/) { input.clear(); };
35  /** Updates primal solution (and maybe list of candidates)
36      Uses input vector which it deletes
37      Computes change in objective function
38  */
39  virtual void updatePrimalSolution(CoinIndexedVector &input,
40    double theta);
41  /** Saves any weights round factorization as pivot rows may change
42      Will be empty unless steepest edge (will save model)
43      May also recompute infeasibility stuff
44      1) before factorization
45      2) after good factorization (if weights empty may initialize)
46      3) after something happened but no factorization
47      (e.g. check for infeasible)
48      4) as 2 but restore weights from previous snapshot
49      5) for strong branching - initialize  , infeasibilities
50  */
51  virtual void saveWeights(AbcSimplex *model, int mode);
52  /// Recompute infeasibilities
53  virtual void recomputeInfeasibilities();
54  //@}
55
56  ///@name Constructors and destructors
57  //@{
58  /// Default Constructor
59  AbcDualRowDantzig();
60
61  /// Copy constructor
62  AbcDualRowDantzig(const AbcDualRowDantzig &);
63
64  /// Assignment operator
65  AbcDualRowDantzig &operator=(const AbcDualRowDantzig &rhs);
66
67  /// Destructor
68  virtual ~AbcDualRowDantzig();
69
70  /// Clone
71  virtual AbcDualRowPivot *clone(bool copyData = true) const;
72
73  //@}
74
75  //---------------------------------------------------------------------------
76
77private:
78  ///@name Private member data
79  /// infeasibility array (just for infeasible rows)
80  CoinIndexedVector *infeasible_;
81  //@}
82};
83
84#endif
85
86/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
87*/
Note: See TracBrowser for help on using the repository browser.