browsergym-workarena 0.2.1__py3-none-any.whl → 0.3.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- browsergym/workarena/__init__.py +13 -1
- browsergym/workarena/api/category.py +74 -0
- browsergym/workarena/api/change_request.py +87 -0
- browsergym/workarena/api/computer_asset.py +90 -0
- browsergym/workarena/api/cost_center.py +19 -0
- browsergym/workarena/api/expense_line.py +89 -0
- browsergym/workarena/api/incident.py +45 -0
- browsergym/workarena/api/knowledge.py +29 -0
- browsergym/workarena/api/problem.py +90 -0
- browsergym/workarena/api/report.py +183 -0
- browsergym/workarena/api/requested_items.py +63 -0
- browsergym/workarena/api/user.py +11 -8
- browsergym/workarena/api/utils.py +47 -3
- browsergym/workarena/config.py +21 -1
- browsergym/workarena/data_files/setup_files/forms/expected_incident_form_fields.json +1 -1
- browsergym/workarena/data_files/setup_files/forms/expected_request_item_form_fields.json +1 -0
- browsergym/workarena/data_files/setup_files/knowledge/protocols.json +46 -0
- browsergym/workarena/data_files/setup_files/knowledge/test.html +1 -0
- browsergym/workarena/data_files/setup_files/lists/expected_asset_list_columns.json +2 -24
- browsergym/workarena/data_files/setup_files/lists/expected_change_request_list_columns.json +4 -40
- browsergym/workarena/data_files/setup_files/lists/expected_expense_line_list_columns.json +12 -0
- browsergym/workarena/data_files/setup_files/lists/expected_hardware_list_columns.json +1 -42
- browsergym/workarena/data_files/setup_files/lists/expected_incident_list_columns.json +2 -18
- browsergym/workarena/data_files/setup_files/lists/expected_problem_list_columns.json +12 -0
- browsergym/workarena/data_files/setup_files/lists/expected_requested_items_list_columns.json +12 -0
- browsergym/workarena/data_files/setup_files/lists/expected_service_catalog_list_columns.json +2 -19
- browsergym/workarena/data_files/setup_files/lists/expected_user_list_columns.json +3 -50
- browsergym/workarena/data_files/task_configs/all_menu.json +1 -1
- browsergym/workarena/data_files/task_configs/dashboard_retrieval_minmax_task.json +1 -1
- browsergym/workarena/data_files/task_configs/dashboard_retrieval_value_task.json +1 -1
- browsergym/workarena/data_files/task_configs/filter_service_catalog_item_list_task.json +1 -1
- browsergym/workarena/data_files/task_configs/impersonation_users.json +1 -1
- browsergym/workarena/data_files/task_configs/report_retrieval_minmax_task.json +1 -1
- browsergym/workarena/data_files/task_configs/report_retrieval_value_task.json +1 -1
- browsergym/workarena/human_eval/console.js +176 -0
- browsergym/workarena/human_eval/tool.py +366 -0
- browsergym/workarena/install.py +81 -20
- browsergym/workarena/tasks/base.py +55 -20
- browsergym/workarena/tasks/comp_building_block.py +4 -0
- browsergym/workarena/tasks/compositional/__init__.py +76 -0
- browsergym/workarena/tasks/compositional/base.py +364 -0
- browsergym/workarena/tasks/compositional/dash_do_base.py +1366 -0
- browsergym/workarena/tasks/compositional/dash_do_catalog.py +1127 -0
- browsergym/workarena/tasks/compositional/dash_do_catalog_infeasible.py +2047 -0
- browsergym/workarena/tasks/compositional/dash_do_create_incident.py +403 -0
- browsergym/workarena/tasks/compositional/dash_do_create_incident_infeasible.py +278 -0
- browsergym/workarena/tasks/compositional/dash_do_create_problem.py +336 -0
- browsergym/workarena/tasks/compositional/dash_do_create_problem_infeasible.py +235 -0
- browsergym/workarena/tasks/compositional/dash_do_filter.py +1600 -0
- browsergym/workarena/tasks/compositional/dash_do_request_item.py +1315 -0
- browsergym/workarena/tasks/compositional/dash_do_request_item_infeasible.py +693 -0
- browsergym/workarena/tasks/compositional/delete_record.py +341 -0
- browsergym/workarena/tasks/compositional/edit_knowledge_base.py +457 -0
- browsergym/workarena/tasks/compositional/expense_management.py +598 -0
- browsergym/workarena/tasks/compositional/filter_and_do.py +139 -0
- browsergym/workarena/tasks/compositional/find_and_order_item.py +345 -0
- browsergym/workarena/tasks/compositional/manage_change_request_schedule.py +1417 -0
- browsergym/workarena/tasks/compositional/mark_duplicate_problems.py +499 -0
- browsergym/workarena/tasks/compositional/maximize_investment_return.py +1763 -0
- browsergym/workarena/tasks/compositional/navigate_and_do.py +1151 -0
- browsergym/workarena/tasks/compositional/navigate_and_do_infeasible.py +2100 -0
- browsergym/workarena/tasks/compositional/offboard_user.py +207 -0
- browsergym/workarena/tasks/compositional/onboard_user.py +226 -0
- browsergym/workarena/tasks/compositional/update_task.py +145 -0
- browsergym/workarena/tasks/compositional/utils/curriculum.py +215 -0
- browsergym/workarena/tasks/compositional/utils/infeasible_configs.py +151 -0
- browsergym/workarena/tasks/compositional/utils/knapsack.py +192 -0
- browsergym/workarena/tasks/compositional/warranty_check.py +227 -0
- browsergym/workarena/tasks/compositional/work_assignment.py +804 -0
- browsergym/workarena/tasks/compositional/workload_balancing.py +396 -0
- browsergym/workarena/tasks/dashboard.py +194 -12
- browsergym/workarena/tasks/form.py +1024 -232
- browsergym/workarena/tasks/knowledge.py +216 -25
- browsergym/workarena/tasks/list.py +519 -102
- browsergym/workarena/tasks/mark_duplicate_problem.py +171 -0
- browsergym/workarena/tasks/navigation.py +55 -13
- browsergym/workarena/tasks/scripts/extract_all_menu_items.py +9 -2
- browsergym/workarena/tasks/scripts/generate_dashboard_configs.py +6 -5
- browsergym/workarena/tasks/scripts/service_catalog.py +2 -1
- browsergym/workarena/tasks/scripts/validate.py +8 -2
- browsergym/workarena/tasks/send_chat_message.py +90 -0
- browsergym/workarena/tasks/service_catalog.py +94 -26
- browsergym/workarena/tasks/utils/form.py +1 -4
- browsergym/workarena/tasks/utils/private_tasks.py +63 -0
- browsergym/workarena/tasks/utils/utils.py +13 -0
- {browsergym_workarena-0.2.1.dist-info → browsergym_workarena-0.3.1.dist-info}/METADATA +19 -18
- browsergym_workarena-0.3.1.dist-info/RECORD +138 -0
- {browsergym_workarena-0.2.1.dist-info → browsergym_workarena-0.3.1.dist-info}/entry_points.txt +1 -0
- browsergym_workarena-0.2.1.dist-info/RECORD +0 -85
- {browsergym_workarena-0.2.1.dist-info → browsergym_workarena-0.3.1.dist-info}/WHEEL +0 -0
- {browsergym_workarena-0.2.1.dist-info → browsergym_workarena-0.3.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,1417 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
from datetime import datetime, timedelta
|
|
4
|
+
from faker import Faker
|
|
5
|
+
from typing import List, Tuple
|
|
6
|
+
|
|
7
|
+
fake = Faker()
|
|
8
|
+
|
|
9
|
+
from playwright.sync_api._generated import Page
|
|
10
|
+
|
|
11
|
+
from browsergym.workarena.tasks.form import (
|
|
12
|
+
EditChangeRequestScheduleTask,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
from .base import HumanEvalTask
|
|
16
|
+
from .filter_and_do import FilterAndDoTask
|
|
17
|
+
|
|
18
|
+
from ..base import AbstractServiceNowTask
|
|
19
|
+
|
|
20
|
+
from ...api.change_request import create_change_request
|
|
21
|
+
from ...api.utils import table_api_call, db_delete_from_table
|
|
22
|
+
from ...config import (
|
|
23
|
+
# Expected columns for the different lists
|
|
24
|
+
EXPECTED_CHANGE_REQUEST_COLUMNS_PATH,
|
|
25
|
+
)
|
|
26
|
+
from ...instance import SNowInstance
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ManageChangeRequestScheduleTask(FilterAndDoTask):
|
|
30
|
+
"""Task to schedule change requests.
|
|
31
|
+
Args:
|
|
32
|
+
|
|
33
|
+
goal_type: str
|
|
34
|
+
The type of goal to set. Choices are "base", "priority", "tight", "tight priority". Used for validation
|
|
35
|
+
wide_schedule: bool
|
|
36
|
+
Whether or not the change requests should be scheduled in a 'wide' schedule. If set to True, the change requests
|
|
37
|
+
will have a period of 2 longer than the optimal schedule to be fitted in. Otherwise, they will have
|
|
38
|
+
a period of 2 days longer than the optimal schedule.
|
|
39
|
+
uniform_risk: bool
|
|
40
|
+
whether to use uniform risk for the change requests. The risk is between 2 (high) and 4 (low) and sets the
|
|
41
|
+
duration of the change request (high) risk=2 -> 3 days, (medium) risk=3 -> 2 days, (low) risk=4 -> 1 day
|
|
42
|
+
num_change_requests: int
|
|
43
|
+
The number of change requests to create a schedule for
|
|
44
|
+
pre_existing_schedule: bool
|
|
45
|
+
Whether to create a pre-existing schedule for the change requests. If set to True, the change requests created
|
|
46
|
+
will all overlap and have durations of one day.
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
# mapping between risk and duration
|
|
50
|
+
risk_to_duration = {2: 3, 3: 2, 4: 1}
|
|
51
|
+
|
|
52
|
+
def __init__(
|
|
53
|
+
self,
|
|
54
|
+
seed: int,
|
|
55
|
+
instance: SNowInstance = None,
|
|
56
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
57
|
+
goal_type: str = "base",
|
|
58
|
+
wide_schedule: bool = False,
|
|
59
|
+
uniform_risk: bool = True,
|
|
60
|
+
num_change_requests: int = 2,
|
|
61
|
+
pre_existing_schedule: bool = False,
|
|
62
|
+
level: int = 2,
|
|
63
|
+
) -> None:
|
|
64
|
+
super().__init__(
|
|
65
|
+
seed=seed,
|
|
66
|
+
instance=instance,
|
|
67
|
+
fixed_config=fixed_config,
|
|
68
|
+
navigation_config={
|
|
69
|
+
"module": "All",
|
|
70
|
+
"application": "Change",
|
|
71
|
+
},
|
|
72
|
+
level=level,
|
|
73
|
+
protocol_name="Scheduling Your Change Requests",
|
|
74
|
+
)
|
|
75
|
+
self.goal_type = goal_type
|
|
76
|
+
self.wide_schedule = wide_schedule
|
|
77
|
+
self.uniform_risk = uniform_risk
|
|
78
|
+
self.num_change_requests = num_change_requests
|
|
79
|
+
self.pre_existing_schedule = pre_existing_schedule
|
|
80
|
+
self.change_request_sys_ids = []
|
|
81
|
+
self.change_request_numbers = []
|
|
82
|
+
self.change_request_impacts = [2] * num_change_requests # Medium priorities by default
|
|
83
|
+
|
|
84
|
+
# start and end dates of the schedule
|
|
85
|
+
self.schedule_start_date = fake.date_time_this_decade(
|
|
86
|
+
after_now=True, before_now=False, tzinfo=None
|
|
87
|
+
).replace(microsecond=0)
|
|
88
|
+
self.schedule_end_date = None
|
|
89
|
+
self.schedule_bounds_goal = None # Part of the goal to append at the end of the goal to indicate the start and end of the schedule. Used in L2 tasks
|
|
90
|
+
|
|
91
|
+
if self.uniform_risk:
|
|
92
|
+
self.risks = [4] * num_change_requests
|
|
93
|
+
else:
|
|
94
|
+
self.risks = list(self.random.randint(2, 4, num_change_requests))
|
|
95
|
+
|
|
96
|
+
self.change_request_hashtag = "#SERIES-" + self.unique_id[:10]
|
|
97
|
+
if not self.pre_existing_schedule:
|
|
98
|
+
schedule_type = "tight schedule" if "tight" in self.goal_type else "schedule"
|
|
99
|
+
self.short_description = f"Scheduling Your Change Requests"
|
|
100
|
+
self.task_description = f'Referring to company protocol "{self.protocol_name}" (located in the "Company Protocols" knowledge base) create a {schedule_type} for your change requests for those with hashtag {self.change_request_hashtag}.'
|
|
101
|
+
else:
|
|
102
|
+
self.short_description = f"Re-scheduling Your Change Requests"
|
|
103
|
+
self.task_description = f'The schedule for your change requests with hashtag {self.change_request_hashtag} is currently broken. Please refer to company protocol "{self.protocol_name}" (located in the company protocols knowledge base) to fix it.'
|
|
104
|
+
if "tight" in self.goal_type:
|
|
105
|
+
self.task_description += " The change requests should be scheduled according to the tight schedule setting."
|
|
106
|
+
self.tasks = []
|
|
107
|
+
|
|
108
|
+
def setup_goal(self, page: Page) -> tuple[str, dict]:
|
|
109
|
+
goal, info = super().setup_goal(page=page)
|
|
110
|
+
|
|
111
|
+
if self.level == 2:
|
|
112
|
+
goal += self.schedule_bounds_goal
|
|
113
|
+
|
|
114
|
+
return goal, info
|
|
115
|
+
|
|
116
|
+
def _setup_list(self) -> None:
|
|
117
|
+
self.filter_config = {
|
|
118
|
+
"list_url": "/now/nav/ui/classic/params/target/change_request_list.do",
|
|
119
|
+
"expected_fields_path": EXPECTED_CHANGE_REQUEST_COLUMNS_PATH,
|
|
120
|
+
"filter_columns": [
|
|
121
|
+
"short_description",
|
|
122
|
+
],
|
|
123
|
+
"filter_kind": "AND",
|
|
124
|
+
"filter_operators": ["contains"],
|
|
125
|
+
"filter_values": [
|
|
126
|
+
f"{self.change_request_hashtag}",
|
|
127
|
+
],
|
|
128
|
+
}
|
|
129
|
+
self.change_request_impacts.sort() # Sort the impacts to make sure the the top impact requests are scheduled first
|
|
130
|
+
|
|
131
|
+
start_date = self.schedule_start_date
|
|
132
|
+
|
|
133
|
+
for risk, impact in zip(self.risks, self.change_request_impacts):
|
|
134
|
+
if self.pre_existing_schedule:
|
|
135
|
+
change_request_start_date = start_date + timedelta(hours=self.random.randint(1, 4))
|
|
136
|
+
change_request_end_date = change_request_start_date + timedelta(days=1)
|
|
137
|
+
else:
|
|
138
|
+
change_request_start_date = ""
|
|
139
|
+
change_request_end_date = ""
|
|
140
|
+
change_request_sys_id, change_request_number = create_change_request(
|
|
141
|
+
instance=self.instance,
|
|
142
|
+
user_sys_id=self._base_user_sysid,
|
|
143
|
+
risk=risk,
|
|
144
|
+
start_date=str(change_request_start_date),
|
|
145
|
+
end_date=str(change_request_end_date),
|
|
146
|
+
impact=impact,
|
|
147
|
+
hashtag=self.change_request_hashtag,
|
|
148
|
+
random=self.random,
|
|
149
|
+
)
|
|
150
|
+
self.change_request_sys_ids.append(change_request_sys_id)
|
|
151
|
+
self.change_request_numbers.append(change_request_number)
|
|
152
|
+
|
|
153
|
+
for i, risk in enumerate(self.risks):
|
|
154
|
+
skip_description = i > 0
|
|
155
|
+
duration = self.risk_to_duration[risk]
|
|
156
|
+
end_date = start_date + timedelta(days=duration)
|
|
157
|
+
self.tasks.append(
|
|
158
|
+
EditChangeRequestScheduleTask(
|
|
159
|
+
instance=self.instance,
|
|
160
|
+
is_validated=False,
|
|
161
|
+
used_in_level_2=True,
|
|
162
|
+
record_sys_id=self.change_request_sys_ids[i],
|
|
163
|
+
record_number=self.change_request_numbers[i],
|
|
164
|
+
# Here the values will only be used by the cheat; the goal will be over-ridden to explain the task
|
|
165
|
+
# at a high level only; see the get_pretty_printed_description method
|
|
166
|
+
new_values={"start_date": str(start_date), "end_date": str(end_date)},
|
|
167
|
+
level=self.level,
|
|
168
|
+
goal_type=self.goal_type,
|
|
169
|
+
skip_description=skip_description,
|
|
170
|
+
)
|
|
171
|
+
)
|
|
172
|
+
start_date = end_date + timedelta(minutes=1)
|
|
173
|
+
|
|
174
|
+
if self.wide_schedule:
|
|
175
|
+
self.schedule_end_date = end_date + timedelta(weeks=2)
|
|
176
|
+
else:
|
|
177
|
+
self.schedule_end_date = end_date + timedelta(days=2)
|
|
178
|
+
|
|
179
|
+
self.schedule_bounds_goal = f" All the change requests should be scheduled between {self.schedule_start_date} and {self.schedule_end_date}, inclusively. "
|
|
180
|
+
# Add the schedule bounds to the task description
|
|
181
|
+
self.task_description += self.schedule_bounds_goal
|
|
182
|
+
|
|
183
|
+
def validate(self, page: Page, chat_messages: list[str]) -> Tuple[float, bool, str, dict]:
|
|
184
|
+
change_requests = table_api_call(
|
|
185
|
+
instance=self.instance,
|
|
186
|
+
table="change_request",
|
|
187
|
+
params={
|
|
188
|
+
"sysparm_query": f"short_descriptionLIKE{self.change_request_hashtag}",
|
|
189
|
+
"sysparm_fields": "impact,start_date,end_date,risk",
|
|
190
|
+
},
|
|
191
|
+
)["result"]
|
|
192
|
+
change_requests = sorted(change_requests, key=lambda x: x["start_date"])
|
|
193
|
+
|
|
194
|
+
# max difference is 1 day if not tight, 1 hour if tight
|
|
195
|
+
max_difference = 1 if self.goal_type == "tight" else 24
|
|
196
|
+
|
|
197
|
+
for i, change_request in enumerate(change_requests):
|
|
198
|
+
# Check that the change request has start/end dates
|
|
199
|
+
if (
|
|
200
|
+
not change_request["start_date"]
|
|
201
|
+
or not change_request["end_date"]
|
|
202
|
+
or (i > 0 and not change_requests[i - 1]["end_date"])
|
|
203
|
+
):
|
|
204
|
+
return (
|
|
205
|
+
0,
|
|
206
|
+
False,
|
|
207
|
+
"",
|
|
208
|
+
{"message": "Change request start date or end date is missing."},
|
|
209
|
+
)
|
|
210
|
+
# Confirm that the change request has appropriate duration (within 20% of expected duration)
|
|
211
|
+
current_start_date = datetime.strptime(
|
|
212
|
+
change_request["start_date"], "%Y-%m-%d %H:%M:%S"
|
|
213
|
+
)
|
|
214
|
+
current_end_date = datetime.strptime(change_request["end_date"], "%Y-%m-%d %H:%M:%S")
|
|
215
|
+
|
|
216
|
+
# Check that the bounds of the schedule are respected
|
|
217
|
+
if (
|
|
218
|
+
current_start_date < self.schedule_start_date
|
|
219
|
+
or current_end_date > self.schedule_end_date
|
|
220
|
+
):
|
|
221
|
+
return (
|
|
222
|
+
0,
|
|
223
|
+
False,
|
|
224
|
+
"",
|
|
225
|
+
{
|
|
226
|
+
"message": "Change request start date or end date is outside of the target schedule."
|
|
227
|
+
},
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
difference = current_end_date - current_start_date
|
|
231
|
+
# Expected duration is 3 days for high risk, 2 days for medium risk, 1 day for low risk
|
|
232
|
+
duration = self.risk_to_duration[int(change_request["risk"])]
|
|
233
|
+
expected_duration = timedelta(days=duration)
|
|
234
|
+
|
|
235
|
+
if difference < expected_duration * 0.95 or difference > expected_duration * 1.05:
|
|
236
|
+
return (
|
|
237
|
+
0,
|
|
238
|
+
False,
|
|
239
|
+
"",
|
|
240
|
+
{
|
|
241
|
+
"message": "Change request duration is not within 5% of the expected duration."
|
|
242
|
+
},
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
if i == 0:
|
|
246
|
+
continue
|
|
247
|
+
# Confirm change requests are not overlapping and respect maximum spacing (1 day if not tight, 1h if tight)
|
|
248
|
+
previous_end_date = datetime.strptime(
|
|
249
|
+
change_requests[i - 1]["end_date"], "%Y-%m-%d %H:%M:%S"
|
|
250
|
+
)
|
|
251
|
+
difference = current_start_date - previous_end_date
|
|
252
|
+
if difference > timedelta(hours=max_difference) or difference < timedelta(0):
|
|
253
|
+
return (
|
|
254
|
+
0,
|
|
255
|
+
False,
|
|
256
|
+
"",
|
|
257
|
+
{
|
|
258
|
+
"message": "Change requests are overlapping or not respecting the maximum spacing."
|
|
259
|
+
},
|
|
260
|
+
)
|
|
261
|
+
# Confirm change requests are ordered by impact - lower number being more impactful
|
|
262
|
+
if change_request["impact"] > change_requests[i - 1]["impact"]:
|
|
263
|
+
return (
|
|
264
|
+
0,
|
|
265
|
+
False,
|
|
266
|
+
"",
|
|
267
|
+
{"message": "Change requests are not ordered by priority."},
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
# Validate final_l3 tasks
|
|
271
|
+
reward, done, message, info = super().validate(page, chat_messages)
|
|
272
|
+
return reward, done, message, info
|
|
273
|
+
|
|
274
|
+
def teardown(self) -> None:
|
|
275
|
+
for change_request_sys_id in self.change_request_sys_ids:
|
|
276
|
+
record_exists = table_api_call(
|
|
277
|
+
instance=self.instance,
|
|
278
|
+
table="change_request",
|
|
279
|
+
params={"sysparm_query": f"sys_id={change_request_sys_id}"},
|
|
280
|
+
)["result"]
|
|
281
|
+
if record_exists:
|
|
282
|
+
db_delete_from_table(
|
|
283
|
+
instance=self.instance,
|
|
284
|
+
table="change_request",
|
|
285
|
+
sys_id=change_request_sys_id,
|
|
286
|
+
)
|
|
287
|
+
super().teardown()
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
class TwoChangesBasicUniformRiskChangeRequestSchedulingTask(
|
|
291
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
292
|
+
):
|
|
293
|
+
def __init__(
|
|
294
|
+
self,
|
|
295
|
+
seed: int,
|
|
296
|
+
instance: SNowInstance = None,
|
|
297
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
298
|
+
num_change_requests: int = 2,
|
|
299
|
+
level: int = 2,
|
|
300
|
+
) -> None:
|
|
301
|
+
super().__init__(
|
|
302
|
+
seed=seed,
|
|
303
|
+
instance=instance,
|
|
304
|
+
fixed_config=fixed_config,
|
|
305
|
+
goal_type="base",
|
|
306
|
+
num_change_requests=num_change_requests,
|
|
307
|
+
level=level,
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
class TwoChangesWideBasicUniformRiskChangeRequestSchedulingTask(
|
|
312
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
313
|
+
):
|
|
314
|
+
def __init__(
|
|
315
|
+
self,
|
|
316
|
+
seed: int,
|
|
317
|
+
instance: SNowInstance = None,
|
|
318
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
319
|
+
num_change_requests: int = 2,
|
|
320
|
+
level: int = 2,
|
|
321
|
+
) -> None:
|
|
322
|
+
super().__init__(
|
|
323
|
+
seed=seed,
|
|
324
|
+
instance=instance,
|
|
325
|
+
fixed_config=fixed_config,
|
|
326
|
+
goal_type="base",
|
|
327
|
+
wide_schedule=True,
|
|
328
|
+
num_change_requests=num_change_requests,
|
|
329
|
+
level=level,
|
|
330
|
+
)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
class TwoChangesFixBasicUniformRiskChangeRequestSchedulingTask(
|
|
334
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
335
|
+
):
|
|
336
|
+
def __init__(
|
|
337
|
+
self,
|
|
338
|
+
seed: int,
|
|
339
|
+
instance: SNowInstance = None,
|
|
340
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
341
|
+
num_change_requests: int = 2,
|
|
342
|
+
level: int = 2,
|
|
343
|
+
) -> None:
|
|
344
|
+
super().__init__(
|
|
345
|
+
seed=seed,
|
|
346
|
+
instance=instance,
|
|
347
|
+
fixed_config=fixed_config,
|
|
348
|
+
goal_type="base",
|
|
349
|
+
num_change_requests=num_change_requests,
|
|
350
|
+
pre_existing_schedule=True,
|
|
351
|
+
level=level,
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
class TwoChangesFixWideBasicUniformRiskChangeRequestSchedulingTask(
|
|
356
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
357
|
+
):
|
|
358
|
+
def __init__(
|
|
359
|
+
self,
|
|
360
|
+
seed: int,
|
|
361
|
+
instance: SNowInstance = None,
|
|
362
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
363
|
+
num_change_requests: int = 2,
|
|
364
|
+
level: int = 2,
|
|
365
|
+
) -> None:
|
|
366
|
+
super().__init__(
|
|
367
|
+
seed=seed,
|
|
368
|
+
instance=instance,
|
|
369
|
+
fixed_config=fixed_config,
|
|
370
|
+
goal_type="base",
|
|
371
|
+
wide_schedule=True,
|
|
372
|
+
num_change_requests=num_change_requests,
|
|
373
|
+
pre_existing_schedule=True,
|
|
374
|
+
level=level,
|
|
375
|
+
)
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
class TwoChangesBasicVariedRiskChangeRequestSchedulingTask(
|
|
379
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
380
|
+
):
|
|
381
|
+
def __init__(
|
|
382
|
+
self,
|
|
383
|
+
seed: int,
|
|
384
|
+
instance: SNowInstance = None,
|
|
385
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
386
|
+
num_change_requests: int = 2,
|
|
387
|
+
level: int = 2,
|
|
388
|
+
) -> None:
|
|
389
|
+
super().__init__(
|
|
390
|
+
seed=seed,
|
|
391
|
+
instance=instance,
|
|
392
|
+
fixed_config=fixed_config,
|
|
393
|
+
goal_type="base",
|
|
394
|
+
uniform_risk=False,
|
|
395
|
+
num_change_requests=num_change_requests,
|
|
396
|
+
level=level,
|
|
397
|
+
)
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
class TwoChangesWideBasicVariedRiskChangeRequestSchedulingTask(
|
|
401
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
402
|
+
):
|
|
403
|
+
def __init__(
|
|
404
|
+
self,
|
|
405
|
+
seed: int,
|
|
406
|
+
instance: SNowInstance = None,
|
|
407
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
408
|
+
num_change_requests: int = 2,
|
|
409
|
+
level: int = 2,
|
|
410
|
+
) -> None:
|
|
411
|
+
super().__init__(
|
|
412
|
+
seed=seed,
|
|
413
|
+
instance=instance,
|
|
414
|
+
fixed_config=fixed_config,
|
|
415
|
+
goal_type="base",
|
|
416
|
+
wide_schedule=True,
|
|
417
|
+
uniform_risk=False,
|
|
418
|
+
num_change_requests=num_change_requests,
|
|
419
|
+
level=level,
|
|
420
|
+
)
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
class TwoChangesFixBasicVariedRiskChangeRequestSchedulingTask(
|
|
424
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
425
|
+
):
|
|
426
|
+
def __init__(
|
|
427
|
+
self,
|
|
428
|
+
seed: int,
|
|
429
|
+
instance: SNowInstance = None,
|
|
430
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
431
|
+
num_change_requests: int = 2,
|
|
432
|
+
level: int = 2,
|
|
433
|
+
) -> None:
|
|
434
|
+
super().__init__(
|
|
435
|
+
seed=seed,
|
|
436
|
+
instance=instance,
|
|
437
|
+
fixed_config=fixed_config,
|
|
438
|
+
goal_type="base",
|
|
439
|
+
uniform_risk=False,
|
|
440
|
+
num_change_requests=num_change_requests,
|
|
441
|
+
pre_existing_schedule=True,
|
|
442
|
+
level=level,
|
|
443
|
+
)
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
class TwoChangesFixWideBasicVariedRiskChangeRequestSchedulingTask(
|
|
447
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
448
|
+
):
|
|
449
|
+
def __init__(
|
|
450
|
+
self,
|
|
451
|
+
seed: int,
|
|
452
|
+
instance: SNowInstance = None,
|
|
453
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
454
|
+
num_change_requests: int = 2,
|
|
455
|
+
level: int = 2,
|
|
456
|
+
) -> None:
|
|
457
|
+
super().__init__(
|
|
458
|
+
seed=seed,
|
|
459
|
+
instance=instance,
|
|
460
|
+
fixed_config=fixed_config,
|
|
461
|
+
goal_type="base",
|
|
462
|
+
wide_schedule=True,
|
|
463
|
+
uniform_risk=False,
|
|
464
|
+
num_change_requests=num_change_requests,
|
|
465
|
+
pre_existing_schedule=True,
|
|
466
|
+
level=level,
|
|
467
|
+
)
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
class TwoChangesPriorityUniformRiskChangeRequestSchedulingTask(
|
|
471
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
472
|
+
):
|
|
473
|
+
def __init__(
|
|
474
|
+
self,
|
|
475
|
+
seed: int,
|
|
476
|
+
instance: SNowInstance = None,
|
|
477
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
478
|
+
num_change_requests: int = 2,
|
|
479
|
+
level: int = 2,
|
|
480
|
+
) -> None:
|
|
481
|
+
super().__init__(
|
|
482
|
+
seed=seed,
|
|
483
|
+
instance=instance,
|
|
484
|
+
fixed_config=fixed_config,
|
|
485
|
+
goal_type="priority",
|
|
486
|
+
num_change_requests=num_change_requests,
|
|
487
|
+
level=level,
|
|
488
|
+
)
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
class TwoChangesWidePriorityUniformRiskChangeRequestSchedulingTask(
|
|
492
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
493
|
+
):
|
|
494
|
+
def __init__(
|
|
495
|
+
self,
|
|
496
|
+
seed: int,
|
|
497
|
+
instance: SNowInstance = None,
|
|
498
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
499
|
+
num_change_requests: int = 2,
|
|
500
|
+
level: int = 2,
|
|
501
|
+
) -> None:
|
|
502
|
+
super().__init__(
|
|
503
|
+
seed=seed,
|
|
504
|
+
instance=instance,
|
|
505
|
+
fixed_config=fixed_config,
|
|
506
|
+
goal_type="priority",
|
|
507
|
+
wide_schedule=True,
|
|
508
|
+
num_change_requests=num_change_requests,
|
|
509
|
+
level=level,
|
|
510
|
+
)
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
class TwoChangesFixPriorityUniformRiskChangeRequestSchedulingTask(
|
|
514
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
515
|
+
):
|
|
516
|
+
def __init__(
|
|
517
|
+
self,
|
|
518
|
+
seed: int,
|
|
519
|
+
instance: SNowInstance = None,
|
|
520
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
521
|
+
num_change_requests: int = 2,
|
|
522
|
+
level: int = 2,
|
|
523
|
+
) -> None:
|
|
524
|
+
super().__init__(
|
|
525
|
+
seed=seed,
|
|
526
|
+
instance=instance,
|
|
527
|
+
fixed_config=fixed_config,
|
|
528
|
+
goal_type="priority",
|
|
529
|
+
num_change_requests=num_change_requests,
|
|
530
|
+
pre_existing_schedule=True,
|
|
531
|
+
level=level,
|
|
532
|
+
)
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
class TwoChangesFixWidePriorityUniformRiskChangeRequestSchedulingTask(
|
|
536
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
537
|
+
):
|
|
538
|
+
def __init__(
|
|
539
|
+
self,
|
|
540
|
+
seed: int,
|
|
541
|
+
instance: SNowInstance = None,
|
|
542
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
543
|
+
num_change_requests: int = 2,
|
|
544
|
+
level: int = 2,
|
|
545
|
+
) -> None:
|
|
546
|
+
super().__init__(
|
|
547
|
+
seed=seed,
|
|
548
|
+
instance=instance,
|
|
549
|
+
fixed_config=fixed_config,
|
|
550
|
+
goal_type="priority",
|
|
551
|
+
wide_schedule=True,
|
|
552
|
+
num_change_requests=num_change_requests,
|
|
553
|
+
pre_existing_schedule=True,
|
|
554
|
+
level=level,
|
|
555
|
+
)
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
class TwoChangesPriorityVariedRiskChangeRequestSchedulingTask(
|
|
559
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
560
|
+
):
|
|
561
|
+
def __init__(
|
|
562
|
+
self,
|
|
563
|
+
seed: int,
|
|
564
|
+
instance: SNowInstance = None,
|
|
565
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
566
|
+
num_change_requests: int = 2,
|
|
567
|
+
level: int = 2,
|
|
568
|
+
) -> None:
|
|
569
|
+
super().__init__(
|
|
570
|
+
seed=seed,
|
|
571
|
+
instance=instance,
|
|
572
|
+
fixed_config=fixed_config,
|
|
573
|
+
goal_type="priority",
|
|
574
|
+
uniform_risk=False,
|
|
575
|
+
num_change_requests=num_change_requests,
|
|
576
|
+
level=level,
|
|
577
|
+
)
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
class TwoChangesWidePriorityVariedRiskChangeRequestSchedulingTask(
|
|
581
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
582
|
+
):
|
|
583
|
+
def __init__(
|
|
584
|
+
self,
|
|
585
|
+
seed: int,
|
|
586
|
+
instance: SNowInstance = None,
|
|
587
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
588
|
+
num_change_requests: int = 2,
|
|
589
|
+
level: int = 2,
|
|
590
|
+
) -> None:
|
|
591
|
+
super().__init__(
|
|
592
|
+
seed=seed,
|
|
593
|
+
instance=instance,
|
|
594
|
+
fixed_config=fixed_config,
|
|
595
|
+
goal_type="priority",
|
|
596
|
+
wide_schedule=True,
|
|
597
|
+
uniform_risk=False,
|
|
598
|
+
num_change_requests=num_change_requests,
|
|
599
|
+
level=level,
|
|
600
|
+
)
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
class TwoChangesFixPriorityVariedRiskChangeRequestSchedulingTask(
|
|
604
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
605
|
+
):
|
|
606
|
+
def __init__(
|
|
607
|
+
self,
|
|
608
|
+
seed: int,
|
|
609
|
+
instance: SNowInstance = None,
|
|
610
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
611
|
+
num_change_requests: int = 2,
|
|
612
|
+
level: int = 2,
|
|
613
|
+
) -> None:
|
|
614
|
+
super().__init__(
|
|
615
|
+
seed=seed,
|
|
616
|
+
instance=instance,
|
|
617
|
+
fixed_config=fixed_config,
|
|
618
|
+
goal_type="priority",
|
|
619
|
+
uniform_risk=False,
|
|
620
|
+
num_change_requests=num_change_requests,
|
|
621
|
+
pre_existing_schedule=True,
|
|
622
|
+
level=level,
|
|
623
|
+
)
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
class TwoChangesFixWidePriorityVariedRiskChangeRequestSchedulingTask(
|
|
627
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
628
|
+
):
|
|
629
|
+
def __init__(
|
|
630
|
+
self,
|
|
631
|
+
seed: int,
|
|
632
|
+
instance: SNowInstance = None,
|
|
633
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
634
|
+
num_change_requests: int = 2,
|
|
635
|
+
level: int = 2,
|
|
636
|
+
) -> None:
|
|
637
|
+
super().__init__(
|
|
638
|
+
seed=seed,
|
|
639
|
+
instance=instance,
|
|
640
|
+
fixed_config=fixed_config,
|
|
641
|
+
goal_type="priority",
|
|
642
|
+
wide_schedule=True,
|
|
643
|
+
uniform_risk=False,
|
|
644
|
+
num_change_requests=num_change_requests,
|
|
645
|
+
pre_existing_schedule=True,
|
|
646
|
+
level=level,
|
|
647
|
+
)
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
class TwoChangesTightUniformRiskChangeRequestSchedulingTask(
|
|
651
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
652
|
+
):
|
|
653
|
+
def __init__(
|
|
654
|
+
self,
|
|
655
|
+
seed: int,
|
|
656
|
+
instance: SNowInstance = None,
|
|
657
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
658
|
+
num_change_requests: int = 2,
|
|
659
|
+
level: int = 2,
|
|
660
|
+
) -> None:
|
|
661
|
+
super().__init__(
|
|
662
|
+
seed=seed,
|
|
663
|
+
instance=instance,
|
|
664
|
+
fixed_config=fixed_config,
|
|
665
|
+
goal_type="tight",
|
|
666
|
+
num_change_requests=num_change_requests,
|
|
667
|
+
level=level,
|
|
668
|
+
)
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
class TwoChangesWideScheduleTightUniformRiskChangeRequestSchedulingTask(
|
|
672
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
673
|
+
):
|
|
674
|
+
def __init__(
|
|
675
|
+
self,
|
|
676
|
+
seed: int,
|
|
677
|
+
instance: SNowInstance = None,
|
|
678
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
679
|
+
num_change_requests: int = 2,
|
|
680
|
+
level: int = 2,
|
|
681
|
+
) -> None:
|
|
682
|
+
super().__init__(
|
|
683
|
+
seed=seed,
|
|
684
|
+
instance=instance,
|
|
685
|
+
fixed_config=fixed_config,
|
|
686
|
+
goal_type="tight",
|
|
687
|
+
wide_schedule=True,
|
|
688
|
+
num_change_requests=num_change_requests,
|
|
689
|
+
level=level,
|
|
690
|
+
)
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
class TwoChangesFixTightUniformRiskChangeRequestSchedulingTask(
|
|
694
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
695
|
+
):
|
|
696
|
+
def __init__(
|
|
697
|
+
self,
|
|
698
|
+
seed: int,
|
|
699
|
+
instance: SNowInstance = None,
|
|
700
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
701
|
+
num_change_requests: int = 2,
|
|
702
|
+
level: int = 2,
|
|
703
|
+
) -> None:
|
|
704
|
+
super().__init__(
|
|
705
|
+
seed=seed,
|
|
706
|
+
instance=instance,
|
|
707
|
+
fixed_config=fixed_config,
|
|
708
|
+
goal_type="tight",
|
|
709
|
+
num_change_requests=num_change_requests,
|
|
710
|
+
pre_existing_schedule=True,
|
|
711
|
+
level=level,
|
|
712
|
+
)
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
class TwoChangesFixWideScheduleTightUniformRiskChangeRequestSchedulingTask(
|
|
716
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
717
|
+
):
|
|
718
|
+
def __init__(
|
|
719
|
+
self,
|
|
720
|
+
seed: int,
|
|
721
|
+
instance: SNowInstance = None,
|
|
722
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
723
|
+
num_change_requests: int = 2,
|
|
724
|
+
level: int = 2,
|
|
725
|
+
) -> None:
|
|
726
|
+
super().__init__(
|
|
727
|
+
seed=seed,
|
|
728
|
+
instance=instance,
|
|
729
|
+
fixed_config=fixed_config,
|
|
730
|
+
goal_type="tight",
|
|
731
|
+
wide_schedule=True,
|
|
732
|
+
num_change_requests=num_change_requests,
|
|
733
|
+
pre_existing_schedule=True,
|
|
734
|
+
level=level,
|
|
735
|
+
)
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
class TwoChangesTightPriorityVariedRiskChangeRequestSchedulingTask(
|
|
739
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
740
|
+
):
|
|
741
|
+
def __init__(
|
|
742
|
+
self,
|
|
743
|
+
seed: int,
|
|
744
|
+
instance: SNowInstance = None,
|
|
745
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
746
|
+
num_change_requests: int = 2,
|
|
747
|
+
level: int = 2,
|
|
748
|
+
) -> None:
|
|
749
|
+
super().__init__(
|
|
750
|
+
seed=seed,
|
|
751
|
+
instance=instance,
|
|
752
|
+
fixed_config=fixed_config,
|
|
753
|
+
goal_type="tight priority",
|
|
754
|
+
uniform_risk=False,
|
|
755
|
+
num_change_requests=num_change_requests,
|
|
756
|
+
level=level,
|
|
757
|
+
)
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
class TwoChangesWideTightPriorityVariedRiskChangeRequestSchedulingTask(
|
|
761
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
762
|
+
):
|
|
763
|
+
def __init__(
|
|
764
|
+
self,
|
|
765
|
+
seed: int,
|
|
766
|
+
instance: SNowInstance = None,
|
|
767
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
768
|
+
num_change_requests: int = 2,
|
|
769
|
+
level: int = 2,
|
|
770
|
+
) -> None:
|
|
771
|
+
super().__init__(
|
|
772
|
+
seed=seed,
|
|
773
|
+
instance=instance,
|
|
774
|
+
fixed_config=fixed_config,
|
|
775
|
+
goal_type="tight priority",
|
|
776
|
+
wide_schedule=True,
|
|
777
|
+
uniform_risk=False,
|
|
778
|
+
num_change_requests=num_change_requests,
|
|
779
|
+
level=level,
|
|
780
|
+
)
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
class TwoChangesFixTightPriorityVariedRiskChangeRequestSchedulingTask(
|
|
784
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
785
|
+
):
|
|
786
|
+
def __init__(
|
|
787
|
+
self,
|
|
788
|
+
seed: int,
|
|
789
|
+
instance: SNowInstance = None,
|
|
790
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
791
|
+
num_change_requests: int = 2,
|
|
792
|
+
level: int = 2,
|
|
793
|
+
) -> None:
|
|
794
|
+
super().__init__(
|
|
795
|
+
seed=seed,
|
|
796
|
+
instance=instance,
|
|
797
|
+
fixed_config=fixed_config,
|
|
798
|
+
goal_type="tight priority",
|
|
799
|
+
uniform_risk=False,
|
|
800
|
+
num_change_requests=num_change_requests,
|
|
801
|
+
pre_existing_schedule=True,
|
|
802
|
+
level=level,
|
|
803
|
+
)
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
class TwoChangesFixWideTightPriorityVariedRiskChangeRequestSchedulingTask(
|
|
807
|
+
ManageChangeRequestScheduleTask, HumanEvalTask
|
|
808
|
+
):
|
|
809
|
+
def __init__(
|
|
810
|
+
self,
|
|
811
|
+
seed: int,
|
|
812
|
+
instance: SNowInstance = None,
|
|
813
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
814
|
+
num_change_requests: int = 2,
|
|
815
|
+
level: int = 2,
|
|
816
|
+
) -> None:
|
|
817
|
+
super().__init__(
|
|
818
|
+
seed=seed,
|
|
819
|
+
instance=instance,
|
|
820
|
+
fixed_config=fixed_config,
|
|
821
|
+
goal_type="tight priority",
|
|
822
|
+
uniform_risk=False,
|
|
823
|
+
wide_schedule=True,
|
|
824
|
+
num_change_requests=num_change_requests,
|
|
825
|
+
pre_existing_schedule=True,
|
|
826
|
+
level=level,
|
|
827
|
+
)
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
class ThreeChangesBasicUniformRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
831
|
+
def __init__(
|
|
832
|
+
self,
|
|
833
|
+
seed: int,
|
|
834
|
+
instance: SNowInstance = None,
|
|
835
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
836
|
+
num_change_requests: int = 3,
|
|
837
|
+
level: int = 2,
|
|
838
|
+
) -> None:
|
|
839
|
+
super().__init__(
|
|
840
|
+
seed=seed,
|
|
841
|
+
instance=instance,
|
|
842
|
+
fixed_config=fixed_config,
|
|
843
|
+
goal_type="base",
|
|
844
|
+
num_change_requests=num_change_requests,
|
|
845
|
+
level=level,
|
|
846
|
+
)
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
class ThreeChangesWideBasicUniformRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
850
|
+
def __init__(
|
|
851
|
+
self,
|
|
852
|
+
seed: int,
|
|
853
|
+
instance: SNowInstance = None,
|
|
854
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
855
|
+
num_change_requests: int = 3,
|
|
856
|
+
level: int = 2,
|
|
857
|
+
) -> None:
|
|
858
|
+
super().__init__(
|
|
859
|
+
seed=seed,
|
|
860
|
+
instance=instance,
|
|
861
|
+
fixed_config=fixed_config,
|
|
862
|
+
goal_type="base",
|
|
863
|
+
wide_schedule=True,
|
|
864
|
+
num_change_requests=num_change_requests,
|
|
865
|
+
level=level,
|
|
866
|
+
)
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
class ThreeChangesFixBasicUniformRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
870
|
+
def __init__(
|
|
871
|
+
self,
|
|
872
|
+
seed: int,
|
|
873
|
+
instance: SNowInstance = None,
|
|
874
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
875
|
+
num_change_requests: int = 3,
|
|
876
|
+
level: int = 2,
|
|
877
|
+
) -> None:
|
|
878
|
+
super().__init__(
|
|
879
|
+
seed=seed,
|
|
880
|
+
instance=instance,
|
|
881
|
+
fixed_config=fixed_config,
|
|
882
|
+
goal_type="base",
|
|
883
|
+
num_change_requests=num_change_requests,
|
|
884
|
+
pre_existing_schedule=True,
|
|
885
|
+
level=level,
|
|
886
|
+
)
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
class ThreeChangesFixWideBasicUniformRiskChangeRequestSchedulingTask(
|
|
890
|
+
ManageChangeRequestScheduleTask
|
|
891
|
+
):
|
|
892
|
+
def __init__(
|
|
893
|
+
self,
|
|
894
|
+
seed: int,
|
|
895
|
+
instance: SNowInstance = None,
|
|
896
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
897
|
+
num_change_requests: int = 3,
|
|
898
|
+
level: int = 2,
|
|
899
|
+
) -> None:
|
|
900
|
+
super().__init__(
|
|
901
|
+
seed=seed,
|
|
902
|
+
instance=instance,
|
|
903
|
+
fixed_config=fixed_config,
|
|
904
|
+
goal_type="base",
|
|
905
|
+
wide_schedule=True,
|
|
906
|
+
num_change_requests=num_change_requests,
|
|
907
|
+
pre_existing_schedule=True,
|
|
908
|
+
level=level,
|
|
909
|
+
)
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
class ThreeChangesBasicVariedRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
913
|
+
def __init__(
|
|
914
|
+
self,
|
|
915
|
+
seed: int,
|
|
916
|
+
instance: SNowInstance = None,
|
|
917
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
918
|
+
num_change_requests: int = 3,
|
|
919
|
+
level: int = 2,
|
|
920
|
+
) -> None:
|
|
921
|
+
super().__init__(
|
|
922
|
+
seed=seed,
|
|
923
|
+
instance=instance,
|
|
924
|
+
fixed_config=fixed_config,
|
|
925
|
+
goal_type="base",
|
|
926
|
+
uniform_risk=False,
|
|
927
|
+
num_change_requests=num_change_requests,
|
|
928
|
+
level=level,
|
|
929
|
+
)
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
class ThreeChangesWideBasicVariedRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
933
|
+
def __init__(
|
|
934
|
+
self,
|
|
935
|
+
seed: int,
|
|
936
|
+
instance: SNowInstance = None,
|
|
937
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
938
|
+
num_change_requests: int = 3,
|
|
939
|
+
level: int = 2,
|
|
940
|
+
) -> None:
|
|
941
|
+
super().__init__(
|
|
942
|
+
seed=seed,
|
|
943
|
+
instance=instance,
|
|
944
|
+
fixed_config=fixed_config,
|
|
945
|
+
goal_type="base",
|
|
946
|
+
wide_schedule=True,
|
|
947
|
+
uniform_risk=False,
|
|
948
|
+
num_change_requests=num_change_requests,
|
|
949
|
+
level=level,
|
|
950
|
+
)
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
class ThreeChangesFixBasicVariedRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
954
|
+
def __init__(
|
|
955
|
+
self,
|
|
956
|
+
seed: int,
|
|
957
|
+
instance: SNowInstance = None,
|
|
958
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
959
|
+
num_change_requests: int = 3,
|
|
960
|
+
level: int = 2,
|
|
961
|
+
) -> None:
|
|
962
|
+
super().__init__(
|
|
963
|
+
seed=seed,
|
|
964
|
+
instance=instance,
|
|
965
|
+
fixed_config=fixed_config,
|
|
966
|
+
goal_type="base",
|
|
967
|
+
uniform_risk=False,
|
|
968
|
+
num_change_requests=num_change_requests,
|
|
969
|
+
pre_existing_schedule=True,
|
|
970
|
+
level=level,
|
|
971
|
+
)
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
class ThreeChangesFixWideBasicVariedRiskChangeRequestSchedulingTask(
|
|
975
|
+
ManageChangeRequestScheduleTask
|
|
976
|
+
):
|
|
977
|
+
def __init__(
|
|
978
|
+
self,
|
|
979
|
+
seed: int,
|
|
980
|
+
instance: SNowInstance = None,
|
|
981
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
982
|
+
num_change_requests: int = 3,
|
|
983
|
+
level: int = 2,
|
|
984
|
+
) -> None:
|
|
985
|
+
super().__init__(
|
|
986
|
+
seed=seed,
|
|
987
|
+
instance=instance,
|
|
988
|
+
fixed_config=fixed_config,
|
|
989
|
+
goal_type="base",
|
|
990
|
+
wide_schedule=True,
|
|
991
|
+
uniform_risk=False,
|
|
992
|
+
num_change_requests=num_change_requests,
|
|
993
|
+
pre_existing_schedule=True,
|
|
994
|
+
level=level,
|
|
995
|
+
)
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
class ThreeChangesPriorityUniformRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
999
|
+
def __init__(
|
|
1000
|
+
self,
|
|
1001
|
+
seed: int,
|
|
1002
|
+
instance: SNowInstance = None,
|
|
1003
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1004
|
+
num_change_requests: int = 3,
|
|
1005
|
+
level: int = 2,
|
|
1006
|
+
) -> None:
|
|
1007
|
+
super().__init__(
|
|
1008
|
+
seed=seed,
|
|
1009
|
+
instance=instance,
|
|
1010
|
+
fixed_config=fixed_config,
|
|
1011
|
+
goal_type="priority",
|
|
1012
|
+
num_change_requests=num_change_requests,
|
|
1013
|
+
level=level,
|
|
1014
|
+
)
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
class ThreeChangesWidePriorityUniformRiskChangeRequestSchedulingTask(
|
|
1018
|
+
ManageChangeRequestScheduleTask
|
|
1019
|
+
):
|
|
1020
|
+
def __init__(
|
|
1021
|
+
self,
|
|
1022
|
+
seed: int,
|
|
1023
|
+
instance: SNowInstance = None,
|
|
1024
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1025
|
+
num_change_requests: int = 3,
|
|
1026
|
+
level: int = 2,
|
|
1027
|
+
) -> None:
|
|
1028
|
+
super().__init__(
|
|
1029
|
+
seed=seed,
|
|
1030
|
+
instance=instance,
|
|
1031
|
+
fixed_config=fixed_config,
|
|
1032
|
+
goal_type="priority",
|
|
1033
|
+
wide_schedule=True,
|
|
1034
|
+
num_change_requests=num_change_requests,
|
|
1035
|
+
level=level,
|
|
1036
|
+
)
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
class ThreeChangesFixPriorityUniformRiskChangeRequestSchedulingTask(
|
|
1040
|
+
ManageChangeRequestScheduleTask
|
|
1041
|
+
):
|
|
1042
|
+
def __init__(
|
|
1043
|
+
self,
|
|
1044
|
+
seed: int,
|
|
1045
|
+
instance: SNowInstance = None,
|
|
1046
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1047
|
+
num_change_requests: int = 3,
|
|
1048
|
+
level: int = 2,
|
|
1049
|
+
) -> None:
|
|
1050
|
+
super().__init__(
|
|
1051
|
+
seed=seed,
|
|
1052
|
+
instance=instance,
|
|
1053
|
+
fixed_config=fixed_config,
|
|
1054
|
+
goal_type="priority",
|
|
1055
|
+
num_change_requests=num_change_requests,
|
|
1056
|
+
pre_existing_schedule=True,
|
|
1057
|
+
level=level,
|
|
1058
|
+
)
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
class ThreeChangesFixWidePriorityUniformRiskChangeRequestSchedulingTask(
|
|
1062
|
+
ManageChangeRequestScheduleTask
|
|
1063
|
+
):
|
|
1064
|
+
def __init__(
|
|
1065
|
+
self,
|
|
1066
|
+
seed: int,
|
|
1067
|
+
instance: SNowInstance = None,
|
|
1068
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1069
|
+
num_change_requests: int = 3,
|
|
1070
|
+
level: int = 2,
|
|
1071
|
+
) -> None:
|
|
1072
|
+
super().__init__(
|
|
1073
|
+
seed=seed,
|
|
1074
|
+
instance=instance,
|
|
1075
|
+
fixed_config=fixed_config,
|
|
1076
|
+
goal_type="priority",
|
|
1077
|
+
wide_schedule=True,
|
|
1078
|
+
num_change_requests=num_change_requests,
|
|
1079
|
+
pre_existing_schedule=True,
|
|
1080
|
+
level=level,
|
|
1081
|
+
)
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
class ThreeChangesPriorityVariedRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
1085
|
+
def __init__(
|
|
1086
|
+
self,
|
|
1087
|
+
seed: int,
|
|
1088
|
+
instance: SNowInstance = None,
|
|
1089
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1090
|
+
num_change_requests: int = 3,
|
|
1091
|
+
level: int = 2,
|
|
1092
|
+
) -> None:
|
|
1093
|
+
super().__init__(
|
|
1094
|
+
seed=seed,
|
|
1095
|
+
instance=instance,
|
|
1096
|
+
fixed_config=fixed_config,
|
|
1097
|
+
goal_type="priority",
|
|
1098
|
+
uniform_risk=False,
|
|
1099
|
+
num_change_requests=num_change_requests,
|
|
1100
|
+
level=level,
|
|
1101
|
+
)
|
|
1102
|
+
|
|
1103
|
+
|
|
1104
|
+
class ThreeChangesWidePriorityVariedRiskChangeRequestSchedulingTask(
|
|
1105
|
+
ManageChangeRequestScheduleTask
|
|
1106
|
+
):
|
|
1107
|
+
def __init__(
|
|
1108
|
+
self,
|
|
1109
|
+
seed: int,
|
|
1110
|
+
instance: SNowInstance = None,
|
|
1111
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1112
|
+
num_change_requests: int = 3,
|
|
1113
|
+
level: int = 2,
|
|
1114
|
+
) -> None:
|
|
1115
|
+
super().__init__(
|
|
1116
|
+
seed=seed,
|
|
1117
|
+
instance=instance,
|
|
1118
|
+
fixed_config=fixed_config,
|
|
1119
|
+
goal_type="priority",
|
|
1120
|
+
wide_schedule=True,
|
|
1121
|
+
uniform_risk=False,
|
|
1122
|
+
num_change_requests=num_change_requests,
|
|
1123
|
+
level=level,
|
|
1124
|
+
)
|
|
1125
|
+
|
|
1126
|
+
|
|
1127
|
+
class ThreeChangesFixPriorityVariedRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
1128
|
+
def __init__(
|
|
1129
|
+
self,
|
|
1130
|
+
seed: int,
|
|
1131
|
+
instance: SNowInstance = None,
|
|
1132
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1133
|
+
num_change_requests: int = 3,
|
|
1134
|
+
level: int = 2,
|
|
1135
|
+
) -> None:
|
|
1136
|
+
super().__init__(
|
|
1137
|
+
seed=seed,
|
|
1138
|
+
instance=instance,
|
|
1139
|
+
fixed_config=fixed_config,
|
|
1140
|
+
goal_type="priority",
|
|
1141
|
+
uniform_risk=False,
|
|
1142
|
+
num_change_requests=num_change_requests,
|
|
1143
|
+
pre_existing_schedule=True,
|
|
1144
|
+
level=level,
|
|
1145
|
+
)
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
class ThreeChangesFixWidePriorityVariedRiskChangeRequestSchedulingTask(
|
|
1149
|
+
ManageChangeRequestScheduleTask
|
|
1150
|
+
):
|
|
1151
|
+
def __init__(
|
|
1152
|
+
self,
|
|
1153
|
+
seed: int,
|
|
1154
|
+
instance: SNowInstance = None,
|
|
1155
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1156
|
+
num_change_requests: int = 3,
|
|
1157
|
+
level: int = 2,
|
|
1158
|
+
) -> None:
|
|
1159
|
+
super().__init__(
|
|
1160
|
+
seed=seed,
|
|
1161
|
+
instance=instance,
|
|
1162
|
+
fixed_config=fixed_config,
|
|
1163
|
+
goal_type="priority",
|
|
1164
|
+
wide_schedule=True,
|
|
1165
|
+
uniform_risk=False,
|
|
1166
|
+
num_change_requests=num_change_requests,
|
|
1167
|
+
pre_existing_schedule=True,
|
|
1168
|
+
level=level,
|
|
1169
|
+
)
|
|
1170
|
+
|
|
1171
|
+
|
|
1172
|
+
class ThreeChangesTightUniformRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
1173
|
+
def __init__(
|
|
1174
|
+
self,
|
|
1175
|
+
seed: int,
|
|
1176
|
+
instance: SNowInstance = None,
|
|
1177
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1178
|
+
num_change_requests: int = 3,
|
|
1179
|
+
level: int = 2,
|
|
1180
|
+
) -> None:
|
|
1181
|
+
super().__init__(
|
|
1182
|
+
seed=seed,
|
|
1183
|
+
instance=instance,
|
|
1184
|
+
fixed_config=fixed_config,
|
|
1185
|
+
goal_type="tight",
|
|
1186
|
+
num_change_requests=num_change_requests,
|
|
1187
|
+
level=level,
|
|
1188
|
+
)
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
class ThreeChangesWideScheduleTightUniformRiskChangeRequestSchedulingTask(
|
|
1192
|
+
ManageChangeRequestScheduleTask
|
|
1193
|
+
):
|
|
1194
|
+
def __init__(
|
|
1195
|
+
self,
|
|
1196
|
+
seed: int,
|
|
1197
|
+
instance: SNowInstance = None,
|
|
1198
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1199
|
+
num_change_requests: int = 3,
|
|
1200
|
+
level: int = 2,
|
|
1201
|
+
) -> None:
|
|
1202
|
+
super().__init__(
|
|
1203
|
+
seed=seed,
|
|
1204
|
+
instance=instance,
|
|
1205
|
+
fixed_config=fixed_config,
|
|
1206
|
+
goal_type="tight",
|
|
1207
|
+
wide_schedule=True,
|
|
1208
|
+
num_change_requests=num_change_requests,
|
|
1209
|
+
level=level,
|
|
1210
|
+
)
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
class ThreeChangesFixTightUniformRiskChangeRequestSchedulingTask(ManageChangeRequestScheduleTask):
|
|
1214
|
+
def __init__(
|
|
1215
|
+
self,
|
|
1216
|
+
seed: int,
|
|
1217
|
+
instance: SNowInstance = None,
|
|
1218
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1219
|
+
num_change_requests: int = 3,
|
|
1220
|
+
level: int = 2,
|
|
1221
|
+
) -> None:
|
|
1222
|
+
super().__init__(
|
|
1223
|
+
seed=seed,
|
|
1224
|
+
instance=instance,
|
|
1225
|
+
fixed_config=fixed_config,
|
|
1226
|
+
goal_type="tight",
|
|
1227
|
+
num_change_requests=num_change_requests,
|
|
1228
|
+
pre_existing_schedule=True,
|
|
1229
|
+
level=level,
|
|
1230
|
+
)
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
class ThreeChangesFixWideScheduleTightUniformRiskChangeRequestSchedulingTask(
|
|
1234
|
+
ManageChangeRequestScheduleTask
|
|
1235
|
+
):
|
|
1236
|
+
def __init__(
|
|
1237
|
+
self,
|
|
1238
|
+
seed: int,
|
|
1239
|
+
instance: SNowInstance = None,
|
|
1240
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1241
|
+
num_change_requests: int = 3,
|
|
1242
|
+
level: int = 2,
|
|
1243
|
+
) -> None:
|
|
1244
|
+
super().__init__(
|
|
1245
|
+
seed=seed,
|
|
1246
|
+
instance=instance,
|
|
1247
|
+
fixed_config=fixed_config,
|
|
1248
|
+
goal_type="tight",
|
|
1249
|
+
wide_schedule=True,
|
|
1250
|
+
num_change_requests=num_change_requests,
|
|
1251
|
+
pre_existing_schedule=True,
|
|
1252
|
+
level=level,
|
|
1253
|
+
)
|
|
1254
|
+
|
|
1255
|
+
|
|
1256
|
+
class ThreeChangesTightPriorityVariedRiskChangeRequestSchedulingTask(
|
|
1257
|
+
ManageChangeRequestScheduleTask
|
|
1258
|
+
):
|
|
1259
|
+
def __init__(
|
|
1260
|
+
self,
|
|
1261
|
+
seed: int,
|
|
1262
|
+
instance: SNowInstance = None,
|
|
1263
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1264
|
+
num_change_requests: int = 3,
|
|
1265
|
+
level: int = 2,
|
|
1266
|
+
) -> None:
|
|
1267
|
+
super().__init__(
|
|
1268
|
+
seed=seed,
|
|
1269
|
+
instance=instance,
|
|
1270
|
+
fixed_config=fixed_config,
|
|
1271
|
+
goal_type="tight priority",
|
|
1272
|
+
uniform_risk=False,
|
|
1273
|
+
num_change_requests=num_change_requests,
|
|
1274
|
+
level=level,
|
|
1275
|
+
)
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
class ThreeChangesWideTightPriorityVariedRiskChangeRequestSchedulingTask(
|
|
1279
|
+
ManageChangeRequestScheduleTask
|
|
1280
|
+
):
|
|
1281
|
+
def __init__(
|
|
1282
|
+
self,
|
|
1283
|
+
seed: int,
|
|
1284
|
+
instance: SNowInstance = None,
|
|
1285
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1286
|
+
num_change_requests: int = 3,
|
|
1287
|
+
level: int = 2,
|
|
1288
|
+
) -> None:
|
|
1289
|
+
super().__init__(
|
|
1290
|
+
seed=seed,
|
|
1291
|
+
instance=instance,
|
|
1292
|
+
fixed_config=fixed_config,
|
|
1293
|
+
goal_type="tight priority",
|
|
1294
|
+
wide_schedule=True,
|
|
1295
|
+
uniform_risk=False,
|
|
1296
|
+
num_change_requests=num_change_requests,
|
|
1297
|
+
level=level,
|
|
1298
|
+
)
|
|
1299
|
+
|
|
1300
|
+
|
|
1301
|
+
class ThreeChangesFixTightPriorityVariedRiskChangeRequestSchedulingTask(
|
|
1302
|
+
ManageChangeRequestScheduleTask
|
|
1303
|
+
):
|
|
1304
|
+
def __init__(
|
|
1305
|
+
self,
|
|
1306
|
+
seed: int,
|
|
1307
|
+
instance: SNowInstance = None,
|
|
1308
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1309
|
+
num_change_requests: int = 3,
|
|
1310
|
+
level: int = 2,
|
|
1311
|
+
) -> None:
|
|
1312
|
+
super().__init__(
|
|
1313
|
+
seed=seed,
|
|
1314
|
+
instance=instance,
|
|
1315
|
+
fixed_config=fixed_config,
|
|
1316
|
+
goal_type="tight priority",
|
|
1317
|
+
uniform_risk=False,
|
|
1318
|
+
num_change_requests=num_change_requests,
|
|
1319
|
+
pre_existing_schedule=True,
|
|
1320
|
+
level=level,
|
|
1321
|
+
)
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
class ThreeChangesFixWideTightPriorityVariedRiskChangeRequestSchedulingTask(
|
|
1325
|
+
ManageChangeRequestScheduleTask
|
|
1326
|
+
):
|
|
1327
|
+
def __init__(
|
|
1328
|
+
self,
|
|
1329
|
+
seed: int,
|
|
1330
|
+
instance: SNowInstance = None,
|
|
1331
|
+
fixed_config: List[AbstractServiceNowTask] = None,
|
|
1332
|
+
num_change_requests: int = 3,
|
|
1333
|
+
level: int = 2,
|
|
1334
|
+
) -> None:
|
|
1335
|
+
super().__init__(
|
|
1336
|
+
seed=seed,
|
|
1337
|
+
instance=instance,
|
|
1338
|
+
fixed_config=fixed_config,
|
|
1339
|
+
goal_type="tight priority",
|
|
1340
|
+
uniform_risk=False,
|
|
1341
|
+
wide_schedule=True,
|
|
1342
|
+
num_change_requests=num_change_requests,
|
|
1343
|
+
pre_existing_schedule=True,
|
|
1344
|
+
level=level,
|
|
1345
|
+
)
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
local_vars = locals().copy()
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
SMALL_BASE_SCHEDULING_TASKS = [
|
|
1352
|
+
TwoChangesBasicUniformRiskChangeRequestSchedulingTask,
|
|
1353
|
+
TwoChangesWideBasicUniformRiskChangeRequestSchedulingTask,
|
|
1354
|
+
TwoChangesFixBasicUniformRiskChangeRequestSchedulingTask,
|
|
1355
|
+
TwoChangesFixWideBasicUniformRiskChangeRequestSchedulingTask,
|
|
1356
|
+
TwoChangesBasicVariedRiskChangeRequestSchedulingTask,
|
|
1357
|
+
TwoChangesWideBasicVariedRiskChangeRequestSchedulingTask,
|
|
1358
|
+
TwoChangesFixBasicVariedRiskChangeRequestSchedulingTask,
|
|
1359
|
+
TwoChangesFixWideBasicVariedRiskChangeRequestSchedulingTask,
|
|
1360
|
+
]
|
|
1361
|
+
SMALL_TIGHT_SCHEDULING_TASKS = [
|
|
1362
|
+
TwoChangesPriorityUniformRiskChangeRequestSchedulingTask,
|
|
1363
|
+
TwoChangesWidePriorityUniformRiskChangeRequestSchedulingTask,
|
|
1364
|
+
TwoChangesFixPriorityUniformRiskChangeRequestSchedulingTask,
|
|
1365
|
+
TwoChangesFixWidePriorityUniformRiskChangeRequestSchedulingTask,
|
|
1366
|
+
TwoChangesPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1367
|
+
TwoChangesWidePriorityVariedRiskChangeRequestSchedulingTask,
|
|
1368
|
+
TwoChangesFixPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1369
|
+
TwoChangesFixWidePriorityVariedRiskChangeRequestSchedulingTask,
|
|
1370
|
+
TwoChangesTightUniformRiskChangeRequestSchedulingTask,
|
|
1371
|
+
TwoChangesWideScheduleTightUniformRiskChangeRequestSchedulingTask,
|
|
1372
|
+
TwoChangesFixTightUniformRiskChangeRequestSchedulingTask,
|
|
1373
|
+
TwoChangesFixWideScheduleTightUniformRiskChangeRequestSchedulingTask,
|
|
1374
|
+
TwoChangesTightPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1375
|
+
TwoChangesWideTightPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1376
|
+
TwoChangesFixTightPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1377
|
+
TwoChangesFixWideTightPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1378
|
+
]
|
|
1379
|
+
|
|
1380
|
+
LARGE_BASE_SCHEDULING_TASKS = [
|
|
1381
|
+
ThreeChangesBasicUniformRiskChangeRequestSchedulingTask,
|
|
1382
|
+
ThreeChangesWideBasicUniformRiskChangeRequestSchedulingTask,
|
|
1383
|
+
ThreeChangesFixBasicUniformRiskChangeRequestSchedulingTask,
|
|
1384
|
+
ThreeChangesFixWideBasicUniformRiskChangeRequestSchedulingTask,
|
|
1385
|
+
ThreeChangesBasicVariedRiskChangeRequestSchedulingTask,
|
|
1386
|
+
ThreeChangesWideBasicVariedRiskChangeRequestSchedulingTask,
|
|
1387
|
+
ThreeChangesFixBasicVariedRiskChangeRequestSchedulingTask,
|
|
1388
|
+
ThreeChangesFixWideBasicVariedRiskChangeRequestSchedulingTask,
|
|
1389
|
+
]
|
|
1390
|
+
|
|
1391
|
+
LARGE_TIGHT_SCHEDULING_TASKS = [
|
|
1392
|
+
ThreeChangesPriorityUniformRiskChangeRequestSchedulingTask,
|
|
1393
|
+
ThreeChangesWidePriorityUniformRiskChangeRequestSchedulingTask,
|
|
1394
|
+
ThreeChangesFixPriorityUniformRiskChangeRequestSchedulingTask,
|
|
1395
|
+
ThreeChangesFixWidePriorityUniformRiskChangeRequestSchedulingTask,
|
|
1396
|
+
ThreeChangesPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1397
|
+
ThreeChangesWidePriorityVariedRiskChangeRequestSchedulingTask,
|
|
1398
|
+
ThreeChangesFixPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1399
|
+
ThreeChangesFixWidePriorityVariedRiskChangeRequestSchedulingTask,
|
|
1400
|
+
ThreeChangesTightUniformRiskChangeRequestSchedulingTask,
|
|
1401
|
+
ThreeChangesWideScheduleTightUniformRiskChangeRequestSchedulingTask,
|
|
1402
|
+
ThreeChangesFixTightUniformRiskChangeRequestSchedulingTask,
|
|
1403
|
+
ThreeChangesFixWideScheduleTightUniformRiskChangeRequestSchedulingTask,
|
|
1404
|
+
ThreeChangesTightPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1405
|
+
ThreeChangesWideTightPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1406
|
+
ThreeChangesFixTightPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1407
|
+
ThreeChangesFixWideTightPriorityVariedRiskChangeRequestSchedulingTask,
|
|
1408
|
+
]
|
|
1409
|
+
|
|
1410
|
+
__TASKS__ = [
|
|
1411
|
+
var
|
|
1412
|
+
for var in local_vars.values()
|
|
1413
|
+
if isinstance(var, type)
|
|
1414
|
+
and issubclass(var, FilterAndDoTask)
|
|
1415
|
+
and var is not FilterAndDoTask
|
|
1416
|
+
and var is not ManageChangeRequestScheduleTask
|
|
1417
|
+
]
|