模糊控制习题一

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 void main()

{

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 void main() {

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 ++++=

相关文档
最新文档