Student Conscription Model
Model was written in NetLogo 6.4.0
•
Viewed 2 times
•
Downloaded 0 times
•
Run 0 times
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.