/home/coin/SVN-release/CoinAll-1.1.0/Ipopt/src/Algorithm/IpPDFullSpaceSolver.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2004, 2007 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpPDFullSpaceSolver.hpp 1102 2007-09-29 14:28:11Z andreasw $
00006 //
00007 // Authors:  Carl Laird, Andreas Waechter     IBM    2004-08-13
00008 
00009 #ifndef __IPPDFULLSPACESOLVER_HPP__
00010 #define __IPPDFULLSPACESOLVER_HPP__
00011 
00012 #include "IpPDSystemSolver.hpp"
00013 #include "IpAugSystemSolver.hpp"
00014 #include "IpPDPerturbationHandler.hpp"
00015 
00016 namespace Ipopt
00017 {
00018 
00032   class PDFullSpaceSolver: public PDSystemSolver
00033   {
00034   public:
00040     PDFullSpaceSolver(AugSystemSolver& augSysSolver,
00041                       PDPerturbationHandler& perturbHandler);
00042 
00044     virtual ~PDFullSpaceSolver();
00046 
00047     /* overloaded from AlgorithmStrategyObject */
00048     bool InitializeImpl(const OptionsList& options,
00049                         const std::string& prefix);
00050 
00053     virtual bool Solve(Number alpha,
00054                        Number beta,
00055                        const IteratesVector& rhs,
00056                        IteratesVector& res,
00057                        bool allow_inexact=false,
00058                        bool improve_solution=false);
00059 
00062     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00064 
00065   private:
00075     PDFullSpaceSolver();
00077     PDFullSpaceSolver& operator=(const PDFullSpaceSolver&);
00079 
00083     SmartPtr<AugSystemSolver> augSysSolver_;
00085     SmartPtr<PDPerturbationHandler> perturbHandler_;
00087 
00091     CachedResults<void*> dummy_cache_;
00094     bool augsys_improved_;
00096 
00100     Index min_refinement_steps_;
00102     Index max_refinement_steps_;
00105     Number residual_ratio_max_;
00109     Number residual_ratio_singular_;
00112     Number residual_improvement_factor_;
00114     Number neg_curv_test_tol_;
00116 
00123     bool SolveOnce(bool resolve_unmodified,
00124                    bool pretend_singular,
00125                    const SymMatrix& W,
00126                    const Matrix& J_c,
00127                    const Matrix& J_d,
00128                    const Matrix& Px_L,
00129                    const Matrix& Px_U,
00130                    const Matrix& Pd_L,
00131                    const Matrix& Pd_U,
00132                    const Vector& z_L,
00133                    const Vector& z_U,
00134                    const Vector& v_L,
00135                    const Vector& v_U,
00136                    const Vector& slack_x_L,
00137                    const Vector& slack_x_U,
00138                    const Vector& slack_s_L,
00139                    const Vector& slack_s_U,
00140                    const Vector& sigma_x,
00141                    const Vector& sigma_s,
00142                    Number alpha,
00143                    Number beta,
00144                    const IteratesVector& rhs,
00145                    IteratesVector& res);
00146 
00150     void ComputeResiduals(const SymMatrix& W,
00151                           const Matrix& J_c,
00152                           const Matrix& J_d,
00153                           const Matrix& Px_L,
00154                           const Matrix& Px_U,
00155                           const Matrix& Pd_L,
00156                           const Matrix& Pd_U,
00157                           const Vector& z_L,
00158                           const Vector& z_U,
00159                           const Vector& v_L,
00160                           const Vector& v_U,
00161                           const Vector& slack_x_L,
00162                           const Vector& slack_x_U,
00163                           const Vector& slack_s_L,
00164                           const Vector& slack_s_U,
00165                           const Vector& sigma_x,
00166                           const Vector& sigma_s,
00167                           Number alpha,
00168                           Number beta,
00169                           const IteratesVector& rhs,
00170                           const IteratesVector& res,
00171                           IteratesVector& resid);
00172 
00176     Number ComputeResidualRatio(const IteratesVector& rhs,
00177                                 const IteratesVector& res,
00178                                 const IteratesVector& resid);
00179 
00183     void SinvBlrmZPTdBr(Number alpha, const Vector& S,
00184                         const Vector& R, const Vector& Z,
00185                         const Matrix& P, const Vector&g, Vector& X);
00187   };
00188 
00189 } // namespace Ipopt
00190 
00191 #endif

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