- Main Page
- Classes
- Files

- File List
- File Members

# src/Algorithm/IpLowRankAugSystemSolver.hpp

Go to the documentation of this file.

    00001 // Copyright (C) 2005, 2006 International Business Machines and others.
    00002 // All Rights Reserved.
    00003 // This code is published under the Eclipse Public License.
    00004 //
    00005 // $Id: IpLowRankAugSystemSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
    00006 //
    00007 // Authors:  Andreas Waechter                IBM    2005-12-27
    00008
    00009 #ifndef __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
    00010 #define __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
    00011
    00012 #include "IpAugSystemSolver.hpp"
    00013 #include "IpDenseGenMatrix.hpp"
    00014 #include "IpMultiVectorMatrix.hpp"
    00015 #include "IpDiagMatrix.hpp"
    00016
    00017 namespace Ipopt
    00018 {
    00019
    00024   class LowRankAugSystemSolver : public AugSystemSolver
    00025   {
    00026   public:
    00030     LowRankAugSystemSolver(AugSystemSolver& aug_system_solver);
    00031
    00033     virtual ~LowRankAugSystemSolver();
    00035
    00037     bool InitializeImpl(const OptionsList& options,
    00038                         const std::string& prefix);
    00039
    00043     virtual ESymSolverStatus Solve(
    00044       const SymMatrix* W,
    00045       double W_factor,
    00046       const Vector* D_x,
    00047       double delta_x,
    00048       const Vector* D_s,
    00049       double delta_s,
    00050       const Matrix* J_c,
    00051       const Vector* D_c,
    00052       double delta_c,
    00053       const Matrix* J_d,
    00054       const Vector* D_d,
    00055       double delta_d,
    00056       const Vector& rhs_x,
    00057       const Vector& rhs_s,
    00058       const Vector& rhs_c,
    00059       const Vector& rhs_d,
    00060       Vector& sol_x,
    00061       Vector& sol_s,
    00062       Vector& sol_c,
    00063       Vector& sol_d,
    00064       bool check_NegEVals,
    00065       Index numberOfNegEVals);
    00066
    00073     virtual Index NumberOfNegEVals() const;
    00074
    00078     virtual bool ProvidesInertia() const;
    00079
    00086     virtual bool IncreaseQuality();
    00087
    00088   private:
    00098     LowRankAugSystemSolver();
    00100     LowRankAugSystemSolver(const LowRankAugSystemSolver&);
    00101
    00103     void operator=(const LowRankAugSystemSolver&);
    00105
    00110     SmartPtr<AugSystemSolver> aug_system_solver_;
    00111
    00120     TaggedObject::Tag w_tag_;
    00122     double w_factor_;
    00126     TaggedObject::Tag d_x_tag_;
    00128     double delta_x_;
    00132     TaggedObject::Tag d_s_tag_;
    00134     double delta_s_;
    00138     TaggedObject::Tag j_c_tag_;
    00142     TaggedObject::Tag d_c_tag_;
    00144     double delta_c_;
    00148     TaggedObject::Tag j_d_tag_;
    00152     TaggedObject::Tag d_d_tag_;
    00154     double delta_d_;
    00156
    00160     bool first_call_;
    00161     SmartPtr<DenseGenMatrix> J1_;
    00162     SmartPtr<DenseGenMatrix> J2_;
    00163     SmartPtr<MultiVectorMatrix> Vtilde1_;
    00164     SmartPtr<MultiVectorMatrix> Utilde2_;
    00167     SmartPtr<DiagMatrix> Wdiag_;
    00170     SmartPtr<const CompoundVectorSpace> compound_sol_vecspace_;
    00172
    00180     Index num_neg_evals_;
    00181
    00186     ESymSolverStatus UpdateFactorization(
    00187       const SymMatrix* W,
    00188       double W_factor,
    00189       const Vector* D_x,
    00190       double delta_x,
    00191       const Vector* D_s,
    00192       double delta_s,
    00193       const Matrix& J_c,
    00194       const Vector* D_c,
    00195       double delta_c,
    00196       const Matrix& J_d,
    00197       const Vector* D_d,
    00198       double delta_d,
    00199       const Vector& proto_rhs_x,
    00200       const Vector& proto_rhs_s,
    00201       const Vector& proto_rhs_c,
    00202       const Vector& proto_rhs_d,
    00203       bool check_NegEVals,
    00204       Index numberOfNegEVals);
    00205
    00211     ESymSolverStatus SolveMultiVector(
    00212       const Vector* D_x,
    00213       double delta_x,
    00214       const Vector* D_s,
    00215       double delta_s,
    00216       const Matrix& J_c,
    00217       const Vector* D_c,
    00218       double delta_c,
    00219       const Matrix& J_d,
    00220       const Vector* D_d,
    00221       double delta_d,
    00222       const Vector& proto_rhs_x,
    00223       const Vector& proto_rhs_s,
    00224       const Vector& proto_rhs_c,
    00225       const Vector& proto_rhs_d,
    00226       const MultiVectorMatrix& V,
    00227       const SmartPtr<const Matrix>& P_LM,
    00228       SmartPtr<MultiVectorMatrix>& V_x,
    00229       SmartPtr<MultiVectorMatrix>& Vtilde1,
    00230       SmartPtr<MultiVectorMatrix>& Vtilde1_x,
    00231       bool check_NegEVals,
    00232       Index numberOfNegEVals);
    00233
    00237     bool AugmentedSystemRequiresChange(
    00238       const SymMatrix* W,
    00239       double W_factor,
    00240       const Vector* D_x,
    00241       double delta_x,
    00242       const Vector* D_s,
    00243       double delta_s,
    00244       const Matrix& J_c,
    00245       const Vector* D_c,
    00246       double delta_c,
    00247       const Matrix& J_d,
    00248       const Vector* D_d,
    00249       double delta_d);
    00251
    00252   };
    00253
    00254 } // namespace Ipopt
    00255
    00256 #endif

All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines