问题标签 [evaluation-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2262 浏览

java - 如何在java中评价一个连接四个游戏的情况

我正在尝试为“获得四个”游戏编写一个简单的 AI。基本的游戏原理已经完成,所以我可以扔不同颜色的硬币,它们相互堆叠并填充一个 2D Array 等等。到目前为止,这是该方法的样子:

X 是水平坐标,因为 y 坐标取决于阵列中已经有多少石头,我认为这个想法很明显。

现在的问题是我必须对特定的游戏情况进行评分,因此找出在特定情况下我可以连续获得多少新对、三胞胎和可能的 4 个,然后为每种情况赋予特定值。有了这些值,我可以设置一个“游戏树”,然后决定下一步哪个动作最好(稍后实施 Alpha-Beta-Pruning)。我目前的问题是我想不出一种有效的方法来在 java 方法中实现对当前游戏情况的评级。
任何想法将不胜感激!

0 投票
8 回答
19296 浏览

machine-learning - 如何为一个游戏创建一个好的评价函数?

我有时会编写程序来玩棋盘游戏。基本策略是标准的 alpha-beta 修剪或类似搜索,有时会通过通常的残局或开局方法来增强。我主要玩国际象棋变体,所以当需要选择我的评估函数时,我使用基本的国际象棋评估函数。

但是,现在我正在编写一个程序来玩一个全新的棋盘游戏。如何选择一个好的甚至像样的评估函数?

主要挑战是相同的棋子总是在棋盘上,所以通常的材质函数不会因位置而改变,而且游戏已经玩了不到一千次左右,所以人类不一定会玩够还没有给出见解。(PS。我考虑过 MoGo 方法,但随机游戏不太可能终止。)

游戏详情:游戏在 10×10 棋盘上进行,每边固定 6 个棋子。这些棋子有一定的运动规则,并以一定的方式相互作用,但从来没有一个棋子被捕获。游戏的目标是在棋盘上的某些特殊方格中有足够的棋子。计算机程序的目标是提供与当前人类玩家竞争或更好的玩家。

0 投票
1 回答
413 浏览

artificial-intelligence - 如何为 Hijara 游戏(游戏解释如下)创建评估函数?

我必须在 Prolog 中实现一个智能版本的 Hijara Game。您可以在以下链接中玩游戏并了解规则:http: //www.sapphiregames.com/online/hijara.php

我将使用 Alpha Beta 算法(直到搜索树的某个级别)。这是我第一次接触人工智能,我不知道如何创建算法使用的评估函数。如果有人能帮助我,我将不胜感激

谢谢!

0 投票
3 回答
25316 浏览

java - Connect 4应该如何设计一个好的评价函数?

我有一个“连接 4”游戏的 java 实现(列和行数可变)。

该实现使用(根据用户的选择)Mini-max 的 Mini-max 算法,带有 Alpha-beta 剪枝,最大搜索深度为maxDepth

我现在的问题是为板的状态设计一个好的评估函数(这是在 maxDepth 处返回的值)。

该值介于-100(最差选择,对应于失败的情况)100(最佳选择,对应于获胜的情况)之间,其中0应该是“平局”情况

其实我已经实现了两个功能(我报告伪代码,因为代码很长)

1)

  • 不赢/不输

--> 如果表已满 ==> 绘制 (0)

--> 如果表未满 ==> 不确定情况 (50)

--> 如果我赢了:100

--> 如果对手获胜:-100

2)

我需要设计第三个(如果可能更好)功能。有什么建议吗?

先感谢您。

0 投票
1 回答
776 浏览

machine-learning - 如何为棋盘游戏(wizwoz)结果创建评估函数

游戏名为 wizwoz:

两个玩家,红色(称为 r)和金色(称为 g)最初选择两个值 n 和 k。创建一个 n × n 的棋盘,其中 k“r”和 k“g”随机放置在棋盘上。从玩家 r 开始,每个玩家将他/她的字母(玩家 r 为“r”,付款人 g 为“g”)放在棋盘上的一个空方格中。棋盘填满后,每个玩家的分数等于棋盘上用该玩家颜色填充的最大连接区域(其中连接区域是一个区域中的任何两个方格都存在仅由 N/S/E 组成的路径/W 移动)。得分最高的玩家获胜,并获得他/她的得分与其他玩家得分之间的差额。下面显示了两个已完成游戏的示例,其中列出了每个玩家的最大连接区域。

在此处输入图像描述

我正在编写 alpha-beta 修剪算法并坚持使用评估函数。

有什么帮助吗?最好使用伪代码。

0 投票
1 回答
10311 浏览

artificial-intelligence - How to create an evaluation function for a TIC-TAC-TOE variant game

I'm actually working on a board game which is a variant of the TIC-TAC-TOE game. The specifics of the game are the followings :

1. The game is played on a nxn board, with n variable.

2. A player wins if he succeeds in placing k alignments the first, k is variable.

3. An alignment is constituted of l marks (X or O) in a horizontal, vertical or diagonal. l is fixed.

4. If the nxn grid is full (no player can add a mark either X or O) and no player succeeded in placing k alignments so the game is drawn.

I'm using an minmax with alpha-beta prunning algorithm. This is my first program with artificial intelligence and I don't know exactly how to create the evaluation function to be used by the algorithm. I saw some examples on the net which use a material weighting to evaluate a position but I can't apply that in my case. Actually, I'm using a radom evaluation function which returns a value between -100 and 100.

Any idea on how can I evaluate a given board configuration ?

0 投票
1 回答
2855 浏览

r - 具有替代性能指标的 R 插入符号模型评估

我正在使用 R 的 caret 包进行一些网格搜索和模型评估。我有一个自定义评估指标,它是绝对误差的加权平均值。在观察级别分配权重。

这里给出了一个示例,说明如何使用 summaryFunction 为插入符号的 train() 定义自定义评估指标。去引用:

trainControl 函数有一个名为 summaryFunction 的参数,它指定了一个计算性能的函数。该函数应具有以下参数:

data 是数据框或矩阵的参考,其列称为 obs 和 pred 用于观察和预测的结果值(用于回归的数字数据或用于分类的字符值)。目前,类概率没有传递给函数。数据中的值是单个调整参数组合的保留预测(及其相关参考值)。如果 trainControl 对象的 classProbs 参数设置为 TRUE,则数据中将出现包含类概率的其他列。这些列的名称与类级别相同。lev 是一个字符串,它具有从训练数据中获取的结果因子级别。对于回归,NULL 值被传递到函数中。model 是正在使用的模型的字符串(即

我不太清楚如何将观察权重传递给 summaryFunction。

0 投票
3 回答
216 浏览

python - Python中的递归函数悖论..如何解释?

我做了一个非常简单的函数,它接受一个数字列表并返回一个由一些数字四舍五入的数字列表:

但是,我错误地将函数本身放在代码中而不是内置函数中round()(如下例所示):

并得到这个输出:

问题是:解释器如何知道它必须rounded()在评估函数rounded()本身时应用函数?rounded()如果它试图解释那个函数,那么现在它怎么可能是一个浮点函数呢?是否有一种两循环程序来评估和解释函数?或者我在这里有什么问题吗?

0 投票
1 回答
6127 浏览

java - 此评估函数如何在 Connect 4 游戏中发挥作用?(爪哇)

我正在探索如何在带有 alpha-beta 修剪的四人游戏中使用 Minimax 算法。

因此,我查看了有关 Connect4 播放器策略的源代码,发现了这个评估函数:

我在这个 PDF 中找到了所有这些代码:http ://ryanmaguiremusic.com/media_files/pdf/ConnectFourSource.pdf

我只是想了解此评估功能的工作原理并决定要采取的最佳行动……有人可以帮我吗?这将不胜感激。

0 投票
3 回答
4482 浏览

artificial-intelligence - 更好的游戏启发式函数(AI Minimax)

我用java编写了一个游戏。游戏很简单(参考下图)。有4只鸟和1只幼虫。这是一个 2 人游戏(AI 与人类)。

在此处输入图像描述

  • 幼虫可以斜向前和斜向后移动
  • 鸟类只能沿对角线向前移动
  • 如果能到达 1 号线(栅栏),则幼虫获胜
  • 如果鸟儿没有动作,幼虫也会获胜
  • 鸟类不能“吃掉”幼虫。
  • 如果幼虫没有向左移动(根本无法移动),鸟类获胜

在此处输入图像描述

当游戏开始时,幼虫开始,然后一只鸟可以移动(任何一只),然后是幼虫,等等......


我已经实现了 MiniMax(Alpha Beta Pruning)并且我正在使用以下评估()函数(启发式函数)。

让我们为棋盘上的每个方格给出以下数字。

在此处输入图像描述

因此,我们的评价函数为

h(n) = 幼虫位置值 - 鸟 1 位置值 - 鸟 2 位置值 - 鸟 3 位置值 - 鸟 4 位置值

幼虫会尝试最大化启发式价值,而鸟类会尝试最小化它

例子:

在此处输入图像描述

然而,这是一种简单而幼稚的启发式方法。它不会以聪明的方式行事。我是 AI 的初学者,我想知道我可以做些什么来改进这个启发式函数?

什么是好的/知情的启发式?