Logistica

【Factorio】Deadlock-ul trenurilor: cauze și design-uri de evitare

În Japonia și peste tot, când trenurile se blochează la intersecții sau în fața stațiilor, cauza se rezumă de obicei la trei lucruri: plasarea semnalelor, capacitatea intersecției și lipsa liniilor de așteptare. În Factorio versiunea vanilla v2.0 și Space Age, principiile de bază ale căilor ferate sunt aceleași, deci puteți evita blocajele doar prin clarificarea acestor aspecte.

Logistica

【Factorio】Deadlock-ul trenurilor: cauze și design-uri de evitare

Scop geografic: Japonia

Când trenurile se blochează la intersecții sau în fața stațiilor în Japonia și oriunde în lume, cauza se rezumă de obicei la trei aspecte: "plasarea semnalelor", "capacitatea intersecției" și "lipsa liniilor de așteptare". În Factorio versiunea vanilla v2.0 și Space Age, principiile de bază ale căilor ferate sunt aceleași, deci puteți evita blocajele doar prin clarificarea acestor trei puncte.

Am și eu întâmpinat-o pe propria piele: când am conectat mai multe mine pentru prima dată, coloana de așteptare din fața stației s-a întins până la bifurcație și a blocat toată linia. După ce am reformat corect linia de așteptare cu dimensiunea convoiului și am schimbat bifurcația înainte de intersecție cu semnale de lanț, fluxul s-a restabilit imediat.

Acest articol clarifică în detail cum să utilizați semnalele obișnuite și semnalele de lanț, apoi cum să selectați liniile simple, duble, rotonzi și stivuitoare în funcție de condiții. Nu este vorba doar de repararea blocajelor după ce au apărut, ci despre cum să proiectați din început pentru a nu crea blocaje. Iată o procedură practică pe care o puteți urmări.

Versiuni țintă și cunoștințe preliminare

Clarificarea versiunilor țintă

Baza acestui articol este Factorio vanilla v2.0 și Space Age. Space Age este DLC plătit, și conform Factorio Wiki, a fost lansat pe 21 octombrie 2024.

Important: principiile de evitare a blocajelor trenurilor sunt aproape identice în v2.0 și Space Age. Plasarea unui semnal de lanț înainte de o intersecție și receptarea trenului pe cealaltă parte funcționează în același mod. Chiar am lucrat la o lume existentă în v2.0 și am extins-o ulterior; principiul de mutare a semnalului de intrare la intersecție rămâne același. Versiunea contează mai puțin decât dacă logica designului este corectă.

Pe de altă parte, în Space Age, scara totală a fabricii tinde să crească, iar numărul de trenuri pe rețea este mai mare. Cu alte cuvinte, principiile de bază nu se schimbă, dar dacă le ignor, blocajele devin mult mai evidente. Iată viziunea corectă asupra diferenței.

Space Age/ja wiki.factorio.com

Domeniu și presupuneri ale acestui articol

De acum, mă concentrez pe evitarea deadlock-ului în rețelele de trenuri. Specific, voi discuta intersecții, bifurcații, schimburi de linie pe liniile simple, dublare, linii de așteptare în fața stației, rotonzi și utilizarea pentru a restricționa intrarea.

Nu voi aprofunda logistica interplanetară din Space Age sau detalii ale rețelelor din spațiu. Acolo e interesant, dar esența blocajelor vine la: "unde ar trebui să se oprească trenul și unde NU ar trebui" să se oprească pe cale ferată. Chiar dacă apar mai multe planete, dacă utilizez un semnal obișnuit la intrarea unei intersecții, va fi aceeași problemă; dacă linia de așteptare din fața stației e prea scurtă, va bloca linia principală.

Deadlock-ul aici înseamnă că doi trenuri se așteaptă reciproc și nu se pot mișca. Poate să se întâmple cu doar 2 convoie, și uneori necesită intervenție manuală pentru a fi rezolvat. Poate să arate ca "pur și simplu aglomerat", dar din cauza conflictelor de rezervare, trenurile ar putea fi într-o oprire permanentă, deci nu tratez asta la fel ca o aglomerație obișnuită.

💡 Tip

În acest articol, separez "oprirea din cauza semnalelor greșite" de "aglomerația cronică din capacitate insuficientă". Dacă semnalele sunt corecte, o rotondă prea mică sau o linie de așteptare prea scurtă vor face totuși să se blocheze. Această separare face identificarea cauzei mult mai rapidă.

Mini dicționar de termeni

Iată termenii care vor fi folosiți. Voi adăuga explicații la prima apariție, dar clarificarea inițială ajută la lectură.

Un semnal obișnuit vede dacă "următorul bloc poate fi ocupat". Se potrivește bine pentru secțiuni drepte sau zone cu trasee simple. Cu toate acestea, dacă îl plasez înainte de o bifurcație sau intersecție, trenul va intra parțial în intersecție și se va opri acolo.

Un semnal de lanț vede dacă poate ajunge până la următorul semnal obișnuit sau la stație prin această rută. Cu alte cuvinte, funcționează pe "dacă nu pot ieși curând, nici nu intru". De aceea semnalele de lanț sunt standard la intrările intersecțiilor.

Un bloc este o secțiune între semnale. De obicei, doar un convoi intră într-un bloc. Cum trenurile ocupă și eliberează blocuri, modul de divizare a blocurilor devine critic în evitarea deadlock-ului. Sincer, când trenurile se blochează, problema este rareori vehiculele în sine, ci cum sunt tăiate blocurile.

Dacă stăpânesc acești trei, regula standard "semnal de lanț la intrare, semnal obișnuit la ieșire" devine mult mai naturală.

Articolul se concentrează pe deadlock, dar pentru a vedea imaginea completă a unei rețele de trenuri, citiți în contextul articolului părinte. Principiile de bază ale liniilor duble, plasarea stațiilor, gândirea liniilor de așteptare și rolul semnalelor se prind mai bine în contextul proiectării generale a rețelei.

Din experiența mea, deadlock-ul nu provine dintr-o singură greșeală, ci din modul în care "intersecția", "stația" și "capacitatea liniei principale" se conectează. Deci pentru fiecare secțiune care urmează, discutez nu cum să reparez doar un loc, ci cum să aliniez fluxul "unde să opresc și unde să las să curgă" în rețeaua întreagă.

【Factorio】Ce este deadlock-ul trenurilor? Condiții de bază care trebuie înțelese

Definiția deadlock-ului și diferența față de aglomerație

Deadlock-ul în Factorio înseamnă că doi sau mai mulți trenuri se așteaptă reciproc și nu se pot mișca fără intervenție manuală. Poate arăta ca "doar aglomerat", dar de fapt rezervarea rutelor este încurcat și fluxul nu se va restabili cu timpul. Conform Tutorial: Train signals - Factorio Wiki, deadlock-ul poate apărea chiar și cu doar 2 convoie. E o chestiune pe care o consider critică.

Aglomerația în schimb, progresează lent, dar în final se mișcă. Intersecția nu procesează suficient, sau stația este lentă la operații. E dificil, dar teoretic se rezolvă în timp. Adică, aglomerația e "lent dar se mișcă", deadlock-ul e "rutele sunt rupte și nu se mișcă deloc".

Am experimentat eu: de ce stau blocate cu doar 2 convoie? mi-am pus întrebarea ore în șir. Răspunsul era simplu: intersecția era configurată să permită oprirea trenului în interiorul ei. Nu e vorba despre câte trenuri, ci unde este permis să se oprească. Asta a schimbat totul.

Tutorial:Train signals/ja wiki.factorio.com

Trei modele tipice de apariție

Deadlock-urile pe care le văd frecvent se grupează în trei tipuri. Toate provin din "trenul se oprește unde NU ar trebui".

Tip 1: Oprire în intersecție. Dacă plasez un semnal obișnuit înainte de o bifurcație, trenul spune "următorul bloc e liber, intru". Dar apoi iese din intersecție și se oprește, și alta direcție se blochează. E cel mai tipic, și atât începători cât și experți o fac.

Tip 2: Coliziune pe linie simplă. Dacă unei linii simple îi lipsesc liniile de schimb, doi trenuri care vin din direcții opuse se blochează unul în fața celuilalt. Liniile simple sunt ieftine dar riscante. Deci dacă crește traficul, asta devine evident.

Tip 3: Așteptarea stației ocupă linia principală. Dacă spațiul de așteptare din fața stației e prea mic, coloana se întinde pe bifurcație. Doar o stație aglomerată, dar coloana ocupă intersecția și oprește toată rețeaua. Deci "problema stației" și "problema liniei principale" se conectează.

Aceste trei sunt legate la rădăcină: nu se poate controla unde se oprește trenul. Fie intersecție, fie linie simplă, fie stație, aceeași sursă: plasare greșită a blocurilor.

💡 Tip

Când tratez deadlock-ul, prioritatea e limitarea locului de oprire mai înainte decât "prea mulți trenuri". Dacă se întâmplă cu 2 convoie, atunci plasarea e principala problemă.

Cum să identificu pe teren

Când e blocat, mai bine mă uit unde se oprește vârful trenului decât număr convoiele. Focusez pe exact în ce semnal și semnal se oprește.

Dacă se oprește în intersecție, la bifurcație, imediat după confluență, asta spune că intrarea era prea permisivă, deci "e permis să se oprească în interior". În schimb, dacă trenurile așteaptă lin înainte de intersecție, semnalele sunt în regulă; problema e capacitate sau spațiu de așteptare.

Un lucru important: se oprește înainte de intersecție sau în interior? Înainte = "nu intru dacă nu pot ieși"; interior = "m-am oprit după ce am intrat". Asta e diferență enormă.

De asemenea, coada de așteptare se întinde pe bifurcație? Dacă drumul A asteaptă de o stație, dar coada ajunge pe bifurcația către drumul B, atunci B se blochează chiar dacă are loc. Problema nu e stația, e unde se termină coada.

Din experiență, deadlock-ul pe hartă pare aglomerat total, dar adesea cauza e "o singură mașină în intersecție" sau "o coloană cu coadă pe bifurcație". Deci punctul de observație e corectitudinea punctelor de oprire, nu numărul de trenuri.

Cauza deadlock-ului 1: Greșeli în plasarea semnalelor

Diferența de comportament între semnal obișnuit și semnal de lanț

Aici e ușor să mă încurc doar cu numele, dar comportamentul e clar diferit. Semnalul obișnuit vede doar "următorul bloc". Dacă acel bloc e liber, permite trecerea, chiar dacă intersecția internă e plină. Problema: trenul intră, se oprește în interior, și blochează alte direcții. Din Tutorial: Train signals - Factorio Wiki, regula e "chain in, rail out".

Semnalul de lanț vede "această rută poate fi eliberată?" vede până la următorul semnal obișnuit sau stație. Adică "pot ieși curând?" Diferența e imensă la intersecții. Doar semnale obișnuite = intersecție unde e permis să se oprească în interior. Schimb la lanț = condiție mai strictă, și oprirea în interior scade.

Asta chiar m-a încurcat la început: de ce semnalul e roșu dacă e configurat greșit? Răspunsul: semnalul există și se poate opri corect sunt lucruri diferite.

Regula de bază pentru bifurcații și intersecții

Regula e simplă: lanț la intrare, obișnuit la ieșire. Asta e tot ce trebuie să știu de obicei.

Motiv: intrarea trebuie "sunt sigur că ies" înainte să intri. Intersecția nu e loc de așteptare. Ieșirea e unde revin la blocare normală. Deci trenul așteaptă afară și intersecția rămâne cărări.

Din Wiki, dacă semnalele obișnuite sunt la intrări, intersecția devine "loc de așteptare posibil". Schimb la lanț = intrare strictă = nu mai aștept în interior. Mi-am întâmpinat foarte des: fiecare intersecție care se bloca avea intrare cu semnal obișnuit.

💡 Tip

Când e blocată o intersecție, mă uit: "dacă trenul ăsta intră, are ieșire garantată?" Dacă intrarea e lanț, asta-i clar.

Excepție: ieșiri scurte și lanț și la ieșire

Regula "ieșire = obișnuit" are o excepție: dacă distanța după ieșire e prea scurtă. Dacă dupa ieșire imediat bifurcație sau stație, și spațiu de o mașină-jumătate, atunci semnalul obișnuit la ieșire permite "ieșire din intersecție" dar coada rămâne în intersecție.

Soluția: ieșire și ca lanț, doar asta cu condiția "pot ajunge departe". Stivuitor scurt? Lanț la ieșire. Asta se numește "chain-out" în comunitate. Deci "intersecție" nu e doar fizic, ci până unde se deplasează complet.

Mi s-a întâmplat în stații mici: obișnuit la ieșire și imediat se blochea din nou. Schimb la lanț și "gata!". Modificare mica, efect mare.

Configurări greșite frecvente și pași de corectare

Începătorii fac: toată intrarea cu semnale obișnuite. Ca pe dreapta, semnale peste tot. Dar la intersecție asta e contraproductiv.

Corectare în ordine:

  1. Verific semnalele înainte de intersecție
  2. Dacă obișnuit, schimb la lanț
  3. Plasez obișnuit după ieșire
  4. Dacă ieșire scurtă (bifurcație sau stație imediat), schimb și ieșirea la lanț
  5. Verific dacă trenul așteaptă ÎNAINTE de intersecție, nu ÎN interior

Scopul: muta așteptarea afară din intersecție. Când schimb doar intrarea la lanț, adesea "gata, fluxul revine". Efect mare, cost mic.

Subtext la figuri: "Schimb intrare la lanț", "Ieșire scurtă cu lanț"

Pentru imagini, captions trebuie clare și rapide.

"Schimb intrare la lanț": obișnuit = intru dacă următorul bloc e liber, dar se opresc în interior; lanț = intru doar dacă pot ieși complet. Comparația vede diferența.

"Ieșire scurtă cu lanț": ieșire scurtă cu obișnuit = coadă în interior; ieșire scurtă cu lanț = coadă exterior. Figura cu bifurcație după ieșire ajută.

Mesajul: semnalul nu-i despre "sigur e; semnalul e despre "unde se oprește". Lanț = oprire afară.

Semnalele de lanț par complicate, dar esența-i practică: obișnuit e "siguiente bloc?", lanț e "pot ieși curând?" Asta la intersecție face diferența enormă.

Cauza deadlock-ului 2: Capacitate insuficientă a intersecțiilor și rotonzilor

Relația între dimensiunea rotonzei și numărul de trenuri

Problema grea: semnale corecte + rotondă prea mică = blocare.

Rotonzile arată frumos și sunt compacte, deci mă tentează la început. Am folosit o tonă. Dar când traficul crește, doi-trei trenuri în rotondă mică și toate direcțiile cade. Și chiar și 2 convoie pot face asta. Deci nu-i "rețea mare" - oricare.

Scenariu periculos: rotondă mică, trenul intră, se oprește pe marginea din interior, coadă pentru ieșire, trenuri noi nu pot intra, aglomerație. Mică rotondă = "cărări în jurul unei oaze". Vreau ca trenul 1 să iasă înainte de trenul 2 să vrea să intre.

Comunitatea spune: "dacă rotonda e prea mică pentru lungimea convoiului, cozi în interior". Am avut exact asta: mici convoie, apoi mari, și boom - blocare. Deci dacă traficul creşte, capacitate poate să nu ajungă.

Merit design-ul "doar 1 convoi odată"

Tactic sigur: intru doar 1 convoi la timp. Intrare lanț strictă, fără doi în rotondă. Asta = sigur, nu mai avem conflict intern.

Meritul: rotonda rămâne liber, și traficul e ușor de urmărit. Dacă ceva se rupe, stiu unde. Deci "cumplit dar clar".

Dezavantaj: trenul care nu intră așteaptă afară. Adică așteptare în linie principală.

Asta-i schimb: siguranță în rotondă = aglomerație pe linie principală. Deci trebuie mai mult spațiu de așteptare la stația de apoi. Rotondă pusă cu lanț strict + stație cu spațiu mic = aglomerație în alt loc.

💡 Tip

Am mărit rotonda și am pus lanț la intrare. Fluxul se liniștit. Dar apoi a trebuit să măresc și așteptarea la stație.

Dacă așteptare crește, măriți stivuitorul

Rotondă sigură = linie principală aglomerată. Soluție: stivuitor la stație. Loc special pentru a aștepta, nu pe linie.

Ideea: stop în așteptare, nu pe principală. Deci linie rămâne cărări.

Stivuitorul trebuie lungime = 1 convoi complet + semnal după. Comunitate: 1-4-0 ≈ 37 tile (nu-i oficial, doar măsurat). Dar principiu: 1 convoi să încapă complet.

Exemple de eșec: coada pe bifurcație / pe linie principală

Eșec #1: linie de așteptare scurtă, coadă pe bifurcație. Trenul "așteaptă" la stație, dar coada lui e pe bifurcație. Deci trenul care vrea altă direcție nu-și găsește cale. Tip perfect de "un loc blocat = rețea blocată".

Eșec #2: așteptare se întinde pe linie. Trenuri care trec sunt ralentizate, aglomerație spread-uri.

Greu să mă gândesc: l-am găsit după ore. Stivuitor scurt era culpabil. Am mărit, am mutat semnalul, și "gata". Linia principală deodată stabil.

Scurt: 1 convoi trebuie complet ascuns în stivuitor. Scurt stivuitor = linie ocupată. Lung stivuitor = linie liberă.

💡 Tip

Privesc stivuitorul: dacă pun 3 trenuri și al 3-lea se termină pe bifurcație, e prea scurt. Măriți.

Cauza deadlock-ului 3: Spațiu de așteptare insuficient la stație

Rolul stivuitorului (liniile de așteptare)

Când stația e aglomerată, cauza nu-i viteza de operație, ci unde aștept trenurile care nu pot intra. Asta e rolul stivuitorului. Trenul nu așteaptă pe linie, ci pe așteptare specială.

Asta-i grav: trenul oprit pe linie = alte linii se blochează = blocaj în cascadă. Intrare gă stație e mic, dar ieșire sunt 10 km! Deci stivuitor e "tampon rețea".

M-am întâmpinat: stație de minereu cu așteptare scurtă. Coada era pe bifurcație! Stație în regulă, dar afară e prost. Pur și simplu: "atelierul mare, drum îngust".

Stivuitor = protecție linie principală.

Design: lungime convoi și lungime bloc de așteptare

Crina: cel mai lung convoi din rețea trebuie complet în bloc de așteptare.

Dacă am 1-2-0 și 1-4-0, fac pentru 1-4-0 (cel mai lung!). Scurt stivuitor = convoi lung se varsă pe bifurcație. Am observat: scurt stivuitor e "invis" până când convoi lung vine - atunci BAM, bifurcația e ocupată.

Comunitate: 1-4-0 ≈ 37 tile (măsurat, nu oficial). Dar mesaj: convoi complet în bloc, nu coadă pe bifurcație.

Și câți stivuitoare? Câte trenuri vin deodată. Dacă 2 stații, 3 trenuri pe ciclu = stivuitor trebuie cel puțin pentru 3. Dacă nu, coada revine la linie.

Eșec clasic: așteptare pe bifurcație / linie

Scenariul: "stivuitor scurt", coada pe bifurcație. Trenul "așteaptă la stație", dar bța lui blochează altă direcție. Perfecție - stație nu-i culpabilă, așteptarea e.

Reparație: stivuitor lung, semnale în poziție bună, bifurcație liberă.

Eu: stivuitor 2 tile, inutil. Mărit la 37, schimbat semnal, și linia B deodată se mișcă. Deci "stivuitor" nu-i despre stație, e despre linia principală liberă.

💡 Tip

Privesc stivuitorul: "dacă 2 trenuri așteaptă și al 3-lea vine, unde se termină?" Dacă pe bifurcație/linie, e prea scurt.

Baze de circuit / train limit

Controlul circuitului cu e puternic. Doar stații goale acceptă, altfel no. Dar așteptare liberă rămâne important.

Comunitate: "dacă au locuri goale în rețea > nr. trenuri, e stabil". Invers: toate locurile sunt pline = trenuri pe linie = blocare.

Deci train limit e "trafic smart", nu "înlocuitor pentru spațiu". Limita deschide porți, dar dacă stivuitor e scurt, și asta nu ajută.

Linie simplă vs. dublă vs. rotondă: ce să aleg?

Condiții pentru linie simplă și când măresc linii de schimb

Linie simplă = ieftin și rapid în faza inițială, perfect pentru mine la inceput. Lejer conectez o mină departe.

Dar linie simplă without linii de schimb = deadlock garantat. Doi trenuri se vor bloca. Deci linii de schimb nu-s optional, sunt bază.

Și când adaug mai mult? Linia de schimb se întinde (cu semnale în interior), deci mai mulți convoie pot aștepta. Experiență: linie de schimb scurtă + măresc = de la 2 convoie la 3, stable.

Trucul: linie de schimb trebuie convoi complet.

Cu cât mai mult trafic, cu atât mai mult "linie simplă pleșcă". Trafic crescut = bun cand linii de schimb × N, și deja e dezastru. Deci migrhez la dublă.

Condiții pentru cale dublă unidirecțională

Trafic creș = cale dublă unidirecțională. Un sens fiecare direcție.

Avantaj: NU se ciocnesc frontal. Semnal ușor de gândit. Stație ușor măresc. Dupliez suportă crescut trafic.

Tarziu în game, stații + linii = dublă e standard. Și când schimb mai târziu, mult rework. Deci mejor: plan gândesc dublă de start, dacă văd potențial extindere.

Mă gândesc: "stație aici mai târziu?" = dublă. "doar 1 mină isol" = simplă.

Condiții pentru rotondă

Rotondă = ușor, compact, 4 direcții. Bună pentru unde nu-mi pot permite intersecție mare.

Dar: mică rotondă = blocare ușoară. Și dacă trafic crește, trecere la dublă e mai ușor decât rotondă marire.

Ideal: intrare lanț strict, deci "1 la timp". Asta = sigur intern. Dar = aglomerație extern. Deci stivuitor plus, și-i bine.

Comunitate: "T junction uneori mai bine". E adevărat în unele cazuri, dar depinde de tot. Deci rotondă nu-i "mereu bună" dar nici "mereu rau".

Tabel comparativ

TipIdeal pentruPutereSlăbiciune
Linie simplăFaza inițială, departeIeftinLinii de schimb necesare, creștere trafic = colaps
Dublă unidirecționalăCale principales dupa faza inițialăExpandibil, clarConstruct costisitor inițial
RotondăIntersecție mică, mic traficCompact, 4 direcțiiMică = blocare. Capacitate vs. semnal = crucial

Incert? Dublă + stivuitor la stație = sigur. Simplă = "temes ieftin", dublă = "stabil pe termen lung".

💡 Tip

Întreb: "voi adăuga stație pe ruta asta?" Dacă DA = dublă. Dacă NU = simplă. Rotondă doar pentru mic trafic.

Checklist de evitare rapid

Verificare intersecție

Punct: "intrare lanț, sunt semnale pe ieșire, ieșire nu-i scurtă?"

  • Intrare: lanț?
  • Interior: nu sunt semnal care permitere stop?
  • Ieșire: sunt obișnuit?
  • Ieșire scurtă: și ieșire lanț?

Scopul:

article.share

R

RinSeo

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