HalleyChebyAD
 All Classes Files Functions Variables Friends
UncOpt.h
1 #ifndef UNCOPT_H
2 #define UNCOPT_H
3 
4 #include<iostream>
5 #include<string>
6 #include<vector>
7 #include<stdio.h>
8 #include <sstream>
9 #include"ObjectiveFunction.h"
10 #include "Derivatives.h"
11 #include "LinAlgebra.h"
12 #include <numeric>
14 class UncOpt
15 {
16 public:
17  explicit UncOpt(const int dimension_int =0, const double precision_in= 1.0E-8, std::string name_in ="no_name",const bool print_it =false);
18  virtual ~UncOpt();
19  void reset();
20  virtual string solve(); //Can only be called by derived class.
21  virtual int methodstep() = 0; //**Can only be called by derived class.*/
22  // void copy_ObjectiveFunction (const ObjectiveFunction &);
23  void set_ObjectiveFunction(const int dimension_in, double * x_initial_in,
24  double (*eval_in)( const double *, int), adouble (*eval_a_in)( const adouble*,int),const string name_in);
25  LinAlgebra LinAlg; //Mostly linear algebra support
26  double get_error(){if(gradnorm0==0) return(0.0); else return(gradnorm/gradnorm0);}
27  int get_iteration(){return(iteration);}
28  void set_print_iteration(const bool b);
29  void set_print_system_solve(const bool b);
30  void set_precision(const double prec);
31  void set_system_precision(const double prec);
32  void set_max_iterations(const int max_iterations_in);
33  void set_x_initial(void (*initial_pointpty)(double *,const int dimension));
34  void print_iteration_info();
35  void print_iteration_header();
36  void print_stopping_criteria();
37  void set_linear_solver_type(int linear_solver_type_in){ linear_solver_type = linear_solver_type_in;}
38 protected:
41  bool stopping_criteria();
42  double armijo();
43  double inexact_solve_precision(const double & rhs);
44  std::string name;
45  int dimension;
46  double precision;
47  int iteration;
48  int max_iterations;
49  int max_system_iter;
50  double initial_stepsize;
51  double steptaken;
52  double objval;
53  double gradnorm;
54  double gradnorm0;
55  double grad_precision;
56  double system_precision;
57  bool print_iteration;
58  bool print_system_solve;
59  int print_title;
60  int my_number;
61  Derivatives Deriv;
62  double func_diff;
63  double * x_prev;
64  double * temp_use;
65  double * x;
66  double * descent;
67  std::string state;
68  int linear_solver_type;
69 private:
70  void operator=(const UncOpt&); // Making the copy constructor private
71  static int tape_num;
72  void parameter_default();
73 };
74 
75 #endif // UNCOPT_H
double inexact_solve_precision(const double &rhs)
Definition: UncOpt.cpp:230
double armijo()
Definition: UncOpt.cpp:188
ObjectiveFunction ObjFunc
Definition: UncOpt.h:40
The Base class of Unconstrained Optimization solvers.
Definition: UncOpt.h:14
Responsibilites: Interfaces with ADOL-C. and Taping the function.
Definition: ObjectiveFunction.h:10
void set_ObjectiveFunction(const int dimension_in, double *x_initial_in, double(*eval_in)(const double *, int), adouble(*eval_a_in)(const adouble *, int), const string name_in)
Definition: UncOpt.cpp:130
Wraps all derivative information and communicates with ADOL-C.
Definition: Derivatives.h:6
virtual string solve()
Definition: UncOpt.cpp:67