1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-02 00:10:22 +02:00
vcmi/config/ai/object-priorities.txt
Andrii Danylchenko b1ca663eb6 Fuzzy rework
2023-07-31 22:01:10 +03:00

159 lines
5.7 KiB
Plaintext

Engine: visit tile
description: visit tile priority
InputVariable: mainTurnDistance
description: distance to tile in turns
enabled: true
range: 0.000 10.000
lock-range: true
term: LOWEST Ramp 0.250 0.000
term: LOW Discrete 0.000 1.000 0.500 0.800 1.000 0.000
term: MEDIUM Discrete 0.000 0.000 0.500 0.200 1.000 1.000 3.000 0.000
term: LONG Discrete 1.000 0.000 1.500 0.200 3.000 0.800 10.000 1.000
InputVariable: scoutTurnDistance
description: distance to tile in turns
enabled: true
range: 0.000 10.000
lock-range: true
term: LOWEST Ramp 0.250 0.000
term: LOW Discrete 0.000 1.000 0.500 0.800 1.000 0.000
term: MEDIUM Discrete 0.000 0.000 0.500 0.200 1.000 1.000 2.500 0.300 4.000 0.000
term: LONG Discrete 1.000 0.000 1.500 0.200 3.000 0.800 10.000 1.000
InputVariable: goldReward
description: estimated amount of gold received
enabled: true
range: 0.000 5000.000
lock-range: true
term: LOW Triangle 10.000 500.000 2000.000
term: MEDIUM Triangle 500.000 2000.000 5000.000
term: HIGH Ramp 2000.000 5000.000
term: NONE Ramp 100.000 0.000
term: LOWEST Triangle 0.000 100.000 500.000
InputVariable: armyReward
enabled: true
range: 0.000 10000.000
lock-range: false
term: NONE Ramp 100.000 0.000
term: LOW Triangle 0.000 700.000 3000.000
term: HIGH Ramp 3000.000 10000.000
term: MEDIUM Triangle 700.000 3000.000 8000.000
InputVariable: armyLoss
enabled: true
range: 0.000 1.000
lock-range: false
term: LOW Ramp 0.200 0.000
term: MEDIUM Triangle 0.000 0.200 0.500
term: HIGH Ramp 0.200 0.500
InputVariable: heroRole
enabled: true
range: -0.100 1.100
lock-range: false
term: SCOUT Rectangle -0.500 0.500
term: MAIN Rectangle 0.500 1.500
InputVariable: danger
enabled: true
range: 0.000 10000.000
lock-range: false
term: NONE Ramp 20.000 0.000
term: LOW Triangle 50.000 1000.000 2000.000
term: HIGH Ramp 2000.000 5000.000
term: MEDIUM Triangle 1000.000 2000.000 5000.000
InputVariable: skillReward
enabled: true
range: 0.000 10.000
lock-range: false
term: NONE Ramp 1.000 0.000
term: LOW Triangle 0.000 1.000 3.000
term: MEDIUM Triangle 1.000 3.000 5.000
term: HIGH Discrete 3.000 0.000 5.000 0.800 10.000 1.000
InputVariable: rewardType
enabled: true
range: 0.000 3.000
lock-range: false
term: SINGLE Rectangle 0.500 1.500
term: MIXED Rectangle 1.500 2.500
term: NONE Rectangle 0.000 0.500
InputVariable: closestHeroRatio
enabled: true
range: 0.000 1.000
lock-range: false
term: LOW Discrete 0.000 1.000 0.500 0.800 0.700 0.200 1.000 0.000
term: HIGH Discrete 0.500 0.000 0.700 0.600 1.000 1.000
term: LOWEST Discrete 0.000 1.000 0.400 0.200 0.900 0.000
InputVariable: strategicalValue
description: Some abstract long term benefit non gold or army or skill
enabled: true
range: 0.000 1.000
lock-range: false
term: NONE Ramp 0.200 0.000
term: LOWEST Triangle 0.000 0.010 0.250
term: LOW Triangle 0.000 0.250 0.700
term: MEDIUM Triangle 0.250 0.700 1.000
term: HIGH Ramp 0.700 1.000
InputVariable: goldPreasure
description: Ratio between weekly army cost and gold income
enabled: true
range: 0.000 1.000
lock-range: false
term: LOW Ramp 0.300 0.000
term: HIGH Discrete 0.100 0.000 0.250 0.100 0.300 0.200 0.400 0.700 1.000 1.000
InputVariable: goldCost
description: Action cost in gold
enabled: true
range: 0.000 1.000
lock-range: false
term: NONE Ramp 0.050 0.000
term: MEDIUM Triangle 0.100 0.200 0.500
term: LOW Triangle 0.000 0.100 0.200
term: HIGH Discrete 0.200 0.000 0.300 0.600 0.500 0.900 1.000 1.000
InputVariable: turn
description: Turn of goal completion. Discrete variable to sharpen boundaries between turns. Turn distances does not care about turn boundaries and just count total movement points
enabled: true
range: 0.000 5.000
lock-range: false
term: NOW Ramp 1.000 0.999
term: NEXT Trapezoid 1.000 1.000 1.990 2.000
term: FUTURE Discrete 1.990 0.000 2.000 0.500 2.999 0.500 3.000 1.000
InputVariable: fear
description: Fear strength of enemy heroes
enabled: true
range: 0.000 2.000
lock-range: false
term: LOW Triangle 0.000 0.500 1.000
term: MEDIUM Triangle 0.500 1.000 1.500
term: HIGH Ramp 1.000 1.800
InputVariable: armyGrowth
enabled: true
range: 0.000 20000.000
lock-range: false
term: NONE Ramp 100.000 0.000
term: SMALL Triangle 0.000 1000.000 3000.000
term: MEDIUM Triangle 1000.000 3000.000 8000.000
term: BIG Triangle 3000.000 8000.000 20000.000
term: HUGE Ramp 8000.000 20000.000
OutputVariable: Value
enabled: true
range: -1.500 2.000
lock-range: false
aggregation: AlgebraicSum
defuzzifier: Centroid 100
default: 0.500
lock-previous: false
term: WORST Binary -1.000 -inf 0.500
term: BAD Rectangle -1.000 -0.700 0.500
term: BASE Rectangle -0.200 0.200 0.400
term: LOW Rectangle 1.110 1.190 0.320
term: HIGHEST Discrete 0.300 0.000 0.300 1.000 0.600 1.000 0.600 0.000 1.700 0.000 1.700 1.000 2.000 1.000 2.000 0.000 0.500
term: HIGH Discrete 0.600 0.000 0.600 1.000 0.850 1.000 0.850 0.000 1.450 0.000 1.450 1.000 1.700 1.000 1.700 0.000 0.400
term: BITHIGH Discrete 0.850 0.000 0.850 1.000 1.000 1.000 1.000 0.000 1.300 0.000 1.300 1.000 1.450 1.000 1.450 0.000 0.350
term: MEDIUM Discrete 1.000 0.000 1.000 1.000 1.100 1.000 1.100 0.000 1.200 0.000 1.200 1.000 1.300 1.000 1.300 0.000 0.330
RuleBlock: gold reward
enabled: true
conjunction: AlgebraicProduct
disjunction: AlgebraicSum
implication: AlgebraicProduct
activation: General
rule: if heroRole is MAIN then Value is BASE
rule: if heroRole is SCOUT then Value is BASE
rule: if heroRole is MAIN and armyGrowth is HUGE then Value is HIGH
rule: if heroRole is MAIN and armyGrowth is BIG then Value is BITHIGH
rule: if heroRole is MAIN and strategicalValue is HIGH then Value is HIGHEST