---
title: 'If Red Then Stop - Jon Learns SFC/GRAFCET/OMGHELPIMCONFUSED'
source: 'https://youtube.com/watch?v=uRAym53bAqU'
video_id: 'uRAym53bAqU'
date: 2026-09-10
duration_sec: 2085
channel: 'Many A True Nerd'
---

# If Red Then Stop - Jon Learns SFC/GRAFCET/OMGHELPIMCONFUSED

> Source: [If Red Then Stop - Jon Learns SFC/GRAFCET/OMGHELPIMCONFUSED](https://youtube.com/watch?v=uRAym53bAqU)

## Summary

In this video, Jon takes on the challenge of learning Sequential Function Chart (SFC) programming by playing a game that simulates real-world traffic control scenarios. He works through building state machines to manage a railroad crossing and a roadwork intersection, learning the basics of SFC steps, transitions, and timing. The video is a hands-on, trial-and-error exploration of industrial programming concepts in a fun, game-based context.

### Key Points

- **Introduction to the Challenge** [00:02] — Jon introduces the game 'If Red Then Stop' and explains that he will be learning SFC/GRAFCET programming, a method for managing time-dependent processes using state machines.
- **First Task: Railroad Crossing** [00:45] — The first task is to program a railroad crossing. The system has inputs for when a train approaches and leaves, and outputs for the crossing lights. The logic is simple: lights off by default, on when a train approaches, and off again when it leaves.
- **Understanding SFC Basics** [02:26] — Jon explains that SFC consists of steps (states) and transitions (conditions for moving between states). He learns that transitions must be boolean conditions, and you cannot use 'not' directly; you need to use a different approach.
- **Second Task: Roadwork Intersection** [05:46] — The next challenge is a roadwork intersection where two lanes merge into one, controlled by traffic lights. The goal is to ensure smooth traffic flow and avoid long waits. Jon starts by creating a simple state machine with two states (B40 and B41) and transitions based on sensor inputs.
- **Adding Timing to the System** [09:34] — Jon realizes he needs to add timing to prevent flickering and ensure safe transitions. He introduces a transition step (B40T) that uses a timer to wait a certain duration before switching to the next state. He sets the timer to 500ms initially, then adjusts it to 600ms.
- **Optimizing Wait Times** [12:44] — To reduce unnecessary waiting, Jon modifies the conditions: the transition only occurs if there is no queue and the current state has been active for at least 15 seconds. He later reduces this to 10 seconds and then to 6 seconds to balance efficiency and driver satisfaction.
- **Third Task: Pedestrian Crossing** [17:22] — The final task involves a pedestrian crossing. Pedestrians press a button to request to cross. Jon learns that he needs to handle multiple button presses and provide feedback to pedestrians. He creates a system where after a certain number of presses or a timeout, the traffic stops and pedestrians get a green light.
- **Counting Button Presses** [21:35] — Jon figures out a way to count button presses by creating a sequence of states that represent each press. This allows him to trigger the pedestrian crossing after a certain number of presses, improving responsiveness for pedestrians.
- **Improving the Roadwork System** [27:35] — Jon applies his new knowledge to improve the roadwork intersection. He adds logic to handle one-sided traffic better, reducing wait times when there is no traffic on one side. He also adjusts timings to minimize idle time and improve overall efficiency.
- **Final Thoughts and Demo Availability** [33:33] — Jon concludes that the game is a great way to learn SFC programming, despite the challenges. He mentions that the game is still in development but a demo is available for free, and he encourages viewers to try it out.

### Conclusion

Jon successfully learns the basics of SFC programming by solving real-world traffic control problems in a game, gaining practical experience with state machines, transitions, and timing. The video demonstrates that even complex industrial programming concepts can be mastered through hands-on, iterative problem-solving.

## Transcript

настоящих гиков немало.  И добро пожаловать в игру «Если красный цвет, то прекратите игру о программировании».  А вы, возможно, помните, что некоторое время назад в моей игре фермера заменили.  По сути, это
Python, пока я пытался понять, как запрограммировать дрон для выполнения все более сложных задач на ферме.  А если Red Dead Redemption — это игра от той же команды, Dead Redemption — это игра от той же команды, но на этот раз я не буду изучать Python.
Вместо этого, и я процитирую здесь непосредственно страницу Steam, я собираюсь улучшить свои навыки программирования, научившись управлять зависящими от времени процессами с помощью реалистичных конечных автоматов.  Проблема в том, что я понятия не имею, что это значит на кулинарном языке.
Итак, хорошо, возможно, это будет для меня немного сложно.  [ __ ].  К счастью, к справочник по инженерным вопросам, который объяснит мне, что, чёрт возьми, происходит.  Итак, я
собираюсь использовать диаграмму последовательных функций, или SFC/FC. Не уверен, для чего еще это нужно, но суть в том, что мы собираемся
разработать логику для решения реальных задач.  В частности, речь идёт о той заставке.  Это буквально задача из учебного пособия, которую нужно решить,
просто введя здесь самые основы.  Так что да, у меня здесь есть кое-что, что я могу использовать для создания какой-нибудь программы.  А
здесь у меня есть входы, которые получают данные, в частности, когда поезд приближается к переезду и когда он отъезжает от него, а затем выдают сигнал светофора.  Так что прямо сейчас я могу буквально решить эту
буквально нажать на кнопку.  Итак, приближается поезд.  Итак, нажмите и удерживайте кнопку, чтобы загорелись лампочки, и всё готово. Движение транспорта теперь может возобновиться.  Однако в сутки и нажимал эту кнопку, когда приближается поезд, — это, вероятно,
иногда мне, например, нужно сходить в туалет или что-то в этом роде.  И когда это произойдёт, люди будут умирать.  Итак, хорошо, просто взглянув на инструкцию, я думаю, основные моменты таковы: да, у нас есть шаги, которые
представляют собой состояния, в которых могут находиться объекты. Например, сейчас состояние — это выключенный свет.  Другой вариант — свет горит.  И мы связываем
государства с переходными процессами, которые устанавливают критерии для принятия решения о переходе одного государства в другое.  Таким образом, в данном случае, с концептуальной точки зрения, рассматриваемая мной проблема концептуальной точки зрения, рассматриваемая мной проблема довольно проста.  Свет должен быть выключен
по умолчанию, но когда приближается поезд, его необходимо включить.  Затем, когда поезд снова отправляется, он отъезжает, чтобы движение могло продолжиться, потому что, да, движение транспорта происходит постоянно, а поезда проезжают лишь изредка.  По умолчанию он
проезжают лишь изредка.  По умолчанию он выключен, а затем на некоторое время включается. Так что возьмите это в первую очередь, это будет первым шагом.  Программа должна знать, с чего начать.  Да, и я могу дать этому название.  Ладно, никакого смайлика с поездом.
этому название.  Ладно, никакого смайлика с поездом. Подожди.  Улыбающееся лицо.  Отличный.  Реактивный самолет.   По умолчанию индикатор выключен, поскольку для его включения необходим активный входной сигнал. Так что да, я могу просто оставить всё как есть.  Далее мне нужен новый этап или что-то вроде нового состояния
есть.  Далее мне нужен новый этап или что-то вроде нового состояния .  А это поезд.  Так что тренируйтесь делать грустное лицо, потому что это замедлит движение и все такое. И да, давайте вернемся к книге .  Таким образом, хотя существует множество
сложных вещей, которые можно сделать, в самых простых случаях они могут быть истинными или ложными. Таким образом, когда появляется поезд, выходной сигнал, называемый «свет включен», должен быть
равен true.   Хорошо, это совершенно нормально.  Проблема в том, что совершенно нормально.  Проблема в том, что теперь мне нужно связать эти вещи воедино, потому что программе необходимо знать, когда должен включаться свет.
знать, когда должен включаться свет. Свет должен загораться, когда значение кнопки "Вкл" равно "истина".  Да, именно мимо этой кнопки проезжает поезд, когда кнопки проезжает поезд, когда приближается.  Таким образом, значение кнопки равно true.
приближается.  Таким образом, значение кнопки равно true. А теперь просто перезапустите тесты. Хорошо, подождите.  Подожди.  Пусть поезд проедет еще раз.  Возможно, оно появилось где-то за кнопкой.  Это была не моя вина.  Свет не включился.
Хорошо.  Почему свет не загорелся? Хорошо.  Если подумать, проблема, Хорошо.  Если подумать, проблема, вероятно, в красной ячейке.  Поэтому избавьтесь вероятно, в красной ячейке.  Поэтому избавьтесь от этого.  Верно.  Итак, хорошо.  Если не обращать внимания на
скопление людей, ситуация выглядит более многообещающей.  Так что, это нормально.  Добавить новый переход.  Теперь эта кнопка будет выключена .  и варенье.  После нажатия
.  и варенье.  После нажатия кнопки «Выключить» мы возвращаемся к началу, используя кнопки «Выключить» мы возвращаемся к началу, используя функцию перехода.  Итак, переходим к варианту «да, нет поезда».  Затем мы просто соединяем все эти элементы вместе, перезапускаем симуляцию,
и это должно сработать, верно?  Итак, поезд въезжает, загорается свет, свет гаснет, потому что поезд проезжает, и симуляция зацикливается, начиная с самого начала.  Вот и всё.  Мне удалось
научившись управлять зависящими от времени По крайней мере, я предполагаю, что именно это и произошло.  Сложно сказать.  Итак, проблема в следующем: у нас
сказать.  Итак, проблема в следующем: у нас сейчас дорожные работы.  В результате этого две полосы сокращаются до одной, и движение регулируется светофорами, которые определяют, разрешено ли движение. Необходимо обеспечить бесперебойный поток посетителей, и ни один из
сайтов не может ждать слишком долго.  Что касается имеющихся у меня инструментов, то по показаниям системы я могу определить, есть здесь машина или нет. Таким образом, переключение происходит, вероятно, после того, как очередь будет очищена .  А на выходе получаются, да, два
светофора.  В данном случае, да, достаточно просто нажать кнопку, чтобы всё заработало, и индикатор загорится да, достаточно просто нажать кнопку, чтобы всё заработало, и индикатор загорится зелёным.  Хорошо, по умолчанию красный, зеленый, если включено. Ладно, просто пропустите вас.  И да,
мы должны оставить немного места для фразы «Да, ты снова стал красным».  Хороший.  И нам нужно оставить немного свободного времени, чтобы люди успели закончить дорожные работы до открытия следующей дороги.  А если понадобится, я могу начать программировать время в
это устройство.  Я могу буквально установить время, да, время — это число, представляющее количество Хорошо, мы вернемся к теме времени чуть позже .  Давайте начнём с основных моментов.
.  Давайте начнём с основных моментов. Начальная позиция будет B40, и условием этого будет следующее: H40 должно быть равно true, что, следовательно, приводит к появлению зеленого индикатора.  Так что теперь эти ребята играют просто идеально
.  Так что да, переход к следующему шагу должен произойти в случае отсутствия B40, тогда нам следует перейти к тому, чтобы отпустить другую сторону.  Но, как я уже узнал ранее, я не могу просто сказать, является ли B40
ложным.  Это недопустимо.  Итак, могу ли я использовать not B40, чтобы просто сказать: "Вот так, не B40"?  Итак, хорошо.  Выходные данные должны быть либо истинными, либо ложными.
Но да, для переходов не используются значения true или false.  Вы так не считаете.  Также я мог бы ответить « или false.  Вы так не считаете.  Также я мог бы ответить « да».  Итак, всё в порядке.  Хорошо.  Хорошо.  Хорошо. Потому что был момент, когда в B40 ничего не происходило.
Поэтому мы перешли к следующему показателю, который... Подождите, минутку.  Как ты... Подожди, подожди, подожди, подожди.  Как вы совершили этот круговой маршрут ?  Хорошо, следующий шаг, к которому мы в ?  Хорошо, следующий шаг, к которому мы в конечном итоге хотим прийти, это... Да.  B41
должен переехать. Нет, серьёзно. Как, чёрт возьми, вы, ребята, зацикливаетесь? Вы не должны иметь возможности вернуться назад. Суть в том, что всё довольно
Суть в том, что всё довольно просто.  Низкий уровень значимости H, равный 41, является истинным.  Так почему же H41 сейчас не запускается? Безусловно, это должно срабатывать прямо сейчас.  Да, именно тогда это и произошло .  Извини.  Нужно было просто перезапустить
симуляцию, но сразу после этого все вылетело, потому что нам же нужно построить синхронизацию, верно?  Да, вы все переезжаете, и это здорово.
И да, нам просто нужно построить здесь еще один переход.  Так что да, на здесь еще один переход.  Так что да, на этот раз не B41, этот раз не B41, верно?  Подключитесь, а затем вернитесь обратно наверх,
верно?  Подключитесь, а затем вернитесь обратно наверх, перемещая B40.  Итак, это лишь начало рабочей модели.  Проблема в том, что да, есть небольшая нехватка времени.  Нам нужно добавить дополнительный элемент
ожидания. Кроме того, если при перезапуске теста никто не ожидает, система начинает работать с перебоями.  Так что,
я думаю, здесь еще предстоит проделать некоторую работу.  Итак, хорошо, нам нужно придумать, как добавить немного придумать, как добавить немного дополнительного времени в эту систему. Так что да, по умолчанию не B40,
но и B40. Да, нам нужно чем-то занять время Да, нам нужно чем-то занять время .  Таким образом, перемещение буквы Т — это вопрос времени.  Так что да .  Хорошо, подождите.  Подожди.  Подумай об этом, Джон.  Вы сможете это выяснить
.  Думаю, здесь нам нужно предпринять больше шагов.  Нам нужен переходный этап. шагов.  Нам нужен переходный этап. Да, это компания из списка B40. Да, это компания из списка B40. Затем нам нужен шаг перехода с B40
Затем нам нужен шаг перехода с B40 на B41, прежде чем мы перейдем к перемещению B41.  Итак, начнём с утверждения, что гипотеза H40 верна. Здесь горит зелёный свет.  Однако,
Здесь горит зелёный свет.  Однако, как только очередь очистится в этот момент, H40 как только очередь очистится в этот момент, H40 станет ложным.  Мы поставили красный свет.  Таким образом, это предотвращает прохождение последующего трафика .  Теперь нам нужно время,
.  Теперь нам нужно время, прежде чем вы начнете переезжать. В частности, период времени, прошедший с момента появления группы населения, относящейся к категории « 40 самых богатых».  Ах, подождите,
40 самых богатых».  Ах, подождите, подождите, подождите, подождите.  Время перехода от B40 к B41T .  Итак, это устанавливает таймер, показывающий, как долго этот процесс активен.
долго этот процесс активен. Как только это время превысит определенное значение ( подождите, это в миллисекундах,
допустим, 500), давайте посмотрим, сработает ли это. Тогда h41 станет истинным. Как только трафик, например, очередь, очистится, должно произойти следующее: мне кажется, мы немного затягиваем , но я думаю, что у нас почти получилось
.  Я собираюсь увеличить это значение примерно до 600. А затем нам просто нужно повторить это ниже в рамках другого перехода. Но мне кажется, что на самом деле мы уже почти достигли цели .  Например, если не обращать внимания на
трупы справа, то им следовало подождать, пока я закончу программирование.  Итак, я, по сути, просто повторил узор, только в обратном порядке.  Итак, теперь, если я просто соединю это вместе и зациклю обратно
это вместе и зациклю обратно наверх.  Итак, давайте на секунду перезагрузим это, и, ой, подождите, нам нужно решить эту проблему.  Ой-ой-ой, подождите, что-то не так, что-то пошло совсем не так.
Когда нет большого потока машин, вот что происходит. Технически, никто ещё не разбился, но ладно, эти люди всё-таки разбились.  Хорошо, если я
изменю правила, то при изменении на «очереди быть не должно», а также B40 должен быть активен не менее 15 000 миллисекунд.  Итак, 15
секунд.  Затем мы применяем тот же принцип здесь, внизу.  Подождите-ка.  Просто перезапустите симуляцию.  Мы избавились от мерцания. мерцания. Ага.  Итак, теперь люди проходят через
15 секунд, и если нет 15 секунд, и если нет очереди, то в этот момент...  Так что, думаю, в любой момент мы это сделаем.  Мне кажется, мы
получилось слишком длинно.  Давайте снизим это значение до 10 000 и добавим это сюда 10 000 и добавим это сюда .  Так что да,
.  Так что да, время движения B40 и B-41 также превышает 10 000.  По их словам, транспортный поток был неравномерным.  Мы могли бы внести неравномерным.  Мы могли бы внести соответствующие изменения.  Итак, выполните сброс настроек.
Итак, теперь должно произойти следующее: поток должен длиться 10 секунд, а затем, хорошо, вы тоже можете начать поток.  Хорошо, хорошо, хорошо, хорошо.  Вам тоже дается 10 секунд
хорошо, хорошо, хорошо.  Вам тоже дается 10 секунд . верно?  Давайте дадим вам по тысяче каждому.  Осталось всего две лишние секунды, чтобы пройти.  Снова перезапустите симуляцию .  И нам сказали: не заставляйте
никого ждать слишком долго. Итак, каков же максимальный допустимый Итак, каков же максимальный допустимый срок?  К сожалению, вас это немного раздражает .  Хорошо.  Поэтому я не уверен, что это соответствует требуемому нами порогу
. Может быть, просто шесть и шесть.  Так что Может быть, просто шесть и шесть.  Так что ждать долго не приходится.  Итак, хорошо.  Попробуйте ещё раз, потому что нам нужно, чтобы люди не раздражались.  Они могут быть сбиты с толку.
Абсолютно.  Но не раздражен.  То есть вы растеряны, но не злитесь.  Вы растеряны, но не злитесь.  Вы проходите, и через секунду успеваете уйти, прежде чем начнете раздражаться.  Я это сделал, черт возьми! Ладно, сейчас я чувствую себя
чертовски умным.  Наверное, это очень просто, и сейчас это смотрят, может быть, 50 человек, для которых это повседневная работа, и мне очень жаль, потому что, вероятно, вам было больно смотреть это.  Но прямо сейчас я чувствую себя действительно
умным.  Итак, хорошо, давайте просто перенесем это в формальный сценарий тестирования.  Да, игра проверяет, будут ли сбои, а также, насколько хорошо мы справляемся с временем ожидания.  Итак, да,
при одинаковом или большом потоке транспорта с одной стороны, приемлемые результаты с точки зрения времени ожидания?  Мне нравится этап тестирования.
Тестирование фазы проведено отлично, получены хорошие результаты. это довольно хороший результат. Но да, когда движение слабое или
только с одного направления, люди не в восторге, потому что им приходится ждать без причины.  Итак, сколько машин сможет причины.  Итак, сколько машин сможет проехать за эти 6 секунд?  Вероятно, слишком
проехать за эти 6 секунд?  Вероятно, слишком много.  Давайте сократим это время до много.  Давайте сократим это время до 4,5 секунд.  и запустите тест еще раз.  На самом деле, всё ли у нас в порядке? Да, подождите.  Ну да, ты
тут немного разозлился.  Но не волнуйтесь, может быть, четыре.  Я сокращу его до 4 секунд.  Но проблема в том, что это означает, что мы создаём больше неиспользуемого пространства.  Например, если это 4 секунды и 1 секунда, подождите, то примерно 20% всего
времени просто не используется, и никто им не пользуется, что может вызвать дополнительные проблемы в тесте на высокую нагрузку.  Но ладно, проверим это и посмотрим, станут ли все
счастливее в таких обстоятельствах. Да, опять же, хороший результат» .  Да, всё ещё не идеально. Но как я могу это улучшить?
Вероятно, мы используем очень умный приём: определяем, если одна сторона значительно загружена, и корректируем время работы в зависимости от ситуации.  Но знаете что?  Я считаю, что хороший результат при высокой нагрузке
результат при высокой нагрузке меня вполне устраивает.  Хорошо, следующий шаг: пешеходы пытаются перейти дорогу.  Итак, они ждут зеленого сигнала светофора, и для движения .  Подождите немного.  В данном случае у нас есть буквально один входной сигнал.   По
всей видимости, входными данными является нажатие пешеходом кнопки, указывающей на желание перейти дорогу.  Итак, что удобно, да, для меня
пешеход просто будет стоять и постоянно держать кнопку, а не нажмет ее один раз и потом просто проигнорирует.  И у нас также есть несколько вариантов проигнорирует.  И у нас также есть несколько вариантов вывода.  Итак, хорошо.  H331 пропускает
вывода.  Итак, хорошо.  H331 пропускает транспорт.  Затем H332 транспорт.  Затем H332 отпускает пешеходов, а H333 сообщает пешеходам: «Эй, ваше
нажатие кнопки подтверждено».  Так что это должно начаться, как только кто-то начнет это должно начаться, как только кто-то начнет давить. Ах, да.  Не все постоянно нажимают на эту кнопку. Иногда нет.  Но да,
логично было бы сказать: « Подождите, просто дайте людям разойтись».  Они будут продолжать настаивать, пока их настойчивость не будет замечена природой. Вот что происходит, не так ли?  Так что, если вы придете сюда и начнете
не так ли?  Так что, если вы придете сюда и начнете толкаться, то да, они перестанут толкаться. Итак, предположительно, автомобилей будет больше, чем людей.  А ещё автомобили быстрее людей.  Таким образом, простое дублирование временных параметров больше невозможно
, нам необходимо какое-то подтверждение, чтобы пешеходы знали, что могут прекратить нажимать кнопку, потому что к ней всё равно подойдут другие люди .  И даже если это уже признано, они могут снова поднять этот вопрос.
Но должно ли это повлиять на то, как я это запрограммировал?  Например, если слишком много людей нажимают кнопку, потому что сейчас я вижу очередь.  Мы можем исходить из предположения, что кнопку в любом случае нажмет новый человек.
Ага.  Чем больше нажатий кнопки, тем сильнее это может означать, что в этот момент я хочу отключить любую другую систему синхронизации и сказать: «Хорошо, остановите движение. Пропустите пешеходов, потому что их внезапно стало много».  Итак,
первым шагом должно стать увеличение транспортного потока, потому что его стало намного больше. потому что его стало намного больше. Когда движение транспорта есть, H331 Когда движение транспорта есть, H331 истинно.  Вот и всё.
Теперь трафик по умолчанию включен.  Однако я не хочу говорить «да».  В случае, если человек немедленно нажмет кнопку , мы остановим движение, и он начнет переходить дорогу.  Людям приходится ждать хотя бы немного времени или до
.  Поэтому, возможно, нам стоит рассматривать все варианты, а не только один.  Однако, подождите, прежде чем мы перейдем к остановке движения.  Нам нужно настроить оповещение, чтобы уведомить пешеходов.  Эй, не волнуйся.  Ваше нажатие кнопки
подтверждено. Так что, да.  S31 равно истине.  Начнём с «Подождите». Этого не может быть.  Ой, подождите.  Вешать.  Мне просто нужно привести свои мысли в порядок, как это делают геймеры. Да, S31 —
Да, S31 — это правда.  Это приемлемый переход. И следующий шаг – да. После нажатия кнопки загорается индикатор После нажатия кнопки загорается индикатор .  Подождите, минутку
.  Подождите, минутку .  Почему вы выключили? Этого не должно было случиться.  Почему это должно было произойти?  Как будто я не просила тебя это должно было произойти?  Как будто я не просила тебя перестать быть онлайн.  H331
в любом случае должен быть включен. Хорошо, нам нужно сохранить это, Хорошо, нам нужно сохранить это, упомянув 331 на последующих этапах, чтобы вы могли
присоединиться.  Ваши усилия были учтены.  Поток машин не прекращается, и люди продолжают нажимать кнопку.  Сначала была вторая попытка, потом третья.  Хорошо, я была вторая попытка, потом третья.  Хорошо, я думаю, каждый человек нажимает эту кнопку.
Теперь главный вопрос: как мне считать?  Да, я бы хотел сказать, что считать?  Да, я бы хотел сказать, что как только кнопку нажмут, скажем, пять раз или нажимают на нее в течение определенного времени, мы перейдем к тому, чтобы
разрешить пешеходам переходить дорогу.  Но я не знаю, как подсчитать импульсы.  Давайте начнём с простого: "Да, как только кнопка будет нажата, мы просто запустим таймер".  Начнём, допустим, с 8-секундной паузы.   Итак, вот что у
8-секундной паузы.   Итак, вот что у меня тут происходит: они нажимают кнопку, ждут 8 секунд, а затем у ждут 8 секунд, а затем у машин есть две секунды, чтобы остановиться.  Затем все участники
пересекают затор, и одновременно срабатывает кнопка подтверждения . Теперь нам нужно выяснить, сколько времени мы дадим водителям, прежде чем перезагрузить систему, потому что, в отличие от пешеходов, у
водителей нет возможности подтвердить, что они действительно, черт возьми, хотят поехать.  По всей видимости, всё будет происходить по строгому таймеру.  Таким образом, у пешеходов есть 8 секунд, чтобы перейти дорогу, и 4 секунды, в течение которых все сигналы светофора горят
красным.  Итак, они заканчивают пересечение, но машины не едут, и тогда мы отпускаем машины, просто возвращая систему в исходное положение.  Итак, хорошо, всё перезагрузили. Посмотрим, сколько людей это убьет.
Посмотрим, сколько людей это убьет. Итак, вы, ребята, подождите.  Почему всё сразу пошло не так?  Что не так с кодами?  Ой, я неправильно сделал петлю.  Хорошо, это легко исправить.  Итак,
хорошо, на этот раз вы нажимаете кнопку и ждёте.  Вам нужно подождать 8 секунд.  Всё больше людей нажимают кнопки.  Приезжает всё больше машин. Все ждут.  Вы можете
идти.  Осталось всего восемь секунд.  Тогда красный цвет должен перейти ко всем, и тогда, да, после некоторого ожидания, возможно, время ожидания могло бы быть и немного меньше, и тогда
зеленый цвет вернется. Система работает, но Система работает, но работает она очень, знаете ли, прямолинейно. То есть, это основано исключительно на моих приблизительных замерах времени, сделанных на глаз.  В нем совершенно
не учитывается количество пешеходов. Ладно, это гениально.  Я придумал способ подсчета.  Мне нужно всего лишь
создать последовательность состояний, которые означают, что кнопка была нажата, кнопка была нажата, кнопка была нажата, используя эту систему.  Да, учитывая, что это должно происходить нажата, используя эту систему.  Да, учитывая, что это должно происходить
остановке движения, потому что это означает, что при небольшом количестве пешеходов движение будет намного свободнее.  Хотя это также означает, что если появится только один человек , ему буквально никогда не доведется
перейти дорогу.  Поэтому в часы с низкой посещаемостью это создает проблемы для пешеходов.  Да.  Хорошо. Я создал здесь разветвлённый путь.  Итак, что произойдет, когда кто-то впервые нажмет кнопку S331, то
есть кнопку «Я хочу перейти дорогу» , либо еще два человека нажмут эту кнопку, в этом случае мы немедленно остановим движение, потому что несколько человек будут ждать. Или же,
да, можно подождать максимум 10 секунд.  Если вы будете ждать 10 секунд, мы всё равно перейдём к остановке движения.  То есть либо несколько нажатий кнопок, либо 10 секунд.  Проблема в том, что я не уверен, что вы точно знаете, как работает процесс выбора.  Поэтому перезапустите
тест. Вы собираетесь снова надавить?  Вот и всё .  Это привело к остановке движения. Кажется, я это только что сделал.  Мне кажется, я только что создал разветвлённый путь. Проблема в том, что это может немного раздражать водителей
Проблема в том, что это может немного раздражать водителей .  Думаю, мы можем также сократить " .  Думаю, мы можем также сократить " Да".  время ожидания водителей.  Да, Да".  время ожидания водителей.  Да, это 6000 остановок движения.   Подождите немного
.  Нет, это три с половиной.  Вероятно, это число можно сократить примерно до двух с половиной .  Поэтому сбросьте это.  О, вот этим
наверное, существует настоящая функция подсчета, которую я просто еще не нашел, но я все равно чертовски горжусь этим результатом.  Хорошо, теперь движение по кругу.  Кто-то уже начал давить.  Да, мы сразу же перейдем к трем потугам, потому что
вы ждали ее довольно долго. Итак, движение останавливается, и это происходит буквально за секунду.  Вот и всё.  А теперь продолжайте вы.  Два нажатия кнопок. Есть и третий.  Вот и всё. Движение снова остановилось.
Так что, это должно сработать, верно?  Давайте проверим это на сработать, верно?  Давайте проверим это на практике.  Так что никто не погиб.  И, кроме того, да, в случае отсутствия пешеходов, да, кому-то нужно будет нажать
кнопку хотя бы один раз, чтобы запустить таймер. Таким образом, это идеально подойдет для мест, где нет пешеходов. Тем временем, в режиме обычной работы. Хорошо, пешеходы получают неверную информацию.  В какой-то
момент кнопка действительно может подсвечиваться некорректно. действительно может подсвечиваться некорректно. Однако пешеходы довольны. довольны.  Они считают, что ждут слишком долго.  Так вот,
знаете что?  В любом случае, меня это вполне устраивает .  Но ладно, используя свои новообретенные знания о совершенно фальшивой и выдуманной системе подсчета, фальшивой и выдуманной системе подсчета, смогу ли я улучшить свои дорожные работы?  Потому что
мои дорожные работы были действительно хороши, когда дело касалось интенсивного движения. Однако, что касается одностороннего движения, то нет.  Потому что да, люди просто
сидели и ждали пробки, которых на самом деле не было.  И, что забавно, я действительно могу настроить симуляцию так, чтобы она работала в одной из таких систем.  Итак, да, я могу буквально протестировать эту штуку на ходу при определенных
условиях.  Да, при большом трафике это работает довольно хорошо, если не идеально. Так что да, вам придётся через это пройти.  Я действительно
Так что да, вам придётся через это пройти.  Я действительно больше не могу сокращать время, да, эти переходы. В таком случае, ну,
я думаю, я мог бы дать всем немного меньше времени до перенастройки.  Таким образом, люди будут ждать меньше, но при этом будет теряться больше времени на этот секундный переход из одного направления в другое.  В целом, среднее
время взвешивания должно увеличиться, потому что теряется больше времени.  Ах, но что мы могли бы сделать? Да, прямо сейчас, поскольку это чисто вопрос времени, мы могли бы сказать,
что если никто вообще не явится в другую сторону. Да, это перезапишет таймер.  Итак, как только кто-то прибудет,
таймер запустится.  Итак, если я просто добавлю B41 или B42 к этим двум добавлю B41 или B42 к этим двум шагам, то да, подождите.  Если я просто проведу шагам, то да, подождите.  Если я просто проведу односторонние дорожные тесты.
Вот так. Приходите, ребята.  Абсолютно.  Вы можете идти. Вы ждёте.  И тогда, да, ты идёшь. И тогда им, по сути, останется только продолжать двигаться вперед, пока кто-нибудь не
встретит их на своем пути.   Ну вот , ой.  Ах, да.  Это работает.  Итак, , ой.  Ах, да.  Это работает.  Итак, хорошо.  На этот раз максимальное время ожидания по-прежнему невелико. Кажется, что для одностороннего движения это должно
работать практически идеально , но, похоже, всё равно не справляется со своей задачей .  В общем, да, мы добились неплохого результата в плане одностороннего движения, но все еще не идеально.  А при
тестировании в условиях низкой загруженности дорог ситуация даже хуже.  Так кому же бывает плохо, когда пробок мало? Честно говоря, мне это кажется вполне оптимальным вариантом
.  Такое ощущение, что вы просто проезжаете мимо, и как только вы подъезжаете к мгновенно меняется, если на другой стороне никого нет.  Так что, нет, если серьезно, как я могу это для вас улучшить?  Мне кажется, это практически идеально.  Ах,
подождите.  Там стояла синяя машина, водитель которой на мгновение растерялся. мгновение растерялся. Если мы просто сократим время, это создаст проблемы для Да.  Эта чертова
зона Хайтра, потому что в этот момент четверть всего времени тратится на то, чтобы ничего не происходило, просто ожидая перехода с одной стороны на другую. Но это может решить проблему с участками с низким трафиком.  На данный момент
результаты выглядят довольно позитивно. Результаты выглядят гораздо более позитивными после небольшой корректировки временных параметров.  Итак, хорошо, 5.2 два.  Ох, ладно. На низкой мощности все хорошо,
На низкой мощности все хорошо, но кому-то пришлось подождать 3 секунды, что, по-видимому, неприемлемо для достижения идеальных результатов. Ладно, я думал, это полностью
обрушит большой трафик, но нет, этот способ сработал для них лучше.  Хорошо, мы можем просто вырезать пару десятых секунды , и никто не умрет.
Хорошо, нам нужно всего лишь сократить эти цифры, потому что люди, похоже, довольны, если переход происходит быстрее.  В целом, система, вероятно, стала менее эффективной, но каждому водителю она кажется более эффективной
.  Итак , я полагаю, это реальная занимающимся подобными вещами, приходится сталкиваться на практике.  Итак, хорошая новость в том, что мы повысили эффективность организации дорожного движения. Плохая новость в том, что одна семья погибла.
решать, хорошо это или плохо, должны врачи.  Хорошо, немного хорошо это или плохо, должны врачи.  Хорошо, немного больше времени, да, на временные рамки перехода, но все меньше и меньше времени на само время, которое автомобили
должны проехать, потому что как только они останавливаются, мы должны как можно быстрее снова запустить их. Да, если мы сделаем это очень коротким, то сделаем это очень коротким, то это поможет в часы с низкой интенсивностью движения.
Хорошо.  Таким образом, мы получили идеальный результат для тестов с низким трафиком , но увеличенное время простоя испортило Jab для тестов с высоким трафиком.  И, честно говоря, я не знаю, что еще я мог бы сделать для одной стороны дорожного движения.  Итак,
хорошо, должен же быть какой-то способ оптимизировать все три потока трафика одновременно, но я не знаю, как это сделать .  Тем не менее, я бы сказал, что мой мозг сдаётся перед лицом переменчивых потоков пешеходов, которые
очень придирчиво относятся к тому, что кнопки загораются при нажатии.  Может, на этом мы закончим?  Вот так выглядит Red Dead Redemption.  И ладно, точно так же, как и фермера заменили.  Эта игра требует немалого количества размышлений,
но когда все складывается воедино, о боже мой , ты чувствуешь себя гением. Между тем, если говорить о хороших и плохих новостях, то, хотя игра еще не вышла в полной версии и, насколько я понимаю, даже не имеет даты релиза, они
только что выпустили демоверсию, в которую я сегодня и играл.  Так что, если вы хотите погрузиться в это, можете попробовать прямо сейчас совершенно бесплатно.  И да, подходящий день это будет именно то, что нужно .  Так что,
я бы сказал, стоит посмотреть.  Ссылка в описании ниже.  А когда он выйдет в полном объеме, мы, возможно, углубимся в этот вопрос немного подробнее.  Так что будьте внимательны, и мы обязательно сэкономим.  А пока что я был Джоном.  Так поступали
многие настоящие гики.  Это было восхитительно.  Если покраснело, остановитесь. Большое спасибо и до свидания. Я создал небольшую проблему в своей дорожной сети: теперь буквально невозможно вернуться
в город.  И в этом здании мы будем разводить зебр.  А в этом естественно, мы разводим жирафов. Does anyone remember how the road system went? I think it was something like
