为了账号安全,请及时绑定邮箱和手机立即绑定

创建一个全局字典来跟踪迭代

创建一个全局字典来跟踪迭代

江户川乱折腾 2023-06-13 15:02:32
我已经在 simpy 中创建了一个火车模拟,但为了跟踪前方的火车,我打算使用字典,其中键值可以充当“信号”状态。这些键基本上是信号编号。前面的火车可以检查下一个信号灯是否为绿色,反之亦然。然而,代码似乎对其余信号工作正常,但我想检查信号 0 和信号 1,以便火车不会产生或不会离开。我没有输入整个代码,因为它只会让它变得冗长。这只是为了让我知道我想做什么。这是示例代码 -signal_dict={} def switchSignal(self,signal):        if signal == 1 or signal == 0:            signal_dict[signal]= False            return signal_dict        else:            s[signal-1] = False            return signal_dictdef switchSignal_2(self,signal):    if signal == 1 or signal == 0:        signal_dict[signal]= True        return signal_dict    else:        signal_dict[signal-1] = True        return signal_dictclass Train(object):        def __init__(self,xxxx):       xxxxxxx       xxxxxxx    def engagelock(self, car, drivetime,signals):         with self.machine.request() as request:            yield request              for signal in range(0,signals):                switchSignal(self,signal)                   while signal_dict.get(signal+1) is False :                    print(f"{now():s} {self.name:s} is waiting for Signal {signal+1} to turn GREEN")                    yield env.timeout(60)                else:                    if isdelay()[0] == True:                        switchSignal(self,signal)                        time_delay=round(delay()[0],2)                        print(f"\n{now():s} {self.name:s} is experiencing a delay of {round((time_delay*10)/60,2)} min at Signal {signal}")                        print(signal_dict)                        yield env.timeout(round(time_delay*10,2))                    switchSignal_2(self,signal) def process(self,k):        here = 'London Old Oak Commons'                   dest = 'Birmingham Interchange'        t1=env.now        print(f"{now():s} {self.name:s} Departed from {here:s}")                drivetime=timeTo(self.accel, self.maxV, d)        yield env.process(self.engagelock(self.name,drivetime,k))        yield env.process(self.releaselock(self.name))        yield env.timeout(drivetime)        
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

我得到了这个工作,而不是双向链表,我只是创建了一个全局字典并保留了火车的标志,用于前面的信号和后面的信号。这样,每列火车都会检查下一个信号灯,如果是红色,就会减速到下一个信号灯。

查看完整回答
反对 回复 2023-06-13
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信