reyzeal/fuzzy

PHP 模糊算法

dev-master 2019-07-25 09:11 UTC

This package is auto-updated.

Last update: 2024-09-09 17:42:32 UTC


README

Fuzzy 是一种将输入空间映射到输出空间的映射方法,通常应用于包含不确定性和不精确性的问题(Munir,2011)。

安装

Composer

composer require reyzeal/fuzzy

模糊对象

本项目采用面向对象编程的概念构建,因此使用时需要创建 Class Reyzeal/Fuzzy 的实例。而确定模糊推理的类型可以通过在第二个参数中写入 FIS 名称来完成。例如,new Fuzzy('Kelulusan','Tsukamoto')

隶属度

  1. 梯形(trapmf)

  2. 三角形(trimf)

  3. 增长曲线(smf)

  4. 衰减曲线(zmf)

  5. π曲线(pimf)

  6. (gbellmf)

  7. (gaussmf)

输入输出

输入

在模糊对象中使用输入,可以通过调用 input() 方法。由于每个输入都包含在某个类别中聚集的隶属度函数,因此使用 addCategory(string $nama) 方法添加一个类别,使用 addMembership(string $nama,string $mf,Array $parameter) 添加每个隶属度函数。

输出

在模糊对象中使用输出,可以通过调用 output() 方法。几乎与输入相同,输出也由特定类别中聚集的隶属度函数组成。因此,可以使用 addCategory(string $nama) 添加一个类别。而添加每个隶属度函数可以使用 addMembership(string $nama,string $mf,Array $parameter) 函数。

规则

在模糊中,每条规则都通过 rules() 方法管理。要添加特定的规则,需要调用 add(string $rule) 方法添加规则的条件,以及 then(string $consequency) 方法。

要编写规则 IF temperature IS high AND pressure IS high THEN engine IS slow,其形式为:

$fuzzy->rules()->add('temperature_high AND pressure_high')->then('engine_slow');

计算

可以通过提供包含每个输入类别值的关联数组的输入来获取计算结果。例如,在输入部分有 temperaturepressure 类别。因此,提供的值是 ['suhu'=>90,'tekanan'=>0.2]

模糊化

规则评估

聚合

模糊推理系统

Mamdani

Tsukamoto

Sugeno

问题

如果遇到问题,请联系 Rizal Ardhi Rahmadani

许可证

此模糊框架是开源的,使用 MIT 许可证。