我正在为鼠标和猫设计AI。所以他们有HP,猫会追逐和吃老鼠,老鼠会吃奶酪。这种饮食行为将帮助他们获得HP。如果他们不能吃食物,如果他们耗尽所有HP,他们就会死亡。
所以我搜索了书籍,我有一个基本的算法。
def chooseAction(actions, goals):
# Go through each action, and calculate the
# discontentment.
bestAction = actions[0]
bestValue = calculateDiscontentment(actions[0], goals)
for action in actions:
thisValue = calculateDiscontentment(action, goals)
if thisValue < bestValue:
bestValue = thisValue
bestAction = action
# return the best action
return bestAction
def calculateDiscontentment(action, goals):
# Keep a running total
discontentment = 0
# Loop through each goal
for goal in action:
# Calculate the new value after the action
newValue = goal.value + action.getGoalChange(goal)
# Get the discontentment of this value
discontentment += goal.getDiscontentment(value)
struct Goal:
value
def getDiscontentment(newValue):
return newValue * newValue
该算法非常易于理解,并且易于实现。
因此,我必须为他们采取的每项行动确定目标和目标价值。
老鼠说,他可能想动,吃。
所以我必须为这些值提出一个值(wiliness)。
确定这些值的好方法是什么?
我的方法就在这里。
Ley说我的鼠标有3个细胞的视野范围,它只能向左和向下四个方向走。
目标吃值可能由其MAX_ENERGY和NOW_ENERGY确定,我得出一个公式 eatValue = MAX_ENERGY - NOW_ENERGY。这是有道理的,因为它NOW_ENERGY等于MAX_ENERGY,我的老鼠吃了0。
这种简单配方的好方法是什么? 我的老鼠移动的好习惯是什么?