- 4
- 0
- 约9.89千字
- 约 10页
- 2017-08-23 发布于浙江
- 举报
1408090204王金涛人工智能实验4
人工智能 上机实验报告
学号: 1408090238 姓名: 覃天桥 所在系: 信息学院 班级:惠普测试142班
实验名称: 遗传算法的实现与应用 实验日期 2016年12月10日
实验指导教师 李辉 实验机房 A401
------------------------------------------------------------------------------------------------------
实验目的:
1、理解遗传算法的基本过程,掌握其选择-复制、交叉、变异三种运算。
2、掌握基本遗传算法,会建立适应度函数,通过遗传算法的迭代实现优化问题。
实验内容:
3.算法设计(编程思路或流程图或源代码)
程序调试(实验数据记录——根据程序要求输入几组不同数据,记录程序运行结果,并分析结果,分析程序运行中出现的主要错误。或对其他程序环境的使用情况的记录。注:必须认真书写)
5.讨论(通过实验的一些体会、学会的知识和技能等)
3.
算法设计(编程思路或流程图或源代码)
//this program uses SGA to calculate the maximum value of f(x) =100*(x1*x1-x2)*(x1*x2-x2)+(1-x1)*(1-x1)
#include iostream
#include ctime
#include cstdlib
#include cstdio
#include cstring
#include algorithm
#include vector
#define LENGTH 3
using namespace std;
class chromosome
{
public:
int x1,x2;
int value;
double fitness;
void assign(int a,int b)
{
x1 = a;
x2 = b;
cal_value();
}
void cal_value()
{
value = x1 LENGTH;
value |= x2;
}
void cal_fitness()
{
fitness = 100*(x1*x1-x2)*(x1*x2-x2)+(1-x1)*(1-x1);
}
};
double total_fitness = 0;
vectorchromosome population[2];
vectorchromosome temp;
int cop_counter = 0;
int selector = 0;
int and1 = ((1 LENGTH) - 1) LENGTH;
int and2 = (1 LENGTH) - 6;
int variation_percent = 2;
int random(int end)
{
return rand() % (end + 1);
}
//选择
void select_population()
{
int counter = 0;
int new_sel = (selector + 1) % 2;
population[new_sel].clear();
while (counter = 3)
{
int pos = population[selector].size() - 1;
int r = random(total_fitness);
int end = population[selector][0].fitness;
for (int i = 1;i (int)population[selector].size();i++)
if (r = end)
{
pos = i - 1;
break;
原创力文档

文档评论(0)