Crit2IntelligenceLabourMarkets

Crit2IntelligenceLabourMarkets preview image

1 collaborator

Default-person Mike Sheerin (Author)

Tags

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

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


WHAT IS IT?

(a general understanding of what the model is trying to show or explain)

HOW IT WORKS

(what rules the agents use to create the overall behavior of the model)

HOW TO USE IT

(how to use the model, including a description of each of the items in the Interface tab)

THINGS TO NOTICE

(suggested things for the user to notice while running the model)

THINGS TO TRY

(suggested things for the user to try to do (move sliders, switches, etc.) with the model)

EXTENDING THE MODEL

(suggested things to add or change in the Code tab to make the model more complicated, detailed, accurate, etc.)

NETLOGO FEATURES

(interesting or unusual features of NetLogo that the model uses, particularly in the Code tab; or where workarounds were needed for missing features)

RELATED MODELS

(models in the NetLogo Models Library and elsewhere which are of related interest)

CREDITS AND REFERENCES

(a reference to the model's URL on the web if it has one, as well as any other necessary credits, citations, and links)

Comments and Questions

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

Click to Run Model

breed [candidates candidate]
breed [employers employer]

globals [
  hires
  total-match-quality
]

candidates-own [
  true-capability
  perceived-capability
  capability-tier
  narrative
  evidence
  prestige
  employed?
  false-negative-counted?
  true-fit
]

employers-own [
  required-capability
  w-narrative
  w-evidence
  w-prestige
  threshold
  job-filled?
]

to setup
  clear-all
  set hires 0
  set total-match-quality 0

  create-candidates num-candidates [
    setxy random-xcor random-ycor
    set shape "person"
    set size 1

    if capability-distribution = "uniform" [
      set true-capability random-float 1
    ]
    if capability-distribution = "normal" [
      set true-capability clamp01 (random-normal capability-mean capability-sd)
    ]
    if capability-distribution = "bimodal" [
      ifelse random-float 1 < high-pool-share [
        set true-capability clamp01 (random-normal 0.75 0.10)
      ] [
        set true-capability clamp01 (random-normal 0.35 0.10)
      ]
    ]

    set capability-tier assign-tier true-capability

    set perceived-capability clamp01
      (true-capability + random-normal self-knowledge-bias capability-self-noise)

    set narrative signal-from-cap perceived-capability narrative-fidelity
    set evidence  signal-from-cap true-capability     evidence-fidelity
    set prestige  signal-from-cap true-capability     prestige-fidelity

    set employed? false
    set false-negative-counted? false
    set true-fit 0
    set color tier-color capability-tier
  ]

  create-employers num-employers [
    setxy random-xcor random-ycor
    set shape "square"
    set size 1.4
    set color red
    set required-capability random-float 1
    set threshold hiring-threshold
    set job-filled? false
    apply-market-mode
  ]

  clear-all-plots
  reset-ticks
end 

to go
  ask candidates with [not employed?] [
    apply-to-job
  ]
  do-plots
  tick
end 

to apply-to-job
  let open-employers employers with [not job-filled?]
  if count open-employers = 0 [ stop ]

  let target one-of open-employers

  let score (
    ([w-narrative] of target * narrative) +
    ([w-evidence]  of target * evidence)  +
    ([w-prestige]  of target * prestige)  +
    random-normal 0 (screening-noise * 0.05)
  )

  set true-fit (1 - abs (true-capability - [required-capability] of target))

  if score > [threshold] of target [
    set employed? true
    set color green
    set hires hires + 1
    set total-match-quality total-match-quality + true-fit
    ask target [ set job-filled? true ]
  ]

  if (true-capability > high-capability-threshold) and
     (not employed?) and
     (not false-negative-counted?) [
    set false-negative-counted? true
  ]
end 

to apply-market-mode
  if market-mode = "narrative-first" [
    set w-narrative 0.70  set w-evidence 0.20  set w-prestige 0.10
  ]
  if market-mode = "evidence-first" [
    set w-narrative 0.10  set w-evidence 0.75  set w-prestige 0.15
  ]
  if market-mode = "balanced" [
    set w-narrative 0.33  set w-evidence 0.34  set w-prestige 0.33
  ]
  if market-mode = "custom" [
    set w-narrative narrative-weight-global
    set w-evidence  evidence-weight-global
    set w-prestige  prestige-weight-global
  ]
end 

to-report signal-from-cap [cap fidelity]
  report clamp01 ((fidelity * cap) + ((1 - fidelity) * random-float 1))
end 

to-report clamp01 [x]
  report max list 0 (min list 1 x)
end 

to-report assign-tier [cap]
  if cap >= 0.67 [ report "high" ]
  if cap >= 0.33 [ report "mid"  ]
  report "low"
end 

to-report tier-color [tier]
  if tier = "high" [ report orange ]
  if tier = "mid"  [ report sky    ]
  report gray + 1
end 

to-report employment-rate
  if count candidates = 0 [ report 0 ]
  report count candidates with [employed?] / count candidates
end 

to-report average-match-quality
  if hires = 0 [ report 0 ]
  report total-match-quality / hires
end 

to-report false-negatives
  report count candidates with [false-negative-counted?]
end 

to-report false-negative-rate
  let denom count candidates with [true-capability > high-capability-threshold]
  if denom = 0 [ report 0 ]
  report false-negatives / denom
end 

to-report match-quality-gini
  let mq [true-fit] of candidates with [employed?]
  if length mq < 2 [ report 0 ]
  let mu mean mq
  if mu = 0 [ report 0 ]
  report standard-deviation mq / mu
end 

to-report capability-utilization
  let pool-total sum [true-capability] of candidates
  if pool-total = 0 [ report 0 ]
  report sum [true-capability] of candidates with [employed?] / pool-total
end 

to-report avg-signal-gap
  if count candidates = 0 [ report 0 ]
  report mean [narrative - evidence] of candidates
end 

to-report employment-rate-high
  let pool count candidates with [capability-tier = "high"]
  if pool = 0 [ report 0 ]
  report count candidates with [capability-tier = "high" and employed?] / pool
end 

to-report employment-rate-mid
  let pool count candidates with [capability-tier = "mid"]
  if pool = 0 [ report 0 ]
  report count candidates with [capability-tier = "mid" and employed?] / pool
end 

to-report employment-rate-low
  let pool count candidates with [capability-tier = "low"]
  if pool = 0 [ report 0 ]
  report count candidates with [capability-tier = "low" and employed?] / pool
end 

to-report match-quality-high
  let hired candidates with [capability-tier = "high" and employed?]
  if count hired = 0 [ report 0 ]
  report mean [true-fit] of hired
end 

to-report match-quality-mid
  let hired candidates with [capability-tier = "mid" and employed?]
  if count hired = 0 [ report 0 ]
  report mean [true-fit] of hired
end 

to-report match-quality-low
  let hired candidates with [capability-tier = "low" and employed?]
  if count hired = 0 [ report 0 ]
  report mean [true-fit] of hired
end 

to-report false-negs-high
  report count candidates with [capability-tier = "high" and false-negative-counted?]
end 

to-report false-negs-mid
  report count candidates with [capability-tier = "mid" and false-negative-counted?]
end 

to-report false-negs-low
  report count candidates with [capability-tier = "low" and false-negative-counted?]
end 

to do-plots
  set-current-plot "Employment by tier"
  set-current-plot-pen "high"
  plot employment-rate-high
  set-current-plot-pen "mid"
  plot employment-rate-mid
  set-current-plot-pen "low"
  plot employment-rate-low

  set-current-plot "False negatives by tier"
  set-current-plot-pen "high tier"
  plot false-negs-high
  set-current-plot-pen "mid tier"
  plot false-negs-mid

  set-current-plot "Quality vs utilization"
  set-current-plot-pen "match-quality"
  plot average-match-quality
  set-current-plot-pen "utilization"
  plot capability-utilization
  set-current-plot-pen "signal gap"
  plot avg-signal-gap
end 

There is only one version of this model, created 11 days ago by Mike Sheerin.

Attached files

File Type Description Last updated
Crit2IntelligenceLabourMarkets.png preview Preview for 'Crit2IntelligenceLabourMarkets' 11 days ago, by Mike Sheerin Download

This model does not have any ancestors.

This model does not have any descendants.