-
大小: 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: “- 上一篇:栈实现中缀表达式到后缀表达式的转换
- 下一篇:学分管理源代码
相关资源
- atmega128 串口通讯(RS485.c)
- AppGameKit安装包
- 使用C++超级玛丽制作-100%源码公开-不
- C++ 游戏疯狂的赛车
- 学习 FPGA 书籍分享
- 基于遗传算法的机器人路径规划
- C++实现的改进遗传算法
- C++商品管理系统50页报告+源码。代码
- C++课程设计五子棋基于Qt4
- 遗传算法解决车辆调度问题
- 最短路径的篇论文及必经节点的遗传
- c语言实现的遗传算法
- 遗传算法代码NSGA-II
- Getting Started with C++ Audio Programming for
- C语言编写双人剪刀石头布联机游戏代
- C++遗传算法解决柔性作业车间调度附
- HLS:C语言转换FPGA教程ug871
- 用c语言实现的遗传算法单目标优化
- 基于xilinx FPGA设计的DDS多种波形信号发
- Mastering C++ Game Development.pdf
- Gauss消去法、列主元素消去法、Dooli
- C++游戏开发指南C++ Game Development Cook
- SDL Game Development.pdf
- C++ Game Development Cookbook
- 遗传算法c++源程序
- 遗传算法解决背包问题(C++版本)
- OMRON SYSMAC gateway-C#/C++
- Galil运动控制卡程序
- 基于OpenCV的步态能量图源代码GEI Gai
- CGAL编程指南c++版
川公网安备 51152502000135号
评论
共有 条评论