双向走廊运行简单模拟的问题

问题描述 投票:0回答:0

我正在尝试使用 Simply 运行 python 模拟。它涉及卡车通过走廊的多时段调度。有车辆在方向 1 行驶,其他车辆在方向 0 行驶。对于任何一对在同一方向上相互跟随的车辆,它们之间必须有一个安全时间。对于任何一对反向行驶的车辆,它们的宽度之和+安全距离不得超过走廊的宽度。此外,每辆车都必须遵守由上限和下限时间窗界定的宵禁。目标是在给定到达时间的情况下,尽量减少每辆车的等待时间。 我为卡车的构造函数创建了类卡车,在类走廊中,我创建了一个函数来描述该过程应该如何发生,如下所示:

def driving_process(self, period, corridor_width, truck1, truck2):
    while True:
        if truck1.eta >= self.LTW and truck1.eta <= self.UTW:
            print(f'Period {self.period}: Truck {truck1.id} requests access to corridor at time {self.env.now}')
            if truck1.id != truck2.id and truck1.period == truck2.period and truck1.direction != truck2.direction:
                total_width = truck1.width + truck2.width + self.safety_dist                                      
                if total_width <= corridor_width:
                    yield self.env.process(self.driving_access(period, truck1))
                    yield self.env.timeout(self.safety_time)
                else:
                    print(f"Period {self.period}: Truck {truck1.id} denied corridor access at time {self.env.now}")
                    yield self.env.timeout(self.safety_time)  # Wait before requesting again

我还创建了一个函数来运行模拟:

def runsim(self, trucks):
    while True:
        for i, truck1 in enumerate(trucks):
            for j, truck2 in enumerate(trucks):
                if i != j:
                    yield self.env.process(self.sailing_process(period, self.corridor_width, truck1, truck2))            
                    yield self.env.timeout(5)

下面,我继续设置环境,并检索卡车和走廊的参数。为了便于参考,W 是走廊的宽度,I 是任何连续卡车的安全时间,Delta 仅用于确定每个时间段内通过走廊所需的时间。

env = simpy.Environment()
Trucks = [Truck(env, row['PERIOD'], row['ID'], row['DIRECTION'], row['WIDTH'], row['ETA']) for _, row in df.iterrows()]
for period in T:
    TN = Corridor(env, period, W, SD[period], I[period], LTW[period], UTW[period], Deltac[period],
                 Delta1[period], Delta2[period])
    env.process(TN.runsim(Trucks))
    env.run(until=15)

现在,问题是它只在第 1 期和第 1 辆卡车上运行,当我没有设置计时器时,它会无限运行。我不明白为什么它不起作用。

python simulation simpy event-simulation
© www.soinside.com 2019 - 2024. All rights reserved.