The Resource-Task Graph representationΒΆ

[1]:
from job_shop_lib import JobShopInstance, Operation
from job_shop_lib.graphs import (
    build_complete_resource_task_graph,
    build_resource_task_graph_with_jobs,
    build_resource_task_graph,
)
from job_shop_lib.visualization.graphs import (
    plot_resource_task_graph,
    three_columns_layout,
)

CPU = 0
GPU = 1
DATA_CENTER = 2

job_1 = [Operation(CPU, 1), Operation(GPU, 1), Operation(DATA_CENTER, 7)]
job_2 = [Operation(GPU, 5), Operation(DATA_CENTER, 1), Operation(CPU, 1)]
job_3 = [Operation(DATA_CENTER, 1), Operation(CPU, 3), Operation(GPU, 2)]

jobs = [job_1, job_2, job_3]

instance = JobShopInstance(jobs, name="Example")
[2]:
complete_graph = build_complete_resource_task_graph(instance)
with_jobs_graph = build_resource_task_graph_with_jobs(instance)
graph = build_resource_task_graph(instance)
[3]:
_ = plot_resource_task_graph(complete_graph, title="", figsize=(5, 7))
../_images/examples_07-Resource-Task-Graph_3_0.png
[4]:
_ = plot_resource_task_graph(
    with_jobs_graph,
    title="",
    figsize=(5, 7),
    draw_only_one_edge=True,
    edge_additional_params={
        "arrowstyle": "<|-|>",
        "arrowsize": 10,
        "connectionstyle": "arc3,rad=0.1",
        "width": 1.5,
        "edge_color": "salmon",
    },
    default_node_color="gray",
    node_font_color="white",
)
../_images/examples_07-Resource-Task-Graph_4_0.png
[5]:
_ = plot_resource_task_graph(
    graph,
    title="",
    figsize=(4, 7),
    draw_only_one_edge=True,
    edge_additional_params={
        "arrowstyle": "<|-|>",
        "arrowsize": 10,
        "connectionstyle": "arc3,rad=0.15",
        "width": 1.5,
        "edge_color": "k",
    },
    node_font_color="k",
    alpha=0.9,
    layout=three_columns_layout(
        graph,
        leftmost_position=0.45,  # Move left column more rigth
    ),
)
../_images/examples_07-Resource-Task-Graph_5_0.png
[ ]: