-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfiguration.py
105 lines (60 loc) · 2.46 KB
/
configuration.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
from dataclasses import dataclass, field
@dataclass
class ScenarioConfiguration:
# constructor config
curv_start: list = field(default_factory=lambda: [-0.02, 0.02])
curv_end: list = field(default_factory=lambda: [-0.02, 0.02])
length: list = field(default_factory=lambda: [50, 100])
lane_num: list = field(default_factory=lambda: [2, 5])
lane_width: list = field(default_factory=lambda: [3.0, 4.0])
init_s: list = field(default_factory=lambda: [100, 200])
init_t: list = field(default_factory=lambda: [-10.0, -0.1])
init_speed: list = field(default_factory=lambda: [0, 15])
minD_to_ego: float = 20
maxD_to_ego: float = 50
# trigger config
trigger_time: list = field(default_factory=lambda: [0, 10])
trigger_distance: list = field(default_factory=lambda: [5, 15])
trigger_rule: list = field(default_factory=lambda: [-1, 1])
# speed action config
target_speed: list = field(default_factory=lambda: [0, 20])
rate: list = field(default_factory=lambda: [0, 5.0])
# lane change action config
relative_target_lane: list = field(default_factory=lambda: [-1, 1])
target_lane_offset: list = field(default_factory=lambda: [-0.5, 0.5])
lane_change_time: list = field(default_factory=lambda: [3, 6])
# lane offset action config
offset_distance: list = field(default_factory=lambda: [-1.5, 1.5])
max_lateral_acc: list = field(default_factory=lambda: [0, 1])
@dataclass
class GAConfiguration:
# chromosome config
min_road_num: int = 2
max_road_num: int = 4
shape_change_prob = 1.0
max_vehicle_num: int = 6
min_action_length: int = 5
max_action_length: int = 20
max_testcase_size: int = 30
min_testcase_size: int = 8
# selection config
tournament_size: int = 5
# mutation config
test_delete_probability: float = 1.0 / 3.0
test_change_probability: float = 1.0 / 3.0
test_insert_probability: float = 1.0 / 3.0
polynomial_distribution: float = 5
polynomial_prob: float = 0.5
avfuzzer_mutation_rate: float = 0.4
# crossover config
crossover_rate: float = 0.8
avfuzzer_crossover_rate: float = 0.4
# general config
iteration: int = 20
elite: int = 2
population: int = 40
@dataclass
class Configuration:
scenario_config: ScenarioConfiguration = field(default_factory=ScenarioConfiguration)
ga_config: GAConfiguration = field(default_factory=GAConfiguration)
configuration = Configuration()