Dear All,
I am a new user in NLopt, which is quite useful to me. However, I found
something which are quite strange to me.
For the algorithm nlopt::GN_ISRES, it is said that " This method supports
arbitrary nonlinear inequality and equality constraints in addition to the
bound constraints, and is specified within NLopt as NLOPT_GN_ISRES. "
When I tried to use it to optimize one of my functions. It seems that it
will try some functions that are out-of-the bound.
The constraint functions are
double constraint1(const std::vector<double> &x, std::vector<double> &grad,
void *f_data)
{
return x.at(0)+x.at(1)-1.0;
}
double constraint2(const std::vector<double> &x, std::vector<double> &grad,
void *f_data)
{
return x.at(2)+x.at(3)-1.0;
}
And the function calling body is
nlopt::opt opt(nlopt::GN_ISRES,5);
//nlopt::opt opt(nlopt::GN_ORIG_DIRECT,5);
//nlopt::opt opt(nlopt::GN_DIRECT_L,5);
//nlopt::opt opt(nlopt::LN_COBYLA,5);
opt.set_min_objective( objFunNLOpt, sinarma);
double lbv[] = {0.0,0.0,0.0,0.0,0.0};
double ubv[] = {1.0,1.0,1.0,1.0,20.0};
std::vector<double> lb(lbv,lbv+sizeof(lbv)/sizeof(
double));
std::vector<double> ub(ubv,ubv+sizeof(ubv)/sizeof(double));
opt.set_lower_bounds(lb);
opt.set_upper_bounds(ub);
opt.add_inequality_constraint(constraint1,NULL);
opt.add_inequality_constraint(constraint2,NULL);
opt.set_ftol_rel(1.0E-4);
opt.set_xtol_rel(1.0E-6);
opt.set_maxeval(5000);
opt.optimize(x,opt_f);
A snap shot of the evaluating process is
x= 0.1 0.3 0.2 0.4 5 , val= 0.1575
x= 0.252 0.006354 0.6278 0.3216 5.201 , val= 0.8748
*x= 0.9769 0.1116 0.4753 0.8834 1.097 , val= 0.7349
*
x= 0.4307 0.4151 0.136 0.7997 10.62 , val= 0.3994
*x= 0.3367 0.7913 0.03299 0.6773 9.707 , val= 1.034
*
x= 0.9857 0.7385 0.2511 0.06071 7.598 , val= 0.177
x= 0.1413 0.8076 0.3838 0.8355 3.214 , val= 0.9152
x= 0.9222 0.7576 0.5284 0.2475 10.49 , val= 0.1913
x= 0.6246 0.8009 0.08544 0.7071 8.448 , val= 0.9804
x= 0.06238 0.6616 0.5577 0.9688 11.65 , val= 1.639
x= 0.2986 0.9361 0.4704 0.3453 11.07 , val= 0.4449
x= 0.5647 0.3973 0.1084 0.9146 19.25 , val= 0.5597
x= 0.6982 0.9929 0.7448 0.005979 17.7 , val= 0.369
x= 0.8275 0.244 0.2537 0.3359 5.847 , val= 0.8157
x= 0.5472 0.738 0.4852 0.323 2.011 , val= 0.1692
x= 0.871 0.4762 0.4117 0.7949 19.23 , val= 0.345
x= 0.1464 0.05371 0.1009 0.1294 13 , val= 0.445
x= 0.7625 0.6841 0.92 0.3244 4.602 , val= 0.2911
x= 0.5947 0.9206 0.4605 0.4048 15.43 , val= 0.4658
x= 0.1455 0.4868 0.007905 0.8878 11.45 , val= 1.225
x= 0.0982 0.5636 0.2704 0.3108 5.422 , val= 0.2106
x= 0.1422 0.7757 0.1415 0.6585 2.569 , val= 0.7151
x= 0.3913 0.4549 0.6285 0.03469 19.44 , val= 0.8953
x= 0.9991 0.01681 0.1594 0.4513 2.901 , val= 1.109
x= 0.6513 0.4083 0.03732 0.7829 12.03 , val= 0.3776
x= 0.3016 0.9317 0.9791 0.417 2.621 , val= 0.4362
x= 0.5716 0.8347 0.6583 0.1375 6.699 , val= 0.2436
x= 0.2673 0.08167 0.02382 0.5406 18.57 , val= 0.1993
x= 0.9251 0.01322 0.2647 0.768 16.72 , val= 0.8223
x= 0.9798 0.8634 0.3441 0.5656 15.12 , val= 0.608
x= 0.1289 0.2468 0.2779 0.7634 5.479 , val= 0.3331
x= 0.314 0.7607 0.2421 0.4671 5.166 , val= 0.3848
x= 0.3991 0.9786 0.5409 0.1667 9.264 , val= 0.3923
x= 0.5058 0.8677 0.7998 0.4668 6.546 , val= 0.3658
x= 0.311 0.5672 0.2693 0.1908 8.84 , val= 0.2241
x= 0.9026 0.9142 0.3254 0.1825 12.53 , val= 0.391
x= 0.5101 0.4271 0.9811 0.8416 18.74 , val= 0.4403
x= 0.03544 0.1681 0.6343 0.3349 17.7 , val= 0.5255
x= 0.1349 0.8284 0.8843 0.7505 6.137 , val= 0.8526
x= 0.2802 0.3832 0.9529 0.4314 5.721 , val= 0.3922
x= 0.06149 0.654 0.1303 0.991 8.264 , val= 1.592
x= 0.2009 0.01924 0.889 0.2258 16.31 , val= 1.118
x= 0.8749 0.2752 0.7025 0.9188 17.84 , val= 0.3235
x= 0.4582 0.5505 0.0914 0.1348 8.985 , val= 0.2656
x= 0.869 0.4923 0.1652 0.8663 15.21 , val= 0.5364
x= 0.2144 0.9518 0.7998 0.4856 15.32 , val= 0.5424
x= 0.1301 0.768 0.06262 0.9156 7.384 , val= 1.36
x= 0.4991 0.1057 0.2188 0.8549 10.26 , val= 0.2449
x= 0.9309 0.7175 0.06909 0.8789 8.336 , val= 1.027
x= 0.06419 0.9604 0.4447 0.256 1.556 , val= 0.4798
x= 0.2851 0.6309 0.6199 0.1102 10.71 , val= 0.4778
x= 0.8887 0.08937 0.2202 0.08932 11.32 , val= 1.286
x= 0.1138 0.3938 0.8178 0.9821 9.385 , val= 1.222
x= 0.06034 0.6731 0.513 0.1871 0.02326 , val= 0.2188
x= 0.3693 0.5908 0.7289 0.2976 5.327 , val= 0.4653
x= 0.3842 0.5129 0.4673 0.1484 0.9199 , val= 0.4193
x= 0.7231 0.7843 0.3321 0.7079 15.32 , val= 0.6867
x= 0.3203 0.5842 0.9521 0.3439 13.97 , val= 0.393
x= 0.5549 0.3908 0.3115 0.05886 1.513 , val= 0.6893
x= 0.4694 0.2051 0.748 0.04081 3.528 , val= 1.205
x= 0.8148 0.7641 0.8163 0.1833 16.36 , val= 0.4113
x= 0.1599 0.1516 0.814 0.4345 19.09 , val= 0.5042
x= 0.1701 0.862 0.4085 0.8024 17.94 , val= 1.194
x= 0.1274 0.002765 0.004669 0.9684 15.28 , val= 0.9262
x= 0.3388 0.1792 0.4733 0.7473 17.13 , val= 0.1991
x= 0.6277 0.5726 0.02037 0.4521 8.69 , val= 0.2675
x= 0.661 0.6336 0.6935 0.6396 19.35 , val= 0.2337
x= 0.2738 0.9219 0.8693 0.7841 4.806 , val= 1.086
x= 0.7007 0.1666 0.3068 0.3679 11.24 , val= 0.8463
x= 0.8726 0.3964 0.6293 0.2132 8.394 , val= 0.9264
x= 0.978 0.3473 0.3253 0.07669 18.42 , val= 0.9058
x= 0.7954 0.8336 0.275 0.2799 13.23 , val= 0.3533
x= 0.1394 0.4194 0.2798 0.7088 11.77 , val= 0.4092
x= 0.8655 0.7223 0.2758 0.04247 6.58 , val= 0.1971
x= 0.253 0.8305 0.3658 0.7648 16.82 , val= 0.9727
x= 0.897 0.1389 0.4026 0.1023 0.4167 , val= 1.209
x= 0.5593 0.6629 0.7107 0.6119 14.32 , val= 0.2183
x= 0.8853 0.5359 0.1327 0.2818 14.88 , val= 0.2121
x= 0.6062 0.7834 0.9407 0.637 8.446 , val= 0.4872
x= 0.638 0.3629 0.5064 0.4207 15.23 , val= 0.7162
x= 0.4634 0.9808 0.3085 0.1262 8.435 , val= 0.4919
x= 0.2496 0.3246 0.5999 0.1318 18.1 , val= 0.7423
x= 0.4533 0.08726 0.3307 0.8614 14.87 , val= 0.2867
x= 0.8775 0.7979 0.4897 0.641 1.427 , val= 0.4222
x= 0.4696 0.9212 0.5728 0.5208 2.263 , val= 0.5354
x= 0.9144 0.1088 0.4042 0.371 2.167 , val= 1.168
x= 0.2168 0.1427 0.01394 0.9493 13.8 , val= 0.8703
x= 0.1917 0.5173 0.1233 0.2422 10.61 , val= 0.1667
x= 0.09812 0.8152 0.4343 0.3638 11 , val= 0.3411
x= 0.4199 0.868 0.06806 0.8889 6.987 , val= 1.396
x= 0.9482 0.2552 0.5525 0.7784 2.534 , val= 0.5167
x= 0.6495 0.6319 0.5277 0.9971 2.854 , val= 0.6451
x= 0.1404 0.7933 0.08927 0.7301 3.143 , val= 0.8934
x= 0.4493 0.5813 0.7783 0.1266 4.608 , val= 0.6823
x= 0.5509 0.7277 0.5248 0.4996 18.76 , val= 0.1655
x= 0.6262 0.8037 0.1195 0.705 4.53 , val= 0.8246
x= 0.4898 0.9681 0.7606 0.003301 14.21 , val= 0.3306
x= 0.8313 0.6371 0.6731 0.7201 18.85 , val= 0.4189
x= 0.2512 0.3171 0.1158 0.4795 6.893 , val= 0.1726
x= 0.9647 0.1827 0.7537 0.7895 9.693 , val= 0.5332
x= 0.7788 0.1481 0.006264 0.9286 17.89 , val= 0.3308
The bold lines are (some of) the ones that seem to go out of the
constraints.
Does anyone know why? Or am I wrong in some place?
I would very appreciate it if one can give me some guidance.
Best regards,
Chao
--
Chao Wang
Email: [email protected]
Web: https://sites.google.com/site/wan9c9/home
Department of Statistics and Actuarial Science
The University of Hong Kong
Hong Kong
_______________________________________________
NLopt-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss