https://forums.factorio.com/viewtopic.php?f=194&t=18621
좀 된 글이라 지금에 완전히 적용되는지는 모르겠음.
저 글을 읽고 내가 분류한 데드락은 크게 세가지임
1. 신호기 잘못 박아서
2. 역에 대기공간 부족으로 인한 정차
3. 루프에 의한 데드락
1번 2번은 일단 교차로에 적용되는 내용임
1번의 경우는 연속신호만 똑바로 박으면 사실 문제될게 없음
2번은 역 입구에 대기공간을 만들거나 역에 기차 수 제한을 걸면 됨
근데 3번은 좀 복잡해짐...
일단 3번은 아무리 교차로가 데드락에서 자유롭다 하더라도 철도 네트워크 단위에서 발생할 수 있게됨.
지금 폰이라 사진을 긁어오긴 좀 그래서 대충 설명하자면
하나의 그리드를 감싸는 정방의 철도는 결국 하나의 거대한 루프(로터리)로 볼 수 있는데,
로터리 교차로는 연속신호를 똑바로 박으면 로터리 내에서 데드락이 일어날리가 없지만
그리드를 감싸는 루프는 그리드의 변(직선부분)에 일반신호가 박히므로 마치 일반신호가 박힌 거대한 로터리가 되는 거임.
마치 1번의 상황이 연출되는 거지.
이게 적은 통행량에서는 문제가 안됨.
그리드를 감싸는 거대한 로터리(루프)는 자체적으로 대기열(직선)을 가지고있고, 대체로 열차의 길이가 로터리에 비해 매우 작아서 데드락이 생기기 쉽지 않음.
근데 통행량이 많으면 문제가 됨.
하나의 그리드 네 변에 각각의 변을 꽉 채울만큼의 열차가 들어오게되고, 네 모퉁이 열차가 모두 좌회전을 하고자 한다면 루프가 생기게되고 데드락이 발생함.
사실 이정도 상황이면 본인이 그리드를 너무 작게한게 아닌가 혹은 열차가 너무 짧아서 수송량이 적은건 아닐까 하는 반성을 하는게 맞지만, 이론적인 얘기니까 제쳐두자.
극단적인 통행량과 네 변에 좌회전을 하려는 기차가 '동시에' 진입하는 상황은 오히려 더 이상적인 상황이기도 하지만...
어쨋든 복선철도에서 결국 열차는 돌고 돌아야하기 때문에 어딘가에는 루프가 생기게 되고, 이론적으로는 데드락이 없을 수가 없다.
물론 이런 극단적인 통행량 속에서도 데드락을 줄이는 방법은 여러가지가 있을 수 있는데, 통행량이 특히 많을것으로 예상되는 '그리드'는 우회경로를 사용하면 부분적으로 해결된다.
루프 내에 있는 교차로가 루프를 돌기위한 신호를 대기하고 있기때문에, 교차로에서 기차가 가려던 길을 포기하고 그리드 내의 다른 우회로를 탐색하도록 하는 거임.
이 경우 교차로 입구의 신호구조가 중요한데, 연속신호의 위치가 좌,우,직진으로 갈라지기 전에 있어야 함. 그래야지 루프로 가려던 기차가 다른 경로로 갈 수 있다.
하지만 근본적인 해결책은 아닌것이, 우회로를 선택하면 하나의 열차는 2개 내외의 교차로 트래픽을 추가로 발생기시키기 때문에 결국 네트워크의 통행량은 더 증가하게 되고, 또 어딘가에서는 데드락의 위험이 기다리고 있다.
더 근본적인 해결책은 통행량을 낮추는 것.
애초에 그리드 자체가 현실이랑 굉장히 동떨어진 시스템이고, 그리드 중앙부분은 통행량이 적을 수가 없기때문에 최적화를 해야한다.
생산과 소비의 연쇄가 가능한 가까운 그리드 내에서 이루어져야 하고, 그리드의 크기나 물류량에 적절한 대기공간과 철도길이를 정해야 한다.
경우에 따라서는 그리드의 크기도 중요하다(크다고 통행량이 줄어들진 않는다. 직선철로가 길어지는게 긍정적일지 부정적일지는 열차 길이마다 다름)
더 나아가서는 복복선을 이용하거나 데드락시에만 사용하는 단선을 추가해 3선을 운용할 수도 있겠다. 복복선은 교차로가 많은 그리드에서는 그다지 큰 통행량 추가를 기대하기는 어렵지만(교차로의 트래픽 수용량은 복선이나 복복선이나 비슷함), 복복선 자체가 두개의 거대 로터리를 제공하기 때문에 우회로를 만들어 데드락을 줄일 수 있다. 3선의 경우는 이론적으로나 가능하지 신호를 박기가 애매해서 현실적으로는 어려울 수도 있겠다.
그리드 한정으로 복복선은 통행량을 늘리기보다는 이미 많은 통행량에서 데드락이을 줄이는 역할이 더 크다고 볼 수 있다. 추가되는 선로가 통행량보다는 우회로와 대기열의 역할을 하기 때문임.
추가로 경로변경에 의한 데드락도 있을 수 있는데, 이건 좆같은 상황이라 다루지 않겠다. 나도 잘 모르겠음.
결론
데드락을 없애려면
교차로는 출구 빼고 연속신호 박기
하나의 역에 가려고 대기하다가 정차하는 열차가 없게하기(대기열을 만들거나 열차수 제한)
통행량 줄이기
내가 잘못 생각하는 부분이 있을 수도 있다. 틀릴수도 있음
글을 쓴 이유는... 그냥 혼자 정리해본거
좀 된 글이라 지금에 완전히 적용되는지는 모르겠음.
저 글을 읽고 내가 분류한 데드락은 크게 세가지임
1. 신호기 잘못 박아서
2. 역에 대기공간 부족으로 인한 정차
3. 루프에 의한 데드락
1번 2번은 일단 교차로에 적용되는 내용임
1번의 경우는 연속신호만 똑바로 박으면 사실 문제될게 없음
2번은 역 입구에 대기공간을 만들거나 역에 기차 수 제한을 걸면 됨
근데 3번은 좀 복잡해짐...
일단 3번은 아무리 교차로가 데드락에서 자유롭다 하더라도 철도 네트워크 단위에서 발생할 수 있게됨.
지금 폰이라 사진을 긁어오긴 좀 그래서 대충 설명하자면
하나의 그리드를 감싸는 정방의 철도는 결국 하나의 거대한 루프(로터리)로 볼 수 있는데,
로터리 교차로는 연속신호를 똑바로 박으면 로터리 내에서 데드락이 일어날리가 없지만
그리드를 감싸는 루프는 그리드의 변(직선부분)에 일반신호가 박히므로 마치 일반신호가 박힌 거대한 로터리가 되는 거임.
마치 1번의 상황이 연출되는 거지.
이게 적은 통행량에서는 문제가 안됨.
그리드를 감싸는 거대한 로터리(루프)는 자체적으로 대기열(직선)을 가지고있고, 대체로 열차의 길이가 로터리에 비해 매우 작아서 데드락이 생기기 쉽지 않음.
근데 통행량이 많으면 문제가 됨.
하나의 그리드 네 변에 각각의 변을 꽉 채울만큼의 열차가 들어오게되고, 네 모퉁이 열차가 모두 좌회전을 하고자 한다면 루프가 생기게되고 데드락이 발생함.
사실 이정도 상황이면 본인이 그리드를 너무 작게한게 아닌가 혹은 열차가 너무 짧아서 수송량이 적은건 아닐까 하는 반성을 하는게 맞지만, 이론적인 얘기니까 제쳐두자.
극단적인 통행량과 네 변에 좌회전을 하려는 기차가 '동시에' 진입하는 상황은 오히려 더 이상적인 상황이기도 하지만...
어쨋든 복선철도에서 결국 열차는 돌고 돌아야하기 때문에 어딘가에는 루프가 생기게 되고, 이론적으로는 데드락이 없을 수가 없다.
물론 이런 극단적인 통행량 속에서도 데드락을 줄이는 방법은 여러가지가 있을 수 있는데, 통행량이 특히 많을것으로 예상되는 '그리드'는 우회경로를 사용하면 부분적으로 해결된다.
루프 내에 있는 교차로가 루프를 돌기위한 신호를 대기하고 있기때문에, 교차로에서 기차가 가려던 길을 포기하고 그리드 내의 다른 우회로를 탐색하도록 하는 거임.
이 경우 교차로 입구의 신호구조가 중요한데, 연속신호의 위치가 좌,우,직진으로 갈라지기 전에 있어야 함. 그래야지 루프로 가려던 기차가 다른 경로로 갈 수 있다.
하지만 근본적인 해결책은 아닌것이, 우회로를 선택하면 하나의 열차는 2개 내외의 교차로 트래픽을 추가로 발생기시키기 때문에 결국 네트워크의 통행량은 더 증가하게 되고, 또 어딘가에서는 데드락의 위험이 기다리고 있다.
더 근본적인 해결책은 통행량을 낮추는 것.
애초에 그리드 자체가 현실이랑 굉장히 동떨어진 시스템이고, 그리드 중앙부분은 통행량이 적을 수가 없기때문에 최적화를 해야한다.
생산과 소비의 연쇄가 가능한 가까운 그리드 내에서 이루어져야 하고, 그리드의 크기나 물류량에 적절한 대기공간과 철도길이를 정해야 한다.
경우에 따라서는 그리드의 크기도 중요하다(크다고 통행량이 줄어들진 않는다. 직선철로가 길어지는게 긍정적일지 부정적일지는 열차 길이마다 다름)
더 나아가서는 복복선을 이용하거나 데드락시에만 사용하는 단선을 추가해 3선을 운용할 수도 있겠다. 복복선은 교차로가 많은 그리드에서는 그다지 큰 통행량 추가를 기대하기는 어렵지만(교차로의 트래픽 수용량은 복선이나 복복선이나 비슷함), 복복선 자체가 두개의 거대 로터리를 제공하기 때문에 우회로를 만들어 데드락을 줄일 수 있다. 3선의 경우는 이론적으로나 가능하지 신호를 박기가 애매해서 현실적으로는 어려울 수도 있겠다.
그리드 한정으로 복복선은 통행량을 늘리기보다는 이미 많은 통행량에서 데드락이을 줄이는 역할이 더 크다고 볼 수 있다. 추가되는 선로가 통행량보다는 우회로와 대기열의 역할을 하기 때문임.
추가로 경로변경에 의한 데드락도 있을 수 있는데, 이건 좆같은 상황이라 다루지 않겠다. 나도 잘 모르겠음.
결론
데드락을 없애려면
교차로는 출구 빼고 연속신호 박기
하나의 역에 가려고 대기하다가 정차하는 열차가 없게하기(대기열을 만들거나 열차수 제한)
통행량 줄이기
내가 잘못 생각하는 부분이 있을 수도 있다. 틀릴수도 있음
글을 쓴 이유는... 그냥 혼자 정리해본거
쓰고나니 생각났는데 코드가 기억이 안난다. 꼭 루프가 좌회전일 필요는 없음 교차로 형태에 따라 하나의 루프 속에 다른 방향의 데드락이 생길 수도 있다.
유용한척하는 뻘글
통행양은 데드락이랑 전혀 상관없어.데드락은 말 그대로 서로서로 진행방향을막아서 움직이지 못하는상태인데 열차가 많아서 신호를 오래 기다릴지언정 막히진 않지.신호 잘 박은 교차로 복사해서 쓰고 대기열만 기차수에 맞게 해주면 됨
내가 걸은 링크에 있는 내용을 읽어봐. 교차로 수준에서는 통행량과 데드락이 무관한게 맞아. 근데 신호를 아무리 잘박아도 복선 네트워크에 거대한 로터리가 형성되기 시작하면 그 사이에는 일반신호가 존재하게 되고, 교차로에서 신호가 중요했듯이 결국 거대 로터리에서는 이 일반신호가 데드락을 유발해.
글에서 언급했듯이 거대 로터리는 낮은 통행량에서는 데드락을 경험하기 어렵지만, 통행량이 많고 특정 거대 로터리에 진입하는 열차가 겹치면 낮은 확률로 발생할 수 있어. 여러 열차가 동시에 진입해야 한다는 조건이 까다롭긴 하지만, 확률이 낮더라도 오래 굴리다가 한번 발생하면 귀찮은게 데드락이지.
기차신호에 있어서 확률같은건 없다.낮은 확률로 데드락이 걸린다는건 신호를 이상하게 박았거나 아니면 정차역을 이상하게 만들었거나 교차로를 이상하게 만든거지.낮은확률로 데드락이 걸린다는건 높은 확률로 운좋게 데드락이 안걸린거니깐.신호 같은거 안박아도 기차 몇개 안쓰면 서로 충돌 안하는거나 마찬가지
거대 로터리에서는 일반신호가 필연적으로 박히기 때문에 동시에 열차가 진입하면 데드락이 발생할 수도 있다고. 신호가 확률이 아니라 트래픽이 유동적이니까 그런 거지. 저 링크에 걸린 데드락 사례중에 그리드에 발생한 데드락은 교차로나 정차역에 아무런 문제가 없어도 발생할 수 있어.
그게 로터리를 이상하게 만든거지.그런건 확률로 볼게 아님.
확률을 언급한건 단순 트래픽 뿐만 아니라 열차들의 목적지와 통행방향도 영향을 미치기 때문이야
거대 로터리라는 단어를 오해하는 거 같은데, 본문에서 밝혔듯이 그리드를 둘러싸는 정방의 철도는 크게보면 하나의 로터리야. 여기 안에서 빙빙 도는 루프는 어떻게 해도 막을 수 없어
빙빙 도는 루프가 다들 같은 방향으로 움직이고 있으면 뭐가 막히겠음.나가고 들어오는 기차가 있을때 열차가 나가는길을 비워주기만해도 자기 차례가 오기때문에 데드락은 안걸린린다니깐 왜 자꾸 엉뚱한소리
이해가 안되면 본문 첫줄의 링크를 들어가봐. 거기서는 데드락 위험이 없는 이상적인 교차로와 정차역에 대해 정의하고 있고, 이런 이상적인 요소로 철도를 구성해도 복선 네트워크는 데드락이 발생할 수 있음을 보여주고 있어.
루프 자체가 나가려는 방향에 루프 안의 기차가 있는거야. 본문에서 네 모퉁이의 교차로에 대한 설명까지 구체적으로 해줬고 링크까지 걸어줬는데 다시 읽어주면 안되겠니.
대기열 없는 기차선로안에 열차 가득 넣어둔 예시인데 선로안에 열차가 가득차는건 대기열 문제로 보면 되고 신호가 제대로박혔으면 공간없는데 기차가 들어갈일도 없으니 무관하다
가장 크게 보면 철도 구성을 어떻게 해도 구간갯수보다 기차가 많으면 데드락 걸린다는 얘기 같은데. 실제 게임에선 별로 의미없는 가정이라고 봄
구간갯수보다 기차가 많다는건 대기열이 부족하다는말과 같다고 봐도 될 듯
그리드로 만든 철도 네트워크는 그리드 중앙부에 갈수록 트래픽이 많아지는게 당연하고, 중앙에 있는 그리드에서는 부분적으로 구간갯수보다 기차가 많아질 수 있겠지. 데드락은 네트워크 전역에 걸친게 아니라 하나의 루프에서 발생하기 때문에 통행량이 중요한 이유가 이거야
굳이 센터로 간다고 통행량이 많아지진 않지.. 하여튼 필요이상의 열차을 때려박으면 철도 모양에 상관없이 데드락 걸릴 수 있는건 맞긴 한데, 실제 게임에선 사실상 고려할 필요 없는 가정이라고 봄.
같은 철도 네트워크에 통행이 몰리면 하나 더 만들어서 분산해야지 머
어차피 그리드 아무리 크게 만들어봐야 라인 한개 늘리는거 효율 못따라감
그리드에 쓸 교차로의 입구에 연속신호만 일찍일찍 박아두면 우회로를 알아서 찾으니 분산이 되는게 맞지. 라인 늘리는건 본문의 복선과 비슷한 예시고.
그거 이상하게 박는애들은 철도 튜토리얼 더 해야될거같은데
그리드의 데드락을 고려하지 않는다면 폐색구분이 불필요한 연속신호를 줄이다보면 좌우직진이 갈라지기 전에 연속신호를 놓을 필요가 없어.
연속신호 놓고 바로 앞에 일반신호 놓으면 상관없지않나
박아서 나쁠게 없는건 맞지. 근데 좌우직진 분리 이전의 신호는 폐색 구분에서 불필요하지. 나는 데드락에는 문제 없는 교차로의 모든 경우를 고려한거야 그냥.
필요한거 맞을텐데? 연속신호는 파란색으로 통행가능여부 확정지어주는데 앞에서 진행 가능여부 파악 못했으면 신호 텀이 길었다고 얘기할수밖에
연속신호 박아놓고 일반신호 도배해놓으면 니가말한 폐색구분때 정체되는현상 없어질껄
좌우직진으로 분리된 후 선로 각각에 연속신호를 박았다면 굳이 이 연속신호를 통합하는 새로운 연속신호를 박을 필요가 없어. 원형로터리 수준의 간단한 교차로는 무관하지만 좌우직진이 다른 경로를 가진 교차로는 각 선로에 연속신호가 박히기 때문이야. 그리드가 아니라면 경로는 하나고, 진행가능 여부는 분리 후에 판단해도 문제가 없지
앞에 진행 가능한 곳이 하나라도 있으면 파랗게 표시된다니까? 연속-일반-연속-일반 이런식으로 되어있으면 정지신호들이 출발지까지 쌓여서 도착지까지 진행 가능한 루트 하나라도 있으면 진행한다고. 근데 니가말한 연속신호를 각 루트마다 주는 행위는 각각 철도 네트워크를 다르게 설정한다는 얘기인데 도착지까지 가능 여부를 모른다는 말이야
연속 일반 연속 일반이 오히려 데드락에 있어서 위험한거 아냐? 교차 이전에 그렇게 박힌거면 교차로랑 관련 없는 부분같은데... 그리고 파란신호는 연속신호 뒤에서 갈라질 여러 경로중에 초록과 빨강이 섞여있다는 소리고, 우회로가 없는 네트워크는 기차가 가려는 방향 외의 다른 경로는 의미가 없잖아. 교차 전이라면 연속의 위치는 어디여도 상관이 없어.
라인 늘어나면 데드락 위험 전혀 없습니다
그리드 하나에 모든 기차 통행 가능하도록 설계했으면 신호 정상적으로 박았을때 데드락 안나는게 맞지. 니가 하는건 통행량 늘리기 위한 꼼수고
2-8 기차 수천대 굴려본 경험으론 심플한 복선 원형 교차로가 짱이었다 - dc App
신호를 정상적으로 박았는데 데드락이 발생하는 건 대기열 때문임. 열차 3대 허용 역에 대기열이 2개면 데드락이 발생할 수 있기 때문에 대기열 +1하거나 깔끔하게 출구 대기열을 별도로 하나 만들어주면 최악의 상황이라도 데드락을 피할 수 있음 - dc App
그건 2번에 언급된 내용이니까 패스
ㄴ 3번 이슈를 원형 교차로로 피할 수 있단 얘기임 - dc App
어휴 철도 조또못까는것들이 데드락따위를 걱정하지 로터리를 멀리하고 기차길이에 맞는 교차선을 만들어봐라 데드락? 그딴게뭐임 소리나오지
난독이야? 교차로는 데드락 안생긴다고. 로터리를 멀리하는 거랑 상관이 없다니까...
링크글은 신호랑 물류량에 의한 데드락을 설명함. 대부분 교차로단위의 데드락만을 떠올리지만 교차로단위는 신호만으로도 커버 가능함. 근데 물량이 커지면 신호만으로 안됨. 극단적인 예시로는 모든 철도구간에 기차가 빼곡히 있다고 해보자. 아무리 정상적인 신호로도 움직일수 없다. 이런 상황은 기차를 적게 운행하거나 경를 분산 시킬수 있게 설계해야 해소할수 있다는것