计算机博弈研究——六子棋

1 void Connect6Form::ComTurn()//进行空位估值计算
2  {
3  for(i=0;i<=18;i++) //计算玩家在空格子上的获胜分数
4 for(j=0;j<=18;j++)
5 {
6 pgrades[i][j]=0;
7 if(board[i][j] ==2)
8 for(k=0;k<924;k++)
9 if(ptable[i][j][k])
10 {
11 switch(win[0][k])
12 {
13 case1:
14 pgrades[i][j]+=5;
15 break;
16 case2:
17 pgrades[i][j]+=50;
18 break;
19 case3:
20 pgrades[i][j]+=100;
21 break;
22 case4:
23 pgrades[i][j]+=600;
24 break;
25 case5:
26 pgrades[i][j]+=800;
27 break;
28 }
29 }
30 }
31 for(i=0;i<=18;i++) //计算计算机在空格子上的获胜分数
32 for(j=0;j<=18;j++)
33 {
34 cgrades[i][j]=0;
35 if(board[i][j] ==2)
36 if(ctable[i][j][k])
37 {
38 switch(win[1][k])
39 {
40 case1:
41 cgrades[i][j]+=5;
42 break;
43 case2:
44 cgrades[i][j]+=50;
45 break;
46 case3:
47 cgrades[i][j]+=100;
48 break;
49 case4:
50 cgrades[i][j]+=200;
51 break;
52 case5:
53 cgrades[i][j]+=400;
54 break;
55 }
56 }
57 }
58 if((computer ==1&&!start)||computer ==2) //取出 cgrades 与 pgrades 数组
59 中的最高分数
60 {
61 for(i=0;i<19;i++)
62 for(j=0;j<19;j++)
63 if(board[i][j] ==2)
64 {
65 if(cgrades[i][j]>=cgrade)
66 {
67 cgrade = cgrades[i][j];
68 mat = i;
69 nat = j;
70 }
71 if(pgrades[i][j]>=pgrade)
72 {
73 pgrade = pgrades[i][j];
74 mde = i;
75 }
76 }
77 if(cgrade>=pgrade) //cgrade>=pgrade 计算机攻击玩家
78 {
79 m = mat; //落子在对计算机方有利的位置
80 n = nat;
81 }
82 else//计算机防守
83 {
84 m = mde; //落子在对玩家有利的位置,进行防御
85 n = nde;
86 }
87 }
88 }

空位估值算法

void ParticleFly()//粒子飞行寻优
{ srand((unsigned)time(NULL));
static int k=10;
w=Wmax-k*(Wmax-Wmin)/Kmax; //惯性权重采用线性递减方法
k++;
for (int i=0;i<Pnum;i++) //Pnum 代表种群规模
{ for (int j=0;j<Dim;j++) //Dim 代表粒子维数
{
Parr.V[j]=(int)(w*Parr.V[j])+(int)(c1*rand()/(double)RAND_MAX*
(Parr.XBest[j]-Parr.X[j])+c2*rand()/(double)RAND_MAX*
(Parr[GBIndex].XBest[j]-Parr.X[j]));
}
for (int j=0;j<Dim;j++)
{
Parr.X[j]+=Parr.V[j];
}
}
CalculateFit();
for (int i=0;i<Pnum;i++)
{
if (Parr.Fit>=Parr.FitBest)
{ Parr.FitBest=Parr.Fit;
for (int j=0;j<Dim;j++)
{
Parr.XBest[j]=Parr.X[j];
}
}
}
GBIndex=0; //GBIndex 最优粒子索引
for (int i=0;i<Pnum;i++)
{
if (Parr.FitBest>Parr[GBIndex].FitBest&&i!=GBIndex)
{
GBIndex=i;
}}}

粒子群优化算法的寻优过程

posted on 2011-04-30 10:07  小影帆  阅读(822)  评论(0编辑  收藏  举报

导航