Graph JSP Environment Example

[4]:
from jsp_instance_utils.instances import ft06, ft06_makespan
from graph_jsp_env.disjunctive_graph_jsp_env import DisjunctiveGraphJspEnv
import numpy as np
[5]:
def main():
    env = DisjunctiveGraphJspEnv(
        jps_instance=ft06,
        reward_function_parameters={
            "scaling_divisor": ft06_makespan
        },
    )

    done = False
    info = {}
    while not done:
        # get valid action mask. sample expects it to be a numpy array of type int8
        mask = np.array(env.valid_action_mask()).astype(np.int8)
        action = env.action_space.sample(mask=mask)
        state, reward, terminated, truncated, info = env.step(action)

        done = terminated or truncated

    # console rendering
    env.render(show=["gantt_console", "graph_console"])
    print(f"makespan: {info['makespan']}")
[6]:
if __name__ == '__main__':
    main()
Job 0     -----     Machine 0 
Job 1     -----     Machine 1 
Job 2     -----     Machine 2 
Job 3     -----     Machine 3 
Job 4     -----     Machine 4 
Job 5     -----     Machine 5 
         ╔═══════════════════════════════════════════════════════╗
Job 0    ║           ║ Machine 0   
Job 1    ║          ║ Machine 1   
Job 2    ║        ║ Machine 2   
Job 3    ║║ Machine 3   
Job 4    ║║ Machine 4   
Job 5    ║    ║ Machine 5   
         ╚╦════╤════╤════╤════╤════╦════╤════╤════╤════╤════╦════╝
          0.0                      31.8                     63.6
makespan: 69