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

我已经在 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_dict



def 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_dict


class 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)

        



江户川乱折腾
浏览 87回答 1
1回答

SMILET

我得到了这个工作,而不是双向链表,我只是创建了一个全局字典并保留了火车的标志,用于前面的信号和后面的信号。这样,每列火车都会检查下一个信号灯,如果是红色,就会减速到下一个信号灯。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python