Skip to content

Commit c4358c4

Browse files
committed
Include due dates in projects - modified MPLIB
1 parent e1e31b3 commit c4358c4

4 files changed

Lines changed: 432 additions & 2 deletions

File tree

psplib/ProjectInstance.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,13 @@ class Project:
9494
The activities indices that belong to this project.
9595
release_date
9696
The earliest start time of this project.
97+
due_date
98+
The due date of this project, if available. Default is ``None``.
9799
"""
98100

99101
activities: list[int]
100102
release_date: int = 0
103+
due_date: Optional[int] = None
101104

102105
@property
103106
def num_activities(self):

psplib/parse_mplib.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,20 @@ def parse_mplib(loc: Union[str, Path]) -> ProjectInstance:
3333
id2idx: dict[str, int] = {} # maps activity names to idcs
3434

3535
for project_idx in range(1, num_projects + 1):
36-
num_activities, release_date = map(int, next(lines).split())
36+
project_data = list(map(int, next(lines).split()))
37+
38+
if len(project_data) == 3:
39+
# Modified MPLIB instances that include due date.
40+
num_activities, release_date, due_date = project_data
41+
else:
42+
# Original MPLIB instances do not include due date.
43+
num_activities, release_date = project_data
44+
due_date = None
45+
3746
next(lines) # denotes used resources, implies that demand > 0
3847

3948
idcs = [len(activities) + idx for idx in range(num_activities)]
40-
projects.append(Project(idcs, release_date))
49+
projects.append(Project(idcs, release_date, due_date))
4150

4251
for activity_idx in range(1, num_activities + 1):
4352
line = next(lines).split()

0 commit comments

Comments
 (0)