chiark / gitweb /
octave4.4
[nlopt.git] / stogo / tst.cc
1 #include <unistd.h>
2
3 #include "global.h"
4 #include "tools.h"
5
6 #include "linalg.h" 
7 #include "tools.h"
8 #include "stogo_config.h"
9
10 void Domain_Mine(RTBox box) {
11   box.lb=-3.0 ; box.ub=3.0;
12 }
13
14 static int cnt = 0;
15 double Objective_Mine(RCRVector xy) {
16   double x = xy(0);
17   double y = xy(1);
18   double f = ((x*x)*(4-2.1*(x*x)+((x*x)*(x*x))/3) + x*y + (y*y)*(-4+4*(y*y)));
19   printf("feval:, %d, %g, %g, %g\n", ++cnt, x,y, f);
20   return f;
21 }
22
23 void Gradient_Mine(RCRVector xy, RVector &grad) {
24   double x = xy(0);
25   double y = xy(1);
26   grad(0) = /* df/dx */
27     ((2*x)*(4-2.1*(x*x)+((x*x)*(x*x))/3)
28      + (x*x)*(-4.2*x+4*(x*(x*x))/3)
29      + y);
30   grad(1) = /* df/dy */
31     (x + (2*y)*(-4+4*(y*y)) + (y*y)*(8*(y)));
32 }
33
34
35 int main(int argc, char **argv) {
36   int dim=2;
37
38   Pdom Dom=Domain_Mine;
39   Pobj Obj=Objective_Mine;
40   Pgrad Grad=Gradient_Mine;
41
42   GlobalParams params;
43   params.det_pnts=2*dim+1; params.rnd_pnts=0;
44   params.eps_cl=0.1; params.rshift=0.3;
45   params.mu=1.0E-4; params.maxtime=0;
46
47   params.maxeval = argc < 2 ? 100 : atoi(argv[1]);
48
49   TBox D(dim);
50   Dom(D);
51   Global Problem(D,Obj, Grad, params);
52   RVector dummyvec(dim);
53   Problem.Search(-1, dummyvec);
54
55   cout << "Minimizers found\n";
56   Problem.DispMinimizers();
57
58   cout << "dummyvec: " << dummyvec << "\n";
59   
60   double val = Problem.OneMinimizer(dummyvec);
61   cout << "one minimizer: " << val << ": " << dummyvec << "\n";
62 }