;;;;;;;;;;;;;;;;;;;;;; ;; Helper functions ;; ;;;;;;;;;;;;;;;;;;;;;; ; beekeep-utility = honey-quant * (honey-price - prod-cost) - (travel-cost * distance * vehicles) - moving-cost to-report beekeep-utility [hi ah d] report (honey-quant hi ah) * ((honey-price hi) - prod-cost) - (travel-cost * d) end to-report honey-price [ hi ] if hi = "PF" [ report 3.48 ] ; Polyflower if hi = "AC" [ report 4.65 ] ; Accacia if hi = "LM" [ report 4.65 ] ; Lime if hi = "SF" [ report 2.32 ] ; Sunflower ; the following shouldn't happen error 1 end to-report prod-cost report 100 / 25000 ; 1 hive = 25000 bees end ; honey-quant = (bees-quant - 10000) * harv-index * uncertainty to-report honey-quant [ hi amount-h ] report (bees-quant - 10000) * (harv-index hi) * amount-h * uncertainty end to-report harv-index [ hi ] ifelse flower-season [ if hi = "AC" and acacia-season [ report 0.0000135 ] ; Acacia if hi = "LM" and lime-season [ report 0.000018 ] ; Lime if hi = "SF" and sunflower-season [ report 0.000006 ] ; Sunflower report 0.000004 ; Polyflower ] [ report 0.0 ] ; the following shouldn't happen error 1 end to-report acacia-season if yearly-ticks > 119 + abegin-uncertainty and yearly-ticks < 150 + aend-uncertainty [ report true ] report false end to-report lime-season if yearly-ticks > 150 + lbegin-uncertainty and yearly-ticks < 180 + lend-uncertainty [ report true ] report false end to-report sunflower-season if yearly-ticks > 180 + sbegin-uncertainty and yearly-ticks < 211 + send-uncertainty [ report true ] report false end to-report flower-season if yearly-ticks > 89 and yearly-ticks < 241 [ report true ] report false end to-report uncertainty report random-normal 1.0 harvesting-uncertainty end to-report bees-quant ifelse ticks <= 21 [ report 2000 * ticks + 27000 ] [ report 500 * ticks + 65000 ] end to-report color-flower [ hi ] if hi = "PF" [ report VIOLET ] ; Polyflower if hi = "AC" [ report RED ] ; Accacia if hi = "LM" [ report LIME ] ; Lime if hi = "SF" [ report YELLOW ] ; Sunflower ; the following shouldn't happen error 1 end to dailyRevenue let N count beekeepers ; ifelse old-spot not empty? [ set old-spot min-one-of spots [distance myself] let travel-distance distance old-spot ; ] ;[ ; set travel-distance 0 ;] if any? spots-here [;flower-type [amount-of-hives] of myself (distance myself) set sumOfallBeekeepersProfit (sumOfallBeekeepersProfit + beekeep-utility ([flower-type] of one-of spots-here) amount-of-hives travel-distance ) ] set averageProfit sumOfallBeekeepersProfit / N end to evaluation-procedure dailyRevenue individual-caract end to individual-caract let travel-distance distance old-spot set profit (profit + beekeep-utility ([flower-type] of one-of spots-here) amount-of-hives travel-distance ) set total-travel-distance (total-travel-distance + travel-distance ) end