使用c#中的模糊逻辑对数字进行分类
本文关键字:数字 分类 模糊逻辑 使用 | 更新日期: 2023-09-27 18:05:29
我想用c#编写一个小代码,使用模糊逻辑框架,用户将输入0到10之间的数字,这些数字需要被分类为低,中,高。Low是0到3,Moderate是3到7,High是6到10。利用三角隶属函数。任何猜测如何做到这一点,我读了一些教程模糊框架,但不能得到我的问题适合那些。下面是我写的代码
class Program
{
static void Main(string[] args)
{
ContinuousDimension score = new ContinuousDimension("score", "score of word", "unit", 0, 10);
//Definition of basic fuzzy sets with which we will work
// input sets:
ContinuousSet low = new RightQuadraticSet(score, "Low Score", 0, 3, 4);
ContinuousSet high = new LeftQuadraticSet(score, "High Score", 6, 7, 10);
ContinuousSet mod = new BellSet(score, "Moderate Score", 5, 1, 2);
....
}
我现在该怎么做呢?我在0到10的范围内手动为意见词分配了一些分数,我想用三角函数将这些意见词的强度分为低、中、高。
模糊逻辑有效地处理各种情况。想想温度控制,你不想在加热和冷却之间来回切换,因为那会非常消耗能源。
在你的例子中,你会有这样的东西:
Very low = low limit of moderate => below 2.5 => time to turn on the heater
Very high = high limit of moderate => above 7.5 => time to turn on the AC
当你对"非常低"事件(打开加热器)采取行动后,下一个动作是当数值高于低上限(3.5)时,也就是当加热器关闭时。
Very Low = 0 - 2.5
Moderate Low = 2.5 - 3.5
Moderate = 3.5-6.5
Moderate High = 6.5 - 7.5
Very High = 7.5-10