0

我正在为老鼠和猫设计一个人工智能。所以他们有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)。

确定这些值的好方法是什么?

我的方法就在这里。

莱伊说我的鼠标有 3 个单元格的视野范围,它只能在左右上下四个方向上行走。

目标吃值可能由它的 MAX_ENERGY 和 NOW_ENERGY 决定,我得出一个公式吃值 = MAX_ENERGY - NOW_ENERGY。这是有道理的,因为它 NOW_ENERGY 等于 MAX_ENERGY,我的鼠标有一个 0 的智慧可以吃。

有什么好的方法可以得出这个简单的配方?我的鼠标移动的好方法是什么?

4

0 回答 0