Skip to content

Seosiju/Boston-Mechanism-Simulation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Boston Mechanism Simulation

보스턴 매커니즘(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사 (낮은선호)

👥 학생 그룹 분류

학생 분류 (총 42명)

  • 최상위 그룹 (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]

🔧 핵심 함수

1. generate_preferences(c_coord, rank21_first_choice)

학생들의 선호도를 생성하는 함수입니다.

매개변수:

  • c_coord: 상위권 그룹 내에서 담합하는 학생의 비율 (0.0 ~ 1.0)
  • rank21_first_choice: 분석 대상 학생(21등)의 1지망 기관

담합 전략:

  • 담합 학생들은 티어 순서대로 최적의 기관을 선택
  • 비담합 학생들은 확률 분포에 따라 선호도 생성

2. boston_mechanism(prefs)

보스턴 매커니즘을 실행하는 함수입니다.

동작 방식:

  1. 각 라운드에서 학생들이 가장 선호하는 기관에 지원
  2. 기관은 등수 순으로 학생을 선발
  3. 배정되지 않은 학생은 다음 선호 기관으로 이동
  4. 모든 학생이 배정되거나 더 이상 선택할 기관이 없을 때까지 반복

3. run_trials(num_trials, c_list, choice_list, target_rank)

몬테카를로 시뮬레이션을 실행하는 함수입니다.

분석 지표:

  • P(gets_my_choice): 목표 학생이 1지망에 성공할 확률
  • avg_tier2_seats_for_top_set: 2티어 기관에서 상위권이 차지하는 평균 좌석 수
  • avg_rank_in_tier2: 2티어 기관 배정자들의 평균 등수

📊 시뮬레이션 결과

실험 1: A사, B사 선택 시나리오

담합 수준이 증가할수록 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%

실험 2: K사, S사 선택 시나리오

1티어 기관의 경우 담합 수준이 높아질수록 배정 성공 확률이 급격히 감소합니다.

주요 결과:

  • 담합 수준 0.0: K사 49.2%, S사 48.1%
  • 담합 수준 0.1: K사 19.0%, S사 58.9%
  • 담합 수준 0.5 이상: K사, S사 모두 0.0%

🔍 주요 발견사항

  1. 티어별 차별적 효과: 2티어 기관(A사, B사)은 담합이 증가할수록 하위권 학생에게 유리하지만, 1티어 기관(K사, S사)은 반대 효과를 보입니다.

  2. 담합의 역설: 상위권 학생들의 담합이 오히려 하위권 학생들에게 일부 기관에서는 유리하게 작용할 수 있습니다.

  3. 기관별 특성: 기관의 인기도와 정원이 배정 결과에 중요한 영향을 미칩니다.

🚀 실행 방법

필요 라이브러리

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: 분석 대상 학생의 등수

📈 확장 가능성

  1. 다른 등수 분석: 21등 외에 다른 등수 학생들의 배정 성공률 분석
  2. 기관 정원 조정: 다양한 정원 설정에 따른 민감도 분석
  3. 담합 전략 변화: 다른 담합 전략의 효과 분석
  4. 다른 매커니즘 비교: DA 매커니즘 등 다른 배정 방식과의 비교

📝 참고사항

  • 시뮬레이션은 랜덤 시드를 42로 고정하여 재현 가능한 결과를 제공합니다
  • 각 실험은 8000회 반복으로 통계적 유의성을 확보합니다
  • 결과는 확률적이므로 실제 배정 결과와는 차이가 있을 수 있습니다

이 프로젝트는 교육용 목적으로 제작되었으며, 실제 배정 시스템의 복잡성을 단순화한 모델입니다.

About

상위권 학생들의 담합 수준에 따른 중위권 학생의 배정확률을 분석했습니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published