标签:人工智能
(个人复习,一些仅是给自己的复习提示(=w=),转载注明出处:http://blog.csdn.net/hcbbt/article/details/42815479)
配套教材:游戏开发中的人工智能
// Bresenham
if (deltaCol > deltaRow) {
fraction = deltaRow * 2 - deltaCol;
while (nextCol != endCol) {
if (fraction >= 0) {
nextRow = nextRow + stepRow;
fraction = fraction - deltaCol;
}
nextCol = nextCol + stepCol;
fraction = fraction + deltaRow;
pathRow[currentStep] = nextRow;
pathCol[currentStep] = nextCol;
currentStep++;
}
} else {
fraction = deltaCol * 2 - deltaRow;
while (nextRow != endRow) {
if (fraction >= 0) {
nextCol = nextCol + stepCol;
fraction = fraction - deltaRow;
}
nextRow = nextRow + stepRow;
fraction = fraction + deltaCol;
pathRow[currentStep] = nextRow;
pathCol[currentStep] = nextCol;
currentStep++;
}
}
// 拦截,类似视线
void DoIntercept(void) {
Vector u, v;
Bool left = false;
Bool right = false;
Vector Vr, Sr, St;
Double tc;
Vr = Prey.vVelocity - Predator.vVelocity;
Sr = Prey.vPosition - Predator.vPosition;
tc = Sr.Magnitude() / Vr.Magnitude();
St = Prey.vPosition + (Prey.vVelocity * tc);
u = VRotate2D(-Predator.fOrientation, (St - Predator.vPosition));
u.Normalize();
if (u.x < -_TOL)
left = true;
else if (u.x > _TOL)
right = true;
Predator.SetThrusters(left, right);
}
U = - A / (r^n) + B / (r^m)
F = - nA / (r^(n+1)) + nB / (r^(m+1))
听说A*不考
概率论及贝叶斯技术
神经网络
简单算法
轮盘赌算法
/* 按设定的概率,随机选中一个个体, P[i]表示第i个个体被选中的概率*/
int RWS() {
m = 0;
r = Random(0, 1); //r为0至1的随机数
for (i = 1; i <= N; i++) {
/* 产生的随机数在m~m+P[i]间则认为选中了i,因此i被选中的概率是P[i]*/
m = m + P[i];
if (r <= m) return i;
}
}
简单遗传算法-伪代码
/*Pc:交叉发生的概率, Pm:变异发生的概率, M:种群规模,G:终止进化的代数,
Tf:进化产生的任何一个个体的适应度函数超过Tf,则可以终止进化过程*/
初始化Pm,Pc,M,G,Tf等参数。随机产生第一代种群Pop;
do {
计算种群Pop中每一个体的适应度F(i);
初始化空种群newPop;
do {
根据适应度以比例选择算法从种群Pop中选出2个个体;
if (random(0, 1) < Pc) {
对2个个体按交叉概率Pc执行交叉操作;
}
if (random(0, 1) < Pm) {
对2个个体按变异概率Pm执行变异操作;
}
将2个新个体加入种群newPop中;
} until(M个子代被创建);
用newPop取代Pop;
} until(任何染色体得分超过Tf, 或繁殖代数超过G);
标签:人工智能
原文地址:http://blog.csdn.net/hcbbt/article/details/42815479