Commit 1ab9646c authored by JosefD's avatar JosefD
Browse files

wage normalization update

parent 7b6bb664
Loading
Loading
Loading
Loading
+37 −30
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ to-report world-size-const
  report 15 ; specifies the size of world
end

to-report stress-change
to-report stress-container
  report mean-value-stress-limit ; specifies maximal possible change of stress
end

@@ -405,9 +405,9 @@ to go
    ; it depends on employee's effort - higher value of effort means less regeneration
    let stress-coef effort / boss-reaction-time
    ; stress is increased based on level of effort - impact can be adjusted by parameter
    if not is-sick? [ set stress-actual (stress-actual + stress-change * stress-coef * effort-stress-increase) ]
    if not is-sick? [ set stress-actual (stress-actual + stress-container * stress-coef * effort-stress-increase) ]
    ; stress regeneration - it could not be lower than 0
    set stress-actual max list 0 (stress-actual - (stress-change * stress-regen))
    set stress-actual max list 0 (stress-actual - (stress-container * stress-regen))
  ]

  let new-sum-value 0  ; counts the sum of money generated this ticks
@@ -462,17 +462,17 @@ to go

      ; both defected
      if defect-now? and partner-defected? [
        set stress-actual stress-actual + stress-change * stress-modification-on-PD * cooperation-part
        set stress-actual stress-actual + stress-container * stress-modification-on-PD * cooperation-part
        set number-of-defects number-of-defects + 1
        ask partner [
          set stress-actual stress-actual + stress-change * stress-modification-on-PD * cooperation-part
          set stress-actual stress-actual + stress-container * stress-modification-on-PD * cooperation-part
          set number-of-defects number-of-defects + 1
        ]
      ]

      ; employee cooperates, partner defects
      if not defect-now? and partner-defected? [
        set stress-actual stress-actual + stress-change * stress-modification-on-PD * cooperation-part * stress-multiplier-treason
        set stress-actual stress-actual + stress-container * stress-modification-on-PD * cooperation-part * stress-multiplier-treason
        set number-of-cooperation number-of-cooperation + 1
          ask partner [
            set number-of-defects number-of-defects + 1
@@ -483,7 +483,7 @@ to go
      if defect-now? and not partner-defected? [
        set number-of-defects number-of-defects + 1
        ask partner [
          set stress-actual stress-actual + stress-change * stress-modification-on-PD * cooperation-part * stress-multiplier-treason
          set stress-actual stress-actual + stress-container * stress-modification-on-PD * cooperation-part * stress-multiplier-treason
          set number-of-cooperation number-of-cooperation + 1
        ]
      ]
@@ -589,18 +589,24 @@ to go
        ; it is calculated as agent's money per performance at the end of a tick minus the same at the beggining of the tick = clear added value per point of performance in given tick
        set wage-change (budget-new * own-performance / sum-of-performance-new) - (budget * own-performance-old / sum-of-performance-old)
    ]
    let max-wage-change max [ wage-change / own-performance ] of turtles
    let min-wage-change min [ wage-change / own-performance ] of turtles

    ; let max-wage-change max [ wage-change / own-performance ] of turtles
    ; let min-wage-change min [ wage-change / own-performance ] of turtles

    ask turtles [
      set wage-change-tmp 0
     ;
     if wage-change > 0 [
        set wage-change-tmp ( wage-change / own-performance ) / max-wage-change
      ]
     if wage-change < 0 [
        set wage-change-tmp ( -1 * wage-change / own-performance ) / min-wage-change
     ; normalization of wage against last month
      if (budget * own-performance-old / sum-of-performance-old) > 0 [
        set wage-change-tmp wage-change / (budget * own-performance-old / sum-of-performance-old)
      ]
        ;;;;;;;;;;; NEEDS ATTENTION ;;;;;;;;;;;;;;;;
     ;
     ; if wage-change > 0 [
     ;   set wage-change-tmp ( wage-change / own-performance ) / max-wage-change
     ; ]
     ;if wage-change < 0 [
     ;   set wage-change-tmp ( -1 * wage-change / own-performance ) / min-wage-change
     ; ]
    ]
  ]

@@ -617,6 +623,7 @@ to go
  if (ticks mod boss-reaction-time) = 0 and ticks != 0 and not fixed-performance [
    ask turtles [
      ; count coef - the effect of wage change is bigger for employess with lower salary (easterlinn paradox)
      ; in other words, coef-dist defines how sensitive is an employee towards wage change
      let coef-dist 1
        ifelse own-performance <= 100
        [
@@ -633,7 +640,7 @@ to go
      ; update stress based on income
      ; wage-change-tmp can be potive or negative. Therefore stress is increased when wage is decreased
      ; and stress is decreased when wage is increased.
      set stress-actual stress-actual - stress-change * coef-dist * wage-change-tmp * evaluation-stress-change
      set stress-actual stress-actual - coef-dist * wage-change-tmp * evaluation-stress-change

    ]
  ]
@@ -682,30 +689,30 @@ to go
        ifelse wage-change < 0 [
          ifelse coef-diff > 0 [
            ; but it was easier for employee to get money
            let effort-diff diff * (1 - diligence)
            ; the effort will be decreased
            set effort effort - effort-diff
          ]
          [
            ; or it was harder for employee to get money
            let effort-diff diff * diligence
            ; the effort will be increased
            set effort effort + effort-diff
          ]
          [
            ; or it was harder for employee to get money
            let effort-diff diff * (1 - diligence)
            ; the effort will be decreased
            set effort effort - effort-diff
          ]
        ]
        [
          ; in case that salary was increased
          ifelse coef-diff > 0 [
            ; and it was easier for employee to get money
            let effort-diff diff * diligence
            ; the effort will be increased
            set effort effort + effort-diff
            let effort-diff diff * (1 - diligence)
            ; the effort will be decreased
            set effort effort - effort-diff
          ]
          [
            ; but it was harder for employee to get money
            let effort-diff diff * (1 - diligence)
            ; then the effort will be decreased
            set effort effort - effort-diff
            let effort-diff diff * diligence
            ; then the effort will be increased
            set effort effort + effort-diff
          ]
        ]
      ]
@@ -791,7 +798,7 @@ to go
  [
    ask turtles [
      ; regenerate stress level twice, two days in weekend
      set stress-actual max list 0 (stress-actual - (stress-change * stress-regen * 2))
      set stress-actual max list 0 (stress-actual - (stress-container * stress-regen * 2))

      if is-sick? [
        set sick-timer sick-timer - 2