开始使用免费开始使用

构建模型:生成飞机订单

现在已经创建了 SimPy 环境和资源,接下来请将其与一个模拟飞机采购订单的生成器连接起来。共有 30 架飞机订单。

assembly_line() 函数会为不同的飞机部件制造工段按顺序提出资源请求。 下面的代码展示了其中一次请求。

# 打开资源 step_1_fuselage 的请求
with step_1_fuselage.request() as slot_request_1:
  request_1_time = env.now
  yield slot_request_1
  print(f"time: {env.now:7.4f} | Aircraft {aircraft_id:02d} 
                               | Enters: step_1_fuselage 
                               | Queued for {env.now-request_1_time} hours")
  yield env.timeout(processing_time[processing_time_step_names[0]])

本练习是课程的一部分

Python 中的离散事件模拟

查看课程

练习说明

  • 使用名为 request_i 的虚拟变量创建一个 for 循环,针对所有订单请求(total_num_orders)。
  • 在 for 循环中为每个飞机请求创建一个新进程;所有进程都基于生成器 assembly_process_request
  • 这 30 架飞机是一次性批量请求的,因此请完善代码以体现各请求之间没有等待时间。

交互式实操练习

通过完成这段示例代码来试试这个练习。

def order_aircraft(env, total_num_orders, step_1_fuselage, step_2_wings, step_3_power_plant, step_4_landing_gear):
    
    # Generate the orders with a for-loop
    ____ request_i in range(total_num_orders):

        assembly_process_request = assembly_line(env, request_i, step_1_fuselage, step_2_wings, step_3_power_plant, step_4_landing_gear)

        # Initiate an assembly line process for each request
        env.____(assembly_process_request)

        # Clock-in the time between requests
        yield env.timeout(____)
编辑并运行代码