模糊控制习题一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、完成下述模糊集合的基本运算:
1、设论域为 12345678{x ,x ,x ,x ,x ,x ,x ,x }X =A 和B 为论域X 上的两个模糊
集合已知:
12345678
1
2
4
5
6
7
8
0.20.40.60.8 1.00.80.50.2A x x x x x x x x 0.50.7 1.00.80.60.40.2B x x x x x x x =
+++++++=
++++++
试计算:A B, A B, A (B A) 。 解: =
B A 8
76543212.05.08.00.10.16.07.05.0X X X X X X X X +++++++;
8765421
2.04.06.08.08.04.02.0X X X X X X X +
+++++=
B A ;
8
7
6
5
4
3
2
1
8.05.08.00.18.06.04.05.0)(X X X X X X X X A B +
++++++=
A ;
2、设X 、Y 、Z 为论域,X 到Y 的模糊关系为R ,Y 到Z 的模糊关系为S 。已
知模糊关系矩阵为:
0.30.60.80.10.50.30.80.5
0.20.70.4
0.90.70.2R , S=0.90.10.80.50.10.40.50.3
0.4
0.2
0.60.4
0.1
0.9⎡⎤⎡⎤⎢⎥⎢⎥⎢
⎥⎢⎥
=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦
⎣⎦
, 试求:X 到Z 的模糊关系。
分析:由于R 是X →Y 上的模糊关系,S 是Y →Z 上的模糊关系。
则X →Z 上的模糊关系为R 与S 的模糊合成。 解:编程实现本题的运算程序如下: #include
{
float d[4]={0};
float a[4][4]={{0.3,0.6,0.8,0.1},{0.5,0.2,0.7,0.4},
{0.9,0.1,0.8,0.5},{0.3,0.4,0.2,0.6}};
floatb[4][3]={{0.5,0.3,0.8},{0.9,0.7,0.2},
{0.1,0.4,0.5},{0.4,0.1,0.9}};
float c[4][3]={0}; int i,j,k;
for (i=0;i<4;i++)
for (k=0;k<3;k++) { for (j=0;j<4;j++) {
d[j]=(a[i][j]>b[j][k])?b[j][k]:a[i][j];
if (d[j]>d[0]) d[0]=d[j]; c[i][k]= d[0]; }
cout< } } 运行上述程序可知: ⎥ ⎥ ⎥⎥ ⎦ ⎤ ⎢⎢⎢ ⎢⎣⎡=6.0085 .05.04.04.04.06.04 .05.05 .06.0S R 二、用于模糊控制的不确定性推理 定义论域为X ={x1, x2, x3, x4, x5};Y ={y1, y2, y3, y4, y5} 已知在论域X 上定义如下模糊子集: * 0.20.40.60.8 1.01x2x3x4x50.7 1.00.80.60.3x1 x2 x3 x4 x5 A x A =+ +++ = ++ + + 并在论域Y 上定义如下模糊子集: 0.20.50.7 1.00.81y2 y3 y4 y5 y ++++B= 若有如下模糊规则 if x is A then y is B 试完成推理:如果x 是* A ,求* B 。 分析:本题为简单的模糊推理,用模糊关系表示如下: R(x,y)=(A->B)(x,y)=(1-A(x))∨(A(x)∧B(y)) 其隶属函数的定义为:))()(())(1(,y x x y x B A A R μμμμ∧∨-=)( 解:编程实现上述运算: 程序代码如下: #include float A[5]={0.2,0.4,0.6,0.8,1.0}; float B[5]={0.2,0.5,0.7,1.0,0.8}; float C[5][5]={0}; float F[5][5]={0}; float H[5][5]={0}; int i,j; for (i=0;i<5;i++) for (j=0;j<5;j++) { C[i][j]=(A[i]>B[j])? B[j]:A[i]; // cout< } float D[5]={0}; for (i=0;i<5;i++) { D[i]=1-A[i]; //cout< float E[5]={1,1,1,1,1}; for (i=0;i<5;i++) for (j=0;j<5;j++) { F[i][j]=(D[i]>E[j])? E[j]:D[i]; //cout< for (i=0;i<5;i++) for (j=0;j<5;j++) { H[i][j]=(C[i][j] cout< 运行以上程序可知: ⎥⎥⎥⎥ ⎥⎥⎦ ⎤ ⎢⎢⎢ ⎢⎢⎢⎣⎡=8.01 7 .05 .02 .08.08.07.05.02.06.06.06.05.04 .06 .06.06.06.06.08.08.08.08.08.0R ) 7.0,7.0,7.0,7.0,7.0(**==R A B 5 4 3 2 1 7.07.07.07.07.0*X X X X X B ++++=