MCPcopy Create free account
hub / github.com/davisking/dlib / test_bound_solver_rosen

Function test_bound_solver_rosen

dlib/test/optimization.cpp:1012–1088  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1010
1011 template <typename search_strategy_type>
1012 double test_bound_solver_rosen (dlib::rand& rnd, search_strategy_type search_strategy)
1013 {
1014 using namespace dlib::test_functions;
1015 print_spinner();
1016 matrix<double,2,1> starting_point, lower, upper, x;
1017
1018
1019 // pick random bounds and sometimes put the upper bound at zero so we can have
1020 // a test where the optimal value has a bound active at 0 so make sure this case
1021 // works properly.
1022 if (rnd.get_random_double() > 0.2)
1023 {
1024 lower = rnd.get_random_gaussian()+1, rnd.get_random_gaussian()+1;
1025 upper = rnd.get_random_gaussian()+1, rnd.get_random_gaussian()+1;
1026 while (upper(0) < lower(0)) upper(0) = rnd.get_random_gaussian()+1;
1027 while (upper(1) < lower(1)) upper(1) = rnd.get_random_gaussian()+1;
1028 }
1029 else
1030 {
1031 upper = 0,0;
1032 if (rnd.get_random_double() > 0.5)
1033 upper(0) = -rnd.get_random_double();
1034 if (rnd.get_random_double() > 0.5)
1035 upper(1) = -rnd.get_random_double();
1036
1037 lower = rnd.get_random_double()+1, rnd.get_random_double()+1;
1038 lower = upper - lower;
1039 }
1040 const bool pick_uniform_bounds = rnd.get_random_double() > 0.9;
1041 if (pick_uniform_bounds)
1042 {
1043 double x = rnd.get_random_gaussian()*2;
1044 double y = rnd.get_random_gaussian()*2;
1045 lower = min(x,y);
1046 upper = max(x,y);
1047 }
1048
1049 starting_point = rnd.get_random_double()*(upper(0)-lower(0))+lower(0),
1050 rnd.get_random_double()*(upper(1)-lower(1))+lower(1);
1051
1052 dlog << LINFO << "lower: "<< trans(lower);
1053 dlog << LINFO << "upper: "<< trans(upper);
1054 dlog << LINFO << "starting: "<< trans(starting_point);
1055
1056 x = starting_point;
1057 double val;
1058 if (!pick_uniform_bounds)
1059 {
1060 val = find_min_box_constrained(
1061 search_strategy,
1062 objective_delta_stop_strategy(1e-16, 500),
1063 rosen, der_rosen, x,
1064 lower,
1065 upper
1066 );
1067 }
1068 else
1069 {

Callers 1

Calls 12

print_spinnerFunction · 0.85
find_min_box_constrainedFunction · 0.85
absFunction · 0.85
der_rosenFunction · 0.85
get_random_doubleMethod · 0.80
get_random_gaussianMethod · 0.80
rosenFunction · 0.70
minFunction · 0.50
maxFunction · 0.50
transFunction · 0.50

Tested by

no test coverage detected