背景知识
- 进化算法(evolutionary algorithms,EA)是基于自然选择和自然遗传等生物进化机制的一种搜索算法。
- 生物进化是通过繁殖、变异、竞争和选择实现的;而进化算法则主要通过选择、重组和变异这三种操作实现优化问题的求解。
- 进化算法是一个“算法簇”,包括遗传算法(GA)、遗传规划、进化策略和进化规划等。
基本思想
实际问题
下面我将结合下图中的问题并结合代码来解决这个问题。
一、初始化染色体种群
首先,我们定义一下染色体的结构。可以利用JS中的对象,使其有两个属性,一个属性是基因位,一个是该基因对应的适应度函数值。
//定义染色体的结构
var gene = {
"geneBit": undefined, //基因
"fitValue": undefined //该基因对应的适应度函数值
}
接着,初始化染色体。根据题目要求,[0,30]之间的整数,则用5位二进制编码即可表示。
var bit = 5; //基因的位数
// 初始化染色体
function createSingle() {
var str = "";
for (var i = 0; i < bit - 1; i++) {
if (Math.random() < 0.5) {
str += "1";
} else {
str += "0";
}
}
//保证产生的数在[0,30]内
if (str == "1111") {
str += 0;
} else {
if (Math.random() <