아까 갤에 UPS 질문한답시고 첨부한 세이브파일에 기반함.
그리드 베이스 기차에 연료를 보급할 때에는 몇가지 있는데, 대표적인게 모드를 제외하면
1. 각 역 하차장에 연료보급소를 세우고 연료열차가 돌아다니면서 각 역에 연료를 공급한다.
2. 중앙 집권식으로 한곳에 열차 대기소를 만들어서 한쪽에서 연료 보급을 한다.
인데.
보통 1번 + 연료열차 + 회로제어를 이용해서 각 그리드마다 연료공급을 하는게 일반적이지. 중앙 집권식으로 한곳에 열차 대기소를 만드는일은 별로 없음
근데 내가 어쨌든 처음 그리드 설계할때 이렇게 설계했고 지금와서 뜯어고치려면 몇세월이 걸려서 그나마 병목현상을 어느정도 해결하기 위한 방법을 찾아봤음. 사실 아주 단순함.
필자의 연료 보급소 및 열차 정비장. 필자는 현재 열차를 96대 돌리고 있다. (1k spm 베이스고 10k를 목표로 확장 중)
그리고 내가 세팅해놓은 대다수의 열차 세팅은 아래와 같다
중간에 열차 대기소로 한번 와서 연료공급을 받고 출발하는 형태로 구성되어있다.
근데 이런 형식의 문제점은 말했듯이 열차가 중앙 정거장에 한번 들러야하기 때문에 저기에서 병목이 엄청나게 발생함.
그래서 이걸 해결하려고 생각해낸 것이 타이머랑 역 끄기 설정임.
일반적으로 로켓 연료 30개의 소모시간은 약 5천초다. (166.666*30)
그리고 팩토리오는 60틱당 1초이다.
필자는 약 4200초를 연료공급이 필요없는 시기라고 생각하고, 모든 활성화된 열차의 연료공급은 600초면 충분하다고 판단했다.
그렇기에 타이머 최대치(중간 수량비교조합기)를 288000의 상수로 설정한다.
두번째, 타이머 설정을 신호 (F로 했지만 아무거나 해도 무방함)을 252000 (4200초)보다 작음으로 해놓고 이 기간동안에는 T=1 신호를 설정한다. 역에 달려있는 신호는 T=0 즉, 역을 꺼놓는다
여기서 주의할점은 반드시 "이름이 같은 모든 역을" 꺼놔야지 열차가 정류장을 무시하고 정류장쪽으로 향하지 않는다는 것이다.
이렇게 되면 타이머가 4200초 (252000틱) 이하일 경우에는 역이 꺼지고 4200초에서 4800초 사이에는 역이 켜져서 모든 열차가 연료보급을 하러 중앙 열차 정거장에 몰려들게 된다.
즉, 연료보급 병목을 전체 시간에서 10분의 시간으로 대폭 줄인 것이다.
하지만 기지 사이즈가 여기서 더 커질수록, 활성화된 모든 기차들에게 연료보급을 하기 힘들 수 있다. 그렇기에 역 활성화 시간을 더 길게 하거나, 역 대기 수를 늘리거나 등의 방법을 고안해야한다
결론 : 그냥 설계할때 부터 각 그리드 마다 연료공급장을 만들자.
이렇게하면 연료보급역이 켜졌을때 모든 열차가 한순간에 연료보급역으로 달려오기 때문에 데드락이 발생할 가능성이 걍 냅뒀을때보다 높아질거 같은데. 병목은 줄어들지만 피크시간대의 혼잡도는 더 증가해서 걍 냅뒀을땐 병목이 생기더라도 갸우겨우 돌아는 갔는데 이렇게하면 켜졌을때 더 심해져서 데드락 생길수도 있을듯. - dc App
생각보다 돌려봤는데 데드락은 발생 안한것같음. 대신 데드락보다는 그때 병목현상이 집중되긴 하지.
데드락이 아예 발생 안되는 교차로 특성이 아니면 이것도 문제가 되겠네
조삼모사 아님?
이전에는 열차가 계속해서 중앙정거장에 들어가서 대기하고 다른데로 가서 병목이 생겼는데 저렇게 하면 4200초간은 병목이 안생기고 600초간은 병목이 생김.
이방법 안쓰면 평균적으로 병목현상이 4정도로 꾸준히 있다면, 이방법 쓰면 평소엔 병목 현상이 거의 없다가 역 켜지면 순간적으로 병목 현상이 8 이렇게 치솟기 때문에 재수없으면 데드락 발생할수도 있을듯