Apollo 11.0
自动驾驶开放平台
apollo::perception::algorithm::HungarianOptimizer< T > 模板类 参考

#include <hungarian_optimizer.h>

apollo::perception::algorithm::HungarianOptimizer< T > 的协作图:

Public 成员函数

 HungarianOptimizer ()
 
 HungarianOptimizer (const int max_optimization_size)
 
 ~HungarianOptimizer ()
 
SecureMat< T > * costs ()
 
T * costs (const size_t row, const size_t col)
 
void Maximize (std::vector< std::pair< size_t, size_t > > *assignments)
 
void Minimize (std::vector< std::pair< size_t, size_t > > *assignments)
 
void OptimizationInit ()
 
void OptimizationClear ()
 
void PrintMatrix ()
 

详细描述

template<typename T>
class apollo::perception::algorithm::HungarianOptimizer< T >

在文件 hungarian_optimizer.h33 行定义.

构造及析构函数说明

◆ HungarianOptimizer() [1/2]

template<typename T >
apollo::perception::algorithm::HungarianOptimizer< T >::HungarianOptimizer ( )

◆ HungarianOptimizer() [2/2]

template<typename T >
apollo::perception::algorithm::HungarianOptimizer< T >::HungarianOptimizer ( const int  max_optimization_size)
explicit

在文件 hungarian_optimizer.h233 行定义.

234 : max_optimization_size_(max_optimization_size) {
235 costs_.Reserve(max_optimization_size, max_optimization_size);
236 stars_in_col_.reserve(max_optimization_size);
237 rows_covered_.reserve(max_optimization_size);
238 cols_covered_.reserve(max_optimization_size);
239 assignments_.reserve(max_optimization_size);
240 uncov_row_.reserve(max_optimization_size);
241 uncov_col_.reserve(max_optimization_size);
242}

◆ ~HungarianOptimizer()

在文件 hungarian_optimizer.h41 行定义.

41{}

成员函数说明

◆ costs() [1/2]

template<typename T >
SecureMat< T > * apollo::perception::algorithm::HungarianOptimizer< T >::costs ( )
inline

在文件 hungarian_optimizer.h43 行定义.

43{ return &costs_; }

◆ costs() [2/2]

template<typename T >
T * apollo::perception::algorithm::HungarianOptimizer< T >::costs ( const size_t  row,
const size_t  col 
)
inline

在文件 hungarian_optimizer.h45 行定义.

45{ return &(costs_(row, col)); }

◆ Maximize()

template<typename T >
void apollo::perception::algorithm::HungarianOptimizer< T >::Maximize ( std::vector< std::pair< size_t, size_t > > *  assignments)

在文件 hungarian_optimizer.h248 行定义.

249 {
251 /* operate maximizing problem as a minimizing one via substrating original
252 * cost from max_cost_ */
253 for (size_t row = 0; row < height_; ++row) {
254 for (size_t col = 0; col < width_; ++col) {
255 costs_(row, col) = max_cost_ - costs_(row, col);
256 }
257 }
258 Minimize(assignments);
259}
void Minimize(std::vector< std::pair< size_t, size_t > > *assignments)

◆ Minimize()

template<typename T >
void apollo::perception::algorithm::HungarianOptimizer< T >::Minimize ( std::vector< std::pair< size_t, size_t > > *  assignments)

在文件 hungarian_optimizer.h265 行定义.

266 {
268 DoMunkres();
269 FindAssignments(assignments);
271}

◆ OptimizationClear()

template<typename T >
void apollo::perception::algorithm::HungarianOptimizer< T >::OptimizationClear ( )

在文件 hungarian_optimizer.h321 行定义.

321 {
322 optimization_initialized_ = false;
323}

◆ OptimizationInit()

template<typename T >
void apollo::perception::algorithm::HungarianOptimizer< T >::OptimizationInit ( )

在文件 hungarian_optimizer.h274 行定义.

274 {
275 if (optimization_initialized_) {
276 return;
277 }
278 width_ = costs_.width();
279 if (width_ > 0) {
280 height_ = costs_.height();
281 } else {
282 height_ = 0;
283 }
284
285 matrix_size_ = std::max(height_, width_);
286 max_cost_ = 0;
287
288 /* generate the expanded cost matrix by adding extra 0s in order to make a
289 * square matrix. Meanwhile, find the max cost in the matrix. It may be used
290 * later, if we want to maximizing rather than minimizing the overall costs.*/
291 costs_.Resize(matrix_size_, matrix_size_);
292 for (size_t row = 0; row < matrix_size_; ++row) {
293 for (size_t col = 0; col < matrix_size_; ++col) {
294 if ((row >= height_) || (col >= width_)) {
295 costs_(row, col) = 0;
296 } else {
297 max_cost_ = std::max(max_cost_, costs_(row, col));
298 }
299 }
300 }
301
302 /* initially, none of the cells of the matrix are marked. */
303 marks_.Resize(matrix_size_, matrix_size_);
304 for (size_t row = 0; row < matrix_size_; ++row) {
305 for (size_t col = 0; col < matrix_size_; ++col) {
306 marks_(row, col) = Mark::NONE;
307 }
308 }
309
310 stars_in_col_.assign(matrix_size_, 0);
311
312 rows_covered_.assign(matrix_size_, false);
313 cols_covered_.assign(matrix_size_, false);
314
315 assignments_.resize(matrix_size_ * 2);
316
317 optimization_initialized_ = true;
318}
void Resize(const size_t resize_height, const size_t resize_width)

◆ PrintMatrix()

template<typename T >
void apollo::perception::algorithm::HungarianOptimizer< T >::PrintMatrix ( )

在文件 hungarian_optimizer.h465 行定义.

465 {
466 for (size_t row = 0; row < matrix_size_; ++row) {
467 for (size_t col = 0; col < matrix_size_; ++col) {
468 printf("%g ", costs_(row, col));
469
470 if (IsStarred(row, col)) {
471 printf("*");
472 }
473
474 if (IsPrimed(row, col)) {
475 printf("'");
476 }
477 }
478 printf("\n");
479 }
480}

该类的文档由以下文件生成: