Commit | Line | Data |
---|---|---|
80f575fc DM |
1 | |
2 | ||
3 | double square_test (VSArray p, void* _dat){ | |
4 | double val=0; | |
5 | for(int k=0; k<p.len;k++){ | |
6 | val+=(k+1)*3*(p.dat[k]-k)*(p.dat[k]-k); | |
7 | } | |
8 | return val; | |
9 | } | |
10 | ||
11 | void test_gradientoptimizer(){ | |
12 | int numruns=10; | |
13 | ||
14 | fprintf(stderr,"********** Gradient Optimizer Test:\n"); | |
15 | ||
16 | for(int i=0; i<numruns; i++){ | |
17 | double residual; | |
18 | VSArray params = vs_array_new(i+1); | |
19 | VSArray stepsizes = vs_array_new(i+1); | |
20 | for(int k=0; k<i+1; k++){ | |
21 | params.dat[k]= 20-k; | |
22 | stepsizes.dat[k]= 0.1; | |
23 | } | |
24 | ||
25 | VSArray result = vsGradientDescent(square_test, params, NULL, 50, stepsizes, 1e-15, &residual); | |
26 | fprintf(stderr,"** %iD: residual %lg :", i+1, residual); | |
27 | vs_array_print(result, stderr); | |
28 | fprintf(stderr,"***\n"); | |
29 | test_bool(residual<1e-10); | |
30 | vs_array_free(result); | |
31 | vs_array_free(params); | |
32 | } | |
33 | } |