《基于粗糙集和遗传算法的道路交通事故分析》算法解决方案
* Author: Neptune_zx
* Email: 553680533@qq.com
* Time: 2011/5/19
* so%ware: MATLAB R2009b
所有程序均在本环境下测试通过,有问题请联系
===========================================================================
本解决方案包括以下文件:
1. 脚本 M 文件:
MainOfUSln.m
这是你的解决方案的主脚本,也是执行整个程序的入口,从改脚本开始运行
论文的算法被看做一个优化问题,模型如下:
min TargetOptFcn(r)
r
sub to.
0<= r < =1;
由于论文里要求 r 是 0 或 1,遗传算法解决 0-1 规划问题可以通过修改其目标函数达到目的
在 TargetOptFcn 函数中加个目标 3 就可以让 r 尽可能的接近 0 或 1
遗传算法 ga 在最终输出的 r 是浮点类型的,加个 round 取整下几个得到规则的 0-1 变量
最后的约简结果放在 r_result 中
===========================================================================
2. 脚本 M 文件:
FindBestReduct.m
这个脚本是用穷举法找出最优的约简结果,算法思路是:
因为 r 从[0 0 0 0 0 0 0 0 0]到[1 1 1 1 1 1 1 1 1]逐个变化,
一共有 2^9 = 512 种情况,循环处理把每一种情况下的目标函数值算一遍自然得到最优结果
最优结果实际上是染色体编码为 r_best = [ 0 0 1 0 0 1 1 1 0 ]即 c3、c6 、c7、c8
还有一个结果是 r = [0 0 1 1 0 1 1 0 1]即 c3、c4、c6、c7、c9 这 2 个结果差距不大
所以遗传算法可能有时候会陷入后者局部最优
===========================================================================
3. 函数 M 文件:
TargetOptFcn.m ------------ 遗传算法的目标函数
Posi?veRegion.m --------- 计算正域
LowerApproxima?on.m ------ 计算下近似
IsSub.m ------------------- 判断集合 A 是否是集合 B 的子集
EquivalentClassSet.m ----- 基于 R 分类的所有等价类的集合,即 U/R
EleEquivalentSet.m ------- 计算包含某元素的一个分类
DependencyDegree.m -------- 计算依赖度
===========================================================================