-
大小: 11KB文件类型: .cpp金币: 1下载: 0 次发布日期: 2021-05-28
- 语言: C/C++
- 标签: GA 遗传算法 Rosenbrocks
资源简介
利用C++语言模拟遗传算法进行对Rosenbrocks函数的最小值求值。之前自动涨上去的,重新把积分减下来了
代码片段和文件信息
// GA_work.cpp : 此文件包含 “main“ 函数。程序执行将在此处开始并结束。
//
#include “pch.h“
#include
#include
#include
#include
#include
using namespace std;
#define DIMESIONS 2 //维度N
const double Fmax = 97888.9;
int best_indexworst_index;
int gen = 0;
const int M = 50 T = 100 s = 17;//M代表群体大小,一般取20~100;T代表终止进化代数,一般取100~500
const double pc = 0.75 pm = 0.01;//pc交叉概率,一般取0.4~0.99;pm变异概率,一般取0.0001~0.1
const double Umax = 5.12 Umin = -5.12; //argx[DIMESIONS]在[UminUmax]
double averagefit[T];
double min[T];
double max[T];
struct population //定义每个个体的结构
{
int x[DIMESIONS][s]; //定义编码长度为17*DIMESIONS位,计算精度为1/10000
double argx[DIMESIONS]; //DIMESIONS 个变量的Rosenbrocks函数
double fit; //每个个体的适应度
double sumfit;
double value;
//struct population *next;
}p[M]*best=&p[0]*worst=&p[0];
double bestIndividual = Fmax;
double worstIndividual = Fmax;
double currentBestIndividual = Fmax;
double currentWorstIndividual = Fmax;
void initial(); //初始化函数
void evalueFitness();//计算适应度
void select();//选择复制函数
void crossOver();//交叉函数
void mutation();//变异参数
void decoding();//解码函数
void print();//显示函数
void FindBestIndividual();
double RosenbrockFunc(population t); //rosenbrocks函数
void getNextGeneration();
int setCharCode01();
double randR(double a double b); //在区间(ab)内产生一个随机数r
/****************** 遗传算法主函数 ******************/
int main() //Umax=5.12Umin=-5.12
{
srand((unsigned)time(NULL));
initial();//随机获得初始解
decoding();//先解码
evalueFitness();//计算适应度值与累计适值
FindBestIndividual();
while (gen <= T)
{
cout << “******************* 第“ << gen + 1 << “代 **********************“ << endl;
cout << endl;
getNextGeneration();
gen++;
}
/*initial();//随机获得初始解
print();
//cout << “initialed!“ << endl;
decoding();//先解码
print();
evalueFitness();//计算适应度值与累计适值
//cout << “evalued!“ << endl;
print();
while (gen <= T)
{
cout << “\n\n\n$$$$$$$$$$$$ 遗传算法第“ << gen + 1 << “ 代 &&&&&&&&&&&&&&“ << endl;
cout << endl;
cout << endl;
FindBestIndividual();
select();//执行选择操作
print();
decoding();
print();
evalueFitness();
//cout << “selected!“ << endl;
print();
crossOver();//执行交叉操作
print();
decoding();
evalueFitness();
//cout << “crossOvered!“ << endl;
print();
mutation();//执行变异操作
print();
decoding();
evalueFitness();
//cout << “mutated!“ << endl;
print();
FindBestIndividual();
gen++;
}
decoding();
evalueFitness();*/
//cout << “最后解为:“ < /*for (int i = 0; i < M; i++)
{
cout << “个体“ << i + 1 << “: “ << endl;
for (int m = 0; m < DIMESIONS; m++)
cout << “x“ << m+1 << “:“ << p[i].argx[m] << endl;
cout << “适度值:“ << p[i].fit << endl;
}*/
FindBestIndividual();
cout << “min: “ << endl;
for (int k = 0; k < T; k++)
cout < cout << endl;
cout << “max: “
- 上一篇:栈实现中缀表达式到后缀表达式的转换
- 下一篇:学分管理源代码
相关资源
- 四变量遗传算法求最小值程序C++
- 基于遗传算法的随机规划matlab
- Gabor滤波器纹理特征提取
- NSGA多目标遗传算法
- ELGamal加解密(c语言实现).zip
- 基于遗传算法的最短路径的程序的开
- c++版遗传算法基本算法
- 基于Gabor特征的人脸识别
- 基于MPI-GA的TSP问题C++代码
- C#遗传算法程序可视化版
- 遗传算法.cpp
- 基于遗传算法的带容量限制的P-media
- C++实现小游戏flappy bird
- C语言-遗传算法的排课源码
- 遗传算法求解TSP旅行商问题C语言源代
- ATmega16与DAC0832连接用DA产生正弦波
- 遗传算法、免疫算法源码C
- 遗传算法求解10城市的旅行商问题的
- 利用遗传算法解决TSP问题c++
- GA遗传算法C++实现,控制台演示
- C++实现的遗传算法实现TSP问题
- xilinx Vivado HLS技术性能优化指南
- Vivado HLS 视频课程总结
- 遗传算法C语言版已运行
- C++ 基于遗传算法的矩形排样 具有可视
- 遗传算法和BP人工神经网络算法C++实现
- proteus仿真,用atmega16控制12864显示屏
- TSP问题遗传算法C/C++实现
- C++遗传算法
- 排样遗传算法(c++)
评论
共有 条评论