- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/SVN-release/Ipopt-3.5.1/Ipopt/src/Algorithm/IpGenAugSystemSolver.hpp

Go to the documentation of this file.

    00001 // Copyright (C) 2007 International Business Machines and others.
    00002 // All Rights Reserved.
    00003 // This code is published under the Common Public License.
    00004 //
    00005 // $Id: IpGenAugSystemSolver.hpp 908 2007-03-01 17:40:32Z andreasw $
    00006 //
    00007 // Authors:  Andreas Waechter     IBM    2007-03-01
    00008
    00009 #ifndef __IP_STDAUGSYSTEMSOLVER_HPP__
    00010 #define __IP_STDAUGSYSTEMSOLVER_HPP__
    00011
    00012 #include "IpAugSystemSolver.hpp"
    00013 #include "IpGenKKTSolverInterface.hpp"
    00014
    00015 namespace Ipopt
    00016 {
    00022   class GenAugSystemSolver : public AugSystemSolver
    00023   {
    00024   public:
    00028     GenAugSystemSolver(GenKKTSolverInterface& SolverInterface);
    00029
    00031     virtual ~GenAugSystemSolver();
    00033
    00035     bool InitializeImpl(const OptionsList& options,
    00036                         const std::string& prefix);
    00037
    00042     virtual ESymSolverStatus MultiSolve(
    00043       const SymMatrix* W,
    00044       double W_factor,
    00045       const Vector* D_x,
    00046       double delta_x,
    00047       const Vector* D_s,
    00048       double delta_s,
    00049       const Matrix* J_c,
    00050       const Vector* D_c,
    00051       double delta_c,
    00052       const Matrix* J_d,
    00053       const Vector* D_d,
    00054       double delta_d,
    00055       std::vector<SmartPtr<const Vector> >& rhs_xV,
    00056       std::vector<SmartPtr<const Vector> >& rhs_sV,
    00057       std::vector<SmartPtr<const Vector> >& rhs_cV,
    00058       std::vector<SmartPtr<const Vector> >& rhs_dV,
    00059       std::vector<SmartPtr<Vector> >& sol_xV,
    00060       std::vector<SmartPtr<Vector> >& sol_sV,
    00061       std::vector<SmartPtr<Vector> >& sol_cV,
    00062       std::vector<SmartPtr<Vector> >& sol_dV,
    00063       bool check_NegEVals,
    00064       Index numberOfNegEVals);
    00065
    00072     virtual Index NumberOfNegEVals() const;
    00073
    00077     virtual bool ProvidesInertia() const;
    00078
    00085     virtual bool IncreaseQuality();
    00086
    00087   private:
    00097     GenAugSystemSolver();
    00099     GenAugSystemSolver(const GenAugSystemSolver&);
    00100
    00102     void operator=(const GenAugSystemSolver&);
    00104
    00107     bool AugmentedSystemChanged(const SymMatrix* W,
    00108                                 double W_factor,
    00109                                 const Vector* D_x,
    00110                                 double delta_x,
    00111                                 const Vector* D_s,
    00112                                 double delta_s,
    00113                                 const Matrix& J_c,
    00114                                 const Vector* D_c,
    00115                                 double delta_c,
    00116                                 const Matrix& J_d,
    00117                                 const Vector* D_d,
    00118                                 double delta_d);
    00119
    00120     void UpdateTags(const SymMatrix* W,
    00121                     double W_factor,
    00122                     const Vector* D_x,
    00123                     double delta_x,
    00124                     const Vector* D_s,
    00125                     double delta_s,
    00126                     const Matrix& J_c,
    00127                     const Vector* D_c,
    00128                     double delta_c,
    00129                     const Matrix& J_d,
    00130                     const Vector* D_d,
    00131                     double delta_d);
    00132
    00136     SmartPtr<GenKKTSolverInterface> solver_interface_;
    00137
    00146     TaggedObject::Tag w_tag_;
    00148     double w_factor_;
    00152     TaggedObject::Tag d_x_tag_;
    00154     double delta_x_;
    00158     TaggedObject::Tag d_s_tag_;
    00160     double delta_s_;
    00164     TaggedObject::Tag j_c_tag_;
    00168     TaggedObject::Tag d_c_tag_;
    00170     double delta_c_;
    00174     TaggedObject::Tag j_d_tag_;
    00178     TaggedObject::Tag d_d_tag_;
    00180     double delta_d_;
    00182
    00186     Number* dx_vals_copy_;
    00187     Number* ds_vals_copy_;
    00188     Number* dc_vals_copy_;
    00189     Number* dd_vals_copy_;
    00191
    00196     bool warm_start_same_structure_;
    00198   };
    00199
    00200 } // namespace Ipopt
    00201
    00202 #endif