知的制御システム 講義資料 知的制御システム 第3週目 安信誠二 筑波大学大学院 システム情報工学研究科 SIC-3-1 1993-2014 (c) [email protected] 1/24 知的制御システム 講義資料 課題2 (1)入力のファジィ集合 XisL, XisH, YisL, YisH 出力のファジィ集合 ZisP, ZisN を定義せよ。 定義域は、 -10 ~ +10 (2)2入力(x,y)、1出力(z)、の2つのIf-Then ルールを設定せよ。 例えば、 If XisL and YisH then ZisN If XisH and YisL then ZisP (3)入力x、yを実数値とし、論理積、論理積、論理和で出力を合成、 により出力Zのファジィ集合を求めよ。 重心法により、出力Zの代表値zを求めよ。 (4)入力変数を変化させ、入力x、yと出力zの関係を示せ。 SIC-3-2 1993-2014 (c) [email protected] 2/24 知的制御システム 講義資料 ファジィ直積の例 And 論理積 水温が高い and 圧力が低い: x is H and y is L 1.0 μL(y) 0.0 Y μH(x) X H x L SIC-3-3 1993-2014 (c) [email protected] 3/24 知的制御システム 講義資料 ファジィ集合の円筒的拡張 • 水温が高い: x is H =[x:0,100,10]<0.0, 0.0, 0.0, 0.0, 0.1, 0.3, 0.5, 0.8, 1.0, 1.0, 0.8> =[水温]< ... > 1.0 Y 0.0 μH(x) X • 圧力が低い: y is L (a)μH×Y(x,y) =[y:1,4,4]<0.5, 1.0, 0.7, 0.2, 0.0> =[圧力]< ... > 1.0 0.0 μL(y) Y X (b)μX×L(x,y) 1993-2014 (c) [email protected] SIC-3-4 4/24 知的制御システム 講義資料 Aggregation[合成] 論理和 複数のファジィ関係の論理和 • もし,電圧xが10v位なら,温度は50度位. • もし,電圧xが15v位なら,温度は70度位. 1.0 B1 B2 Y 0.0 A2 A1 X (a)2項ファジィ関係の3次元表示 R2 R1 Y Y R2 1.0 0.75 0.5 0.25 0.0 R1 R1 ∪R2 X (b)2項ファジィ関係の平面表示 1993-2014 (c) [email protected] X (c)2つの2項ファジィ関係の論理和 SIC-3-5 5/24 知的制御システム 講義資料 ファジィ関係式の演算(B'=A'○R) 前提2: A'(x)=∫X μA'(x) / x 前提1: R = 結論: A → B = ∫X*Y μA(x)∧μB(y) / (x,y) 1.0 μA(x) μB(y) μB'(y) Y 0.0 μA'(x) R X B'= A'○R = ∫Y μB'(y) / y = ∫Y maxx{ min(μ A'(x) / x, μ R(x,y) } / y And論理積- Implication[含意]論理積 1993-2014 (c) [email protected] SIC-3-6 6/24 知的制御システム 講義資料 ファジィ関係式の演算(B'=A'○R) もし,トマトが赤ければ,熟している. トマトが少し赤い. トマトは,やや熟している. 1.0 μB(y) μB'(y) μA(x) Y 0.0 μA'(x) R X 1.0 x is A 0.0 r X 1.0 y is B 推論結果 μo(y) 0.0 Y 結論 y is B' 推論入力 x is A' ファジィ推論の実行例 And論理積- Implication[含意]論理積- Defuzzification重心法 SIC-3-7 1993-2014 (c) [email protected] 7/24 知的制御システム 講義資料 ファジィ推論 2値論理 P P→Q Q x = 3 x=2 if x=3 then y=6 y=6 y=? 「x=2の入力に対してyが判らない」 ファジィ推論だと ~P’ x= about 2 ~P → ~Q if x=about 3 then y=about 6 ~Q’ y= 6の近く => 近似推論が可能 SIC-3-8 1993-2014 (c) [email protected] 8/24 知的制御システム 講義資料 関係 y=f(x) 関数による記述 ファジィ関係 If 約 x1 then 約 y1 If 約 x2 then 約 y2 : Y Y y=f(x) yo 約yo xi X 約Xi X SIC-3-9 1993-2014 (c) [email protected] 9/24 知的制御システム 講義資料 And論理積-Implication[含意]論理積 - Aggregation[合成]論理和- Defuzzification重心法-ファジィ推論 推論入力:x 1 is A1' If x1 is A11 and x2 is A21 then y is B1. 推論入力:x2 is A2' 0.0 μo(y) If x1 is A12 and x2 is A22 then y is B2. If部 1.0 推論結果 x 1 is A11 1.0 X1 0.0 And method : min (Or method : max) Implication : min Aggregation : max Defuzzification : centrid then部 x 2 is A21 y is B1 1.0 論理積 r1 論理積 X2 0.0 Y 1.0 推論結果 μo(y) 論理和 1.0 x 1 is A12 1.0 x 2 is A22 論理積 r2 0.0 X1 0.0 推論入力:x 1 is A1' X2 推論入力:x2 is A2' y is B2 1.0 0.0 論理積 0.0 Y 非ファジィ化 Y Y = 1.5 SIC-3-10 1993-2014 (c) [email protected] 10/24 知的制御システム 講義資料 And論理積-Implication[含意]代数積 - Aggregation[合成]論理和- Defuzzification重心法-ファジィ推論 If部 x 1 is y x 2 is A21 A11 1.0 1.0 0.0 then部 X1 is B1 1.0 代数積 r1 論理積 0.0 X2 推論結果 μo(y) 0.0 Y 1.0 論理和 x 2 is A22 x 1 is A12 1.0 y is 1.0 B2 1.0 0.0 Y 論理積 r2 0.0 X1 0.0 推論入力:x 1 is A1' 推論入力:x2 1993-2014 (c) [email protected] X2 0.0 is A2' 代数積 Y SIC-3-11 11/24 知的制御システム 講義資料 再2-4 ファジィ制御の概念 車間距離 走行速度 [ブレーキ操作] 前の車にぶつからないように,ブレーキをかける. 走行速度 車間距離 ファジィ推論[無限値論理] 1.もし,車間距離が小さく,走行速度が大きいならば, ブレーキを強く. 大きい 小さい 強く 1 1 ブレーキ力 1 μ μ μ 非ファジィ化 10 ブレーキ力5.2 0 0 0 0 ブレーキ力 10 0 速度100Km/h 0 距離 100m 0 時間→ 2.もし,車間距離が大きく,走行速度が小さいならば, μ1 ブレーキを弱く. 0 小さい 10 0 大きい 弱く ・ファジィ判断 1 1 1 ブレーキ力 μ μ →滑らか μ ・人間的演算 0 0 00 10 0 100Km/h 0 距離 100m 速度 ・少ないルール ブレーキ力 SIC-2-12 1993-2014 (c) [email protected] 12/24 知的制御システム 講義資料 課題2(Matlab)(1-1) 課題2は,ファジィ推論の定義と実行です. Matlab から, >> fuzzy と入力し,ファジィ知識エディタ(FIS Editor)を起動する。 すぐに、ファイルを閉じる。そのとき、ファイル名 ics.fis で格納 ファジィ知識:ics.fis ができる。 (中身は、骨格だけ。) テキストとして、中身を確認 SIC-3-13 1993-2014 (c) [email protected] 13/24 知的制御システム 講義資料 課題2(Matlab)(1-2 ) >> fuzzy ics.fis と入力し,ファジィ知識 ics.fis を編集する。 課題2では,2入力1出力なので,[編集]-[Add Variable]で入力を増やす。 Nameを、 input-X、 input-Y、 output-Z と変更し、各集合の。定義域 を、所定の値に、変更する。例として、-10~+10 としておく。 input-X [-10.0, +10.0] input-Y [-10.0, +10.0] output-Z [-10.0, +10.0] とし, XisL, XisH, YisL, YisH, ZisP, ZisN のファジィ集合 を定義する. 形状Typeは、 trimf(三角形) のままで良い。 SIC-3-14 1993-2014 (c) [email protected] 14/24 知的制御システム 講義資料 課題2(Matlab)(2) [編集]-[Rules]で、input-X , input-Y, output-Z を選択し、ルールを定義する。 If XisL and YisH then ZisN If XisH and YisL then ZisP (or は、使わない。) SIC-3-15 1993-2014 (c) [email protected] 15/24 知的制御システム 講義資料 課題2(Matlab)(3-1) (3)入力x、yを実数値とし、論理積、論理積、論理和で出力を合成、により出力Z のファジィ集合を求めよ。重心法により、出力Zの代表値zを求めよ。 [標準設定だが、推論方法を確認する。] And method : min (Or method : max) Implication : min Aggregation : max Defuzzification : centrid 以上を再度ics.fisに、 格納し、テキストとして 内容を確認せよ。 推論知識は、 これだけ、こんなに、 ある。 SIC-3-16 1993-2014 (c) [email protected] 16/24 知的制御システム 講義資料 課題2(Matlab)(4-1) (4)入力変数を変化させ、入力x、yと出力zの関係を示せ。 [View]-[Rules] で、入力変数を変化させ、推論結果を確認する。 SIC-3-17 1993-2014 (c) [email protected] 17/24 知的制御システム 講義資料 課題2(Matlab)(4-2) (4)入力変数を変化させ、入力x、yと出力zの関係を示せ。 [View]-[Surface] で、推論結果を確認する。視点を変え、確認する。 SIC-3-18 1993-2014 (c) [email protected] 18/24 知的制御システム 講義資料 課題2(Matlab)(補足) 今回は、ファジィ知識を記述し、計算機で、2つの入力に対して、 推論結果が得られることを確認する。 知識の内容、推論の方法は、次の課題。 下記により、作成した知識を用いて推論結果を得ることが出来る。 readfis, evalfis 等の関数は、help で確認すること。 % Rgo.m: 知識をワークスペースに格納し % ファジィ推論結果を得る。 icsKE = readfis('ics_.fis'); disp('ics_.fisファジィ知識を知識をワークスペースicsKEへ格納しました。'); input_x1=2; input_x2=3; input_x1 input_x2 disp('input_x1, input_x2 からの推論結果は、'); output_z = evalfis([input_x1, input_x2],icsKE ); output_z 1993-2014 (c) [email protected] SIC-3-19 19/24 知的制御システム 講義資料 View>Surfaceの結果 fuzzy ics.fis help readfis help evalfis help gensurf kefuzzy = readfis('ics'); gensurf(kefuzzy) output-Z Figureのコピーで拡張メタファイルとする。 pptにて、文字の拡大、線の補強など可能。 さらに、EPSとして、TeX論文に使用可能。 3 2 1 0 -1 -2 -3 10 5 スクリーンのビットマップ 1993-2014 (c) [email protected] 0 入力-Y -5 0 5 10 input-X Figureコピー>拡張メタファイル> ppt SIC-3-20 =>epsファイル -10 -10 -5 20/24 知的制御システム 講義資料 help fuzzy (1) Fuzzy Logic Toolbox Version 2.2.6 (R2007b) 02-Aug-2007 Fuzzy Logic Toolbox Version 2.1.3 (R14) 05-May-2004 GUI エディタ anfisedit findclusterfuzzy mfedit ruleedit ruleview surfview - ANFIS 訓練と検証用のUIツール クラスタリング UI ツール 基本のFISエディタ メンバシップ関数エディタ ルールエディタと文法の使い方 ルールビューアとファジィ推論ダイアグラム 出力サーフェスビューア メンバシップ関数 dsigmf - 2つのシグモイドメンバシップ関数の差 gauss2mf - 2つのガウス曲線を合わせたメンバシップ関数 gaussmf - ガウス曲線メンバシップ関数 gbellmf - 一般化されたベル曲線メンバシップ関数 pimf - π型曲線メンバシップ関数 psigmf - 2つのシグモイドメンバシップ関数の積 smf - S型曲線メンバシップ関数 sigmf - シグモイド曲線メンバシップ関数 trapmf - 台形メンバシップ関数 trimf - 三角形メンバシップ関数 zmf - Z型曲線メンバシップ関数 コマンドラインFIS関数 addmf - メンバシップ関数をFISに追加 addrule - ルールを FIS に追加 addvar - 変数を FIS に追加 defuzz - メンバシップ関数の非ファジィ化 evalfis - ファジィ推論計算の実行 evalmf - 基本的なメンバシップ関数計算 gensurf - FIS 出力サーフェスの計算 getfis - ファジィシステムプロパティの取得 mf2mf - 関数間でのパラメータの変換 newfis - 新しい FIS の作成 parsrule - ファジィルールの文法説明 plotfis - FIS の入力-出力ダイアグラムの表示 plotmf - 1つの変数に依存するすべてのメンバシップ関数の表示 readfis - ディスクから FIS の読み込み rmmf - メンバシップ関数を FIS から削除 rmvar - 変数を FIS から削除 setfis - ファジィシステムプロパティの設定 showfis - 注釈付きで FIS の表示 showrule - FIS ルールの表示 writefis - FIS をディスクに保存 •アドバンスト手法 •その他の関数 •GUI補助関数 SIC-3-21 1993-2014 (c) [email protected] 21/24 知的制御システム 講義資料 help fuzzy (2) fuzzy は、ディレクトリと関数の両方です。 FUZZY 基本的な FIS エディタ FISエディタは、ファジィ推論システムに関する高水準の情報表示を行います。 最上部にあるのは、各入力と出力が明確にラベル付けされたシステムの ダイアグラムです。入力、あるいは、出力ボックス上をダブルクリックすると、 Membership Function Editor を起動することができます。ダイアグラム中央の ファジィルールボックスをダブルクリックすると、Rule Editor を起動します。 ダイアグラムの真下にあるのは、カレントの FIS名を表示するテキスト フィールドです。ウィンドウの左下にあるのは、ファジィ含意過程で使用する 種々の関数を設定することができる一連のポップアップメニューです。また、 右下にあるのは、カレントの変数に関する情報を出力するフィールドです。 カレント変数を決定するには、入力、または、出力ボックスの1つをクリック します。 参考 mfedit, ruleedit, ruleview, surfview, anfisedit. 1993-2014 (c) [email protected] SIC-3-22 22/24 知的制御システム 講義資料 MatlabのFuzzy toolBox の活用<21Yasu_FuzzySet.zipを展開>1 これらのファイルは、MATLABのFuzzy ToolBox の中身を理解し、活用するために提示。 p1go.m: % sfc.fis ルールを自分で表示 f2go.m: % ファジィ知識 sfc.fis を、所定の構造体sfcRに格納し、 Yasu_FisRulePrint :ファジィルールをprintの自作関数、 Yasu_FisRes2i1o :ファジィ推論の自作関数 Yasu_FuReIn:メンバシップ値を求める関数 で、求め、さらに、meshz関数で、3次元表示。 ---------------------------自作関数: Yasu_** は、MATLABで準備してある関数と混同しないよう安信のYasu_を付けた。 (なんでも良いが、特異な名前が良い。workなどはダメ。) 実システムへの適用では、c言語で、同様の演算を行う。 アルゴリズムの確認用試作などには、MATLABが便利。 SIC-3-23 1993-2014 (c) [email protected] 23/24 知的制御システム 講義資料 fk2i1o.fis 課題2のfisファイル例 % 以下をmファイル ics.fis として保存し, % fuzzy ics.fis で実行。 [System] Name='ics' Type='mamdani' Version=2.0 NumInputs=2 NumOutputs=1 NumRules=2 AndMethod='min' OrMethod='max' ImpMethod='min' AggMethod='max' DefuzzMethod='centroid' [Input1] Name='input-X' Range=[-10 10] NumMFs=2 MF1='XisL':'trapmf',[-28 -12 -8 5] MF2='XisH':'trapmf',[-5 8 12 28] [Input2] Name='input-Y' Range=[-10 10] NumMFs=2 MF1='YisL':'trapmf',[-28 -12 -8 5] MF2='YisH':'trapmf',[-4 8 12 28] [Output1] Name='output-Z' Range=[-10 10] NumMFs=2 MF1='ZisN':'trapmf',[-28 -12 -5 8] MF2='ZisP':'trapmf',[-8 5 12 28] [Rules] 1 2, 1 (1) : 1 2 1, 2 (1) : 1 1993-2014 (c) [email protected] SIC-3-24 24/24
© Copyright 2024 ExpyDoc