SIMLIB/C++ 3.09
Loading...
Searching...
No Matches
optimize.h
Go to the documentation of this file.
1/////////////////////////////////////////////////////////////////////////////
2//! \file optimize.h Basic optimization framework + methods
3//
4// Copyright (c) 2000-2004 Petr Peringer
5//
6// This library is licensed under GNU Library GPL. See the file COPYING.
7//
8
9// EXPERIMENTAL
10// parameters for optimization purposes
11
12#ifndef __SIMLIB_OPTIMIZE_H
13#define __SIMLIB_OPTIMIZE_H
14
15namespace simlib3 {
16
17class Param
18{
19 const char *name; // name of parameter c-string
20 double min;
21 double max;
22 double value;
23 void limit(double &x)
24 {
25 if (x > max)
26 x = max;
27 if (x < min)
28 x = min;
29 }
30 public:
32 name(0), min(0), max(0), value(min)
33 { } // for arrays
34 Param (const char *n, double a, double b):
35 name(n), min(a), max(b), value(min)
36 { }
37 void Print() const;
38 Param & operator = (double x) {
39 value = x;
40 limit(value);
41 return *this;
42 }
43 double Value() const { return value; }
44 operator double () const { return value; }
45 double Min() const { return min; }
46 double Max() const { return max; }
47 double Range() const { return max - min; }
48 const char *Name() const { return name; }
49 // TODO: [defaults are O.K.]
50 // Param & operator = (const Param &x);
51 // Param(const Param &x);
52};
53
54////////////////////////////////////////////////////////////////////////////
55// parameter vector
56//
58{
59 int n;
61 int search(const char *name);
62 public:
63//TODO: ParameterVector(): n(0), p(0) {}
64//TODO: void Add(const Param&p) { add to the end } // pp.Add(Param("x",1,5));
65 ParameterVector(int sz, Param * a); // initialize by array
69 Param & operator[] (int i) { return p[i]; }
70 const Param & operator[] (int i) const { return p[i]; }
71 int size() const { return n; }
72 void PrintValues() const;
73 void Print() const;
74 // Prototypes !!!###
75 Param & operator[](const char *name) {
76 return p[search(name)];
77 }
78 friend bool operator == (const ParameterVector & p1,
79 const ParameterVector & p2);
80};
81
82// Type of function to optimize
83typedef double (*opt_function_t) (const ParameterVector & p);
84
85// Predefined optimization methods
87 double rho, double epsilon, int itermax);
88
90
92 double MAXITER);
93
94}
95
96#endif // __SIMLIB_OPTIMIZE_H
double value
Definition: optimize.h:22
double Max() const
Definition: optimize.h:46
double min
Definition: optimize.h:20
double Range() const
Definition: optimize.h:47
void limit(double &x)
Definition: optimize.h:23
double Min() const
Definition: optimize.h:45
Param & operator=(double x)
Definition: optimize.h:38
const char * Name() const
Definition: optimize.h:48
double max
Definition: optimize.h:21
Param(const char *n, double a, double b)
Definition: optimize.h:34
void Print() const
Definition: opt-param.cc:21
double Value() const
Definition: optimize.h:43
const char * name
Definition: optimize.h:19
void PrintValues() const
Definition: opt-param.cc:97
Param & operator[](int i)
Definition: optimize.h:69
ParameterVector & operator=(const ParameterVector &a)
Definition: opt-param.cc:69
Param & operator[](const char *name)
Definition: optimize.h:75
friend bool operator==(const ParameterVector &p1, const ParameterVector &p2)
Definition: opt-param.cc:86
int search(const char *name)
Definition: opt-param.cc:40
Implementation of class CalendarList interface is static - using global functions in SQS namespace.
Definition: algloop.cc:32
double Optimize_gradient(opt_function_t f, ParameterVector &p, double MAXITER)
double(* opt_function_t)(const ParameterVector &p)
Definition: optimize.h:83
double Optimize_hooke(opt_function_t f, ParameterVector &parameter, double rho, double epsilon, int itermax)
Definition: opt-hooke.cc:57
double Optimize_simann(double(*f)(const ParameterVector &p), ParameterVector &p, int MAXT)
Definition: opt-simann.cc:52