9 #ifndef __IPIPOPTDATA_HPP__ 10 #define __IPIPOPTDATA_HPP__ 47 const std::string& prefix) = 0;
90 Number cpu_time_start = -1.);
109 const std::string& prefix);
143 void SetTrialPrimalVariablesFromStep(
Number alpha,
150 void SetTrialEqMultipliersFromStep(
Number alpha,
157 void SetTrialBoundMultipliersFromStep(
Number alpha,
239 have_deltas_ = have_deltas;
259 return have_affine_deltas_;
269 have_affine_deltas_ = have_affine_deltas;
277 void CopyTrialToCurrent();
292 iter_count_ = iter_count;
303 mu_initialized_ =
true;
307 return mu_initialized_;
318 tau_initialized_ =
true;
322 return tau_initialized_;
327 free_mu_mode_ = free_mu_mode;
331 return free_mu_mode_;
338 tiny_step_flag_ = flag;
342 return tiny_step_flag_;
375 return cpu_time_start_;
386 info_regu_x_ = regu_x;
390 return info_alpha_primal_;
394 info_alpha_primal_ = alpha_primal;
398 return info_alpha_primal_char_;
402 info_alpha_primal_char_ = info_alpha_primal_char;
406 return info_alpha_dual_;
410 info_alpha_dual_ = alpha_dual;
414 return info_ls_count_;
418 info_ls_count_ = ls_count;
422 return info_skip_output_;
426 info_string_ += add_str;
436 info_skip_output_ = info_skip_output;
442 return info_last_output_;
447 info_last_output_ = info_last_output;
454 return info_iters_since_header_;
460 info_iters_since_header_++;
466 info_iters_since_header_ = info_iters_since_header;
473 info_alpha_primal_ = 0;
474 info_alpha_dual_ = 0.;
475 info_alpha_primal_char_ =
' ';
476 info_skip_output_ =
false;
477 info_string_.erase();
484 return timing_statistics_;
503 add_data_ = add_data;
510 pd_pert_x_ = pd_pert_x;
511 pd_pert_s_ = pd_pert_s;
512 pd_pert_c_ = pd_pert_c;
513 pd_pert_d_ = pd_pert_d;
520 pd_pert_x = pd_pert_x_;
521 pd_pert_s = pd_pert_s_;
522 pd_pert_c = pd_pert_c_;
523 pd_pert_d = pd_pert_d_;
671 #if COIN_IPOPT_CHECKLEVEL > 0 692 DBG_ASSERT(
IsNull(curr_) || (curr_->GetTag() == debug_curr_tag_ && curr_->GetTagSum() == debug_curr_tag_sum_) );
700 DBG_ASSERT(
IsNull(trial_) || (trial_->GetTag() == debug_trial_tag_ && trial_->GetTagSum() == debug_trial_tag_sum_) );
708 DBG_ASSERT(
IsNull(delta_) || (delta_->GetTag() == debug_delta_tag_ && delta_->GetTagSum() == debug_delta_tag_sum_) );
716 DBG_ASSERT(
IsNull(delta_aff_) || (delta_aff_->GetTag() == debug_delta_aff_tag_ && delta_aff_->GetTagSum() == debug_delta_aff_tag_sum_) );
725 #if COIN_IPOPT_CHECKLEVEL > 0 728 debug_curr_tag_ = curr_->GetTag();
729 debug_curr_tag_sum_ = curr_->GetTagSum();
733 debug_curr_tag_sum_ = 0;
744 #if COIN_IPOPT_CHECKLEVEL > 0 748 debug_trial_tag_ = trial->GetTag();
749 debug_trial_tag_sum_ = trial->GetTagSum();
752 debug_trial_tag_ = 0;
753 debug_trial_tag_sum_ = 0;
764 #if COIN_IPOPT_CHECKLEVEL > 0 767 debug_delta_tag_ = delta->GetTag();
768 debug_delta_tag_sum_ = delta->GetTagSum();
771 debug_delta_tag_ = 0;
772 debug_delta_tag_sum_ = 0;
783 #if COIN_IPOPT_CHECKLEVEL > 0 786 debug_delta_tag_ = delta->GetTag();
787 debug_delta_tag_sum_ = delta->GetTagSum();
790 debug_delta_tag_ = 0;
791 debug_delta_tag_sum_ = 0;
802 #if COIN_IPOPT_CHECKLEVEL > 0 805 debug_delta_aff_tag_ = delta_aff->GetTag();
806 debug_delta_aff_tag_sum_ = delta_aff->GetTagSum();
809 debug_delta_aff_tag_ = 0;
810 debug_delta_aff_tag_sum_ = delta_aff->GetTagSum();
bool IsValid(const SmartPtr< U > &smart_ptr)
void Set_info_regu_x(Number regu_x)
void set_delta(SmartPtr< IteratesVector > &delta)
Set the current delta - like the trial point, this method copies the pointer for efficiency (no copy ...
Number info_regu_x_
Size of regularization for the Hessian.
int info_iters_since_header_
number of iteration summaries actually printed since last summary header was printed ...
void Append_info_string(const std::string &add_str)
void getPDPert(Number &pd_pert_x, Number &pd_pert_s, Number &pd_pert_c, Number &pd_pert_d)
Get the current perturbation of the primal-dual system.
Number curr_tau_
current fraction to the boundary parameter
Number info_last_output()
gives time when the last summary output line was printed
void SetHaveAffineDeltas(bool have_affine_deltas)
Method for setting the HaveDeltas flag.
Number curr_mu_
current barrier parameter
SmartPtr< IpoptAdditionalData > add_data_
Object for the data specific for the Chen-Goldfarb penalty method algorithm.
void ResetInfo()
Reset all info fields.
void Set_info_alpha_dual(Number alpha_dual)
Number cpu_time_start() const
Cpu time counter at the beginning of the optimization.
void set_delta_aff(SmartPtr< IteratesVector > &delta_aff)
Set the affine delta - like the trial point, this method copies the pointer for efficiency (no copy a...
bool HaveDeltas() const
Returns true, if the primal-dual step have been already computed for the current iteration.
IpoptAdditionalData()
Default Constructor.
void Set_info_ls_count(Index ls_count)
TimingStatistics timing_statistics_
TimingStatistics object collecting all Ipopt timing statistics.
double Number
Type of all numbers.
bool info_skip_output() const
void Set_tiny_step_flag(bool flag)
Setting the flag that indicates if a tiny step (below machine precision) has been detected...
bool IsNull(const SmartPtr< U > &smart_ptr)
void Set_info_last_output(Number info_last_output)
sets time when the last summary output line was printed
void Set_iter_count(Index iter_count)
int info_iters_since_header()
gives number of iteration summaries actually printed since last summary header was printed ...
Number cpu_time_start_
CPU time counter at initialization.
SmartPtr< const IteratesVector > trial() const
Get the current point in a copied container that is non-const.
bool HaveAffineDeltas() const
Returns true, if the affine-scaling step have been already computed for the current iteration...
Number info_last_output_
time when the last summary output line was printed
void Set_info_alpha_primal_char(char info_alpha_primal_char)
SmartPtr< const SymMatrix > W()
Hessian or Hessian approximation (do not hold on to it, it might be changed)
void SetFreeMuMode(bool free_mu_mode)
bool HaveAddData()
Check if additional data has been set.
void Set_W(SmartPtr< const SymMatrix > W)
Set Hessian approximation.
Number info_alpha_primal_
Primal step size.
TimingStatistics & TimingStats()
Return Timing Statistics Object.
SmartPtr< const IteratesVector > curr_
Main iteration variables (current iteration)
This class collects all timing statistics for Ipopt.
std::string info_string_
any string of characters for the end of the output line
Template class for Smart Pointers.
Number info_regu_x() const
This class stores a list of user set options.
bool info_skip_output_
true, if next summary output line should not be printed (eg after restoration phase.
virtual bool Initialize(const Journalist &jnlst, const OptionsList &options, const std::string &prefix)=0
This method is called to initialize the global algorithmic parameters.
VectorSpace base class, corresponding to the Vector base class.
bool have_affine_deltas_
The following flag is set to true, if some other part of the algorithm (like the method for computing...
void operator=(const IpoptAdditionalData &)
Overloaded Equals Operator.
SmartPtr< const IteratesVector > delta_aff_
U * GetRawPtr(const SmartPtr< U > &smart_ptr)
SmartPtr< const IteratesVector > delta() const
ToDo: I may need to add versions of set_trial like the following, but I am not sure.
char info_alpha_primal_char() const
Number tol_
Overall convergence tolerance.
SmartPtr< const IteratesVector > delta_
virtual ~IpoptAdditionalData()
Default destructor.
bool have_prototypes_
flag for debugging whether we have already curr_ values available (from which new Vectors can be gene...
void Inc_info_iters_since_header()
increases number of iteration summaries actually printed since last summary header was printed ...
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
Class to organize all the data required by the algorithm.
const std::string & info_string() const
Number info_alpha_dual() const
int Index
Type of all indices of vectors, matrices etc.
virtual void AcceptTrialPoint()=0
Do whatever is necessary to accept a trial point as current iterate.
Number info_alpha_dual_
Dual step size.
bool tiny_step_flag_
flag indicating if a tiny step has been detected
void SetHaveDeltas(bool have_deltas)
Method for setting the HaveDeltas flag.
SmartPtr< const IteratesVector > delta_aff() const
Affine Delta.
SmartPtr< IteratesVectorSpace > iterates_space_
VectorSpace for all the iterates.
unsigned int Tag
Type for the Tag values.
void Set_info_skip_output(bool info_skip_output)
Set this to true, if the next time when output is written, the summary line should not be printed...
SmartPtr< const U > ConstPtr(const SmartPtr< U > &smart_ptr)
Index iter_count_
iteration count
bool MuInitialized() const
void Set_info_iters_since_header(int info_iters_since_header)
sets number of iteration summaries actually printed since last summary header was printed ...
void Set_tol(Number tol)
Set a new value for the tolerance.
Class responsible for all message output.
bool TauInitialized() const
bool free_mu_mode_
flag indicating whether the algorithm is in the free mu mode
char info_alpha_primal_char_
Info character for primal step size.
SmartPtr< const SymMatrix > W_
Hessian (approximation) - might be changed elsewhere!
Index info_ls_count() const
bool initialize_called_
flag indicating if Initialize method has been called (for debugging)
void SetAddData(SmartPtr< IpoptAdditionalData > add_data)
Set a new pointer for additional Ipopt data.
void setPDPert(Number pd_pert_x, Number pd_pert_s, Number pd_pert_c, Number pd_pert_d)
Set the perturbation of the primal-dual system.
This is the abstract base class for classes that map the traditional NLP into something that is more ...
Number info_alpha_primal() const
SmartPtr< const IteratesVector > curr() const
Current point.
Base class for additional data that is special to a particular type of algorithm, such as the CG pena...
bool have_deltas_
The following flag is set to true, if some other part of the algorithm (like the method for computing...
Number tol() const
Overall convergence tolerance.
virtual bool InitializeDataStructures()=0
Initialize Data Structures at the beginning.
void Set_info_alpha_primal(Number alpha_primal)
void set_trial(SmartPtr< IteratesVector > &trial)
Get Trial point in a copied container that is non-const.
void CopyTrialToCurrent()
Copy the trial values to the current values.
SmartPtr< const IteratesVector > trial_
Main iteration variables (trial calculations)
Index info_ls_count_
Number of backtracking trial steps.