题目:利用遗传算法求解区间[0,31]上的二次函数y=x*x的最大值。
//题目: 利用遗传算法求解区间[0, 31]上的二次函数y = x*x的最大值
#include
#include
#include
#include
using namespace std;
int N = 4;//种群规模
int T = 100;//最大换代数
double Pc = 0.4;//交叉率
double Pm = 0.01;//变异率
int option = 0;
int t;//代数计数器
bool flag = true;//标记是否是第一次计算结果
struct solution{
int num; //十进制数
char b[5]; //5位二进制数编码染色体
int f; //适应度
double p; //选择概率
double q; //积累概率
}*s, *next;
void showCondition(){
cout << "种群规模: " << N << endl;
cout << "最大换代数: " << T << endl;
cout << "交叉率: " << Pc << endl;
cout << "变异率: " <&l