2014-12-04 61 views
0

我有一个连接四类型游戏的评估函数。我不明白什么时候评估函数会给出负值。我的评价函数主要用于分配每次移动伪码的值可能会更容易显示minimax算法的评估函数何时应返回负值?

if player has 4 in a row 
    return 5000; 
if player has 3 in a row 
    return 4000; 
if opponent has 3 in a row or 3 in a column 
    return 4000; 
if opponent a disjoint 3 in a row or column //ie xx x 
    return 4000; 
if opponent has in row with spaces on both sides// ie ' 'OO' ' 
    return 100; 
if opponent has two in arrow w/o spaces on both sides // ie XOO 
    return 95; 

这是基本的想法,但是由于没有负值,最小函数总是返回0;

我在这里错过了什么?

回答

0

首先,您的评估功能不必提供负值。这只是一个简单的惯例,对于球员来说,一个球员是积极的,对于球员来说是好的两个是负面的,同样好的是零。这不应该导致你的min函数返回零。如果你发布你的最小功能,或许我们可以帮助你。我个人的经验怀疑(我也连接了四个引擎)是min函数将默认值设置为零。这只适用于最大功能。最小功能默认值必须设置为非常高的数字(如果您的评估数字为5000)。否则,它所看到的所有移动都不会打零。只是猜测