Commit 3fb43786 authored by Vladislav Kiselev's avatar Vladislav Kiselev

Новый тест.

parent dd409008
Description
Тест против жадного алгоритма.
Есть четыре локации - рейд, терминал 1, терминал 2 и терминал 3.
На рейде два грузовых судна.
Грузовые суда могут перемещаться между рейдом и терминалом 1 за 1 ед. времени.
Так же, грузовые суда могут перемещаться между терминалами за 1 ед. времени.
Суда загружаются у терминала 1 со скоростью 31 ед./интервал.
Суда загружаются у терминала 2 со скоростью 3 ед./интервал.
Суда загружаются у терминала 3 со скоростью 4 ед./интервал.
Грузовые суда пусты, хранилище при терминале 1 имеет 31 ед. груза, при терминале 2 - 100 ед. груза, так же, как и при терминале 3.
Необходимо загрузить оба судна по 40 ед. груза, и отправить их обратно на рейд.
Идея - при частичной операции иногда не стоит жадно забирать сколько влезет, а взять только часть и оставить другому,
даже если надо самому. Пример - в решении "With splitting" - судно 12 загружает у терминала 1 12 ед. нефти,
хотя можно было больше, и собственное хранилище заполнилось не до конца.
Можно видеть, что жадный алгоритм не может так сделать, и ему приходится отправлять суда к терминалам 2 и 3, и
уже на обратной дороге догружать у термиала 1 до максимума. При этом решение хуже на 1 ед. времени.
Цель - показать различия в возможностях сведений.
Решение сведения "Without splitting" с solver-ом Chuffed за 5.825 s :
14.0
20112; R; 0.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 1.
20112; R; 0.0 ; 1.0 (12 []) \* Судно 12 идёт к причалу 2 от причала 1.
20124; R; 1.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 4 от причала 2.
20124; R; 1.0 ; 1.0 (12 []) \* Судно 12 идёт к причалу 4 от причала 2.
20143; R; 2.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 3 от причала 4.
40004; R; 2.0 ; 10.0 (12 [] 4) \* Судно 12 принимает груз 10001 из хранилища 2004 с интенсивностью 4 у причала 4.
20132; R; 3.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 3.
20124; R; 4.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 4 от причала 2.
20143; R; 5.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 3 от причала 4.
40003; R; 6.0 ; 3.0 (11 [] 3) \* Судно 11 принимает груз 10001 из хранилища 2003 с интенсивностью 3 у причала 3.
20134; R; 9.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 4 от причала 3.
20142; R; 10.0; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 4.
40002; R; 11.0; 1.0 (11 [] 31) \* Судно 11 принимает груз 10001 из хранилища 2002 с интенсивностью 31 у причала 2.
20121; R; 12.0; 1.0 (11 []) \* Судно 11 идёт к причалу 1 от причала 2.
20142; R; 12.0; 1.0 (12 []) \* Судно 12 идёт к причалу 2 от причала 4.
20121; R; 13.0; 1.0 (12 []) \* Судно 12 идёт к причалу 1 от причала 2.
Решение сведения "Greedy v2" с solver-ом or-tools за 1780.826 s :
13.0
20112; R; 0.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 1.
20112; R; 0.0 ; 1.0 (12 []) \* Судно 12 идёт к причалу 2 от причала 1.
20123; R; 1.0 ; 1.0 (12 []) \* Судно 12 идёт к причалу 3 от причала 2.
20124; R; 1.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 4 от причала 2.
40003; R; 2.0 ; 7.0 (12 [] 3) \* Судно 12 принимает груз 10001 из хранилища 2003 с интенсивностью -3 у причала 3.
40004; R; 2.0 ; 7.0 (11 [] 4) \* Судно 11 принимает груз 10001 из хранилища 2004 с интенсивностью -4 у причала 4.
20132; R; 9.0 ; 1.0 (12 []) \* Судно 12 идёт к причалу 2 от причала 3.
20143; R; 9.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 3 от причала 4.
20132; R; 10.0; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 3.
40002; R; 10.0; 1.0 (12 [] 19) \* Судно 12 принимает груз 10001 из хранилища 2002 с интенсивностью -19 у причала 2.
20121; R; 11.0; 1.0 (12 []) \* Судно 12 идёт к причалу 1 от причала 2.
40002; R; 11.0; 1.0 (11 [] 12) \* Судно 11 принимает груз 10001 из хранилища 2002 с интенсивностью -12 у причала 2.
20121; R; 12.0; 1.0 (11 []) \* Судно 11 идёт к причалу 1 от причала 2.
Решение сведения "With splitting" с solver-ом Chuffed за 20.527 s :
12.0
20112; R; 0.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 1.
20112; R; 0.0 ; 1.0 (12 []) \* Судно 12 идёт к причалу 2 от причала 1.
20123; R; 1.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 3 от причала 2.
40002; R; 1.0 ; 1.0 (12 [] 12) \* Судно 12 принимает груз 10001 из хранилища 2002 с интенсивностью 12 у причала 2.
20124; R; 2.0 ; 1.0 (12 []) \* Судно 12 идёт к причалу 4 от причала 2.
40003; R; 2.0 ; 7.0 (11 [] 3) \* Судно 11 принимает груз 10001 из хранилища 2003 с интенсивностью 3 у причала 3.
40004; R; 3.0 ; 7.0 (12 [] 4) \* Судно 12 принимает груз 10001 из хранилища 2004 с интенсивностью 4 у причала 4.
20132; R; 9.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 3.
20142; R; 10.0; 1.0 (12 []) \* Судно 12 идёт к причалу 2 от причала 4.
40002; R; 10.0; 1.0 (11 [] 19) \* Судно 11 принимает груз 10001 из хранилища 2002 с интенсивностью 19 у причала 2.
20121; R; 11.0; 1.0 (11 []) \* Судно 11 идёт к причалу 1 от причала 2.
20121; R; 11.0; 1.0 (12 []) \* Судно 12 идёт к причалу 1 от причала 2.
Typified
1
Cargoes
10001; Нефть; 0.0
Berths
1; Внешний рейд
2; Терминал 1
3; Терминал 2
4; Терминал 3
Storages
2002; Нефтехранилище 1; [(10001, 100.0)]
2003; Нефтехранилище 2; [(10001, 100.0)]
2004; Нефтехранилище 3; [(10001, 100.0)]
Vessel Types
1001; Нефтяные танкеры
Bunker Types
Bunkers
Tows
Loading Equipment Types
Loading Equipments
Transport Ships
11; Танкер 1; [(10001, 100.0)]; 1001
12; Танкер 2; [(10001, 100.0)]; 1001
Templates
20112; mov; []; 1001; 1; 2; []; 1.0
20121; mov; []; 1001; 2; 1; []; 1.0
20123; mov; []; 1001; 2; 3; []; 1.0
20134; mov; []; 1001; 3; 4; []; 1.0
20142; mov; []; 1001; 4; 2; []; 1.0
20132; mov; []; 1001; 3; 2; []; 1.0
20143; mov; []; 1001; 4; 3; []; 1.0
20124; mov; []; 1001; 2; 4; []; 1.0
40002; loa; []; 2002; 10001; 1001; 2; []; 31.0; U
40003; loa; []; 2003; 10001; 1001; 3; []; 3.0; U
40004; loa; []; 2004; 10001; 1001; 4; []; 4.0; U
Cargo Flows
Initial Vessel State
11; 1
12; 1
Initial Storage State
10001; 2002; 31.0
10001; 2003; 100.0
10001; 2004; 100.0
10001; 11; 0.0
10001; 12; 0.0
Final Vessel State
11; 1
12; 1
Final Storage State
10001; 11; 40.0
10001; 12; 40.0
Task Properties
25.0; 0
Fixed Operations
Solution
14.0
20112; R; 0.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 1.
20112; R; 0.0 ; 1.0 (12 []) \* Судно 12 идёт к причалу 2 от причала 1.
20124; R; 1.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 4 от причала 2.
20124; R; 1.0 ; 1.0 (12 []) \* Судно 12 идёт к причалу 4 от причала 2.
20143; R; 2.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 3 от причала 4.
40004; R; 2.0 ; 10.0 (12 [] 4) \* Судно 12 принимает груз 10001 из хранилища 2004 с интенсивностью 4 у причала 4.
20132; R; 3.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 3.
20124; R; 4.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 4 от причала 2.
20143; R; 5.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 3 от причала 4.
40003; R; 6.0 ; 3.0 (11 [] 3) \* Судно 11 принимает груз 10001 из хранилища 2003 с интенсивностью 3 у причала 3.
20134; R; 9.0 ; 1.0 (11 []) \* Судно 11 идёт к причалу 4 от причала 3.
20142; R; 10.0; 1.0 (11 []) \* Судно 11 идёт к причалу 2 от причала 4.
40002; R; 11.0; 1.0 (11 [] 31) \* Судно 11 принимает груз 10001 из хранилища 2002 с интенсивностью 31 у причала 2.
20121; R; 12.0; 1.0 (11 []) \* Судно 11 идёт к причалу 1 от причала 2.
20142; R; 12.0; 1.0 (12 []) \* Судно 12 идёт к причалу 2 от причала 4.
20121; R; 13.0; 1.0 (12 []) \* Судно 12 идёт к причалу 1 от причала 2.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment