メイン関数の実行 (root) ビルド: make 実行: make test 削除: make clean
テスト生成関数の実行(root/test) ビルド: make 実行: run 削除: clean *テスト生成関数の実行には C++ boost のインストールが必要
GAP入力例
-
test_id: テストの識別子
-
100 10 1 タスク数 ロボット数 ステーション数
-
10 制約時間、この時間内にタスクの割り当てを行う
-
1 実行終了時に保証する充電残量
-
1 7 7 6 4 5 7 1 7 4 ロボットの初期充電残量
-
10 10 10 10 10 10 10 10 10 10 ロボットの最大充電容量
-
1 ステーションの充電効率
-
5 ステーションのキャパシティ
-
1 2 2, ... 各ロボットがタスクを実行する際の時間
-
1 2 4, ... 各ロボットがタスクを実行する時に消費するエネルギー
-
3 1 5, ... 各ロボットがタスクを実行する際の利益(タスクの優先度)
前提 指定時間内でのタスクの遂行量と充電待ち時間を評価、以下それぞれのアルゴリズムを比較し、評価
- 充電が切れるギリギリまで活動して、充電が切れそうになったら充電をする
- 充電計画を考慮してタスクの割り当てを行う
1, 2について評価を行い考察する。
時間を制限して
定義
タスク: ロボットが行う作業のこと。割当の際には消費電力とタスクの優先度の2つの項目を用いて評価を行う。 パラメータ size: エネルギー消費量 →ロボットのエネルギー消費効率とタスク実行時間の積によって算出
ロボット: 自立移動型ロボット。個体によって初期充電と最大充電量が異なる
充電ステーションの占有制約: 列番号はステーションのindex, 行にはn時間または分の占有度を追加する。ここで占有度とは割り当てられたロボットの個数を表わす。この占有度が全体として最小化する事によって渋滞回避をする
アルゴリズム
- 充電計画を考慮しないで配置、この際指定時間を超えるタスクの割り当てはしない
- 残りの時間の制限のもとで最適化 a. タスクの充電消費量と同等の充電量を得るのに必要な時間の和をm_sizeとして定義して、タスクの優先度を評価関数として配置 b. 充電ステーションの最適化(ロボットの充電切れによる制約、最大容量による制約)
a, bは独立していない、例えばa. で個別の充電必要時間が選定されたとしても、ロボットの最大容量や充電待ち時間によって充電ができない場合がある。そのため別々に両者を扱えない問題がある
現状: 2について次のフェーズで対応 Ⅰ 充電計画を考慮したGAPを解く(a) Ⅱ 充電計画(b), この過程でサイクル内で必要な充電量を各ロボットで確定させる Ⅲ 充電は固定し、実行できなくなったタスクを他のタスクに差し替え