다 같이 가는 식당은 왜 늘 붐빌까
"저 식당은 지난주에 한산했으니 이번 주엔 가야지." 모두가 이렇게 생각하면 이번 주 식당은 미어터집니다. 반대로 모두가 "지난주에 붐볐으니 피하자"고 하면 텅 비어요. 사람들은 이 어려운 문제를 어떻게 풀까요?
모델은 이렇게 움직입니다
- 사람 100명이 매주 그 식당에 갈지 정합니다. 손님이 정원(기본 60명)을 넘으면 붐벼서 불만족, 아니면 만족합니다.
- 모두가 "이번 주 손님이 몇 명일까?"를 예측하는 방법을 가지고 있습니다. 지난 8주 기록에 사람마다 다른 비중을 두는 계산식이고, 어떤 건 "지난주를 따라가고" 어떤 건 "지난주의 반대로" 갑니다.
- 각자 최근에 가장 잘 맞힌 예측법으로 이번 주 손님 수를 예측하고, 예측이 정원보다 적으면 갑니다.
- "모두 같음" 설정에서는 모든 사람이 "이번 주도 지난주와 같을 것"이라고 예측합니다.
직접 돌려보기
① 이번 주 식당 풍경
점 100개가 사람입니다. 왼쪽은 식당(빈 동그라미는 자리), 오른쪽은 집이에요. 파랑은 가서 즐긴 사람, 빨강은 가서 붐벼서 고생한 사람(점선 아래는 자리가 없던 사람), 노랑은 안 갔는데 한산했던 사람(후회), 회색은 안 가서 다행인 사람이에요.
② 주마다 손님 수
최근 80주의 손님 수입니다. 점선은 정원이고, 빨간 막대는 붐볐던 주예요.
③ 정원을 바꿔도 손님은 정원 근처
가로는 정원, 세로는 평균 손님 수입니다. 회색 선(손님=정원)과 거의 겹치는지 보세요. 점은 4번의 실행이에요.
④ 똑똑해져도 소용없다
가로는 한 사람이 가진 예측법 수, 세로는 이번 주 선택이 틀린 사람의 비율입니다. 예측을 더 잘하게 돼도 50%에서 거의 안 내려가요.
이 결과가 말하는 것, 말하지 않는 것
말하는 것:
- 모두가 같은 예측을 하면 한 주는 텅 비고 한 주는 미어터지고, 예측이 제각각이면 손님 수가 정원 근처로 맞춰져요.
- '한산했으니 가자'를 다 같이 하면 한꺼번에 몰리고, 다 같이 피하면 텅 비어요. 모두가 따르는 예측은 따를수록 스스로 틀려져요.
- 전체 손님 수는 정원 근처로 맞춰져도 개인은 여전히 절반쯤 틀려요. 예측법을 늘려도 이 절반은 거의 안 줄어요.
- 그렇다면 어떻게 해야 덜 붐빌까? 이 모델에선 모두가 같은 예측을 따를 때가 문제였고, 예측이 제각각이면 정원 60명에 손님 58.3명으로 맞춰졌어요. 개인으로선 절반은 틀린다고 받아들이면 돼요.
상세 설명
말하는 것: 모두가 같은 예측을 하면 한 주는 텅 비고 한 주는 미어터지지만, 사람마다 예측이 제각각이면 손님 수는 정원 근처로 저절로 맞춰집니다. 다만 개개인은 여전히 동전 던지기에 가까워서, 아무리 똑똑하게 예측해도 절반은 "갈걸" 또는 "안 갈걸" 하고 후회합니다. 모두가 같은 정보로 같은 판단을 하는 순간 그 판단은 틀리게 돼요.
말하지 않는 것:
- 실제 사람들이 이런 계산식으로 식당을 고른다는 뜻은 아니에요. 예측법의 형태와 사람 수는 이 모델이 정한 설정이에요.
- 현실에는 맛·가격·약속·소문이 있어요. 사람들이 실제로 정보를 얼마나 나누고 비슷하게 판단하는지는 따로 관찰해 봐야 해요.
상세 설명
말하지 않는 것: 사람들이 실제로 이런 계산식으로 식당을 고른다는 뜻은 아닙니다. 현실에는 맛, 가격, 약속, 소문이 있고 날마다 손님 수가 정해진 규칙으로 변하지도 않습니다. 예측법의 형태(지난 8주의 가중합)와 사람 수(100명)는 이 프로젝트에서 정한 설정이고 값을 바꾸면 결과도 달라집니다.
이론적 근거와 구현 메모
- 모델의 뿌리: 아서(W. Brian Arthur)가 1994년 American Economic Review 84(2)에 쓴 "Inductive reasoning and bounded rationality"의 엘 파롤 바 문제입니다. 정답을 계산할 수 없는 상황에서 사람들이 가설(예측법)을 세우고 잘 맞는 것을 골라 쓰면 어떻게 되는지를 다룹니다.
- 핵심 가정과 수식: 사람 n=100명이 매주 손님 수를 예측해 예측이 정원 60명보다 적으면 가고, 실제 손님이 정원을 넘으면 붐벼서 불만족입니다. 모두 같은 예측을 하면 모두 가거나 모두 안 가서 반드시 틀리므로 같은 예측을 하는 "합리적 기대"는 성립하지 않습니다. 슬라이더는 정원과 사람당 예측법 개수예요.
- 이 프로젝트의 단순화: 원 논문은 "지난주와 같다", "50을 기준으로 뒤집은 값", "최근 4주 평균" 같은 정해진 예측법 목록에서 사람마다 몇 개를 뽑습니다. 이 구현은 지난 8주 기록에 사람마다 다른 무작위 비중을 곱해 더하는 예측법을 만들었고, 가장 최근에 잘 맞힌 것(과거 오차를 0.9씩 줄여 가며 합산)을 씁니다. 그래서 논문의 그래프와 똑같은 모양이 아닙니다.
- 이론값과 시뮬레이션: 논문에 나온 값을 숫자로 대조한 것이 아니라 이 구현의 결과입니다. 모두 같은 예측이면 평균 50.0, 표준편차 50.0으로 0명과 100명을 오갑니다. 예측법이 다양하면 평균 손님이 58~60명으로 정원 근처에 모이고(예측법 5개: 58.3), 정원을 30, 50, 70으로 바꾸면 33.7, 50.2, 66.0이 됩니다. 비교 기준으로 "각자 확률 0.6으로 간다"면 표준편차가
√(100·0.6·0.4)≈4.9인데, 시뮬레이션은 0.6~4.0으로 더 작습니다 (node tools/validate-more.js bar). 정원 90에서는 평균이 79.9로 정원에 못 미칩니다. - 더 읽을거리: Arthur (1994), "Inductive reasoning and bounded rationality", American Economic Review 84(2). / Challet, Zhang (1997), "Emergence of cooperation and organization in an evolutionary game", Physica A 246 (소수 게임, 이 문제를 단순화한 후속 모델).
- 원 논문의 예측법 목록과 달리 이 구현은 사람마다 무작위 가중합 예측법을 가집니다. 그래서 논문의 그래프와 똑같은 모양은 아닙니다. 이 설정에서는 손님 수가 정원 근처에 아주 안정적으로 모이는 것이 특징입니다.
- "잘못 고른 사람"은 그 주 결과를 보고 판단합니다. 갔는데 붐볐거나, 안 갔는데 한산했으면 틀린 것으로 셉니다. 검증은
node tools/validate-more.js bar로 할 수 있습니다.