/////////////////// FittingStrategy //////////////////////////////////
| 372 | |
| 373 | // /////////////////// FittingStrategy ////////////////////////////////// |
| 374 | FittingStrategy::FittingStrategy(std::string model_path) { |
| 375 | m_manager = std::make_shared<OptionsFastManager>(); |
| 376 | m_dumped_model = FLAGS_dump_fitting_model; |
| 377 | m_options = std::make_shared<OptionMap>(); |
| 378 | m_model_path = model_path; |
| 379 | auto option_creator_map = OptionFactory::get_Instance().get_option_creator_map(); |
| 380 | auto option_validater_map = |
| 381 | OptionFactory::get_Instance().get_option_validater_map(); |
| 382 | //! validate option used in fitting |
| 383 | auto validate_option = [&](std::string name) -> void { |
| 384 | if (option_validater_map->find(name) != option_validater_map->end()) { |
| 385 | auto& validater = (*option_validater_map).at(name); |
| 386 | if (validater) { |
| 387 | validater(true); |
| 388 | } |
| 389 | } |
| 390 | }; |
| 391 | |
| 392 | //! construct option which is valid |
| 393 | auto construct_option = [&](std::string name) -> void { |
| 394 | auto& creator = (*option_creator_map)[name]; |
| 395 | auto option = creator(); |
| 396 | if (option) { |
| 397 | m_options->insert({name, option}); |
| 398 | } |
| 399 | }; |
| 400 | |
| 401 | //! get all options which is valid |
| 402 | for (auto& creator : *option_creator_map) { |
| 403 | auto name = creator.first; |
| 404 | if (m_options->count(name) == 0) { |
| 405 | validate_option(name); |
| 406 | construct_option(name); |
| 407 | } |
| 408 | } |
| 409 | |
| 410 | m_manager->init(m_options); |
| 411 | } |
| 412 | |
| 413 | void FittingStrategy::dump_best_options_with_model() { |
| 414 | std::vector<uint8_t> info_algo_policy_data; |
nothing calls this directly
no test coverage detected