From dc3f9cc91759823ce59486f19b138be4b296a0f1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 28 四月 2026 09:43:28 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/ai/domain/autotune/AutoTuneRuleDefinition.java | 149 +++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 130 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/zy/ai/domain/autotune/AutoTuneRuleDefinition.java b/src/main/java/com/zy/ai/domain/autotune/AutoTuneRuleDefinition.java
index bff033e..1b3cd79 100644
--- a/src/main/java/com/zy/ai/domain/autotune/AutoTuneRuleDefinition.java
+++ b/src/main/java/com/zy/ai/domain/autotune/AutoTuneRuleDefinition.java
@@ -6,6 +6,12 @@
public final class AutoTuneRuleDefinition {
+ private static final String DEFAULT_RULE_NOTE = "鍗曟璋冩暣骞呭害涓嶈兘瓒呰繃 maxStep銆�";
+ private static final String STATION_OUT_TASK_LIMIT_DYNAMIC_MAX_SOURCE =
+ "currentParameterSnapshot.stationOutBufferCapacities[targetId]";
+ private static final String STATION_OUT_TASK_LIMIT_NOTE =
+ "鍗曟璋冩暣骞呭害涓嶈兘瓒呰繃 maxStep锛涘澶ф椂涓嶅緱瓒呰繃瀵瑰簲绔欑偣 outBufferCapacity銆�";
+
private static final Map<String, Rule> RULE_MAP = buildRuleMap();
private AutoTuneRuleDefinition() {
@@ -24,27 +30,58 @@
private static Map<String, Rule> buildRuleMap() {
LinkedHashMap<String, Rule> ruleMap = new LinkedHashMap<>();
- add(ruleMap, AutoTuneTargetType.SYS_CONFIG, "aiAutoTuneIntervalMinutes", 5, 60, 5, 30, false);
- add(ruleMap, AutoTuneTargetType.SYS_CONFIG, "conveyorStationTaskLimit", 5, 200, 5, 20, false);
- add(ruleMap, AutoTuneTargetType.SYS_CONFIG, "crnOutBatchRunningLimit", 1, 20, 3, 20, false);
- add(ruleMap, AutoTuneTargetType.STATION, "outTaskLimit", 0, null, 3, 10, true);
- add(ruleMap, AutoTuneTargetType.CRN, "maxOutTask", 0, 10, 3, 10, false);
- add(ruleMap, AutoTuneTargetType.CRN, "maxInTask", 0, 10, 3, 10, false);
- add(ruleMap, AutoTuneTargetType.DUAL_CRN, "maxOutTask", 0, 10, 3, 10, false);
- add(ruleMap, AutoTuneTargetType.DUAL_CRN, "maxInTask", 0, 10, 3, 10, false);
+ add(ruleMap, rule(AutoTuneTargetType.SYS_CONFIG, "aiAutoTuneIntervalMinutes")
+ .minValue(5)
+ .maxValue(60)
+ .maxStep(5)
+ .cooldownMinutes(30));
+ add(ruleMap, rule(AutoTuneTargetType.SYS_CONFIG, "conveyorStationTaskLimit")
+ .minValue(5)
+ .maxValue(200)
+ .maxStep(5)
+ .cooldownMinutes(20));
+ add(ruleMap, rule(AutoTuneTargetType.SYS_CONFIG, "crnOutBatchRunningLimit")
+ .minValue(1)
+ .maxValue(20)
+ .maxStep(3)
+ .cooldownMinutes(20));
+ add(ruleMap, rule(AutoTuneTargetType.STATION, "outTaskLimit")
+ .minValue(0)
+ .maxStep(3)
+ .cooldownMinutes(10)
+ .dynamicMaxSource(STATION_OUT_TASK_LIMIT_DYNAMIC_MAX_SOURCE)
+ .note(STATION_OUT_TASK_LIMIT_NOTE));
+ add(ruleMap, rule(AutoTuneTargetType.CRN, "maxOutTask")
+ .minValue(0)
+ .maxValue(10)
+ .maxStep(3)
+ .cooldownMinutes(10));
+ add(ruleMap, rule(AutoTuneTargetType.CRN, "maxInTask")
+ .minValue(0)
+ .maxValue(10)
+ .maxStep(3)
+ .cooldownMinutes(10));
+ add(ruleMap, rule(AutoTuneTargetType.DUAL_CRN, "maxOutTask")
+ .minValue(0)
+ .maxValue(10)
+ .maxStep(3)
+ .cooldownMinutes(10));
+ add(ruleMap, rule(AutoTuneTargetType.DUAL_CRN, "maxInTask")
+ .minValue(0)
+ .maxValue(10)
+ .maxStep(3)
+ .cooldownMinutes(10));
+
return Collections.unmodifiableMap(ruleMap);
}
- private static void add(LinkedHashMap<String, Rule> ruleMap,
- AutoTuneTargetType targetType,
- String targetKey,
- Integer minValue,
- Integer maxValue,
- int maxStep,
- int cooldownMinutes,
- boolean dynamicMaxValue) {
- Rule rule = new Rule(targetType, targetKey, minValue, maxValue, maxStep, cooldownMinutes, dynamicMaxValue);
- ruleMap.put(buildKey(targetType.getCode(), targetKey), rule);
+ private static RuleSpec rule(AutoTuneTargetType targetType, String targetKey) {
+ return new RuleSpec(targetType, targetKey);
+ }
+
+ private static void add(LinkedHashMap<String, Rule> ruleMap, RuleSpec ruleSpec) {
+ Rule rule = ruleSpec.toRule();
+ ruleMap.put(buildKey(rule.getTargetType().getCode(), rule.getTargetKey()), rule);
}
private static String buildKey(String targetType, String targetKey) {
@@ -59,6 +96,8 @@
private final int maxStep;
private final int cooldownMinutes;
private final boolean dynamicMaxValue;
+ private final String dynamicMaxSource;
+ private final String note;
private Rule(AutoTuneTargetType targetType,
String targetKey,
@@ -66,7 +105,9 @@
Integer maxValue,
int maxStep,
int cooldownMinutes,
- boolean dynamicMaxValue) {
+ boolean dynamicMaxValue,
+ String dynamicMaxSource,
+ String note) {
this.targetType = targetType;
this.targetKey = targetKey;
this.minValue = minValue;
@@ -74,6 +115,8 @@
this.maxStep = maxStep;
this.cooldownMinutes = cooldownMinutes;
this.dynamicMaxValue = dynamicMaxValue;
+ this.dynamicMaxSource = dynamicMaxSource;
+ this.note = note;
}
public AutoTuneTargetType getTargetType() {
@@ -103,5 +146,73 @@
public boolean isDynamicMaxValue() {
return dynamicMaxValue;
}
+
+ public String getDynamicMaxSource() {
+ return dynamicMaxSource;
+ }
+
+ public String getNote() {
+ return note;
+ }
+ }
+
+ private static final class RuleSpec {
+ private final AutoTuneTargetType targetType;
+ private final String targetKey;
+ private Integer minValue;
+ private Integer maxValue;
+ private int maxStep;
+ private int cooldownMinutes;
+ private String dynamicMaxSource;
+ private String note = DEFAULT_RULE_NOTE;
+
+ private RuleSpec(AutoTuneTargetType targetType, String targetKey) {
+ this.targetType = targetType;
+ this.targetKey = targetKey;
+ }
+
+ private RuleSpec minValue(Integer minValue) {
+ this.minValue = minValue;
+ return this;
+ }
+
+ private RuleSpec maxValue(Integer maxValue) {
+ this.maxValue = maxValue;
+ return this;
+ }
+
+ private RuleSpec maxStep(int maxStep) {
+ this.maxStep = maxStep;
+ return this;
+ }
+
+ private RuleSpec cooldownMinutes(int cooldownMinutes) {
+ this.cooldownMinutes = cooldownMinutes;
+ return this;
+ }
+
+ private RuleSpec dynamicMaxSource(String dynamicMaxSource) {
+ this.dynamicMaxSource = dynamicMaxSource;
+ return this;
+ }
+
+ private RuleSpec note(String note) {
+ this.note = note;
+ return this;
+ }
+
+ private Rule toRule() {
+ return new Rule(
+ targetType,
+ targetKey,
+ minValue,
+ maxValue,
+ maxStep,
+ cooldownMinutes,
+ dynamicMaxSource != null,
+ dynamicMaxSource,
+ note
+ );
+ }
}
}
--
Gitblit v1.9.1