Логистика

【Factorio】Дедлокове на влакове: причини и проектиране на избягване

Когато влаковете спират на кръстовища или пред станции, причините обикновено се разпределят на три: „поставяне на сигнали", „капацитет на кръстовище" и „недостатък на чакащи линии". В Factorio ванилия v2.0 и Space Age основните принципи на железницата са еднакви, така че просто организирането на тези точки може значително да предотврати дедлокове.

Логистика

【Factorio】Дедлокове на влакове: причини и проектиране на избягване

Когато влаковете спират на кръстовища или пред станции, причините обикновено се разпределят на три: „поставяне на сигнали", „капацитет на кръстовище" и „недостатък на чакащи линии". В Factorio ванилия v2.0 и Space Age основните принципи на железницата са еднакви, така че просто организирането на тези точки може значително да предотврати дедлокове.

През първите пъти, когато свързах няколко мини, линията на чакащите пред станцията се простря до разклонението и спря цялата мрежа. След като преправих чакащата линия според дължината на влака и променах кръстовището пред нея на верижни сигнали, потокът веднага се възстанови.

В тази статия организирам как да различавам обикновени сигнали от верижни на основата, и при какви условия да избирам едноколунна, двуколунна, кръгова или със буфер железница. Това е практическо ръководство за проектиране така, че да не създам затъпяване от самото начало, вместо да го поправям след като се появи. Статията е структурирана за постепенно разбиране на цялата железнически мрежа.

Целева версия и предварителни познания

Уточняване на целева версия

Основата на тази статия е Factorio ванилия v2.0 и Space Age. Space Age е платено разширение, което според Factorio Wiki за Space Age е издадено на 21 октомври 2024 г.

Важното е, че основните принципи на предотвратяване на дедлокове на влакове са почти еднакви в ванилия v2.0 и Space Age. Идеята да поставяш верижни сигнали на местата, където влаковете трябва да спрат, и да пускаш влаковете чрез следващия блок, остава ugyanez. Дори когато разширих съществуваща мрежа в v2.0, старите линии работиха добре с един преоглед на кръстовищата. Версионните разлики са по-малко важни от това дали проектирането следва логиката.

От друга страна, Space Age обикновено увеличава мащаба на заводските логистики, което означава повече влакове, пътуващи на железницата. С други думи, нарушенията на основните принципи по-лесно се забелязват при повече товарен трафик, отколкото че сигналната система основно се променя.

Space Age/ja wiki.factorio.com

Обхват и предпоставки на статията

От този раздел нататък се фокусирам на предотвратяване на дедлокове, фокусирани върху железницата. Конкретно, обхващам кръстовища, разклонения, преминаване на едноколунна железница, двуколунна конструкция, чакащи линии пред станции, кръгови пътища и използване на train limit за ограничение на входящия поток — всички аспекти на проектирането на железнишката мрежа.

Обратното е, че не навлизам в детайлите на междупланетната логистика или космическата мрежа, които се появяват в Space Age. Това е интересна област, но същността на дедлока остава: „Където влаковете трябва да спрат и където не трябва да спрат" е организирано на релсите. Дори със повече планети, ако използваш обикновен сигнал в началото на кръстовище, цялата система може да се дедлокне, и ако нямаш достатък на чакащо място пред станцията, основната линия ще бъде блокирана.

Дедлок в контекста на това изложение означава, че влаковете взаимно се очакват и неподвижност не могат да бъдат решени без ръчна помощ. Може да изглежда като „просто затъпяване", но на практика пътните резервации се сблъскват и влаковете никога няма да се движат напред без ръчно намесване.

💡 Tip

В тази статия различавам „спирането поради грешка на сигнала" от „хроничното затъпяване поради недостатък на капацитет". Дори правилните сигнали могат да причинят затъпяване на малък кръговрът или къса чакаща линия. Способността да направиш това разграничение твърде ускорява определянето на причин.

Мини-речник на терминологията

Нека уточним терминологията, която ще използвам. Въпреки че ще има допълнения при първото появяване, подредбата предварително помага.

Обикновен сигнал е сигнал, който проверява „дали следващият блок е свободен за влак". Подходящ е за прави отсечки или места, където пътната логика е вече проста. Но ако го поставиш преди разклонение или кръстовище, влакът е склонен да се справяй с полуприход в кръстовището.

Верижен сигнал не проверява само следващия блок — проверява дали пътът до следващия обикновен сигнал или станция е свободен за преминаване. С други думи, „по-добре да не влизам, ако вероятно ще спра в средата". Това е причината основен верижен сигнал да е норма на входа на кръстовище.

Блок е затворена зона, разделена от сигнали. Един блок може да съдържа само един влак наведнъж. Влаковете се движат чрез многократно заемане и освобождаване на блокови единици, така че при мислене за дедлок е много важно „как се нарязвам на блокове". Честно казано, режимът на нарязване на блокове, а не самите влакови вагони, е причина в повечето случаи.

Само с тези три се вижда, че „верижен сигнал в началото на кръстовище, обикновен сигнал след това" е естествено правило.

В статията се фокусирам на дедлок, но ако искаш да разбереш цялата железнишка мрежа, движението между общия преглед и тази детайлна статия ще помогне. Особено начините на строителна база на двуколунна железница, поставяне на станции, проектиране на чакащи линии и ролите на сигналите са по-лесни за разбиране в контекста на цялото мрежово проектиране, отколкото ако само извличам дедлока.

По мой опит дедлоците често възникват от свързването на три области: кръстовища, пред станции и основна линия капацитет, а не от единична грешка. Така всеки раздел по-долу показва как да приеме цялата мрежа, балансирайки къде да позволиш спиране и къде да запазиш потока.

【Factorio】Какво е дедлок? Първо условия на възникване

Определение на дедлок и разлика от затъпяване

Дедлок в Factorio е, когато влаковете си очакват един друг, и затъпяването не се решава без ръчна помощ — трайна спирка. Макар че може да изглежда „просто затъпяне", пътните резервации взаимно блокирани са и времето не решава проблема. През Tutorial: Train signals - Factorio Wiki дори само два влака могат да вероятно дедлокнат. Това е критично значимо.

От друга страна, затъпяване е когато забавянето е налично, но влаковете могат постепенно да напредват. Кръстовището обработва потока бавно,荷役на станцията е бавна — неприятно, но принципно разрешимо с времето. С други думи, затъпяването е „бавна прогресия", а дедлокът е „пътните резервации са конфликт, никога не напредвам".

Аз лично съм разходизирал хиляди часа тук. Защо само два влака причиняват затъпяване? Нямах представа. Причината е била проста: конфигурацията на сигналите позволяваше влаковете да спират в кръстовищата. Определящото не е броят на влаковете, а дали проектът позволява на влаковете да спират на неподходящи места.

Tutorial:Train signals/ja wiki.factorio.com

Три типични модела на възникване

Дедлоците, които виждам на практика, се разпределят на три категории. Всички те описват „влак, който не трябва да спира на място, спира там".

Първото е спиране вътре в кръстовището. Ако поставиш обикновен сигнал преди разклонение или кръстовище, влакът мисли „следващия блок е свободен, мога да влезя". Резултатът е влакът влиза в кръстовището, но спира, защото изходът е запълнен, което блокира друг влак да мине. Това е най-типичното и случва се на всички нива на умение.

Второто е спиране с лицето на лицето на едноколунна железница. Ако няма достатък на преминаваща линия или придържане, два влака, дошли от противоположни страни на един раздел, влиза в мъртва хватка. Едноколунната конструкция е евтина на начало, но нуждаеш се от проектно управление на спиране, което е уязвимо.

Третото е чакащо преди станцията, което окупира основната линия. Ако няма достатъчно буфер пред станцията или няма такава, списъкът чакащи влакове се простира в основната линия и разклоненията, което може да застави цялата система. Това е всъщност комбинирана „проблем на станцията" и „проблем на основната линия".

Тези три класификации изглеждат отделни, но коренът е почти един и същ. Проектирането не контролира където спират влаковете, което създава всеобщо спиране на всяко място.

💡 Tip

Дедлок предотвратяване е по-лесно с идеята да „ограничиш място на спиране", отколкото да „намаляш броя на влаковете". Тъй като дедлокът се случва дори със малко влакове, първото действие е да контролираш положението.

Как да разпознаеш на местност

Когда си на картата и видиш затъпяване, най-бързо е да видиш където спира предният влак, не броя на влаковете. Аз обикновено гледам първо къде е носът, за да отделя бързо дали е грешка на сигнала или недостатък на капацитет.

Нещото, което искам да видя, е между кои сигнали спира влакът. Ако спира вътре в кръстовището, разклонението или слеза полета, възможно е прецизирането на вход да е твърде мекано, което позволява „спиране вътре". За разлика, ако влакът е видимо чака много преди кръстовището, сигналната логика вероятно е правилна; сега подозирам капацитета или буфер проблема.

Друго, което искам да видя, е спира ли влакът преди кръстовището или вътре. Влак, който спира преди, поне показва „ако не мога да премина, не влизам". Влак, който спира вътре, този момент позволява на други посоки да бъдат блокирани. Разликата е по-голяма, отколкото изглежда.

Допълнително, дали опашката чакащо блокира разклонение или основна линия е решаващо. Станция, която чака, може да блокира и други пътни варианти чрез опашката. В процеса на отстраняване на неизправност е по-полезно да видя „где е опашката", отколкото „кой влак е виновен". На практика един влак в опашката или един в кръстовището често причинява цялото затъпяване.

По мой опит дедлокът не се вижда правилно чрез общ преглед на мрежата. Макар че на картата изглежда като голямо затъпяване, истинския виновник е често „един влак спрял в кръстовището" или „опашката на един влак блокира разклонението". Наблюдението започва с точност на положението на спиране.

Дедлок причина 1: Грешки при поставяне на сигнали

Поведенче на обикновен и верижен сигнал

Това е лесно да бъде объркано, ако разчиташ на имена, но поведенията са много ясни. Обикновен сигнал проверява само „следващия блок". Ако следващия блок е свободен, дава позволение, дори ако кръстовището вътре и излизането са запълнени. Проблемът е, че позволява влакът да влезе в кръстовището и след това спира, блокирайки други посоки.

Верижният сигнал „предчита пътя до следващия обикновен сигнал или станция". През Tutorial: Train signals - Factorio Wiki верижният сигнал проверява пътя до следващия обикновен сигнал или станция и решава дали да позволи влизане. По същество, влизане е разрешено, ако можеш да излезеш напълно.

Разликата работи чудотворно на кръстовища. Кръстовище със само обикновени сигнали изглежда безопасно, защото има сигнали. Но на практика това е кръстовище, където спиране вътре е възможно. Никога не разбирах в начало: имам сигнали, защо е затъпено? Ключът беше присъствието на сигнала не е същото като спиране вътре е невъзможно. Verifying влаков сигнали изисква разбиране.

Основно правило за разклонение и кръстовище

Основното правило е просто. Разклоняващ или кръстовищен вход е верижен, изход е обикновен. Известна като „верижен вход, релсов изход (chain in, rail out)". Това съответства на инициалния дедлок.

Причината е ясна: на входа трябва да „позволиш влак, който напълно може да премине", защото кръстовището не е място на чакане. По обратното, изходът се връща към нормално управление на блокове, така че обикновен сигнал там е норма. Това позволява на влаковете да редици отвън на кръстовището, което остава преминаващо пространство.

В официалния Wiki известния пример показва ако входни сигнали остават обикновени, влак може да спре в кръстовището, което е проблем. Променяйки входните сигнали на верижни, се засилва правилото на входа, което намалява вътрешното спиране. По мой опит, повечето затъпени кръстовища имат „вход, който е твърде мек", не „недостатък на сигнали".

💡 Tip

Когато видя затъпено кръстовище, не мисля „кой влак е лошо", а „имаше ли този влак право да влезе в кръстовището". Ако входът е верижен, това разграничение е лесно.

Пример на това кога изходът също е верижен

Базово е, че излезът е обикновен, но на практика има случаи, когато это е изключение. Когато отсечката след кръстовище е къса. Ако стоян излез има друга разклонение, съединение или пред-станция вход вскоре, една релса без достатъчно място, то обичайното разходвам на излезни сигнали може позволить влакът да излезе ново кръстовище, но опашката остава в кръстовището.

В такива случаи, излез също верижен, позволяват само пълна преминаване е по-стабилно. Това е известно в общността като „използване верижен изход при къси излези". По смисъл, истинския излез на кръстовището е не физическия край, а късната станция. Вагонът трябва да е в безопасност преди да се помисля за входа.

По мой опит, при малкото съединение пред станцията, ако положа обикновен сигнал отгоре си, то блокът право го позволява да влезе, резултатът е влакът остава частично в кръстовището. Променяйки го на верижен сигнал, потокът обичайно се успокоява. Това е скромна корекция в облик, но ефектът е голям.

Типични грешки при поставяне и стъпки на корекция

Типичната грешка на начинаещи е да се поставят обикновени сигнали преди цялото кръстовище, както директна разширение на прави участъци. Но на кръстовища, това действува противоположно.

Корекцията не е трудна. Ако кръстовище е затъпено, тази последователност обикновено работи:

  1. Проверявам сигналите преди входа на кръстовища или разклонения
  2. Ако входът е обикновен, го заменям с верижен сигнал
  3. Поставям обикновен сигнал след кръстовището излез
  4. Ако излезът е краток, и следната разклонение или станция е близо, и излезът тогава е верижен
  5. Проверявам дали влаковете чакат „преди" кръстовището, не „вътре"

Ключът на корекцията е не „добавяне повече сигнали", а преместване на спиране място отвън от кръстовището. На моята карта, смяната на един входен сигнал на верижен, веднага възстаноми потока без ръчна помощ. Чувствам се като „правене на сигнала умен", но всъщност то е правене на входа по-строг, предпазване на аварии.

Фигура капционни предложения: „Променяне входа на верижен" „Верижен изход при къса отсечка"

За фигури, подходящи подписи са те, които помагат на читателя бързо да схвати намерението, а не прекалено описателни. Например „Променяне входа на верижен" трябва да покажа когато е обикновен, спиране вътре е възможно; когато е верижен, влак позволен ако пътя е свободен, което е сравнение показващо забързването

"Верижен изход при къса отсечка" е пример, когато изходът е близо до следната разклонение или станция, така че верижен изход е необходим за предотвратяване на вътрешното спиране. Описвайки разчета от пътния край до отлаганта разклонение вкупно ясно, почему обикновен сигнал не подходи.

И на двете фигури, показаното е еденствено: влаковете са конструирани където да спрат, не просто да имат сигнали.

Верижният сигнал изглежда сложен, но наблюдавания пункт е практичен. Обикновен сигнал, видящ само следния блок, на кръстовищном входе е склонен к дедлок. Верижен сигнал, предвиждащ пътя, на входе е силно намалява прекъсванията. Откога то се види ясно, дедлока диагностика е значително по-бърза.

Дедлок причина 2: Капацитет кръстовище и кръговъра пътя

Връзка между размер на кръговой път и брой влакове

Тук е хитро, че дори правилни сигнали могат дедлок да се появи ако самото кръговище е твърде малко. Последния раздел се занимаваше със „не пускане влакове, които не трябва да влизат"; това е „не достатък място за влакове, които влизат".

Кръговите пътища (ландо ръши) изглеждат хубави, намаляват конструкцию, така че ги ползвам много от начало. Но когато трафика растя, малко кръгавка с входи от четири направления часто осажда входа при чакане един друг. През Tutorial: Train signals - Factorio Wiki дедлок е възможно дори с два влака. То е „не прос случай на голямата мрежа".

Най-опасно е, че влак вътре на окръженост чака изхода, следващия влак не може да влезе, и чакащата редица разширява обратно, което задейства цяла верига. Малки кръговници обичайно го правят, и когато затъпянето се начне, е трудно да го разреша. Чувствам се като „спирайки торба" вместо кръстовище.

Общество често казва, че „кръговават трябва достатък място за максимално дългия влак, иначе самия влак блокира своя път". Аз съм объркал кръговици с къса компилиран влак, но след като свързах дълги влакове, целият кръговец спря. Дизайн време не имаше проблем, но когато брой влакови вагонов или брой влакове се променя, капацитет е със риск да се сгърчи.

Проектирането „само един влак вътре" и за и против

Очевидна грешкоправна стратегия са да се „влиза в кръговицата само един влак". Входа прави верижни сигнали твърде строго, която кръговица съдържа един влак. То е безопасен подход, което намаляват вътрешното смесване.

Преимущества са ясни. Вътрешният кръговец остава преходни район, чакането намаляват, затъпянето е читлив. Ако проблемът възникне, то е „преди" кръговицата, не „вътре", така че причинознанието е лесно. Когато мултиплеер среди хората трябва да докосват релс, това разбиране на начина на разчупване е скрито полезно.

Но недостатък е явен. Влакове, които не могат да влезнат в кръговицата, разбира се чакат на главната линия. То е безопасност за цената на чакането. Если главната линия буфер е малък, чакащия списък може да разширява разклоняване, и затъпянето се преместват, само на други място.

Това проектиране е върхов отделния като към кръговицата, но като видя цела мрежа, то е където да разместим чакане. Строгия входа контрол означава буферирането трябва да се случи другаде — преди станца или на поддържащите линии. Когато поток не подобрява дори след кръговицата затегне, обичайно причина е този외вън буфер е недостатъчен.

💡 Tip

Аз съм го направил скъпо: увеличил кръговицата, настроил входна верижен сигнала за „влизане когато видя място", и потокът се успокоява. Но след това нужната корекция е увеличаване буферът преди станца, не на самия кръговец.

Ако главната линия чакане растя, увеличавай буфър преди станца

Когато кръговицата е по-строга, главната линия буфър разширява. Ефективно здесь е спирачниот буфър преди станцата, известен като „стак". Идеята е просто: позволяват чакащите влакове да излезнат вътре из специален буфър преди станцата, не на главната линия.

Причина е критична. Повече въезди са „спирай на главната линия", така че проблемът стоп ще бъде само станцата. Обратното, в чакащия буфър преди станцата, главната линия остава преходна. Кръстовищата и главната линия запазват интеграция попълно.

Увеличаването буфър преди станцата потреби място и видимост на картата. Но ако щадим място, главната линия задържи списък, което унищожава всичко кръстовищно намеса. Един едноколунна железница,增加几条绕过линии, може да увеличава управлявани влакове. Ако чакат като основния линия, капацитет е пълен. Стегнатите кръговица и разширени буфър преди станца са свързани замисъл.

Картина надпис предложения: „Малко е кръгова NG пример" „Правилен размер и сиг

article.share

R

RinSeo

Factorio 2,000時間超。100駅以上の列車ネットワーク運用実績と Death World マラソンクリアの経験から、物流・防衛の実践ノウハウをお届けします。