3.ファジー理論

5.ファジー理論
5.1 ファジー集合とは
Fuzzy: はっきりしない、ぼやけた、
ぼんやりした
何らかの事象に対しての判定が
あいまいな場合に有効

高い、低い、中程度
低い
中程度
もっともらしさ
測定値
高い
(例)室内の温度と湿度による
エアコンの運転
もし温度が高く湿度が高いときは、高速運転をする。
もし温度が低く湿度が低いときは、低速運転をする。
湿度が高い(集合の境界が明確に定義できない)
湿度の変化範囲 0%~100%の中で 80%~100%
但し、境界となる湿度が正確に80%ではなく、ほぼ80%程度を示す場合
成立度(degree of membership)を示すメンバーシップ関数(Membership Function)の例
1.0
1.0
成
立
度
成
立
度
0
0
湿度
(%)
滑らかな曲線による近似
100
湿度
(%)
区分線形関数による近似
100
言葉の定義(1)
ファジー集合(Fuzzy Set):集合の境界が明確に定義できない集合
クリスプ集合(Crisp Set):通常の集合
ファジー集合で区分線形で表現した場合の傾きが垂直(無限大)のときに
相当する。
成立度(Degree of Membership):
全体集合(Universe of Discourse) をXとしたとき、X上で定義されるファ
ジー集合に属する程度
シングルトン(Singleton):
全体集合の1点を除いてメンバーシップ関数の値が0となるファジー集合
1  mA ( s)  0, s  X
mA ( x)  0,
x  s, x  X
言葉の定義(2)
ファジーラベル(Fuzzy Label):ファジー集合を表わす言葉
(例) ファジー命題「湿度が高い」→ファジーラベル「高い」
全体集合の名称「湿度」
ファジー命題(Fuzzy Proposition):
全体集合の名称とファジーラベルで表現した命題。
ファジー命題Pを式で表現すると、
P : x is A
ここで、x : 全体集合の名前、A :ファジーラベル
5.2 ファジー集合の演算
(1) 全体集合が同一の場合
和集合
A∪B⇔mA∪B(x)=mA(x)∨mB(x), ∀x∈X
∨ :2つの値のうち大きい方の値をとる演算子
積集合
A∩B⇔mA∩B(x)=mA(x)∧mB(x), ∀x∈X
∧ :2つの値のうち小さい方の値をとる演算子
補集合
Ac⇔mAc(x)=1-mA(x), ∀x∈X
全体集合が同じ場合の演算イメージ
和集合
中
高
積集合
1.0
中
高
1.0
成
立
度
成
立
度
0
0
湿度
(%)
湿度
(%)
100
補集合
中
高
1.0
成
立
度
0
湿度
100
100
(2) 全体集合が異なる場合
和集合
A∪B⇔mA∪B(x, y)=mA(x)∨mB(y),
∀x∈X, ∀y∈Y
∨ :2つの値のうち大きい方の値をとる演算子
積集合
A∩B⇔mA∩B(x, y)=mA(x)∧mB(y),
∀x∈X, ∀y∈Y
∧ :2つの値のうち小さい方の値をとる演算子
全体集合が異なる場合の和集合イメージ
Aのメンバーシップ関数
Bのメンバーシップ関数
1.0
1.0
成
立
度
成
立
度
0
0
1.0
x
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1.0
y
0.9-1
0.8-0.9
0.7-0.8
0.6-0.7
0.5-0.6
0.4-0.5
0.3-0.4
0.2-0.3
0.1-0.2
0-0.1
y=0.5のとき
1.0
成 y=0.5
立
度
0
x
1.0
全体集合が異なる場合の積集合イメージ
Aのメンバーシップ関数
Bのメンバーシップ関数
1.0
1.0
成
立
度
成
立
度
0
0
1.0
x
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0.95-1.05
0.85-0.95
0.75-0.85
0.65-0.75
0.55-0.65
0.45-0.55
0.35-0.45
0.25-0.35
0.15-0.25
0.05-0.15
-0.05-0.05
1.0
y
y=0.5のとき
1.0
成
立
度
y=0.5
0
x
1.0
全体集合が異なる場合の
演算の二次元的イメージ
y
D
y
D
C∩D
C
x
C∪D
C
x
述語修飾(やや、とても、でない)
X is A
X is M A
1
ややA
述語修飾の例
M : とても A = A2
やや A = A1/2
not
A = 1-A
A
とてもA
x
5.3 ファジー推論
(1) マムダニ(Mamdani)の方法
If 前件部(Premise Part) then 後件部(Consequent Part)
If x1 is Ai1 and x2 is Ai2 … xm is Aim then y is Bi,
i = 1, …, U


m

mB ' ( y)    mAij ( x j )  mA'ij ( x j )   mBi ( y )
i 1  j 1

U
但し、ファジーシステムに対する入力はクリスプな値であるから入力値はシ
ングルトンである。
1, xi  ai
mA'i ( y)  
0, xi  ai , xi  X
(1) 前件部に対しては、Min演算を行ったあと、Max演算を行う。
↓
Max-Min合成
(2) 後件部のファジー集合B’からクリスプな値を求める。
↓
重心(Center of gravity)法
n

y
m

Y
mB ' ( y ) ydy
Y
B'
( y )dy

離散形では y 
m
i 1
n
B'
m
i 1
(ci )ci
B'
(ci )
マムダニの方法のイメージ
b1
Min
a1
温度(℃)
湿度(%)
重心
高速運転
Max
Min
a2
推論出力
b2
温度(℃)
湿度(%)
温度入力
湿度入力
低速運転
If x1 is Ai1 and x2 is Ai2 … xm is Aim then y is Bi,
i = 1, …, U


m

mB ' ( y)    mAij ( x j )  mA'ij ( x j )   mBi ( y )
i 1  j 1

U
但し、ファジーシステムに対する入力はクリスプな値であるから
入力値はシングルトンである。
xi  ai
xi  ai , xi  X
1,
mA'i ( y)  
0,


m

 mB ' ( y )    mAij (a j )   mBi ( y )
i 1  j 1

U
クリスプな値を求めるために、
重心(Center of Gravity)法を使用
m ( y) ydy

yˆ 
 m ( y)dy
B'
Y
Y
B'
出力yがn個の区間に分割され、区間Iの中央値をciとして、離
散形で近似すると
n
yˆ 
m
i 1
n
B'
m
i 1
(ci )ci
B'
(ci )
(2) ワング(Wang)とメンデル(Mendel)の方法
成立度mRi(a)として、最小値でなく積をとる
後件部Biがn個の区間に分割されたt(i)番目の区間に対応す
るものとして、区間Iの中央値をct(i)とすると
n
yˆ 
m
i 1
Ri
(ct (i ) )ct (i )
n
m
i 1
Ri
(ct (i ) )
積と最小値
(いずれのxiも増加すると値は増加する傾向にある)
最小値
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
積
5.4 ファジー制御の例
以下の例は、「ファジィ制御」菅野道夫著(日刊工業新聞社)からの引用である。
(目標線に沿って直進する:簡単のため、速度は一定とする)
Φ
: ハンドルの向き
Θ
: 車の向き
d
: 目標線と車の中心線までの距離
Θ
ファジールール
If d = Left
and Θ= Middle
Then
Φ=Right
If d = Right
and Θ= Middle
Then
Φ=Left
If Θ = Left
Then
Φ=Right
If Θ = Right
Then
Φ=Left
ルールとメンバーシップ関数
Left
Middle
Right
Θ is
R1:d is
-20
0
20cm
Φ is
-90°
Right
0
90°
20cm
30°
Φ is
Θ is
0
0
Left
Middle
R2:d is
-20
-30°
-90°
0
-30°
90°
Left
0
30°
Right
Φ is
R3:Θ is
-90°
0
90°
-30°
0
30°
Left
Right
Φ is
R4:Θ is
-90°
0
90°
-30°
0
30°
採用した推論方法




前件部は最小値をとる
後件部は、Left,Right毎の最大値をとる
Left、Right毎のハンドルの向き(Φ)を計算
近似的にLeftで得られたΦとRightで得られたΦの平均
値を求める。
シミュレーションによる評価


Lt=Lt-1+V・Sin(Θt-1)・Δt
Θt=Θt-1+Φt-1
シミュレーションの結果
初期値 Lt0=10cm, Θ0=-10°,Δt=0.1秒, 速度V=2cm/秒
-30
中心軸からの距離
-25
-20
中心軸との角度
-15
ハンドルの向き
-10
-5
0
0
5
10
15
1
2
3
4
5
6
(3) 高木(Takagi)と菅野(Sugeno)の方法
後件が入力変数の線形和で表現されるものとする
Ri : If x1 is Ai1 and x2 is Ai2 … xm is Aim
then y = Pi0 + Pi1 x1 + …+Pim xm , i = 1 , …, U
前件部はマムダニの方法と同じ
m
mRi (a)   mAij (a j )
j 1
yi = Pi0 + Pi1 a1 + …+Pim am
n
yˆ 
m
i 1
n
Ri
m
i 1
( y i ) yi
Ri
( yi )
特徴: 入出力データがあれば最小自乗法によりPijを求めることができる
演習 目標速度に近づける
あらかじめ設定された目標速度で運転するためのファジールールを考
案せよ。速度は、中速、低速、高速の3区間別に区切られていることを
前提とし、最初は停止しているものとする。
(1) 簡単のため路線は直線であり、傾斜がなく、路面摩擦係数および
空気抵抗係数も一定とする。
(2) 路面摩擦および空気抵抗は速度のみに比例するものとし、次の
式が成り立つものとして、適当なプログラミング言語や表計算等
を用いてシミュレーションし、考案したファジールールが適切であ
ることを確認すること。但し、路面摩擦係数、空気抵抗係数は、次
のようにまとめてシミュレーションして良い。
Vt=Vt-1+(At-1 ー C・Vt-1)・Δt
At-1 : アクセルまたはブレーキによる加速度
C
: 路面摩擦係数および空気抵抗係数をまとめた値
レポートに記述する内容
1.学籍番号、氏名
2.本レポート課題名
3.ファジールール
4.各メンバーシップ関数
5.推論方法
6.シミュレーション方法とシミュレーションに用いたツール
7.シミュレーションの前提とした各定数値と初期値
8.シミュレーション結果(ハードコピーでよい)
9.プログラム言語を用いた場合はソースリスト、表計算等
を用いた場合は、ワークシートのハードコピー
シミュレーション結果のヒント
速度
100
目標速度
Accelerator
Brake
50
0
0
1
2
3
4
5
6
7
8
9
10 11 12 13