Я очень новичок в Simpy, поэтому я собираюсь написать простой пример: ожидаемое поведение водителей на остановке в 4 направлениях в Соединенных Штатах.Для тех из вас, кто не знаком с американскими законами о вождении, основное правило простое: первый водитель до перекрестка после остановки имеет право проезда.Уловка происходит, когда больше чем один водитель прибывает одновременно.Некоторые правила одновременного прибытия очевидны (если два водителя прибывают друг против друга и едут прямо, оба могут продолжить движение);другие - меньше (если два водителя пересекают друг друга, тот, что справа, имеет право проезда).
Я смотрю на моделирование пересечения как простого ресурса с объектами драйвера, стоящими в очереди для доступа,Когда объект драйвера активирован, он будет смотреть на другие объекты в очереди с той же отметкой времени и применять правила, описанные выше.Если он «имеет право прохода», он опережает часы, а затем освобождает ресурс, и следующий объект драйвера будет активирован.Если у него нет права проезда, он все равно высвободит ресурс следующему объекту драйвера, но часы не продвинуты.В этом случае важно то, что первый драйвер должен оставаться в начале очереди.
Как мне реализовать эту последнюю часть?Рассмотрим эту ситуацию.Три объекта драйвера создаются с одинаковой отметкой времени, по одному для входа с севера, востока и юга.Допустим, восточный объект активируется первым.По правилам, он должен освободить перекресток и отпустить северный объект первым.Однако, как только северный объект опережает часы и освобождает перекресток, он должен вернуться на восток, а не на юг.
Есть ли какие-либо предложения по этому поводу?