- Main Page
- Classes
- Files

- File List
- File Members

# src/Algorithm/IpStdAugSystemSolver.hpp

Go to the documentation of this file.

    00001 // Copyright (C) 2004, 2006 International Business Machines and others.
    00002 // All Rights Reserved.
    00003 // This code is published under the Eclipse Public License.
    00004 //
    00005 // $Id: IpStdAugSystemSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
    00006 //
    00007 // Authors:  Carl Laird, Andreas Waechter     IBM    2004-08-13
    00008
    00009 #ifndef __IP_STDAUGSYSTEMSOLVER_HPP__
    00010 #define __IP_STDAUGSYSTEMSOLVER_HPP__
    00011
    00012 #include "IpAugSystemSolver.hpp"
    00013 #include "IpCompoundMatrix.hpp"
    00014 #include "IpCompoundSymMatrix.hpp"
    00015 #include "IpCompoundVector.hpp"
    00016 #include "IpSumSymMatrix.hpp"
    00017 #include "IpDiagMatrix.hpp"
    00018 #include "IpIdentityMatrix.hpp"
    00019
    00020 namespace Ipopt
    00021 {
    00027   class StdAugSystemSolver : public AugSystemSolver
    00028   {
    00029   public:
    00033     StdAugSystemSolver(SymLinearSolver& LinSolver);
    00034
    00036     virtual ~StdAugSystemSolver();
    00038
    00040     bool InitializeImpl(const OptionsList& options,
    00041                         const std::string& prefix);
    00042
    00047     virtual ESymSolverStatus MultiSolve(
    00048       const SymMatrix* W,
    00049       double W_factor,
    00050       const Vector* D_x,
    00051       double delta_x,
    00052       const Vector* D_s,
    00053       double delta_s,
    00054       const Matrix* J_c,
    00055       const Vector* D_c,
    00056       double delta_c,
    00057       const Matrix* J_d,
    00058       const Vector* D_d,
    00059       double delta_d,
    00060       std::vector<SmartPtr<const Vector> >& rhs_xV,
    00061       std::vector<SmartPtr<const Vector> >& rhs_sV,
    00062       std::vector<SmartPtr<const Vector> >& rhs_cV,
    00063       std::vector<SmartPtr<const Vector> >& rhs_dV,
    00064       std::vector<SmartPtr<Vector> >& sol_xV,
    00065       std::vector<SmartPtr<Vector> >& sol_sV,
    00066       std::vector<SmartPtr<Vector> >& sol_cV,
    00067       std::vector<SmartPtr<Vector> >& sol_dV,
    00068       bool check_NegEVals,
    00069       Index numberOfNegEVals);
    00070
    00077     virtual Index NumberOfNegEVals() const;
    00078
    00082     virtual bool ProvidesInertia() const;
    00083
    00090     virtual bool IncreaseQuality();
    00091
    00092   private:
    00102     StdAugSystemSolver();
    00104     StdAugSystemSolver(const StdAugSystemSolver&);
    00105
    00107     void operator=(const StdAugSystemSolver&);
    00109
    00110
    00114     void CreateAugmentedSpace(const SymMatrix& W,
    00115                               const Matrix& J_c,
    00116                               const Matrix& J_d,
    00117                               const Vector& proto_x,
    00118                               const Vector& proto_s,
    00119                               const Vector& proto_c,
    00120                               const Vector& proto_d);
    00121
    00122
    00126     void CreateAugmentedSystem(const SymMatrix* W,
    00127                                double W_factor,
    00128                                const Vector* D_x,
    00129                                double delta_x,
    00130                                const Vector* D_s,
    00131                                double delta_s,
    00132                                const Matrix& J_c,
    00133                                const Vector* D_c,
    00134                                double delta_c,
    00135                                const Matrix& J_d,
    00136                                const Vector* D_d,
    00137                                double delta_d,
    00138                                const Vector& proto_x,
    00139                                const Vector& proto_s,
    00140                                const Vector& proto_c,
    00141                                const Vector& proto_d);
    00142
    00145     bool AugmentedSystemRequiresChange(const SymMatrix* W,
    00146                                        double W_factor,
    00147                                        const Vector* D_x,
    00148                                        double delta_x,
    00149                                        const Vector* D_s,
    00150                                        double delta_s,
    00151                                        const Matrix& J_c,
    00152                                        const Vector* D_c,
    00153                                        double delta_c,
    00154                                        const Matrix& J_d,
    00155                                        const Vector* D_d,
    00156                                        double delta_d);
    00157
    00161     SmartPtr<SymLinearSolver> linsolver_;
    00162
    00164     SmartPtr<CompoundSymMatrixSpace> augmented_system_space_;
    00165     SmartPtr<SumSymMatrixSpace> sumsym_space_x_;
    00166     SmartPtr<DiagMatrixSpace> diag_space_x_;
    00167     SmartPtr<DiagMatrixSpace> diag_space_s_;
    00168     SmartPtr<DiagMatrixSpace> diag_space_c_;
    00169     SmartPtr<IdentityMatrixSpace> ident_space_ds_;
    00170     SmartPtr<DiagMatrixSpace> diag_space_d_;
    00171
    00172     SmartPtr<CompoundVectorSpace> augmented_vector_space_;
    00173
    00182     TaggedObject::Tag w_tag_;
    00184     double w_factor_;
    00188     TaggedObject::Tag d_x_tag_;
    00190     double delta_x_;
    00194     TaggedObject::Tag d_s_tag_;
    00196     double delta_s_;
    00200     TaggedObject::Tag j_c_tag_;
    00204     TaggedObject::Tag d_c_tag_;
    00206     double delta_c_;
    00210     TaggedObject::Tag j_d_tag_;
    00214     TaggedObject::Tag d_d_tag_;
    00216     double delta_d_;
    00217
    00224     TaggedObject::Tag augsys_tag_;
    00226
    00233     SmartPtr<CompoundSymMatrix> augmented_system_;
    00234
    00238     SmartPtr<const SymMatrix> old_w_;
    00239
    00244     bool warm_start_same_structure_;
    00246   };
    00247
    00248 } // namespace Ipopt
    00249
    00250 #endif

All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines