4 changed files with 104 additions and 41 deletions
@ -0,0 +1,11 @@ |
|||||||
|
package com.mh.quartz.domain; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Classname FuzzyLevel |
||||||
|
* Todo: |
||||||
|
* @Date 2025-05-31 14:19 |
||||||
|
* @Created by LJF |
||||||
|
*/ |
||||||
|
public enum FuzzyLevel { |
||||||
|
NB, NM, NS, ZO, PS, PM, PB; // 极小,较小,小,零,稍大,较大,极大
|
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
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()
|
||||||
|
} |
Loading…
Reference in new issue