模糊综合评判+C代码

来源:互联网 发布:坎比数据 编辑:程序博客网 时间:2024/05/21 21:09

例:

对某件衣服的评判,评判因素有:色彩u1、做工u2、面料u3、款式u4;它构成论域U={u1, u2, u3, u4}。

仅色彩讲,假设70%评委认为是“好”、20%为较好、5%为较差、5%为差

则色彩评价为: r1 = {0.7, 0.2, 0.05, 0.05};

同理:r2 = {0.5,0.1,0.2, 0.2};     r3 = {0.6, 0.2, 0.1, 0.1};     r4 = {07, 0.2, 0.1, 0};

写成评价矩阵R为:

0.7, 0.2, 0.05, 0.05

0.5,    0.1,    0.2,      0.2

0.6,    0.2,    0.1,      0.1

07,     0.2,    0.1,      0


假设权重为:色彩0.3,做工0.3,面料0.1,款式0.3:

A = {0.3, 0.3, 0.1, 0.3};

所以评委对这件衣服的综合评价为:

B =AR


c代码如下:

#include "stdio.h"
#include "math.h"


#define MAX(a, b) (a>b?a:b)
#define MIN(a, b) (a<b?a:b)


void main()
{
int i, j, k;


double A[4][4] = {0.7, 0.2, 0.05, 0.05,  0.5, 0.1, 0.2, 0.2,  0.6, 0.2, 0.1, 0.1,  0.7, 0.2, 0.1, 0};
double B[4]= {0.3, 0.3, 0.1, 0.3};
double temp[4] = {0};
  double Y[4];
double max, min;


for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
temp[j] = MIN(B[j], A[j][i]);    //模糊集中A交B


max = temp[0];
for(j=1; j<4; j++)
max = MAX(max, temp[j]);


Y[i] = max;
}


printf("综合评判为:\n");

for(i=0; i<4; i++)
printf("%4lf", Y[i]);
printf("\n");
}


0 0