- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/SVN-release/Ipopt-3.5.1/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