You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.3 KiB
29 lines
1.3 KiB
package com.mh.quartz.util; |
|
|
|
import com.mh.quartz.domain.FuzzyLevel; |
|
|
|
/** |
|
* @Classname FuzzyRuleBase |
|
* Todo: |
|
* @Date 2025-05-31 14:20 |
|
* @Created by LJF |
|
*/ |
|
public class FuzzyRuleBase { |
|
|
|
// ΔKp 规则:根据误差 e 与误差变化 ec 得到修正量 |
|
private static final FuzzyLevel[][] kpRuleTable = { |
|
{FuzzyLevel.PB, FuzzyLevel.PM, FuzzyLevel.PS, FuzzyLevel.ZO, FuzzyLevel.NS, FuzzyLevel.NM, FuzzyLevel.NB}, |
|
{FuzzyLevel.PM, FuzzyLevel.PS, FuzzyLevel.ZO, FuzzyLevel.NS, FuzzyLevel.NM, FuzzyLevel.NB, FuzzyLevel.NB}, |
|
{FuzzyLevel.PS, FuzzyLevel.ZO, FuzzyLevel.NS, FuzzyLevel.NM, FuzzyLevel.NB, FuzzyLevel.NB, FuzzyLevel.NB}, |
|
{FuzzyLevel.ZO, FuzzyLevel.ZO, FuzzyLevel.ZO, FuzzyLevel.ZO, FuzzyLevel.ZO, FuzzyLevel.ZO, FuzzyLevel.ZO}, |
|
{FuzzyLevel.NS, FuzzyLevel.ZO, FuzzyLevel.PS, FuzzyLevel.PM, FuzzyLevel.PB, FuzzyLevel.PB, FuzzyLevel.PB}, |
|
{FuzzyLevel.NM, FuzzyLevel.NS, FuzzyLevel.ZO, FuzzyLevel.PS, FuzzyLevel.PM, FuzzyLevel.PB, FuzzyLevel.PB}, |
|
{FuzzyLevel.NB, FuzzyLevel.NB, FuzzyLevel.NS, FuzzyLevel.ZO, FuzzyLevel.PS, FuzzyLevel.PM, FuzzyLevel.PB} |
|
}; |
|
|
|
public static FuzzyLevel getKpAdjust(FuzzyLevel e, FuzzyLevel ec) { |
|
return kpRuleTable[e.ordinal()][ec.ordinal()]; |
|
} |
|
|
|
// 可扩展为不同规则表:getKiAdjust(), getKdAdjust() |
|
} |