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

Method test_hungarian

dlib/test/max_cost_assignment.cpp:104–136  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

102
103 template <typename T>
104 void test_hungarian()
105 {
106 long size = rnd.get_random_32bit_number()%7;
107 long range = rnd.get_random_32bit_number()%100;
108 matrix<T> cost = matrix_cast<T>(randm(size,size,rnd)*range) - range/2;
109
110 // use a uniform cost matrix sometimes
111 if ((rnd.get_random_32bit_number()%100) == 0)
112 cost = rnd.get_random_32bit_number()%100;
113
114 // negate the cost matrix every now and then
115 if ((rnd.get_random_32bit_number()%100) == 0)
116 cost = -cost;
117
118
119 std::vector<long> assign = brute_force_max_cost_assignment(cost);
120 T true_eval = assignment_cost(cost, assign);
121 assign = max_cost_assignment(cost);
122 DLIB_TEST(assignment_cost(cost,assign) == true_eval);
123 assign = max_cost_assignment(matrix_cast<signed char>(cost));
124 DLIB_TEST(assignment_cost(cost,assign) == true_eval);
125
126
127 cost = matrix_cast<T>(randm(size,size,rnd)*range);
128 assign = brute_force_max_cost_assignment(cost);
129 true_eval = assignment_cost(cost, assign);
130 assign = max_cost_assignment(cost);
131 DLIB_TEST(assignment_cost(cost,assign) == true_eval);
132 assign = max_cost_assignment(matrix_cast<unsigned char>(cost));
133 DLIB_TEST(assignment_cost(cost,assign) == true_eval);
134 assign = max_cost_assignment(matrix_cast<typename unsigned_type<T>::type>(cost));
135 DLIB_TEST(assignment_cost(cost,assign) == true_eval);
136 }
137
138 void perform_test (
139 )

Callers

nothing calls this directly

Calls 5

assignment_costFunction · 0.85
max_cost_assignmentFunction · 0.85
randmFunction · 0.70

Tested by

no test coverage detected