- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
目 录
前言
遗传算法 (GA )的C语言实现
模拟退火算法分析
分支限界(Branch and Bound )算法
龙格-库塔(Runge-Kutta)方法数学原理及实现
层次分析法(Analytic Hierarchy Process)
一般线性最小二乘法
无约束最优化方法
数理统计
数理统计中的点估计
数理统计中的区间估计
单纯形法 -- 求解线性规划
数值积分方法
神经网络学习 之 M-P模型
神经网络学习 之 BP神经网络
决策树学习 之 概念与构造算法
现代优化算法 之 模拟退火
现代优化算法 之 遗传算法
现代优化算法 之 禁忌搜索算法
本文档使用 看云 构建 - 2 -
前言
前言
原文出处 :计算机数学模型
作者 :u013007900
本系列文章经作者授权在看云整理发布 ,未经作者允许 ,请勿转载 !
计算机数学模型
里面收集部分工业界常用算法与数学证明 ,以及部分数学建模问题的求解。
本文档使用 看云 构建 - 3 -
遗传算法 (GA )的C语言实现
遗传算法 (GA )的C语言实现
问题 :
在下面的程序中将要运用遗传算法对一个多项式求最小值
要求在(-8,8)间寻找使表达式达到最小的x ,误差为0.001
问题分析 :
编码 :采用常规码 ,即二进制码编码。构造简单 ,交叉、变异的实现非常容易 ,同时解的表达也很简洁、
直观。可以每0.001取一个点 ,这样理论误差讲小于0.0005 ,可以满足题目中的误差要求。此事总的求解
空间为 :
N = (8 - (-8)) * 1000 = 160000
可以用n = 14位二进制来表示。
群体规模m :
群体规模m可以选择 n ~ 2n 的一个确定的数 ,这里选择 m = 20
初始种群的选取 :
在这里初始种群将在值域范围内随机选取
终止规则 :
①最优解在连续的20次循环中改变量小于0.01 ,此事认为这个最优解为满足题目要求的最优解 ,求解成
功 ,退出程序
②总的循环次数大于1200次时 ,循环也将结束 ,这种情况按照求解失败处理
交叉规则 :
采用最常用的双亲双子法
选择 :
在进行交叉、变异后 ,种群中的个体个数达到2m个 ,将这2m个染色体按其适应度进行排序 ,保留最优的
m个淘汰其他的 ,使种群在整体上得到进化
#include stdio.h
#include math.h
#include stdlib.h
#include time.h
本文档使用 看云 构建 - 4 -
遗传算法 (GA )的C语言实现
#define SUM 20 //总共的染色体数量
#define MAXloop 1200 //最大循环次数
#define error 0.01 //若两次最优值之差小于此数则认为结果没有改变
#define crossp 0.7 //交叉概率
#define mp 0.04 //变异概率
//用于求解函数y x^6-10x^5-26x^4+344x^3+193x^2-1846x-1680在 (-8,8)之间的最小值
struct gen //定义染色体结构
{
int info; //染色体结构,用一整型数的后14位作为染色体编码
float suitability; //次染色体所对应的适应度函数值,在本题中为表达式的值
};
struct gen gen_group[SUM];//定义一个含有20个染色体的组
struct gen gen_new[SUM];
struct gen gen_
原创力文档


文档评论(0)