/home/coin/SVN-release/CoinAll-1.1.0/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

Generated on Sun Nov 14 14:06:34 2010 for Coin-All by  doxygen 1.4.7