job-shop-lib 1.0.1__tar.gz → 1.0.2__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.
Files changed (73) hide show
  1. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/PKG-INFO +17 -10
  2. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/README.md +16 -9
  3. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/__init__.py +1 -1
  4. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/_job_shop_instance.py +2 -2
  5. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/benchmarking/__init__.py +1 -0
  6. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/__init__.py +12 -10
  7. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_composite_feature_observer.py +1 -1
  8. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/rules/__init__.py +11 -8
  9. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/generation/__init__.py +12 -1
  10. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/__init__.py +40 -8
  11. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/graph_updaters/__init__.py +2 -1
  12. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/reinforcement_learning/__init__.py +9 -7
  13. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/visualization/gantt/__init__.py +7 -3
  14. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/visualization/graphs/__init__.py +1 -0
  15. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/pyproject.toml +3 -10
  16. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/LICENSE +0 -0
  17. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/_base_solver.py +0 -0
  18. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/_operation.py +0 -0
  19. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/_schedule.py +0 -0
  20. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/_scheduled_operation.py +0 -0
  21. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/benchmarking/_load_benchmark.py +0 -0
  22. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/benchmarking/benchmark_instances.json +0 -0
  23. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/constraint_programming/__init__.py +0 -0
  24. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/constraint_programming/_ortools_solver.py +0 -0
  25. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/_dispatcher.py +0 -0
  26. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/_dispatcher_observer_config.py +0 -0
  27. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/_factories.py +0 -0
  28. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/_history_observer.py +0 -0
  29. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/_optimal_operations_observer.py +0 -0
  30. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/_ready_operation_filters.py +0 -0
  31. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/_unscheduled_operations_observer.py +0 -0
  32. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/__init__.py +0 -0
  33. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_duration_observer.py +0 -0
  34. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_earliest_start_time_observer.py +0 -0
  35. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_factory.py +0 -0
  36. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_feature_observer.py +0 -0
  37. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_is_completed_observer.py +0 -0
  38. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_is_ready_observer.py +0 -0
  39. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_is_scheduled_observer.py +0 -0
  40. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_position_in_job_observer.py +0 -0
  41. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/feature_observers/_remaining_operations_observer.py +0 -0
  42. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/rules/_dispatching_rule_factory.py +0 -0
  43. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/rules/_dispatching_rule_solver.py +0 -0
  44. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/rules/_dispatching_rules_functions.py +0 -0
  45. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/rules/_machine_chooser_factory.py +0 -0
  46. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/dispatching/rules/_utils.py +0 -0
  47. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/exceptions.py +0 -0
  48. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/generation/_general_instance_generator.py +0 -0
  49. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/generation/_instance_generator.py +0 -0
  50. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/generation/_transformations.py +0 -0
  51. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/generation/_utils.py +0 -0
  52. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/_build_disjunctive_graph.py +0 -0
  53. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/_build_resource_task_graphs.py +0 -0
  54. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/_constants.py +0 -0
  55. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/_job_shop_graph.py +0 -0
  56. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/_node.py +0 -0
  57. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/graph_updaters/_disjunctive_graph_updater.py +0 -0
  58. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/graph_updaters/_graph_updater.py +0 -0
  59. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/graph_updaters/_residual_graph_updater.py +0 -0
  60. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/graphs/graph_updaters/_utils.py +0 -0
  61. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/py.typed +0 -0
  62. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/reinforcement_learning/_multi_job_shop_graph_env.py +0 -0
  63. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/reinforcement_learning/_resource_task_graph_observation.py +0 -0
  64. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/reinforcement_learning/_reward_observers.py +0 -0
  65. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/reinforcement_learning/_single_job_shop_graph_env.py +0 -0
  66. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/reinforcement_learning/_types_and_constants.py +0 -0
  67. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/reinforcement_learning/_utils.py +0 -0
  68. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/visualization/__init__.py +0 -0
  69. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/visualization/gantt/_gantt_chart_creator.py +0 -0
  70. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/visualization/gantt/_gantt_chart_video_and_gif_creation.py +0 -0
  71. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/visualization/gantt/_plot_gantt_chart.py +0 -0
  72. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/job_shop_lib/visualization/graphs/_plot_disjunctive_graph.py +0 -0
  73. {job_shop_lib-1.0.1 → job_shop_lib-1.0.2}/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.0.1
3
+ Version: 1.0.2
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
@@ -40,7 +40,11 @@ JobShopLib is a Python package for creating, solving, and visualizing job shop s
40
40
 
41
41
  It follows a modular design, allowing users to easily extend the library with new solvers, dispatching rules, visualization functions, etc.
42
42
 
43
- See the [documentation](https://job-shop-lib.readthedocs.io/en/latest/) for more details about the latest version.
43
+ There is a [documentation page](https://job-shop-lib.readthedocs.io/en/stable/) for versions 1.0.0a3 and onward. See the [latest pull requests](https://github.com/Pabloo22/job_shop_lib/pulls?q=is%3Apr+is%3Aclosed) for the latest changes.
44
+
45
+ See [`gnn_scheduler`](https://github.com/Pabloo22/gnn_scheduler/blob/main/gnn_scheduler/) for an example implementation of a graph neural network-based dispatcher trained with [PyTorch Geometric](https://pyg.org/).
46
+
47
+ See [this](https://colab.research.google.com/drive/1XV_Rvq1F2ns6DFG8uNj66q_rcowwTZ4H?usp=sharing) Google Colab notebook for a quick start guide! More advanced examples can be found [here](https://job-shop-lib.readthedocs.io/en/stable/examples.html).
44
48
 
45
49
  ## Installation :package:
46
50
 
@@ -54,11 +58,6 @@ You can install the latest stable version using `pip`:
54
58
  pip install job-shop-lib
55
59
  ```
56
60
 
57
- See [this](https://colab.research.google.com/drive/1XV_Rvq1F2ns6DFG8uNj66q_rcowwTZ4H?usp=sharing) Google Colab notebook for a quick start guide!
58
-
59
-
60
- There is a [documentation page](https://job-shop-lib.readthedocs.io/en/latest/) for versions 1.0.0a3 and onward. See see the [latest pull requests](https://github.com/Pabloo22/job_shop_lib/pulls?q=is%3Apr+is%3Aclosed) for the latest changes.
61
-
62
61
  <!-- end installation -->
63
62
 
64
63
  <!-- key features -->
@@ -252,7 +251,15 @@ Additionally, the graph includes **disjunctive edges** between operations that u
252
251
  ```python
253
252
  from job_shop_lib.visualization import plot_disjunctive_graph
254
253
 
255
- fig = plot_disjunctive_graph(instance)
254
+ fig = plot_disjunctive_graph(
255
+ instance,
256
+ figsize=(6, 4),
257
+ draw_disjunctive_edges="single_edge",
258
+ disjunctive_edges_additional_params={
259
+ "arrowstyle": "<|-|>",
260
+ "connectionstyle": "arc3,rad=0.15",
261
+ },
262
+ )
256
263
  plt.show()
257
264
  ```
258
265
 
@@ -308,9 +315,9 @@ from job_shop_lib.graphs import (
308
315
  )
309
316
  from job_shop_lib.visualization import plot_resource_task_graph
310
317
 
311
- complete_resource_task_graph = build_complete_resource_task_graph(instance)
318
+ resource_task_graph = build_resource_task_graph(instance)
312
319
 
313
- fig = plot_resource_task_graph(complete_agent_task_graph)
320
+ fig = plot_resource_task_graph(resource_task_graph)
314
321
  plt.show()
315
322
  ```
316
323
 
@@ -16,7 +16,11 @@ JobShopLib is a Python package for creating, solving, and visualizing job shop s
16
16
 
17
17
  It follows a modular design, allowing users to easily extend the library with new solvers, dispatching rules, visualization functions, etc.
18
18
 
19
- See the [documentation](https://job-shop-lib.readthedocs.io/en/latest/) for more details about the latest version.
19
+ There is a [documentation page](https://job-shop-lib.readthedocs.io/en/stable/) for versions 1.0.0a3 and onward. See the [latest pull requests](https://github.com/Pabloo22/job_shop_lib/pulls?q=is%3Apr+is%3Aclosed) for the latest changes.
20
+
21
+ See [`gnn_scheduler`](https://github.com/Pabloo22/gnn_scheduler/blob/main/gnn_scheduler/) for an example implementation of a graph neural network-based dispatcher trained with [PyTorch Geometric](https://pyg.org/).
22
+
23
+ See [this](https://colab.research.google.com/drive/1XV_Rvq1F2ns6DFG8uNj66q_rcowwTZ4H?usp=sharing) Google Colab notebook for a quick start guide! More advanced examples can be found [here](https://job-shop-lib.readthedocs.io/en/stable/examples.html).
20
24
 
21
25
  ## Installation :package:
22
26
 
@@ -30,11 +34,6 @@ You can install the latest stable version using `pip`:
30
34
  pip install job-shop-lib
31
35
  ```
32
36
 
33
- See [this](https://colab.research.google.com/drive/1XV_Rvq1F2ns6DFG8uNj66q_rcowwTZ4H?usp=sharing) Google Colab notebook for a quick start guide!
34
-
35
-
36
- There is a [documentation page](https://job-shop-lib.readthedocs.io/en/latest/) for versions 1.0.0a3 and onward. See see the [latest pull requests](https://github.com/Pabloo22/job_shop_lib/pulls?q=is%3Apr+is%3Aclosed) for the latest changes.
37
-
38
37
  <!-- end installation -->
39
38
 
40
39
  <!-- key features -->
@@ -228,7 +227,15 @@ Additionally, the graph includes **disjunctive edges** between operations that u
228
227
  ```python
229
228
  from job_shop_lib.visualization import plot_disjunctive_graph
230
229
 
231
- fig = plot_disjunctive_graph(instance)
230
+ fig = plot_disjunctive_graph(
231
+ instance,
232
+ figsize=(6, 4),
233
+ draw_disjunctive_edges="single_edge",
234
+ disjunctive_edges_additional_params={
235
+ "arrowstyle": "<|-|>",
236
+ "connectionstyle": "arc3,rad=0.15",
237
+ },
238
+ )
232
239
  plt.show()
233
240
  ```
234
241
 
@@ -284,9 +291,9 @@ from job_shop_lib.graphs import (
284
291
  )
285
292
  from job_shop_lib.visualization import plot_resource_task_graph
286
293
 
287
- complete_resource_task_graph = build_complete_resource_task_graph(instance)
294
+ resource_task_graph = build_resource_task_graph(instance)
288
295
 
289
- fig = plot_resource_task_graph(complete_agent_task_graph)
296
+ fig = plot_resource_task_graph(resource_task_graph)
290
297
  plt.show()
291
298
  ```
292
299
 
@@ -19,7 +19,7 @@ from job_shop_lib._schedule import Schedule
19
19
  from job_shop_lib._base_solver import BaseSolver, Solver
20
20
 
21
21
 
22
- __version__ = "1.0.1"
22
+ __version__ = "1.0.2"
23
23
 
24
24
  __all__ = [
25
25
  "Operation",
@@ -16,8 +16,8 @@ class JobShopInstance:
16
16
  """Data structure to store a Job Shop Scheduling Problem instance.
17
17
 
18
18
  Additional attributes such as ``num_machines`` or ``durations_matrix`` can
19
- be computed from the instance and are cached for performance if they
20
- require expensive computations.
19
+ be computed from the instance and are cached for performance since they
20
+ might require expensive computations.
21
21
 
22
22
  Methods:
23
23
 
@@ -1,6 +1,7 @@
1
1
  """Contains functions to load benchmark instances.
2
2
 
3
3
  .. autosummary::
4
+ :nosignatures:
4
5
 
5
6
  load_all_benchmark_instances
6
7
  load_benchmark_instance
@@ -9,13 +9,15 @@ Problem step-by-step.
9
9
  HistoryObserver
10
10
  UnscheduledOperationsObserver
11
11
  OptimalOperationsObserver
12
- ReadyOperationsFilter
13
12
  DispatcherObserverConfig
13
+ ReadyOperationsFilter
14
+ ReadyOperationsFilterType
15
+ ready_operations_filter_factory
14
16
  filter_dominated_operations
15
17
  filter_non_immediate_machines
18
+ filter_non_idle_machines
19
+ filter_non_immediate_operations
16
20
  create_composite_operation_filter
17
- ReadyOperationsFilterType
18
- ready_operations_filter_factory
19
21
 
20
22
  Dispatching refers to the decision-making process of selecting which job
21
23
  should be processed next on a particular machine when that machine becomes
@@ -45,17 +47,17 @@ from ._factories import (
45
47
 
46
48
  __all__ = [
47
49
  "Dispatcher",
48
- "filter_dominated_operations",
49
- "filter_non_immediate_machines",
50
- "create_composite_operation_filter",
51
- "ReadyOperationsFilterType",
52
- "ready_operations_filter_factory",
53
50
  "DispatcherObserver",
54
51
  "HistoryObserver",
55
- "DispatcherObserverConfig",
56
52
  "UnscheduledOperationsObserver",
53
+ "OptimalOperationsObserver",
54
+ "DispatcherObserverConfig",
57
55
  "ReadyOperationsFilter",
56
+ "ReadyOperationsFilterType",
57
+ "ready_operations_filter_factory",
58
+ "filter_dominated_operations",
59
+ "filter_non_immediate_machines",
58
60
  "filter_non_idle_machines",
59
61
  "filter_non_immediate_operations",
60
- "OptimalOperationsObserver",
62
+ "create_composite_operation_filter",
61
63
  ]
@@ -5,7 +5,7 @@ from collections.abc import Sequence
5
5
  from typing import List, Dict, Union, Optional, Type
6
6
  # The Self type can be imported directly from Python’s typing module in
7
7
  # version 3.11 and beyond. We use the typing_extensions module to support
8
- # python >=3.8
8
+ # python >=3.10
9
9
  from typing_extensions import Self
10
10
  import numpy as np
11
11
  from numpy.typing import NDArray
@@ -3,17 +3,19 @@
3
3
  Main objects:
4
4
 
5
5
  .. autosummary::
6
+ :nosignatures:
6
7
 
7
8
  DispatchingRuleSolver
8
- dispatching_rule_factory
9
9
  DispatchingRuleType
10
- MachineChooserType
11
10
  dispatching_rule_factory
11
+ MachineChooserType
12
12
  machine_chooser_factory
13
+ MachineChooser
13
14
 
14
15
  Dispatching rules:
15
16
 
16
17
  .. autosummary::
18
+ :nosignatures:
17
19
 
18
20
  shortest_processing_time_rule
19
21
  first_come_first_served_rule
@@ -27,6 +29,7 @@ Dispatching rules:
27
29
  Dispatching rule scorers:
28
30
 
29
31
  .. autosummary::
32
+ :nosignatures:
30
33
 
31
34
  shortest_processing_time_score
32
35
  first_come_first_served_score
@@ -65,6 +68,11 @@ from ._dispatching_rule_solver import DispatchingRuleSolver
65
68
 
66
69
 
67
70
  __all__ = [
71
+ "DispatchingRuleSolver",
72
+ "DispatchingRuleType",
73
+ "dispatching_rule_factory",
74
+ "MachineChooserType",
75
+ "machine_chooser_factory",
68
76
  "shortest_processing_time_rule",
69
77
  "first_come_first_served_rule",
70
78
  "most_work_remaining_rule",
@@ -72,16 +80,11 @@ __all__ = [
72
80
  "random_operation_rule",
73
81
  "score_based_rule",
74
82
  "score_based_rule_with_tie_breaker",
83
+ "observer_based_most_work_remaining_rule",
75
84
  "shortest_processing_time_score",
76
85
  "first_come_first_served_score",
77
86
  "MostWorkRemainingScorer",
78
87
  "most_operations_remaining_score",
79
88
  "random_score",
80
- "dispatching_rule_factory",
81
- "DispatchingRuleType",
82
- "MachineChooserType",
83
- "machine_chooser_factory",
84
89
  "MachineChooser",
85
- "DispatchingRuleSolver",
86
- "observer_based_most_work_remaining_rule",
87
90
  ]
@@ -1,4 +1,15 @@
1
- """Package for generating job shop instances."""
1
+ """Package for generating job shop instances.
2
+
3
+ .. autosummary::
4
+ :nosignatures:
5
+
6
+ InstanceGenerator
7
+ GeneralInstanceGenerator
8
+ generate_duration_matrix
9
+ generate_machine_matrix_with_recirculation
10
+ generate_machine_matrix_without_recirculation
11
+
12
+ """
2
13
 
3
14
  from job_shop_lib.generation._utils import (
4
15
  generate_duration_matrix,
@@ -2,15 +2,47 @@
2
2
 
3
3
  The main classes and functions available in this package are:
4
4
 
5
+ Main objects:
6
+
5
7
  .. autosummary::
8
+ :nosignatures:
9
+
6
10
  JobShopGraph
7
11
  Node
8
12
  NodeType
13
+ EdgeType
14
+ NODE_ATTR
15
+
16
+ Build functions:
17
+
18
+ .. autosummary::
19
+ :nosignatures:
20
+
9
21
  build_disjunctive_graph
10
- build_solved_disjunctive_graph
11
22
  build_resource_task_graph
12
23
  build_complete_resource_task_graph
13
24
  build_resource_task_graph_with_jobs
25
+ build_solved_disjunctive_graph
26
+
27
+ Add functions:
28
+
29
+ .. autosummary::
30
+ :nosignatures:
31
+
32
+ add_disjunctive_edges
33
+ add_conjunctive_edges
34
+ add_source_sink_nodes
35
+ add_source_sink_edges
36
+ add_same_job_operations_edges
37
+ add_machine_nodes
38
+ add_operation_machine_edges
39
+ add_machine_machine_edges
40
+ add_job_nodes
41
+ add_operation_job_edges
42
+ add_global_node
43
+ add_machine_global_edges
44
+ add_job_global_edges
45
+ add_job_job_edges
14
46
 
15
47
  """
16
48
 
@@ -43,19 +75,20 @@ from job_shop_lib.graphs._build_resource_task_graphs import (
43
75
 
44
76
 
45
77
  __all__ = [
46
- "EdgeType",
47
- "NodeType",
48
- "Node",
49
78
  "JobShopGraph",
79
+ "Node",
80
+ "NodeType",
81
+ "EdgeType",
50
82
  "NODE_ATTR",
51
83
  "build_disjunctive_graph",
84
+ "build_resource_task_graph",
85
+ "build_complete_resource_task_graph",
86
+ "build_resource_task_graph_with_jobs",
87
+ "build_solved_disjunctive_graph",
52
88
  "add_disjunctive_edges",
53
89
  "add_conjunctive_edges",
54
90
  "add_source_sink_nodes",
55
91
  "add_source_sink_edges",
56
- "build_resource_task_graph",
57
- "build_complete_resource_task_graph",
58
- "build_resource_task_graph_with_jobs",
59
92
  "add_same_job_operations_edges",
60
93
  "add_machine_nodes",
61
94
  "add_operation_machine_edges",
@@ -65,6 +98,5 @@ __all__ = [
65
98
  "add_global_node",
66
99
  "add_machine_global_edges",
67
100
  "add_job_global_edges",
68
- "build_solved_disjunctive_graph",
69
101
  "add_job_job_edges",
70
102
  ]
@@ -4,6 +4,7 @@ job shop scheduling problem.
4
4
  Currently, the following classes and utilities are available:
5
5
 
6
6
  .. autosummary::
7
+ :nosignatures:
7
8
 
8
9
  GraphUpdater
9
10
  ResidualGraphUpdater
@@ -20,7 +21,7 @@ from ._disjunctive_graph_updater import DisjunctiveGraphUpdater
20
21
 
21
22
  __all__ = [
22
23
  "GraphUpdater",
23
- "remove_completed_operations",
24
24
  "ResidualGraphUpdater",
25
25
  "DisjunctiveGraphUpdater",
26
+ "remove_completed_operations",
26
27
  ]
@@ -1,12 +1,16 @@
1
1
  """Contains reinforcement learning components.
2
2
 
3
3
 
4
+
4
5
  .. autosummary::
6
+ :nosignatures:
5
7
 
6
8
  SingleJobShopGraphEnv
7
9
  MultiJobShopGraphEnv
8
10
  ObservationDict
9
11
  ObservationSpaceKey
12
+ ResourceTaskGraphObservation
13
+ ResourceTaskGraphObservationDict
10
14
  RewardObserver
11
15
  MakespanReward
12
16
  IdleTimeReward
@@ -15,8 +19,6 @@
15
19
  create_edge_type_dict
16
20
  map_values
17
21
  get_optimal_actions
18
- ResourceTaskGraphObservation
19
- ResourceTaskGraphObservationDict
20
22
 
21
23
  """
22
24
 
@@ -51,18 +53,18 @@ from ._resource_task_graph_observation import (
51
53
 
52
54
 
53
55
  __all__ = [
56
+ "SingleJobShopGraphEnv",
57
+ "MultiJobShopGraphEnv",
58
+ "ObservationDict",
54
59
  "ObservationSpaceKey",
60
+ "ResourceTaskGraphObservation",
61
+ "ResourceTaskGraphObservationDict",
55
62
  "RewardObserver",
56
63
  "MakespanReward",
57
64
  "IdleTimeReward",
58
- "SingleJobShopGraphEnv",
59
65
  "RenderConfig",
60
- "ObservationDict",
61
66
  "add_padding",
62
- "MultiJobShopGraphEnv",
63
67
  "create_edge_type_dict",
64
- "ResourceTaskGraphObservation",
65
68
  "map_values",
66
- "ResourceTaskGraphObservationDict",
67
69
  "get_optimal_actions",
68
70
  ]
@@ -1,15 +1,19 @@
1
1
  """Contains functions and classes for visualizing job shop scheduling problems.
2
2
 
3
3
  .. autosummary::
4
+ :nosignatures:
4
5
 
5
6
  plot_gantt_chart
6
- get_partial_gantt_chart_plotter
7
- PartialGanttChartPlotter
8
7
  create_gantt_chart_video
9
8
  create_gantt_chart_gif
9
+ create_gantt_chart_frames
10
+ get_partial_gantt_chart_plotter
11
+ create_gif_from_frames
12
+ create_video_from_frames
10
13
  GanttChartCreator
11
14
  GifConfig
12
15
  VideoConfig
16
+ PartialGanttChartPlotter
13
17
  PartialGanttChartPlotterConfig
14
18
 
15
19
  """
@@ -41,8 +45,8 @@ __all__ = [
41
45
  "create_gif_from_frames",
42
46
  "create_video_from_frames",
43
47
  "GanttChartCreator",
44
- "PartialGanttChartPlotterConfig",
45
48
  "GifConfig",
46
49
  "VideoConfig",
47
50
  "PartialGanttChartPlotter",
51
+ "PartialGanttChartPlotterConfig",
48
52
  ]
@@ -1,6 +1,7 @@
1
1
  """Contains functions and classes for visualizing job shop scheduling problems.
2
2
 
3
3
  .. autosummary::
4
+ :nosignatures:
4
5
 
5
6
  plot_disjunctive_graph
6
7
  plot_resource_task_graph
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "job-shop-lib"
3
- version = "1.0.1"
3
+ version = "1.0.2"
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"
@@ -43,6 +43,8 @@ ipykernel = "^6.29.2"
43
43
  nbconvert = "^7.16.0"
44
44
  pandas = "^2.2.1"
45
45
 
46
+ [tool.poetry.group.docs]
47
+ optional = true
46
48
 
47
49
  [tool.poetry.group.docs.dependencies]
48
50
  sphinx = "^7.3.7"
@@ -54,15 +56,6 @@ pandoc = "^2.3"
54
56
  pygments = "^2.18.0"
55
57
  ipython = "^8.31.0"
56
58
 
57
- [tool.poetry.group.claude.dependencies]
58
- anthropic = "^0.31.2"
59
- python-dotenv = "^1.0.1"
60
- tavily-python = "^0.3.5"
61
- pillow = "^10.4.0"
62
- rich = "^13.7.1"
63
- aiohttp = "^3.9.5"
64
- prompt-toolkit = "^3.0.47"
65
-
66
59
  [tool.poetry.extras]
67
60
  pygraphviz = ["pygraphviz"]
68
61
 
File without changes