00001 // Copyright 2009, 2011 Hans Pirnay 00002 // All Rights Reserved. 00003 // This code is published under the Eclipse Public License. 00004 // 00005 // Date : 2009-05-16 00006 00007 #ifndef __ASSTDSTEPCALC_HPP__ 00008 #define __ASSTDSTEPCALC_HPP__ 00009 00010 #include "SensBacksolver.hpp" 00011 #include "SensStepCalc.hpp" 00012 #include "IpDenseVector.hpp" 00013 #include "IpIteratesVector.hpp" 00014 00015 #include <vector> 00016 00017 00018 00019 namespace Ipopt 00020 { 00021 00022 class StdStepCalculator : public SensitivityStepCalculator 00023 { 00024 public: 00025 StdStepCalculator(SmartPtr<SchurData> ift_data, 00026 SmartPtr<SensBacksolver> backsolver); 00027 00028 virtual ~StdStepCalculator(); 00029 00030 virtual bool InitializeImpl(const OptionsList& options, 00031 const std::string& prefix); 00032 00035 virtual bool Step(DenseVector& delta_u, IteratesVector& sol); 00036 00037 bool BoundCheck(IteratesVector& sol, 00038 std::vector<Index>& x_bound_violations_idx, 00039 std::vector<Number>& x_bound_violations_du); 00040 00042 virtual SmartPtr<IteratesVector> GetSensitivityVector(void) { return SensitivityVector ; } ; 00043 00044 private: 00045 SmartPtr<SchurData> ift_data_; 00046 SmartPtr<SensBacksolver> backsolver_; 00047 Number bound_eps_; 00048 bool kkt_residuals_; 00049 00050 SmartPtr<IteratesVector> SensitivityVector ; 00051 }; 00052 } 00053 00054 #endif