ファゞィ掚論システムにおけるマムダニのアルゎリズム

はじめに



たたたた、Lotfi Zadehずいう名前に蚀及しお、ファゞヌロゞックに関する蚘事を始めるのが慣䟋ずなっおいたす。 そしお、私も䟋倖ではありたせん。 実際、この男は1965幎に基瀎研究「ファゞィセット」を曞いお科孊理論党䜓の創始者になっただけでなく、その実甚化に向けおさたざたな可胜性を考え出したした。 圌は、1973幎のテキスト「耇雑なシステムず意思決定プロセスの分析ぞの新しいアプロヌチの抂芁」IEEE Transactions on Systemsで公開でアプロヌチを説明したした。 泚目に倀するのは、1぀の進取的なデンマヌク䌁業がリリヌス盎埌に、耇雑な生産プロセスの管理システムを改善するために、ここに蚘茉されおいる原則を非垞にうたく適甚したこずです。



しかし、L。ザヌドのすべおの長所により、この理論の支持者たちも同様に重芁な貢献をしたした。 たずえば、英囜の数孊者E. MamdaniEbrahim Mamdani。 1975幎、圌は蒞気゚ンゞンの制埡方法ずしお提案されたアルゎリズムを開発したした。 ファゞィ掚論に基づいお圌が提案したアルゎリズムは、過床に倧量の蚈算を回避するこずを可胜にし、専門家に高く評䟡されたした。 このアルゎリズムは珟圚、ファゞヌモデリングの問題で最も実甚的なアプリケヌションになっおいたす。



キヌ定矩



アルゎリズムに慣れる前に、次の定矩を簡単に理解するこずが重芁です。



ファゞヌ倉数は、<α、 X 、 Α >ずいう圢匏のタプルです。ここで、

αはファゞヌ倉数の名前です。

Xはその定矩のドメむンです。

Aは、ナニバヌスX䞊のファゞヌセットです。



䟋ファゞヌ倉数<"Heavy body armor"、{ x | 0 kg < x <35 kg}、 B = { x 、Ό x }>は、軍甚ボディアヌマヌの質量を特城づけたす。 質量が16 kgを超える堎合は、重量が倧きいず芋なされたす図1。







図 1.ファゞヌセットBのメンバヌシップ関数Ό x のグラフ



蚀語倉数はタプル<β、 T、X、G、M >です。ここで

βは蚀語倉数の名前です。

Tはその意味甚語のセットです。

Xはファゞヌ倉数の宇宙です。

Gは、新しい甚語を圢成するための構文手順です。

Mは、特定の蚀語倉数の各甚語に察しおファゞヌセットを圢成するセマンティックプロシヌゞャです。



䟋ボディアヌマヌの重量の䞻芳的な評䟡があるずしたす。 たずえば、このような匟薬を盎接扱う軍人専門家ずしお行動するから入手できたす。 この掚定は、次の蚀語倉数<β、 T、X、G、M >図2を䜿甚しお圢匏化できたす。ここで、

β-ボディアヌマヌ。

T- {「ラむトボディアヌマヌラむト」、「ミディアムりェむトボディヌアヌマヌミディアム」、「ヘビヌボディヌアヌマヌヘビヌ」};

X = [0; 35];

G-論理接続詞ず修食子を䜿甚した新しい甚語の圢成手順。 たずえば、「非垞に重いボディアヌマヌ」。

MはナニバヌスのタスクプロシヌゞャX = [0; 35]蚀語倉数の倀、すなわち セットTからの甚語







図 2.蚀語倉数「防匟チョッキ」の倀のメンバヌシップ関数のグラフ



ファゞヌステヌトメントは、 「βISα」ずいう圢匏のステヌトメントです。ここで、

βは蚀語倉数です。

αはこの倉数の項の1぀です。



䟋 「IS軜量ボディアヌマヌ。」 ここで、「防匟チョッキ」は蚀語倉数であり、その「軜い」意味です。



簡単に蚀えば、 ファゞヌ補品のルヌル 以䞋、単にルヌルは、「IF ... THEN ...」ずいう圢匏の叀兞的なルヌルであり、ファゞヌステヌトメントが条件ず結論ずしお䜿甚されたす。 そのようなルヌルは、次の圢匏で蚘述されたす。



IFβ1 ISα1ANDβ2 ISα2THENβ3 ISα3。



「AND」に加えお、論理接続詞「OR」も䜿甚されたす。 しかし、圌らは通垞、そのようなルヌルをいく぀かのより単玔なルヌル「OR」なしに分割するこずで、そのようなレコヌドを回避しようずしたす。 たた、ルヌルの条件にある各ファゞヌ文は、 サブ条件ず呌ばれたす。 同様に、結論の各文は副次句ず呌ばれたす。



䟋次の䟋は、定矩をキャプチャするのに圹立ちたす。



1IF重防匟チョッキTHEN退圹軍人;

2IF倫は冷静AND高絊THEN満足した劻。



それだけです この最小倀は、アルゎリズムの原理を理解するのに十分です。



Mamdaniアルゎリズム



このアルゎリズムは、いく぀かの連続した段階を蚘述したす図3。 同時に、埌続の各ステヌゞは、前のステップで取埗した倀を入力ずしお受け取りたす。







図 3.ファゞヌ掚論プロセスのアクティビティ図



このアルゎリズムは、「ブラックボックス」の原理で機胜する点で泚目に倀したす。 入力は定量的な倀を受け取り、出力は同じです。 䞭間段階では、ファゞヌロゞックの装眮ずファゞヌセットの理論が䜿甚されたす。 これは、ファゞヌシステムを䜿甚するこずの優雅さです。 通垞の数倀デヌタを操䜜できたすが、同時にファゞヌ掚論システムが提䟛する柔軟な機胜を䜿甚したす。



アルゎリズムを実装するために、オブゞェクト指向のアプロヌチが䜿甚されたした。 ゜ヌスコヌドはJavaプログラミング蚀語で蚘述されおいたす。 図図4は、最も重芁な関係ず、アルゎリズムに関係するクラス間の関係を瀺しおいたす。







図 4. Mamdaniアルゎリズムの実装のクラス図



ルヌルルヌルは条件条件ず結論結論で構成され、これらはファゞヌステヌトメントステヌトメントです。 ファゞヌステヌトメントには、蚀語倉数倉数ず、ファゞヌセットで衚される甚語FuzzySetが含たれたす。 メンバヌシップ関数はファゞヌセットで定矩され、その倀はgetValueメ゜ッドを䜿甚しお取埗できたす。 これは、FuzzySetIfaceむンタヌフェむスで定矩されおいるメ゜ッドです。 アルゎリズムを実行する堎合、「有効化」ファゞヌセットActivatedFuzzySetを䜿甚する必芁がありたす。これは、䜕らかの方法でファゞヌセットFuzzySetのメンバヌシップ関数を再定矩したす。 このアルゎリズムは、ファゞヌセットの和集合UnionOfFuzzySetsも䜿甚したす。 ナニオンもファゞヌセットであるため、メンバヌシップ関数FuzzySetIfaceで定矩がありたす。



MamdaniアルゎリズムMamdaniAlgorithmは、すべおのステヌゞを含み図3、ルヌルベヌスリスト<ルヌル>を入力ずしお䜿甚したす。 このアルゎリズムには、「アクティブ化された」ファゞヌセットActivatedFuzzySetsずそれらの関連付けUnionOfFuzzySetsの䜿甚も含たれたす。



したがっお、ファゞヌ掚論の段階は連続しお実行されたす。 そしお、前のステップで取埗したすべおの倀は、次のステップで䜿甚できたす。



1.ルヌルベヌスの圢成

ルヌルベヌスは、各副次句が特定の重み係数に関連付けられおいる䞀連のルヌルです。



ルヌルベヌスには次の圢匏を䜿甚できたすたずえば、さたざたな構造のルヌルが䜿甚されたす。



RULE_1「Condition_1」の堎合、「Conclusion_1」 F 1 および「Conclusion_2」 F 2 。

RULE_2「Condition_2」および「Condition_3」の堎合、「Conclusion_3」 F 3 。

...

RULE_n「Condition_k」の堎合、「Conclusion_q-1」 F q-1 および「Conclusion_q」 F q 。



ここで、 F i-重み付け係数。結果のサブコントラクトの真理に察する信頌床を瀺したす i = 1 .. q 。 デフォルトでは、重み係数は1ず芋なされたす。条件に存圚する蚀語倉数はinputず呌ばれ、結論ではoutputず呌ばれたす 。



指定

nはファゞヌ生成芏則の数numberOfRulesです。

m-入力倉数の数numberOfInputVariables。

s-出力倉数の数numberOfOutputVariables。

kは、ルヌルベヌスのサブ条件の総数numberOfConditionsです。

qは、ルヌルベヌス内のサブ接続の総数numberOfConclusionsです。



泚これらの蚘号は、以降の手順で䜿甚されたす。 括匧内は、゜ヌスコヌド内の察応する倉数の名前です。



2.入力倉数のファゞヌ化

この手順は、あいたいさの軜枛ず呌ばれたす。 圢成されたルヌルベヌスず入力デヌタ配列A = {a 1 、...、a m }が入力されたす。 この配列には、すべおの入力倉数の倀が含たれたす。 このステップの目的は、ルヌルベヌスからすべおのサブ条件の真理倀を取埗するこずです。 これは次のように発生したす。各副条件に぀いお、倀b i =Ό a i が芋぀かりたす。 したがっお、倀のセットb i  i = 1 .. k が取埗されたす。



実装

private double [] fuzzification( double [] inputData) {

int i = 0;

double [] b = new double [numberOfConditions];

for (Rule rule : rules) {

for (Condition condition : rule.getConditions()) {

int j = condition.getVariable().getId();

FuzzySet term = condition.getTerm();

b[i] = term.getValue(inputData[j]);

i++;

}

}

return b;

}








泚入力デヌタ配列は、配列のi番目の芁玠がi番目の入力倉数に察応するように圢成されたす倉数番号は敎数フィヌルド「id」に栌玍されたす。



3.前提条件の集玄

䞊蚘のように、ルヌル条件は耇合、぀たり 論理挔算「AND」を䜿甚しお盞互接続されたサブ条件を含めたす。 この段階の目的は、ファゞヌ掚論システムの各ルヌルの条件の真実床を刀断するこずです。 簡単に蚀えば、各条件に぀いお、そのすべおのサブ条件の真理の最小倀を芋぀けたす。 正匏には、次のようになりたす。



c j = min { b i }。



どこで

j = 1 .. n ;

iは、 j番目の入力倉数が含たれるサブ条件の数のセットの数です。



実装

private double [] aggregation( double [] b) {

int i = 0;

int j = 0;

double [] c = new double [numberOfInputVariables];

for (Rule rule : rules) {

double truthOfConditions = 1.0;

for (Condition condition : rule.getConditions()) {

truthOfConditions = Math .min(truthOfConditions, b[i]);

i++;

}

c[j] = truthOfConditions;

j++;

}

return c;

}








4.倖泚の有効化

この段階では、条件から䞋請けぞの移行がありたす。 各サブクルヌゞョンに぀いお、真の床合いはd i = c i * F iであり、 i = 1 .. qです。 次に、各i番目のサブクルヌゞョンに぀いお、セットD iが新しいメンバヌシップ関数に関連付けられたす。 その倀は、少なくずもd iず副次項の項メンバヌシップ関数の倀から決定されたす。 このメ゜ッドはmin-activationず呌ばれ、正匏には次のように蚘述されたす。



ÎŒ ' i  x = min { d i 、Όi x }。



どこで

ÎŒ ' i  x -「アクティブ化された」メンバヌシップ関数。

ÎŒi x -期間メンバヌシップ関数。

d i - i番目のサブコネクションの真実床。



したがっお、この段階の目暙は、ルヌルベヌス i = 1 .. q の各副次句に぀いお、「アクティブな」ファゞヌセットD iのセットを取埗するこずです。



実装

private List <ActivatedFuzzySet> activation( double [] c) {

int i = 0;

List <ActivatedFuzzySet> activatedFuzzySets = new ArrayList <ActivatedFuzzySet>();

double [] d = new double [numberOfConclusions];

for (Rule rule : rules) {

for (Conclusion conclusion : rule.getConclusions()) {

d[i] = c[i]*conclusion.getWeight();

ActivatedFuzzySet activatedFuzzySet = (ActivatedFuzzySet) conclusion.getTerm();

activatedFuzzySet.setTruthDegree(d[i]);

activatedFuzzySets.add(activatedFuzzySet);

i++;

}

}

return activatedFuzzySets;

}








private double getActivatedValue( double x) {

return Math .min(super.getValue(x), truthDegree);

}








5.結論の蓄積

このステヌゞの目的は、各出力倉数のファゞヌセットたたはその組み合わせを取埗するこずです。 次のように実行されたす。i番目の出力倉数は、集合E i =∪D jの和集合に関連付けられたす。 jは、 i番目の出力倉数 i = 1 .. s が含たれるサブコネクションの数です。 2぀のファゞヌセットの和集合は、次のメンバヌシップ関数を持぀3番目のファゞヌセットです。



ÎŒ ' i  x = max {ÎŒ1 x 、Ό2 x }、ここでΌ1 x 、Ό2 x は結合集合のメンバヌシップ関数です。



実装

private List <UnionOfFuzzySets> accumulation( List <ActivatedFuzzySet> activatedFuzzySets) {

List <UnionOfFuzzySets> unionsOfFuzzySets =

new ArrayList <UnionOfFuzzySets>(numberOfOutputVariables);

for (Rule rule : rules) {

for (Conclusion conclusion : rule.getConclusions()) {

int id = conclusion.getVariable().getId();

unionsOfFuzzySets. get (id).addFuzzySet(activatedFuzzySets. get (id));

}

}

return unionsOfFuzzySets;

}








private double getMaxValue( double x) {

double result = 0.0;

for (FuzzySet fuzzySet : fuzzySets) {

result = Math .max(result, fuzzySet.getValue(x));

}

return result;

}








6.出力倉数の非ファゞヌ化

非ファゞヌ化の目的は、出力蚀語倉数ごずに定量的な倀鮮明な倀を取埗するこずです。 正匏には、これは次のように発生したす。 i番目の出力倉数ずそれに関連する集合E i  i = 1 .. s が考慮されたす。 次に、非ファゞヌ化方法を䜿甚しお、出力倉数の最終的な定量倀が怜出されたす。 このアルゎリズムの実装では、重心法が䜿甚され、 i番目の出力倉数の倀は次の匏で蚈算されたす。





どこで

ÎŒi x は、察応するファゞヌセットE iのメンバヌシップ関数です。

最小および最倧は、ファゞヌ倉数の宇宙の境界です。

y iは、ファゞヌ化の結果です。



実装

private double [] defuzzification( List <UnionOfFuzzySets> unionsOfFuzzySets) {

double [] y = new double [numberOfOutputVariables];

for ( int i = 0; i < numberOfOutputVariables; i++) {

double i1 = integral(unionsOfFuzzySets. get (i), true );

double i2 = integral(unionsOfFuzzySets. get (i), false );

y[i] = i1 / i2;

}

return y;

}








おわりに



Mamdaniのアルゎリズムず他の倚くのファゞヌ掚論アルゎリズムは、Fuzzy Logic ToolboxMatLabの拡匵機胜、fuzzyTECHなどのすばらしい補品に既に実装されおいたす。 したがっお、この蚘事のように、このようなアルゎリズムの詳现な怜蚎には、実甚的ずいうよりも理論的な䟡倀がありたす。 ただし、アルゎリズムの基瀎に関する知識ず理解の匷固な基盀がなければ、最倧限の効果でそれを適甚するこずはできたせん。



文孊



説明したアルゎリズムのアプリケヌションの特定の䟋を詳しく芋たい堎合は、次の文献を参照するこずをお勧めしたす。



1.レオネンコフA.V. MATLABでのファゞヌモデリングずfuzzyTECH / A. Leonenkov。 -サンクトペテルブルクBHV-Petersburg、2003。-736 p。



2. Shtovba S.D. MATLAB / S. Shtovbaを䜿甚したファゞヌシステムの蚭蚈。 -Mホットラむン– Telecom、2007。-288 p。



All Articles