Student Conscription Model

Student Conscription Model preview image

1 collaborator

Default-person Artem Serdyuk (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 6.4.0 • Viewed 2 times • Downloaded 0 times • Run 0 times
Download the 'Student Conscription Model' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; STUDENT MILITARY SERVICE MOTIVATION MODEL
;; Based on research on motivations of students in Kyiv universities
;; to join military service after Russia's full-scale invasion of Ukraine
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; GLOBAL VARIABLES
globals [
  war-week              ; Current week count since full-scale invasion
  media-influence       ; Level of positive media coverage of military (0-100)
  economic-hardship     ; Level of economic difficulty in the country (0-100)

  ;; Regional distribution percentages
  percent-west          ; Percentage of students from Western Ukraine
  percent-central       ; Percentage of students from Central Ukraine
  percent-east          ; Percentage of students from Eastern Ukraine
  percent-south         ; Percentage of students from Southern Ukraine

  ;; Event counters for tracking simulation events
  military-events       ; Count of significant military events
  economic-events       ; Count of significant economic events
  political-events      ; Count of significant political events
]

;; AGENT DEFINITIONS
breed [students student]

students-own [
  ;; Demographic attributes
  age                   ; Student age (17-26)
  gender                ; Student gender ("male" or "female")
  study-year            ; Year of study (1-4)
  region                ; Home region ("West", "Central", "East", "South")

  ;; Background factors (0-100 scale)
  family-influence      ; Level of patriotic/military influence from family
  educational-influence ; Level of patriotic/educational influence from school/university
  activism-involvement  ; Level of involvement in civic/political organizations

  ;; Motivation types (0-100 scale)
  social-motivation     ; Motivation from social environment and peers
  moral-motivation      ; Moral and psychological motivation
  political-motivation  ; Civic and political motivation
  economic-motivation   ; Economic/financial motivation

  ;; Decision variables
  motivation-threshold  ; Individual threshold required to join (varies by person)
  joined?               ; Whether student has joined military service

  ;; Network variables
  my-organization       ; Type of organization the student belongs to (if any)
  my-university         ; University the student attends
  peers                 ; List of connected peers
  my-peers-joined       ; Percentage of peers who have joined military
]

patches-own [
  university            ; University identifier (name)
  is-organization?      ; Whether patch represents an organization
  organization-type     ; Type of organization if applicable ("youth", "political", "volunteer")
]

;; MODEL SETUP PROCEDURES

to setup
  clear-all

  ;; Initialize regional distribution
  set percent-west 30    ; 30% of students from Western region
  set percent-central 40 ; 40% from Central region
  set percent-east 20    ; 20% from Eastern region
  set percent-south 10   ; 10% from Southern region

  set economic-hardship 80 ; Start with high economic hardship (wartime conditions)

  ;; Initialize event counters
  set military-events 0
  set economic-events 0
  set political-events 0

  ;; Set up the model environment and agents
  setup-environment
  setup-students
  setup-organizations
  reset-ticks
end 

;; Sets up the physical environment (universities and spaces)

to setup-environment
  ;; Initialize all patches to default state
  ask patches [
    set university "none"
    set is-organization? false
    set organization-type "none"
    set pcolor brown - 2  ; Default background color
  ]

  ;; Create university areas on the map
  setup-universities
end 

;; Creates student agents with appropriate attributes

to setup-students
  create-students population-size [
    set shape "person"
    set size 1  ; Set visible size for students

    ;; Initialize student attributes (demographics, motivations, etc.)
    setup-student-attributes

    ;; Place student at an appropriate university
    let target-university one-of patches with [university != "none"]

    ;; Fallback if no universities exist
    if target-university = nobody [
      move-to one-of patches
    ]

    ;; Place student at their assigned university
    if target-university != nobody [
      set my-university [university] of target-university

      ;; Try to find an unoccupied patch in the university
      let target-patch one-of patches with [(university = [my-university] of myself) and not any? students-here]

      ;; If all university patches are occupied, try nearby patches
      if target-patch = nobody [
        set target-patch one-of patches with [university = [my-university] of myself]

        ;; Last resort fallback
        if target-patch = nobody [
          set target-patch one-of patches
        ]
      ]

      ;; Move to the selected patch
      move-to target-patch

      ;; Add small random movement to avoid perfect alignment
      fd random-float 2
    ]
  ]
end 

;; Initialize individual student attributes based on research data

to setup-student-attributes
  ;; Set demographic attributes
  set age 17 + random 10  ; Ages 17-26 (typical university age range)
  set gender ifelse-value (random 100 < percent-female) ["female"] ["male"]
  set study-year 1 + random 4  ; Years 1-4 of university

  ;; Set regional background with appropriate probabilities
  let random-num random 100
  if random-num < percent-west [set region "West"]
  if random-num >= percent-west and random-num < (percent-west + percent-central) [set region "Central"]
  if random-num >= (percent-west + percent-central) and random-num < (percent-west + percent-central + percent-east) [set region "East"]
  if random-num >= (percent-west + percent-central + percent-east) [set region "South"]

  ;; Initialize influence factors based partly on region
  set family-influence setup-family-influence
  set educational-influence setup-educational-influence
  set activism-involvement 0 ; Will be updated when organizations form

  ;; Initialize motivation factors with gender differences based on research
  ifelse gender = "female" [
    ;; Female students - research shows higher moral components
    set social-motivation random 30 + 5
    set moral-motivation random 30 + 10
    set political-motivation random 30
    set economic-motivation random 30 - 5
  ] [
    ;; Male students
    set social-motivation random 30
    set moral-motivation random 30
    set political-motivation random 30 + 5
    set economic-motivation random 30
  ]

  ;; Set individual threshold (varies by person and gender)
  ifelse gender = "female" [
    ;; Women typically require higher motivation due to gender barriers in military
    set motivation-threshold 60 + random 40
  ] [
    ;; Men's threshold
    set motivation-threshold 50 + random 50
  ]

  ;; Initialize decision and network variables
  set joined? false
  set peers []
end 

;; Calculate family influence based on regional background

to-report setup-family-influence
  let base-influence random 60

  ;; Regional effects on family influence based on research
  if region = "West" [set base-influence base-influence + 20]  ; Western regions more patriotic
  if region = "South" or region = "East" [set base-influence max list 0 (base-influence - 10)]  ; Less patriotic influence

  report min list 100 base-influence  ; Cap at 100
end 

;; Calculate educational influence based on university quality and region

to-report setup-educational-influence
  let base-influence random 50
  let uni my-university

  ;; Higher quality education in prestigious universities
  if uni = "NaUKMA" [set base-influence base-influence + 20]  ; Kyiv-Mohyla Academy
  if uni = "KNU" [set base-influence base-influence + 15]     ; Kyiv National University
  if uni = "LNU" [set base-influence base-influence + 10]     ; Lviv National University

  ;; Regional effects on educational influence
  if region = "West" [set base-influence base-influence + 5]  ; Western universities more nationally oriented

  report min list 100 base-influence  ; Cap at 100
end 

;; Create organizations (youth, political, volunteer) on the map

to setup-organizations
  ;; Number of each organization type
  let num-youth-orgs 3 + random 2      ; 3-4 youth organizations
  let num-political-orgs 2 + random 3  ; 2-4 political organizations
  let num-volunteer-orgs 4 + random 3  ; 4-6 volunteer organizations

  ;; Create youth organizations
  ask n-of num-youth-orgs patches with [not is-organization? and university != "none"] [
    set is-organization? true
    set organization-type "youth"
    set pcolor yellow
  ]

  ;; Create political organizations
  ask n-of num-political-orgs patches with [not is-organization? and university != "none"] [
    set is-organization? true
    set organization-type "political"
    set pcolor blue
  ]

  ;; Create volunteer organizations
  ask n-of num-volunteer-orgs patches with [not is-organization? and university != "none"] [
    set is-organization? true
    set organization-type "volunteer"
    set pcolor green
  ]

  ;; Students join organizations based on their attributes and proximity
  ask students [
    ;; Find nearby organizations (within radius of 5 patches)
    let nearby-orgs patches in-radius 5 with [is-organization?]

    ;; If there are nearby organizations, possibly join one based on student characteristics
    if any? nearby-orgs [
      let chosen-org one-of nearby-orgs
      let join-probability 0

      ;; Calculate join probability based on organization type and student characteristics
      if [organization-type] of chosen-org = "youth" [
        ;; Younger students more likely to join youth orgs
        set join-probability 70 - ((age - 17) * 10)
      ]

      if [organization-type] of chosen-org = "political" [
        ;; Political orgs appeal to students with political motivation
        set join-probability political-motivation / 2
      ]

      if [organization-type] of chosen-org = "volunteer" [
        ;; Volunteer orgs appeal more to students with moral motivation
        set join-probability moral-motivation / 2
      ]

      ;; Regional effects on organization joining
      if region = "West" and [organization-type] of chosen-org = "volunteer" [
        set join-probability join-probability + 20  ; Western regions more volunteer-oriented
      ]

      if region = "East" and [organization-type] of chosen-org = "political" [
        set join-probability join-probability + 15  ; Eastern regions more politically active
      ]

      ;; Join organization if probability threshold met
      if random 100 < join-probability [
        set my-organization [organization-type] of chosen-org

        ;; Being in an organization increases activism involvement
        set activism-involvement 20 + random 40

        ;; Different organization types affect different motivations
        if my-organization = "youth" [
          set social-motivation social-motivation + 10
        ]
        if my-organization = "political" [
          set political-motivation political-motivation + 15
        ]
        if my-organization = "volunteer" [
          set moral-motivation moral-motivation + 15
        ]
      ]
    ]
  ]
end 

;; Create university areas on the map based on real geography

to setup-universities
  ;; Define number of universities
  let num-universities 6  ; All 6 universities to match research data

  ;; List of university names
  let university-names ["NaUKMA" "KNU" "LNU" "KhNU" "ONPU" "ChNU"]

  ;; Regions associated with each university
  let university-regions ["Central" "Central" "West" "East" "South" "Central"]

  ;; University quality factors (0-100) - affects educational influence
  let university-quality [85 75 70 65 60 65]

  ;; Coordinates for each university based on approximate real geography
  let university-coordinates [
    [0 0]     ; NaUKMA - Kyiv (Central)
    [5 -2]    ; KNU - Kyiv (Central)
    [-15 5]   ; LNU - Lviv (West)
    [18 -5]   ; KhNU - Kharkiv (East)
    [5 -15]   ; ONPU - Odesa (South)
    [-5 -10]  ; ChNU - Chernivtsi (Central-West)
  ]

  ;; University size (radius) to create appropriate areas
  let university-sizes [3 6 6 6 6 5]

  ;; Create each university in its geographic location
  let university-counter 0

  repeat num-universities [
    ;; Skip if we've run out of university names
    if university-counter >= length university-names [stop]

    ;; Get the current university coordinates and radius
    let center-x item 0 (item university-counter university-coordinates)
    let center-y item 1 (item university-counter university-coordinates)
    let radius item university-counter university-sizes

    ;; Get the current university name and associated data
    let current-name item university-counter university-names
    let current-region item university-counter university-regions
    let current-quality item university-counter university-quality

    ;; Create a cluster of patches for this university
    ask patches with [(pxcor - center-x) ^ 2 + (pycor - center-y) ^ 2 < radius ^ 2] [
      set university current-name

      ;; Set colors based on university quality (unique shade for each university)
      set pcolor scale-color blue current-quality 0 100
      set plabel-color white

      ;; Occasionally label a patch with university name for visualization
      if random 100 < 10 and (pxcor - center-x) ^ 2 + (pycor - center-y) ^ 2 < (radius - 1) ^ 2 [
        set plabel current-name
      ]
    ]

    ;; Increment counter
    set university-counter university-counter + 1
  ]
end 

;; MAIN SIMULATION PROCEDURES

to go
  if ticks >= simulation-length [stop]  ; End simulation after specified time

  ;; Advance war timeline
  set war-week ticks

  ;; Update environmental conditions (media, economy, events)
  update-environment

  ;; Students interact and update motivations
  ask students [
    interact-with-peers
    update-motivations
    decide-to-join
  ]

  ;; Update visualization
  update-display

  tick
end 

;; Update environmental conditions affecting all students

to update-environment
  ;; Initialize media influence on first tick
  if ticks = 0 [
    set media-influence 50  ; Start at neutral value
  ]

  ;; Update media influence based on slider and random fluctuations
  set media-influence (media-coverage + random-float 5 - 2.5)
  set media-influence max list 0 min list 100 media-influence  ; Keep within 0-100 range

  ;; Economy gradually fluctuates with war duration
  set economic-hardship max list 0 (economic-hardship + random-float 2 - 1)

  ;; Apply environmental effects to students based on their characteristics
  ask students [
    ;; Recruitment campaigns affect social motivation
    set social-motivation social-motivation +
      (recuitment-campaign-intensity / 100) * social-weight

    ;; Recruitment campaigns also affect economic motivation but less strongly
    set economic-motivation economic-motivation +
      (recuitment-campaign-intensity / 200) * economic-weight

    ;; Eastern and Southern regions face more economic impact during war
    if region = "East" or region = "South" [
      set economic-motivation economic-motivation + (economic-hardship / 200)
    ]

    ;; Media influence affects political motivation differently based on education level
    set political-motivation political-motivation +
      (media-influence / 100) * (educational-influence / 100) * political-weight
  ]

  ;; Occasional major events that affect motivations (roughly every 10 weeks)
  if war-week mod 10 = 0 and war-week > 0 [
    let event-type random 3

    ;; Major military event (increases moral motivation)
    if event-type = 0 [
      set military-events military-events + 1
      ask students [
        set moral-motivation moral-motivation + random-float 10
      ]
    ]

    ;; Economic support package (increases economic motivation)
    if event-type = 1 [
      set economic-events economic-events + 1
      ask students [
        set economic-motivation economic-motivation + random-float 15
      ]
    ]

    ;; Political development (increases political motivation)
    if event-type = 2 [
      set political-events political-events + 1
      ask students [
        set political-motivation political-motivation + random-float 12
      ]
    ]
  ]
end 

;; Students interact with peers and update their social network

to interact-with-peers
  ;; Find nearby peers within interaction radius
  let nearby-peers other students in-radius interaction-radius

  ;; Store nearby peers list
  set peers nearby-peers

  ;; Calculate the percentage of peers who have joined military
  ifelse any? nearby-peers [
    set my-peers-joined (count nearby-peers with [joined?] / count nearby-peers) * 100
  ] [
    set my-peers-joined 0  ; No peers, so set to 0
  ]
end 

;; Update student motivation levels based on various factors

to update-motivations
  ;; Calculate peer influence
  let joined-peers 0
  let total-peers count peers

  if total-peers > 0 [
    set joined-peers count peers with [joined?]
  ]

  ;; Social motivation increases when peers join
  set social-motivation social-motivation +
    (joined-peers / max list 1 total-peers) * social-weight

  ;; Moral motivation increases with war duration
  set moral-motivation moral-motivation +
    (war-week / 50) * moral-weight

  ;; Political motivation affected by activism involvement
  set political-motivation political-motivation +
    (activism-involvement / 100) * political-weight

  ;; Economic motivation affected by economic conditions
  set economic-motivation economic-motivation +
    (economic-hardship / 100) * economic-weight

  ;; Gender-specific motivation updates based on research
  if gender = "female" [
    ;; Research shows women have higher responsibility for state welfare
    set moral-motivation moral-motivation +
      (war-week / 40) * moral-weight

    ;; Women more motivated to prove themselves against stereotypes
    set social-motivation social-motivation +
      (war-week / 200) * social-weight
  ]

  ;; Apply natural decay to motivations over time (prevents unlimited growth)
  set social-motivation min list 100 (social-motivation * 0.97)
  set moral-motivation min list 100 (moral-motivation * 0.99)
  set political-motivation min list 100 (political-motivation * 0.98)
  set economic-motivation min list 100 (economic-motivation * 0.96)
end 

;; Make decision about joining military based on motivations and barriers

to decide-to-join
  if joined? [stop]  ; Skip if already joined

  ;; Calculate overall motivation (weighted sum of motivation types)
  let overall-motivation (
    (social-motivation * social-weight) +
    (moral-motivation * moral-weight) +
    (political-motivation * political-weight) +
    (economic-motivation * economic-weight)
  ) / (social-weight + moral-weight + political-weight + economic-weight)

  ;; Apply barriers based on research findings
  if contract-duration = "3-years" [
    ;; Longer contracts reduce likelihood (significant barrier identified in research)
    set overall-motivation overall-motivation * 0.8
  ]

  if study-service-compatibility < 50 [
    ;; Lower compatibility between studies and service is a barrier
    set overall-motivation overall-motivation * (0.5 + (study-service-compatibility / 100))
  ]

  ;; Make decision to join if motivation exceeds threshold
  if overall-motivation > motivation-threshold [
    set joined? true
    set color red
  ]
end 

;; Update display elements for visualization

to update-display
  ;; Update student colors based on joined status
  ask students [
    ifelse joined?
      [ set color red ]     ; Joined military (red)
      [ set color green ]   ; Not joined (green)
  ]
end 

There is only one version of this model, created 3 days ago by Artem Serdyuk.

Attached files

File Type Description Last updated
Student Conscription Model.png preview Preview for 'Student Conscription Model' 3 days ago, by Artem Serdyuk Download

This model does not have any ancestors.

This model does not have any descendants.