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

Generated on 28 Aug 2015 for Clp by  doxygen 1.6.1