보스턴 매커니즘(Boston Mechanism)을 이용한 몬테카를로 시뮬레이션 프로젝트입니다. 이 프로젝트는 상위권 학생들의 담합 수준에 따른 하위권 학생의 배정 성공 확률을 분석합니다.
- 주요 연구 질문: 21등 학생이 특정 기관(예: A사, B사, K사, S사)을 1지망으로 선택했을 때, 상위권 학생들의 담합 수준에 따라 배정 성공 확률이 어떻게 변하는지 분석
- 담합 효과 분석: 상위권 학생들(1-20등)의 협조 수준이 하위권 학생들의 배정 결과에 미치는 영향 측정
상위권 학생들의 담합이 증가할수록 하위권 학생들의 선호 기관 배정 성공 확률이 감소할 것으로 예상됩니다.
projects = {
"K사": 5, # 티어 1
"S사": 4, # 티어 1
"I사": 4, # 티어 1
"A사": 3, # 티어 2
"B사": 4, # 티어 2
"N사": 50, # 티어 3 (제한없음)
"T사": 4, # 티어 3
"Z사": 3, # 티어 4
"H사": 4, # 티어 4
"M사": 6, # 티어 5
"F사": 2, # 티어 5
"P사": 4 # 티어 5
}- 티어 1: K사, S사, I사 (최고 선호)
- 티어 2: A사, B사 (고선호)
- 티어 3: N사, T사 (중선호)
- 티어 4: Z사, H사 (보통선호)
- 티어 5: M사, F사, P사 (낮은선호)
- 최상위 그룹 (1-10등): 담합 가능성이 높은 그룹
- 준상위 그룹 (11-20등): 담합 가능성이 중간인 그룹
- 하위권 그룹 (21-42등): 분석 대상 학생 포함
# 최상위 그룹 (1-10등)의 선호 확률
TOP_1_10_PROBS = [0.75, 0.20, 0.04, 0.01, 0.00]
# 준상위 그룹 (11-20등)의 선호 확률
TOP_11_20_PROBS = [0.45, 0.35, 0.15, 0.03, 0.02]
# 하위권 그룹의 선호 확률
REST_SET_PROBS = [0.10, 0.45, 0.35, 0.06, 0.04]학생들의 선호도를 생성하는 함수입니다.
매개변수:
c_coord: 상위권 그룹 내에서 담합하는 학생의 비율 (0.0 ~ 1.0)rank21_first_choice: 분석 대상 학생(21등)의 1지망 기관
담합 전략:
- 담합 학생들은 티어 순서대로 최적의 기관을 선택
- 비담합 학생들은 확률 분포에 따라 선호도 생성
보스턴 매커니즘을 실행하는 함수입니다.
동작 방식:
- 각 라운드에서 학생들이 가장 선호하는 기관에 지원
- 기관은 등수 순으로 학생을 선발
- 배정되지 않은 학생은 다음 선호 기관으로 이동
- 모든 학생이 배정되거나 더 이상 선택할 기관이 없을 때까지 반복
몬테카를로 시뮬레이션을 실행하는 함수입니다.
분석 지표:
P(gets_my_choice): 목표 학생이 1지망에 성공할 확률avg_tier2_seats_for_top_set: 2티어 기관에서 상위권이 차지하는 평균 좌석 수avg_rank_in_tier2: 2티어 기관 배정자들의 평균 등수
담합 수준이 증가할수록 21등 학생의 배정 성공 확률이 증가하는 패턴을 보입니다.
주요 결과:
- 담합 수준 0.0: A사 57.2%, B사 62.3%
- 담합 수준 0.5: A사 81.8%, B사 88.2%
- 담합 수준 0.8: A사 0.0%, B사 99.8%
1티어 기관의 경우 담합 수준이 높아질수록 배정 성공 확률이 급격히 감소합니다.
주요 결과:
- 담합 수준 0.0: K사 49.2%, S사 48.1%
- 담합 수준 0.1: K사 19.0%, S사 58.9%
- 담합 수준 0.5 이상: K사, S사 모두 0.0%
-
티어별 차별적 효과: 2티어 기관(A사, B사)은 담합이 증가할수록 하위권 학생에게 유리하지만, 1티어 기관(K사, S사)은 반대 효과를 보입니다.
-
담합의 역설: 상위권 학생들의 담합이 오히려 하위권 학생들에게 일부 기관에서는 유리하게 작용할 수 있습니다.
-
기관별 특성: 기관의 인기도와 정원이 배정 결과에 중요한 영향을 미칩니다.
pip install numpy pandas# 기본 실행
df_results = run_trials(
num_trials=8000,
c_list=(0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0),
choice_list=["A사", "B사"],
target_rank=21
)
print(df_results)num_trials: 시뮬레이션 반복 횟수 (기본값: 8000)c_list: 담합 수준 리스트choice_list: 분석할 기관 목록target_rank: 분석 대상 학생의 등수
- 다른 등수 분석: 21등 외에 다른 등수 학생들의 배정 성공률 분석
- 기관 정원 조정: 다양한 정원 설정에 따른 민감도 분석
- 담합 전략 변화: 다른 담합 전략의 효과 분석
- 다른 매커니즘 비교: DA 매커니즘 등 다른 배정 방식과의 비교
- 시뮬레이션은 랜덤 시드를 42로 고정하여 재현 가능한 결과를 제공합니다
- 각 실험은 8000회 반복으로 통계적 유의성을 확보합니다
- 결과는 확률적이므로 실제 배정 결과와는 차이가 있을 수 있습니다
이 프로젝트는 교육용 목적으로 제작되었으며, 실제 배정 시스템의 복잡성을 단순화한 모델입니다.