SimplexIteration.h

00001 
00006 #ifndef _SimplexIteration_h
00007 #define _SimplexIteration_h
00008 
00009 // SYSTEM INCLUDES
00010 //
00011 
00012 // PROJECT INCLUDES
00013 //
00014 
00015 // LOCAL INCLUDES
00016 //
00017 #include "../AugmentedForm.h"
00018 #include "../IterationData.h"
00019 
00020 // FORWARD REFERENCES
00021 //
00022 
00023 
00024 class SimplexIteration
00025     : public IterationData
00026 {
00027 public:
00028 
00029 // LIFECYCLE
00030     typedef enum {
00031         FIRST_TRIVIAL,
00032         FIRST_EXTENDED,
00033         FIRST_MAINPHASE,
00034         LAST_EXTENDED,
00035         OTHER
00036     } SimplexIterationType;
00037 
00040     //SimplexIteration(void);
00041 
00051     SimplexIteration(CountedPtr<const AugmentedForm>    cpMainProblemData,
00052                      CountedPtr<const AugmentedForm>    cpExtendedProblemData,
00053                      const vector<int>&                 iB,
00054                      const vector<int>&                 iN);
00055 
00058     ~SimplexIteration(void);
00059 
00060 // OPERATORS
00061 
00062 // OPERATIONS
00063     void AddMatricesData(const SquareMatrix&        B,
00064                          const Matrix&              N);
00065 
00066     void AddReducedCostData(const ColumnVector&     d,
00067                             int                     s,
00068                             int                     prevS);
00069 
00070     void AddAllowedShiftData(const ColumnVector&    h,
00071                              int                    q,
00072                              int                    prevQ,
00073                              const ColumnVector&    sigma);
00074 
00075 // ACCESS
00076 
00077     virtual ColumnVector                EndValuePoint() const;
00078 
00079     virtual vector<IterationDataIdType> ClassIds() const;
00080 
00081     static IterationDataIdType          ClassId();
00082 
00083 
00084     SimplexIterationType    Type() const;
00085     SimplexIterationType&   rType();
00086 
00087 
00088     const Matrix&       MainA() const;
00089 
00090     const ColumnVector& MainB() const;
00091 
00092     const ColumnVector& MainC() const;
00093 
00094     const Matrix&       ExtendedA() const;
00095 
00096     const ColumnVector& ExtendedB() const;
00097 
00098     const ColumnVector& ExtendedC() const;
00099 
00100 
00101     const vector<int>&  BasicIndices() const;
00102 
00103     const vector<int>&  NonbasicIndices() const;
00104 
00105     const SquareMatrix& Base() const;
00106     const Matrix&       N() const;
00107 
00108     const ColumnVector& X() const;
00109     ColumnVector&       rX();
00110 
00111 
00112     const ColumnVector& D() const;
00113 
00114     int            S() const;
00115 
00116     int            PreviousS() const;
00117 
00118 
00119     const ColumnVector& H() const;
00120 
00121     const ColumnVector& Sigma() const;
00122 
00123     int                 Q() const;
00124 
00125     int                 PreviousQ() const;
00126 
00127 
00128     double              Alpha() const;
00129 
00130     const ColumnVector& NewX() const;
00131     ColumnVector&       rNewX();
00132 
00133 // INQUIRY
00134     bool                MainPhase() const;
00135 
00136     ColumnVector        ActualPoint() const;
00137 
00138     ColumnVector        FullPoint() const;
00139 
00140     int                 ActualVariables() const;
00141 protected:
00142 private:
00145     CountedPtr<const AugmentedForm> mcpMainProblemData;
00146 
00149     CountedPtr<const AugmentedForm> mcpExtendedProblemData;
00150 
00151     SimplexIterationType    mType;  
00152 
00153     vector<int>     miB;            
00154     vector<int>     miN;            
00155 
00156     SquareMatrix    mB;             
00157     Matrix          mN;             
00158 
00159     ColumnVector    mX;             
00160 
00161     ColumnVector    mD;             
00162     int             mS;             
00163     int             mPrevS;         
00164 
00165 
00166     ColumnVector    mH;             
00167     ColumnVector    mSigma;         
00168 
00169     int             mQ;             
00170     int             mPrevQ;         
00171 
00172 
00173     ColumnVector    mNewX;          
00174 };
00175 
00176 // INLINE METHODS
00177 //
00178 
00179 // EXTERNAL REFERENCES
00180 //
00181 
00182 #endif  // _SimplexIteration_h

Wygenerowano Fri Sep 29 21:04:48 2006 dla EduOptim2 programem  doxygen 1.4.6