job-shop-lib 1.6.0__tar.gz → 1.6.1__tar.gz
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.
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/PKG-INFO +2 -3
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/__init__.py +1 -1
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/_schedule.py +13 -4
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/pyproject.toml +2 -5
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/LICENSE +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/README.md +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/_base_solver.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/_job_shop_instance.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/_operation.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/_scheduled_operation.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/benchmarking/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/benchmarking/_load_benchmark.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/benchmarking/benchmark_instances.json +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/constraint_programming/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/constraint_programming/_ortools_solver.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_dispatcher.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_dispatcher_observer_config.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_factories.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_history_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_optimal_operations_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_ready_operation_filters.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_start_time_calculators.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_unscheduled_operations_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_composite_feature_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_dates_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_duration_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_earliest_start_time_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_factory.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_feature_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_is_completed_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_is_ready_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_is_scheduled_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_position_in_job_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_remaining_operations_observer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/rules/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/rules/_dispatching_rule_factory.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/rules/_dispatching_rule_solver.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/rules/_dispatching_rules_functions.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/rules/_machine_chooser_factory.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/rules/_utils.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/exceptions.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/generation/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/generation/_general_instance_generator.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/generation/_instance_generator.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/generation/_utils.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/_build_disjunctive_graph.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/_build_resource_task_graphs.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/_constants.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/_job_shop_graph.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/_node.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/graph_updaters/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/graph_updaters/_disjunctive_graph_updater.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/graph_updaters/_graph_updater.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/graph_updaters/_residual_graph_updater.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/graph_updaters/_utils.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/metaheuristics/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/metaheuristics/_job_shop_annealer.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/metaheuristics/_neighbor_generators.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/metaheuristics/_objective_functions.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/metaheuristics/_simulated_annealing_solver.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/py.typed +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/reinforcement_learning/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/reinforcement_learning/_multi_job_shop_graph_env.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/reinforcement_learning/_resource_task_graph_observation.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/reinforcement_learning/_reward_observers.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/reinforcement_learning/_single_job_shop_graph_env.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/reinforcement_learning/_types_and_constants.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/reinforcement_learning/_utils.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/gantt/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/gantt/_gantt_chart_creator.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/gantt/_gantt_chart_video_and_gif_creation.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/gantt/_plot_gantt_chart.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/graphs/__init__.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/graphs/_plot_disjunctive_graph.py +0 -0
- {job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/graphs/_plot_resource_task_graph.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: job-shop-lib
|
3
|
-
Version: 1.6.
|
3
|
+
Version: 1.6.1
|
4
4
|
Summary: An easy-to-use and modular Python library for the Job Shop Scheduling Problem (JSSP)
|
5
5
|
License: MIT
|
6
6
|
Author: Pabloo22
|
@@ -17,8 +17,7 @@ Requires-Dist: imageio[ffmpeg] (>=2.34.1,<3.0.0)
|
|
17
17
|
Requires-Dist: matplotlib (>=3,<4)
|
18
18
|
Requires-Dist: networkx (>=3,<4)
|
19
19
|
Requires-Dist: numpy (>=1.26.4,<3.0.0)
|
20
|
-
Requires-Dist: ortools (>=9.9,<
|
21
|
-
Requires-Dist: ortools (>=9.9,<9.13) ; sys_platform == "darwin"
|
20
|
+
Requires-Dist: ortools (>=9.9,<9.13)
|
22
21
|
Requires-Dist: pyarrow (>=15,<21)
|
23
22
|
Requires-Dist: pygraphviz (>=1.12,<2.0) ; extra == "pygraphviz"
|
24
23
|
Requires-Dist: simanneal (>=0.5.0,<0.6.0)
|
@@ -405,10 +405,15 @@ class Schedule:
|
|
405
405
|
critical_path = deque([last_scheduled_op])
|
406
406
|
current_scheduled_op = last_scheduled_op
|
407
407
|
|
408
|
+
machine_op_index = {}
|
409
|
+
for machine_id, schedule_list in enumerate(self.schedule):
|
410
|
+
machine_op_index[machine_id] = {op: idx for idx, op in
|
411
|
+
enumerate(schedule_list)}
|
412
|
+
|
408
413
|
# 2. Trace backwards from the last operation
|
409
414
|
while True:
|
410
|
-
job_pred = None
|
411
|
-
machine_pred = None
|
415
|
+
job_pred: ScheduledOperation | None = None
|
416
|
+
machine_pred: ScheduledOperation | None = None
|
412
417
|
|
413
418
|
# Find job predecessor (the previous operation in the same job)
|
414
419
|
op_idx_in_job = current_scheduled_op.operation.position_in_job
|
@@ -423,9 +428,13 @@ class Schedule:
|
|
423
428
|
# Find machine predecessor (the previous operation on the same
|
424
429
|
# machine)
|
425
430
|
machine_schedule = self.schedule[current_scheduled_op.machine_id]
|
426
|
-
op_idx_on_machine =
|
431
|
+
op_idx_on_machine = (
|
432
|
+
machine_op_index
|
433
|
+
[current_scheduled_op.machine_id][current_scheduled_op])
|
427
434
|
if op_idx_on_machine > 0:
|
428
|
-
machine_pred = machine_schedule[
|
435
|
+
machine_pred = machine_schedule[
|
436
|
+
op_idx_on_machine - 1
|
437
|
+
]
|
429
438
|
|
430
439
|
# 3. Determine the critical predecessor
|
431
440
|
# The critical predecessor is the one that finished latest, as it
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "job-shop-lib"
|
3
|
-
version = "1.6.
|
3
|
+
version = "1.6.1"
|
4
4
|
description = "An easy-to-use and modular Python library for the Job Shop Scheduling Problem (JSSP)"
|
5
5
|
authors = ["Pabloo22 <pablete.arino@gmail.com>"]
|
6
6
|
license = "MIT"
|
@@ -10,10 +10,7 @@ include = ["job_shop_lib/benchmarking/benchmark_instances.json", "job_shop_lib/p
|
|
10
10
|
|
11
11
|
[tool.poetry.dependencies]
|
12
12
|
python = "^3.10"
|
13
|
-
ortools =
|
14
|
-
{ version = "^9.9", markers = "sys_platform != 'darwin'" },
|
15
|
-
{ version = ">=9.9,<9.13", markers = "sys_platform == 'darwin'" }
|
16
|
-
]
|
13
|
+
ortools = ">=9.9,<9.13"
|
17
14
|
matplotlib = "^3"
|
18
15
|
pyarrow = ">=15,<21" # An optional pandas' dependency that will be required in the future
|
19
16
|
networkx = "^3"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/benchmarking/benchmark_instances.json
RENAMED
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/constraint_programming/_ortools_solver.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_dispatcher_observer_config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_optimal_operations_observer.py
RENAMED
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_ready_operation_filters.py
RENAMED
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/_start_time_calculators.py
RENAMED
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/feature_observers/_factory.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/rules/_dispatching_rule_solver.py
RENAMED
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/dispatching/rules/_machine_chooser_factory.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/generation/_general_instance_generator.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/_build_resource_task_graphs.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/graphs/graph_updaters/_graph_updater.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/metaheuristics/_neighbor_generators.py
RENAMED
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/metaheuristics/_objective_functions.py
RENAMED
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/metaheuristics/_simulated_annealing_solver.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/reinforcement_learning/_reward_observers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/gantt/_gantt_chart_creator.py
RENAMED
File without changes
|
File without changes
|
{job_shop_lib-1.6.0 → job_shop_lib-1.6.1}/job_shop_lib/visualization/gantt/_plot_gantt_chart.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|