Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
HYH.APSJ
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
佟礼
HYH.APSJ
Commits
9d489cbf
Commit
9d489cbf
authored
Jun 12, 2026
by
DESKTOP-VKRD9QF\Administration
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化器启用
parent
f366bb13
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
89 additions
and
11 deletions
+89
-11
GlobalParam.java
src/main/java/com/aps/entity/basic/GlobalParam.java
+19
-0
HybridAlgorithm.java
src/main/java/com/aps/service/Algorithm/HybridAlgorithm.java
+6
-3
UserStrategyRuleServiceImpl.java
...ava/com/aps/service/impl/UserStrategyRuleServiceImpl.java
+39
-7
PlanResultService.java
src/main/java/com/aps/service/plan/PlanResultService.java
+1
-0
ScheduleStrategyService.java
...in/java/com/aps/service/plan/ScheduleStrategyService.java
+24
-1
No files found.
src/main/java/com/aps/entity/basic/GlobalParam.java
View file @
9d489cbf
...
@@ -44,6 +44,8 @@ public class GlobalParam {
...
@@ -44,6 +44,8 @@ public class GlobalParam {
/// </summary>
/// </summary>
private
boolean
isJit
=
false
;
private
boolean
isJit
=
false
;
private
boolean
isOptimizer
=
true
;
private
boolean
_smoothSetup
=
false
;
// 设置时间平滑 工序的前处理是否提前
private
boolean
_smoothSetup
=
false
;
// 设置时间平滑 工序的前处理是否提前
private
boolean
_smoothChangeOver
=
true
;
// 默认true,设置时间 是否考虑换型时间
private
boolean
_smoothChangeOver
=
true
;
// 默认true,设置时间 是否考虑换型时间
...
@@ -220,6 +222,7 @@ public class GlobalParam {
...
@@ -220,6 +222,7 @@ public class GlobalParam {
target
.
IsCheckSf
=
this
.
IsCheckSf
;
target
.
IsCheckSf
=
this
.
IsCheckSf
;
target
.
IsOverlap
=
this
.
IsOverlap
;
target
.
IsOverlap
=
this
.
IsOverlap
;
target
.
isJit
=
this
.
isJit
;
target
.
isJit
=
this
.
isJit
;
target
.
isOptimizer
=
this
.
isOptimizer
;
target
.
_smoothSetup
=
this
.
_smoothSetup
;
target
.
_smoothSetup
=
this
.
_smoothSetup
;
target
.
_smoothChangeOver
=
this
.
_smoothChangeOver
;
target
.
_smoothChangeOver
=
this
.
_smoothChangeOver
;
target
.
_smoothChangeOverInWeek
=
this
.
_smoothChangeOverInWeek
;
target
.
_smoothChangeOverInWeek
=
this
.
_smoothChangeOverInWeek
;
...
@@ -230,6 +233,22 @@ public class GlobalParam {
...
@@ -230,6 +233,22 @@ public class GlobalParam {
return
target
;
return
target
;
}
}
public
boolean
isOptimizer
()
{
return
isOptimizer
;
}
public
boolean
getIsOptimizer
()
{
return
isOptimizer
;
}
public
void
setOptimizer
(
boolean
optimizer
)
{
isOptimizer
=
optimizer
;
}
public
void
setIsOptimizer
(
boolean
optimizer
)
{
isOptimizer
=
optimizer
;
}
private
List
<?>
extractKpiList
(
Object
rawConfig
)
{
private
List
<?>
extractKpiList
(
Object
rawConfig
)
{
if
(
rawConfig
instanceof
List
)
{
if
(
rawConfig
instanceof
List
)
{
return
(
List
<?>)
rawConfig
;
return
(
List
<?>)
rawConfig
;
...
...
src/main/java/com/aps/service/Algorithm/HybridAlgorithm.java
View file @
9d489cbf
...
@@ -101,7 +101,9 @@ public class HybridAlgorithm {
...
@@ -101,7 +101,9 @@ public class HybridAlgorithm {
LocalDateTime
starttime
=
LocalDateTime
.
now
();
LocalDateTime
starttime
=
LocalDateTime
.
now
();
FileHelper
.
writeLogFile
(
"排产-----------开始-----"
+
(
_GlobalParam
.
isJit
()?
"倒排"
:
"正排"
)+
"------"
+
allOperations
.
get
(
0
).
getSceneId
());
FileHelper
.
writeLogFile
(
"排产-----------开始-----"
+
(
_GlobalParam
.
isJit
()
?
"倒排"
:
"正排"
)
+
"-----优化器"
+
(
_GlobalParam
.
isOptimizer
()
?
"启用"
:
"关闭"
)
+
"------"
+
allOperations
.
get
(
0
).
getSceneId
());
// 在整个流程开始时创建一个全局 shared decoder,所有阶段共享解码缓存
// 在整个流程开始时创建一个全局 shared decoder,所有阶段共享解码缓存
GeneticDecoder
sharedDecoder
=
new
GeneticDecoder
(
_GlobalParam
,
param
.
getBaseTime
(),
machines
,
orders
,
materials
,
machineScheduler
,
materialRequirementService
,
sceneId
);
GeneticDecoder
sharedDecoder
=
new
GeneticDecoder
(
_GlobalParam
,
param
.
getBaseTime
(),
machines
,
orders
,
materials
,
machineScheduler
,
materialRequirementService
,
sceneId
);
...
@@ -121,8 +123,9 @@ public class HybridAlgorithm {
...
@@ -121,8 +123,9 @@ public class HybridAlgorithm {
// 步骤1:使用构造启发式算法生成初始种群
// 步骤1:使用构造启发式算法生成初始种群
FileHelper
.
writeLogFile
(
"构造启发式初始化-----------开始-------"
);
FileHelper
.
writeLogFile
(
"构造启发式初始化-----------开始-------"
);
// List<Chromosome> population = initialization.generateHeuristicInitialPopulation(param);
List
<
Chromosome
>
population
=
_GlobalParam
.
isOptimizer
()
List
<
Chromosome
>
population
=
initialization
.
generateHybridInitialPopulation
(
param
);
?
initialization
.
generateHybridInitialPopulation
(
param
)
:
initialization
.
generateHeuristicInitialPopulation
(
param
,
param
.
getPopulationSize
());
FileHelper
.
writeLogFile
(
"构造启发式初始化-----------结束-------"
);
FileHelper
.
writeLogFile
(
"构造启发式初始化-----------结束-------"
);
...
...
src/main/java/com/aps/service/impl/UserStrategyRuleServiceImpl.java
View file @
9d489cbf
...
@@ -216,7 +216,8 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
...
@@ -216,7 +216,8 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
item
.
put
(
"globalRuleId"
,
rule
.
getId
());
item
.
put
(
"globalRuleId"
,
rule
.
getId
());
item
.
put
(
"globalRuleName"
,
rule
.
getName
());
item
.
put
(
"globalRuleName"
,
rule
.
getName
());
item
.
put
(
"forwardScheduling"
,
parseForwardScheduling
(
rule
.
getForwardScheduling
()));
item
.
put
(
"forwardScheduling"
,
parseForwardScheduling
(
rule
.
getForwardScheduling
()));
item
.
put
(
"isjit"
,
extractIsJit
(
rule
.
getForwardScheduling
(),
false
));
item
.
put
(
"isjit"
,
toFrontendIsJit
(
extractIsJit
(
rule
.
getForwardScheduling
(),
false
)));
item
.
put
(
"isOptimizer"
,
extractIsOptimizer
(
rule
.
getForwardScheduling
(),
true
));
return
item
;
return
item
;
}
}
...
@@ -231,7 +232,8 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
...
@@ -231,7 +232,8 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
item
.
put
(
"globalRuleId"
,
globalRule
.
getId
());
item
.
put
(
"globalRuleId"
,
globalRule
.
getId
());
item
.
put
(
"globalRuleName"
,
globalRule
.
getName
());
item
.
put
(
"globalRuleName"
,
globalRule
.
getName
());
item
.
put
(
"forwardScheduling"
,
parseForwardScheduling
(
rule
.
getForwardScheduling
()));
item
.
put
(
"forwardScheduling"
,
parseForwardScheduling
(
rule
.
getForwardScheduling
()));
item
.
put
(
"isjit"
,
extractIsJit
(
rule
.
getForwardScheduling
(),
false
));
item
.
put
(
"isjit"
,
toFrontendIsJit
(
extractIsJit
(
rule
.
getForwardScheduling
(),
false
)));
item
.
put
(
"isOptimizer"
,
extractIsOptimizer
(
rule
.
getForwardScheduling
(),
true
));
return
item
;
return
item
;
}
}
...
@@ -335,7 +337,8 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
...
@@ -335,7 +337,8 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
result
.
put
(
"name"
,
rule
.
getName
());
result
.
put
(
"name"
,
rule
.
getName
());
result
.
put
(
"forwardScheduling"
,
parseForwardScheduling
(
rule
.
getForwardScheduling
()));
result
.
put
(
"forwardScheduling"
,
parseForwardScheduling
(
rule
.
getForwardScheduling
()));
result
.
put
(
"kpiConfig"
,
parseJson
(
rule
.
getKpiConfig
()));
result
.
put
(
"kpiConfig"
,
parseJson
(
rule
.
getKpiConfig
()));
result
.
put
(
"isjit"
,
extractIsJit
(
rule
.
getForwardScheduling
(),
false
));
result
.
put
(
"isjit"
,
toFrontendIsJit
(
extractIsJit
(
rule
.
getForwardScheduling
(),
false
)));
result
.
put
(
"isOptimizer"
,
extractIsOptimizer
(
rule
.
getForwardScheduling
(),
true
));
return
result
;
return
result
;
}
}
...
@@ -349,7 +352,8 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
...
@@ -349,7 +352,8 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
result
.
put
(
"name"
,
rule
==
null
?
null
:
rule
.
getName
());
result
.
put
(
"name"
,
rule
==
null
?
null
:
rule
.
getName
());
result
.
put
(
"forwardScheduling"
,
rule
==
null
?
new
ArrayList
<
StrategyScheduling
>()
:
parseForwardScheduling
(
rule
.
getForwardScheduling
()));
result
.
put
(
"forwardScheduling"
,
rule
==
null
?
new
ArrayList
<
StrategyScheduling
>()
:
parseForwardScheduling
(
rule
.
getForwardScheduling
()));
result
.
put
(
"kpiConfig"
,
new
ArrayList
<>());
result
.
put
(
"kpiConfig"
,
new
ArrayList
<>());
result
.
put
(
"isjit"
,
rule
!=
null
&&
extractIsJit
(
rule
.
getForwardScheduling
(),
false
));
result
.
put
(
"isjit"
,
toFrontendIsJit
(
rule
!=
null
&&
extractIsJit
(
rule
.
getForwardScheduling
(),
false
)));
result
.
put
(
"isOptimizer"
,
rule
==
null
||
extractIsOptimizer
(
rule
.
getForwardScheduling
(),
true
));
return
result
;
return
result
;
}
}
...
@@ -400,18 +404,24 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
...
@@ -400,18 +404,24 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
Object
forwardScheduling
=
params
.
get
(
"forwardScheduling"
);
Object
forwardScheduling
=
params
.
get
(
"forwardScheduling"
);
String
defaultValue
=
globalRule
==
null
?
null
:
globalRule
.
getForwardScheduling
();
String
defaultValue
=
globalRule
==
null
?
null
:
globalRule
.
getForwardScheduling
();
Object
rawIsJit
=
firstValue
(
params
,
"isjit"
,
"isJit"
,
"jit"
);
Object
rawIsJit
=
firstValue
(
params
,
"isjit"
,
"isJit"
,
"jit"
);
Object
rawIsOptimizer
=
firstValue
(
params
,
"isOptimizer"
);
Boolean
isJit
=
rawIsJit
==
null
?
extractIsJitObject
(
userRule
.
getForwardScheduling
())
:
asBoolean
(
rawIsJit
,
fals
e
);
Boolean
isJit
=
rawIsJit
==
null
?
extractIsJitObject
(
userRule
.
getForwardScheduling
())
:
!
asBoolean
(
rawIsJit
,
tru
e
);
if
(
isJit
==
null
)
{
if
(
isJit
==
null
)
{
isJit
=
extractIsJitObject
(
defaultValue
);
isJit
=
extractIsJitObject
(
defaultValue
);
}
}
if
(
isJit
==
null
)
{
Boolean
isOptimizer
=
rawIsOptimizer
==
null
?
extractIsOptimizerObject
(
userRule
.
getForwardScheduling
())
:
asBoolean
(
rawIsOptimizer
,
true
);
return
toJson
(
forwardScheduling
,
defaultValue
);
if
(
isOptimizer
==
null
)
{
isOptimizer
=
extractIsOptimizerObject
(
defaultValue
);
}
if
(
isOptimizer
==
null
)
{
isOptimizer
=
true
;
}
}
Map
<
String
,
Object
>
payload
=
new
LinkedHashMap
<>();
Map
<
String
,
Object
>
payload
=
new
LinkedHashMap
<>();
payload
.
put
(
"forwardScheduling"
,
forwardScheduling
==
null
?
parseForwardScheduling
(
defaultValue
)
:
forwardScheduling
);
payload
.
put
(
"forwardScheduling"
,
forwardScheduling
==
null
?
parseForwardScheduling
(
defaultValue
)
:
forwardScheduling
);
payload
.
put
(
"isjit"
,
isJit
==
null
?
false
:
isJit
);
payload
.
put
(
"isjit"
,
isJit
==
null
?
false
:
isJit
);
payload
.
put
(
"isOptimizer"
,
isOptimizer
);
return
toJson
(
payload
,
defaultValue
);
return
toJson
(
payload
,
defaultValue
);
}
}
...
@@ -447,6 +457,28 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
...
@@ -447,6 +457,28 @@ public class UserStrategyRuleServiceImpl extends ServiceImpl<UserStrategyRuleMap
return
value
==
null
?
defaultValue
:
value
;
return
value
==
null
?
defaultValue
:
value
;
}
}
private
boolean
toFrontendIsJit
(
boolean
backendIsJit
)
{
return
!
backendIsJit
;
}
private
Boolean
extractIsOptimizerObject
(
String
json
)
{
if
(!
StringUtils
.
hasText
(
json
))
{
return
null
;
}
try
{
JsonNode
root
=
objectMapper
.
readTree
(
json
);
JsonNode
value
=
firstJsonValue
(
root
,
"isOptimizer"
);
return
value
==
null
?
null
:
asBoolean
(
value
.
isValueNode
()
?
value
.
asText
()
:
value
.
toString
(),
true
);
}
catch
(
Exception
e
)
{
return
null
;
}
}
private
boolean
extractIsOptimizer
(
String
json
,
boolean
defaultValue
)
{
Boolean
value
=
extractIsOptimizerObject
(
json
);
return
value
==
null
?
defaultValue
:
value
;
}
private
JsonNode
firstJsonValue
(
JsonNode
root
,
String
...
keys
)
{
private
JsonNode
firstJsonValue
(
JsonNode
root
,
String
...
keys
)
{
if
(
root
==
null
||
root
.
isNull
())
{
if
(
root
==
null
||
root
.
isNull
())
{
return
null
;
return
null
;
...
...
src/main/java/com/aps/service/plan/PlanResultService.java
View file @
9d489cbf
...
@@ -2409,6 +2409,7 @@ if(job.getGeneDetails()!=null)
...
@@ -2409,6 +2409,7 @@ if(job.getGeneDetails()!=null)
Object
kpiConfig
=
scheduleStrategyService
.
loadEffectiveKpiConfig
(
userId
,
baseRuleId
,
sceneId
,
userRuleId
);
Object
kpiConfig
=
scheduleStrategyService
.
loadEffectiveKpiConfig
(
userId
,
baseRuleId
,
sceneId
,
userRuleId
);
globalParam
.
applyKpiConfig
(
kpiConfig
);
globalParam
.
applyKpiConfig
(
kpiConfig
);
globalParam
.
setJit
(
scheduleStrategyService
.
loadEffectiveIsJit
(
userId
,
baseRuleId
,
sceneId
,
userRuleId
));
globalParam
.
setJit
(
scheduleStrategyService
.
loadEffectiveIsJit
(
userId
,
baseRuleId
,
sceneId
,
userRuleId
));
globalParam
.
setIsOptimizer
(
scheduleStrategyService
.
loadEffectiveIsOptimizer
(
userId
,
baseRuleId
,
sceneId
,
userRuleId
));
return
globalParam
;
return
globalParam
;
}
}
...
...
src/main/java/com/aps/service/plan/ScheduleStrategyService.java
View file @
9d489cbf
...
@@ -105,7 +105,7 @@ public class ScheduleStrategyService {
...
@@ -105,7 +105,7 @@ public class ScheduleStrategyService {
}
}
Map
<
String
,
Object
>
effectiveRule
=
userStrategyRuleService
.
getEffectiveRule
(
params
);
Map
<
String
,
Object
>
effectiveRule
=
userStrategyRuleService
.
getEffectiveRule
(
params
);
return
effectiveRule
!=
null
&&
asBoolean
(
effectiveRule
.
get
(
"isjit"
),
fals
e
);
return
effectiveRule
!=
null
&&
!
asBoolean
(
effectiveRule
.
get
(
"isjit"
),
tru
e
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
warn
(
"Load JIT strategy failed, use GlobalParam default isJit=false. sceneId={}, userId={}, baseRuleId={}, userRuleId={}"
,
log
.
warn
(
"Load JIT strategy failed, use GlobalParam default isJit=false. sceneId={}, userId={}, baseRuleId={}, userRuleId={}"
,
sceneId
,
userId
,
baseRuleId
,
userRuleId
,
e
);
sceneId
,
userId
,
baseRuleId
,
userRuleId
,
e
);
...
@@ -113,6 +113,29 @@ public class ScheduleStrategyService {
...
@@ -113,6 +113,29 @@ public class ScheduleStrategyService {
}
}
}
}
public
boolean
loadEffectiveIsOptimizer
(
Long
userId
,
Long
baseRuleId
,
String
sceneId
,
String
userRuleId
)
{
try
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
Long
effectiveUserId
=
resolveScheduleUserId
(
sceneId
,
userId
);
if
(
effectiveUserId
!=
null
)
{
params
.
put
(
"userId"
,
effectiveUserId
);
}
if
(
baseRuleId
!=
null
)
{
params
.
put
(
"baseRuleId"
,
baseRuleId
);
}
if
(
userRuleId
!=
null
&&
!
userRuleId
.
trim
().
isEmpty
())
{
params
.
put
(
"userRuleId"
,
userRuleId
);
}
Map
<
String
,
Object
>
effectiveRule
=
userStrategyRuleService
.
getEffectiveRule
(
params
);
return
effectiveRule
==
null
||
asBoolean
(
effectiveRule
.
get
(
"isOptimizer"
),
true
);
}
catch
(
Exception
e
)
{
log
.
warn
(
"Load optimizer strategy failed, use GlobalParam default isOptimizer=true. sceneId={}, userId={}, baseRuleId={}, userRuleId={}"
,
sceneId
,
userId
,
baseRuleId
,
userRuleId
,
e
);
return
true
;
}
}
public
OrderSortRule
createMultiConditionRule
(
List
<
Order
>
orders
)
{
public
OrderSortRule
createMultiConditionRule
(
List
<
Order
>
orders
)
{
return
createMultiConditionRule
(
orders
,
Collections
.
emptyList
());
return
createMultiConditionRule
(
orders
,
Collections
.
emptyList
());
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment