资源简介
模糊综合评价的一个实际例子,附有malab语言源程序代码
代码片段和文件信息
%--------------------------------------------------------------------------
%
% %mohu.m
%本程序为模糊综合评判的程序,人为给定权重
%程序运行,直接输入命令mohu即可
%本程序可以进行扩展
%对于进行二级模糊综合评判,可编制mohufun.m函数来实现
%如[yy1qdhqdh1]=mohufun(RLMwXXyy]来实现运行两次这个函数,并编制相应的m文件,其中放至两个这样的函数即可实
%现
%模糊评判的结果说明:
%1:对于所有等级的隶属度之和为1。
%2:输出结果随某个变量的增大而qdh1的结果呈现出单调递增或递减
%3:最后的等级出[0.2 0 0 0.8]这种情况是正常的,和可拓评判中的对于等级的距离的概念是不一样的。
%只表现有变量是属于0.2这个等级的。
%--------------------------------------------------------------------------
clc
clear all
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%此部分由计算时,人为给定部分,即相关求解条件
%要求计算前输入部分
R=4; %影响因素的个数
L=4; %评判的等级个数
M=29; %待评价洞段的个数
w=[0.1 0.7 0.1 0.1];%各指标的权重
%可拓评判的经典域,每天列构成一组,共有L组,由左到右依此为1,2,3,4
%评判结果为1,则表示属于最左边的经典域,为4则属于最右边的经典域
%XX为隶属函数的范围,具体可参见论文基于粗集的模糊综合评判,一个有四个隶属函数
%前两个数,确定是一个下降段的隶属函数,分成三段
%以后依此4上数为一组,确定一个梯形的隶属函数,分成五段
%最后两个是单独一组,为一个上升段的隶属函数分成三段
%下面的每行有12个数,其分成4个等级,分办界点数个2 4 4 2 之和为12
%也就是构成四个等级范围
%XX也是计算的核心数据
xx=[70 90 70 90 110 130 110 130 170 190 170 190
45 35 45 35 30 20 30 20 17 10 17 10
1.5 2.5 1.5 2.5 3 4 3 4 4.5 5.5 4.5 5.5
0.25 0.35 0.25 0.35 0.45 0.55 0.45 0.55 0.65 0.75 0.65 0.75];
%pp1为个指标为越大,等级越高,还是越大,等级越小的指标
%0为指标值越大,等级越大
%1为指标值越大,等级越小
%这一点要严格执行,XX(i:)从小到大为0XX(i:)从大到小为1
%若将以上的XX第行的顺序颠倒,则为pp1=[1 0 1 1 ]
pp1=[0 1 0 0];
%各待评价洞段参数
yy=[200 8 6 0.8
200 9.5 6 0.8
200 11 6 0.8
200 12.5 6 0.8
200 14 6 0.8
200 15.5 6 0.8
200 17 6 0.8
200 18.5 6 0.8
200 20 6 0.8
200 21.5 6 0.8
200 23 6 0.8
200 24.5 6 0.8
200 26 6 0.8
200 27.5 6 0.8
200 29 6 0.8
200 30.5 6 0.8
200 32 6 0.8
200 33.5 6 0.8
200 35 6 0.8
200 36.5 6 0.8
200 38 6 0.8
200 39.5 6 0.8
200 41 6 0.8
200 42.5 6 0.8
200 44 6 0.8
200 45.5 6 0.8
200 47 6 0.8
200 48.5 6 0.8
200 50 6 0.8
];
%下升段和下降段的隶属函数形式
%注意隶属函数的形式和论文中的隶属函数形式也要一样,否则要更改程序中的基些部分
%这里的a指区间的中间点,b指区间的宽度
f1=inline(‘0.5-0.5*sin((x-a)*pi/b)‘‘a‘‘b‘‘x‘);
f2=inline(‘0.5+0.5*sin((x-a)*pi/b)‘‘a‘‘b‘‘x‘);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%
%求每个指标对于第一个等级的隶属度
for i=1:M
for k=1:R
j=1;
if pp1(k)==0 %先是求越大,等级越高的指标
if yy(ik) yy1(ikj)=1;
elseif yy(ik)<=xx(kj+1)
yy1(ikj)=f1(0.5*(xx(kj)+xx(kj+1))abs(xx(kj)-xx(kj+1))yy(ik)) ;
else yy1(ikj)=0;
end
%再是求值越小,等级越高的指标
%下在和一个相比大于和小于要互换,函数f1和f2也要互换
elseif yy(ik)>xx(kj)
yy1(ikj)=1;
elseif yy(ik)>=xx(kj+1)
yy1(ikj)=f2(0.5*(xx(kj)+xx(kj+1))abs(xx(kj)-xx(kj+1))yy(ik));
else yy1(ikj)=0;
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%求每个指标对于最后一个等级的隶属度
for i=1:M
for k=1:R
j=L;
if pp1(k)==0 %先是求越大,等级越高的指标
if yy(ik) yy1(ikj)=0;
elseif yy(ik)<=xx(kj*4-4)
yy1(ikj)=f2(0.5*(xx(kj*4-5)+xx(kj*4-4))abs(xx(kj*4-5)-xx(kj*4-4))yy(ik));
else yy1(ikj)=1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5766 2008-03-01 21:54 mohu.m
----------- --------- ---------- ----- ----
5984 2
相关资源
- 基于MATLAB的KL人脸识别程序可运行.r
- matlabcode(与瑞利信道相关的OFDM仿真)
- Kalman滤波原理及源码(matlab).rar
- SSD+SAD+NCC立体匹配算法matlab代码
- 步进电机--matlab--参考模型自适应
- matlab 多小区仿真
- MATLAB粒子群算法仿真
- Matlab GUI实现的指纹特征提取与编辑
- WOLA加权叠加滤波器组算法,matlab
- 牛拉法潮流计算Matlab程序
- SOM matlab
- 数字信号处理——基于计算机的方法
- 拉曼光谱特征峰提取的蚁群算法的M
- 自适应均衡器仿真
- 用matlab编写图像插值算法
- 用matlab打造自己的注册机.zip
- matlab坐标平移旋转源代码.zip
- MATLABR2016b破解文件
- 疏散问题元胞自动机仿真方法.pdf
- 车载网络共享资源分配matlab程序
- 数据拟合Matlab程序
-
TCM Trellis Code Modulation ba
sed on Matlab - matlab FMCW雷达相位法测角算法有误,请
- A star A* 算法,MATLAB 好用
- qpso算法matlab代码
- 排课问题的遗传算法MATLAB程序
- MATLAB画箱线图
- 基于matlab的三维重构
-
基于SIMUli
nk的F-14俯仰轴仿真程序代 - MMBEBHE算法matlab
评论
共有 条评论