Bắt đầu ngayBắt đầu miễn phí

Mô hình hóa trạm xăng: Python generators

Giả sử một khách hàng muốn xây dựng trạm xăng và bạn được yêu cầu tạo một mô hình sự kiện rời rạc để giúp xác định số lượng trụ bơm tối ưu và kích thước bồn chứa nhiên liệu chung dùng cho các trụ. Mô hình này cần mô phỏng xe hơi đến trạm và các tài nguyên của trạm: các trụ bơm và bồn chứa. Trong bài tập này, chúng ta sẽ tập trung vào hai bước sau:

Bước 1: Tạo một generator để mô phỏng việc xe đến trạm xăng, yêu cầu một trụ bơm và bơm đầy bình xe.

Bước 2: Tạo một generator để kiểm tra mực nhiên liệu trong bồn và yêu cầu bồn tiếp nhiên liệu khi cần. Đồng thời, cần mô hình hóa hành vi của bồn tiếp nhiên liệu này.

Ở bài tập tiếp theo, bạn sẽ tạo môi trường SimPy, thêm các process và resource, rồi chạy mô phỏng.

Số lượng trụ bơm có hạn và được mô phỏng bằng một resource của SimPy lưu trong biến gas_station_pumps.

Bài tập này là một phần của khóa học

Mô phỏng Sự kiện Rời rạc bằng Python

Xem khóa học

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

def car(name, env, gas_station_pumps, gas_station_tank):

    fuel_tank_level = random.randint(*FUEL_TANK_LEVEL)
    print(f"{name} arriving at gas station at {env.now}")

    # Request pump
    with gas_station_pumps.____() as req:
        start_time = env.now

        # Yield the pump request
        ____ req

        liters_required = FUEL_TANK_SIZE - fuel_tank_level

        # Remove liters_required from the tank
        yield gas_station_tank.___(liters_required)

        yield env.timeout(liters_required / REFUELING_SPEED)
        print(f"{name} finished refueling in {env.now - start_time} seconds.")
Chỉnh sửa và Chạy Mã