# AbcSimplexPrimal.hpp

Go to the documentation of this file.

    00001 /* $Id: AbcSimplexPrimal.hpp 1910 2013-01-27 02:00:13Z stefan $ */
    00002 // Copyright (C) 2002, International Business Machines
    00003 // Corporation and others, Copyright (C) 2012, FasterCoin.  All Rights Reserved.
    00004 // This code is licensed under the terms of the Eclipse Public License (EPL).
    00005 /*
    00006    Authors
    00007
    00008    John Forrest
    00009
    00010  */
    00011 #ifndef AbcSimplexPrimal_H
    00012 #define AbcSimplexPrimal_H
    00013
    00014 #include "AbcSimplex.hpp"
    00015
    00023 class AbcSimplexPrimal : public AbcSimplex {
    00024
    00025 public:
    00026
    00115      int primal(int ifValuesPass = 0, int startFinishOptions = 0);
    00117
    00120
    00121      void alwaysOptimal(bool onOff);
    00122      bool alwaysOptimal() const;
    00127      void exactOutgoing(bool onOff);
    00128      bool exactOutgoing() const;
    00130
    00145      int whileIterating(int valuesOption);
    00146
    00165      int pivotResult(int ifValuesPass = 0);
    00166      int pivotResult4(int ifValuesPass = 0);
    00167
    00168
    00173      int updatePrimalsInPrimal(CoinIndexedVector * rowArray,
    00174                                double theta,
    00175                                double & objectiveChange,
    00176                                int valuesPass);
    00180      void updatePrimalsInPrimal(CoinIndexedVector & rowArray,
    00181                                 double theta,bool valuesPass);
    00184      void createUpdateDuals(CoinIndexedVector & rowArray,
    00185                            const double * originalCost,
    00186                             const double extraCost[4],
    00187                            double & objectiveChange,
    00188                            int valuesPass);
    00191      double updateMinorCandidate(const CoinIndexedVector & updateBy,
    00192                                  CoinIndexedVector & candidate,
    00193                                  int sequenceIn);
    00195      void updatePartialUpdate(CoinIndexedVector & partialUpdate);
    00197   int doFTUpdate(CoinIndexedVector * vector[4]);
    00206      void primalRow(CoinIndexedVector * rowArray,
    00207                     CoinIndexedVector * rhsArray,
    00208                     CoinIndexedVector * spareArray,
    00209                     int valuesPass);
    00210   typedef struct {
    00211     double theta_;
    00212     double alpha_;
    00213     double saveDualIn_;
    00214     double dualIn_;
    00215     double lowerIn_;
    00216     double upperIn_;
    00217     double valueIn_;
    00218     int sequenceIn_;
    00219     int directionIn_;
    00220     double dualOut_;
    00221     double lowerOut_;
    00222     double upperOut_;
    00223     double valueOut_;
    00224     int sequenceOut_;
    00225     int directionOut_;
    00226     int pivotRow_;
    00227     int valuesPass_;
    00228   } pivotStruct;
    00229      void primalRow(CoinIndexedVector * rowArray,
    00230                     CoinIndexedVector * rhsArray,
    00231                     CoinIndexedVector * spareArray,
    00232                     pivotStruct & stuff);
    00240      void primalColumn(CoinPartitionedVector * updateArray,
    00241                        CoinPartitionedVector * spareRow2,
    00242                        CoinPartitionedVector * spareColumn1);
    00243
    00246      int checkUnbounded(CoinIndexedVector * ray, CoinIndexedVector * spare,
    00247                         double changeCost);
    00257   void statusOfProblemInPrimal(int type);
    00259      void perturb(int type);
    00261      bool unPerturb();
    00263      int unflag();
    00269      int nextSuperBasic(int superBasicType, CoinIndexedVector * columnArray);
    00270
    00272      void primalRay(CoinIndexedVector * rowArray);
    00274      void clearAll();
    00275
    00277      int lexSolve();
    00278
    00280 };
    00281 #endif
    00282

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines