|
10 | 10 | #include <cassert> |
11 | 11 |
|
12 | 12 | Router::Router(const std::vector<double> &demand, |
13 | | - std::unique_ptr<distmat<double>> distances, |
14 | | - std::shared_ptr<Fleet> fleet) |
| 13 | + std::unique_ptr<distmat<double>> distances, |
| 14 | + std::shared_ptr<Fleet> fleet) |
15 | 15 | : fleet(fleet), |
16 | 16 | distances(std::move(distances)), |
17 | 17 | sites_relinked(demand.size(), 0), |
@@ -78,9 +78,9 @@ int unique_count(union_view<int, std::vector> uv) |
78 | 78 | } |
79 | 79 |
|
80 | 80 | Router::Router(const Router &runm1, const Router &runm2, |
81 | | - const distmat<double> &new_distances, |
82 | | - const std::vector<int> &site_ind_map1, |
83 | | - const std::vector<int> &site_ind_map2) |
| 81 | + const distmat<double> &new_distances, |
| 82 | + const std::vector<int> &site_ind_map1, |
| 83 | + const std::vector<int> &site_ind_map2) |
84 | 84 | : fleet(runm1.fleet), |
85 | 85 | distances(std::make_unique<distmat<double>>(new_distances)) |
86 | 86 | { |
@@ -388,88 +388,6 @@ double run_distance(const std::vector<int> ordered_sites, |
388 | 388 | return distance; |
389 | 389 | } |
390 | 390 |
|
391 | | -// 1 - site |
392 | | -// 2 - run |
393 | | -// 3 - order |
394 | | -// 4 - vehicle per run |
395 | | -// 5 - load per run |
396 | | -// 6 - distance per run |
397 | | -col_types Router::runs_as_cols() const |
398 | | -{ |
399 | | - typedef std::shared_ptr<run> T; |
400 | | - |
401 | | - size_t col_size = runs.size() + fixed_singleton_runs.size(); |
402 | | - |
403 | | - std::map<T, int> visited_runs; |
404 | | - std::map<int, std::vector<int>> orders; |
405 | | - std::map<int, double> run_dists; |
406 | | - |
407 | | - col_types cols = { |
408 | | - std::vector<int>(col_size), |
409 | | - std::vector<int>(col_size), |
410 | | - std::vector<int>(col_size), |
411 | | - std::vector<int>(col_size), |
412 | | - std::vector<double>(col_size), |
413 | | - std::vector<double>(col_size)}; |
414 | | - |
415 | | - int run_id = 0; |
416 | | - |
417 | | - // Iterate over sites |
418 | | - size_t i = 0; |
419 | | - for (; i < runs.size(); i++) |
420 | | - { |
421 | | - std::vector<int> order; |
422 | | - double run_dist; |
423 | | - T cyc = runs[i]; |
424 | | - |
425 | | - std::get<0>(cols)[i] = i; |
426 | | - std::get<3>(cols)[i] = runs[i]->vehicle; |
427 | | - std::get<4>(cols)[i] = runs[i]->max_load; |
428 | | - |
429 | | - // check if we have seen cyc before |
430 | | - if (visited_runs.count(cyc) > 0) |
431 | | - { |
432 | | - order = orders[visited_runs[cyc]]; |
433 | | - run_dist = run_dists[visited_runs[cyc]]; |
434 | | - |
435 | | - std::get<1>(cols)[i] = visited_runs[cyc]; |
436 | | - } |
437 | | - else // if we did not see it before |
438 | | - { |
439 | | - visited_runs.insert({cyc, run_id}); |
440 | | - // we reorder each run again (by solving the TSP) |
441 | | - order = cyc->ordered_sites(*(this->distances), consider_optim1, consider_optim2); |
442 | | - run_dist = run_distance(order, *(this->distances)); |
443 | | - |
444 | | - orders.insert({run_id, order}); |
445 | | - run_dists.insert({run_id, run_dist}); |
446 | | - |
447 | | - std::get<1>(cols)[i] = run_id; |
448 | | - run_id++; |
449 | | - } |
450 | | - |
451 | | - std::get<2>(cols)[i] = std::distance(order.begin(), |
452 | | - std::find(order.begin(), order.end(), i)); |
453 | | - std::get<5>(cols)[i] = run_dist; |
454 | | - } |
455 | | - |
456 | | - // fill the rest up with singleton runs |
457 | | - for (const auto &run : fixed_singleton_runs) |
458 | | - { |
459 | | - int site = *(run.sites().begin()); |
460 | | - std::get<0>(cols)[i] = site; |
461 | | - std::get<1>(cols)[i] = run_id; |
462 | | - std::get<2>(cols)[i] = 0; |
463 | | - std::get<3>(cols)[i] = run.vehicle; |
464 | | - std::get<4>(cols)[i] = run.max_load; |
465 | | - std::get<5>(cols)[i] = 2 * distances->get(0, 1 + site); |
466 | | - run_id++; |
467 | | - i++; |
468 | | - } |
469 | | - |
470 | | - return cols; |
471 | | -} |
472 | | - |
473 | 391 | tbls Router::runs_as_tbls(const std::vector<double> &demand) const |
474 | 392 | { |
475 | 393 | typedef std::shared_ptr<run> T; |
|
0 commit comments