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
bb843694
Commit
bb843694
authored
Dec 18, 2025
by
Tong Li
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
遗传算法-优化
parent
a17d29cb
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
104 additions
and
17 deletions
+104
-17
ResourceGanttController.java
...ava/com/aps/controller/gantt/ResourceGanttController.java
+13
-0
KpiCalculator.java
src/main/java/com/aps/service/Algorithm/KpiCalculator.java
+14
-13
ScheduleOperationService.java
...a/com/aps/service/Algorithm/ScheduleOperationService.java
+50
-1
PlanResultService.java
src/main/java/com/aps/service/plan/PlanResultService.java
+22
-2
PlanResultServiceTest.java
src/test/java/com/aps/demo/PlanResultServiceTest.java
+5
-1
No files found.
src/main/java/com/aps/controller/gantt/ResourceGanttController.java
View file @
bb843694
...
...
@@ -216,6 +216,19 @@ public class ResourceGanttController {
return
R
.
ok
(
result
);
}
@PostMapping
(
"/orderdel"
)
@Operation
(
summary
=
"删除订单"
,
description
=
"删除订单"
)
public
R
<
Chromosome
>
delOrder
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
log
.
info
(
"delOperation 请求参数: {}"
,
params
);
String
sceneId
=
ParamValidator
.
getString
(
params
,
"sceneId"
,
"场景ID"
);
String
orderid
=
ParamValidator
.
getString
(
params
,
"orderId"
,
"订单ID"
);
ParamValidator
.
validateSceneExists
(
sceneService
,
sceneId
);
Chromosome
result
=
planResultService
.
DelOrder
(
sceneId
,
orderid
);
return
R
.
ok
(
result
);
}
@PostMapping
(
"/operationlocked"
)
@Operation
(
summary
=
"工单锁定"
,
description
=
"订工单锁定"
)
public
R
<
Chromosome
>
lockedOperation
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
...
...
src/main/java/com/aps/service/Algorithm/KpiCalculator.java
View file @
bb843694
...
...
@@ -19,13 +19,13 @@ import java.util.stream.Collectors;
* 时间:2025-12-10
*/
public
class
KpiCalculator
{
private
Chromosome
chromosome
;
private
Chromosome
chromosome
;
private
LocalDateTime
baseTime
;
public
KpiCalculator
(
Chromosome
_chromosome
)
{
chromosome
=
_chromosome
;
baseTime
=
_chromosome
.
getBaseTime
();
}
public
KpiCalculator
(
Chromosome
_chromosome
)
{
chromosome
=
_chromosome
;
baseTime
=
_chromosome
.
getBaseTime
();
}
public
void
calculatekpi
()
{
calculateMachine
();
calculateOrder
();
...
...
@@ -45,7 +45,7 @@ public class KpiCalculator {
double
machineActualWorkTime
=
chromosome
.
getMachines
().
stream
()
.
mapToDouble
(
Machine:
:
getActualWorkTime
)
.
sum
();
double
machineallWorkTime
=
calculateAllTimeSegmentsTotalDuration
();
double
machineallWorkTime
=
calculateAllTimeSegmentsTotalDuration
();
chromosome
.
setMachineWaitTime
((
machineallWorkTime
-
machineActualWorkTime
)/
60
/
60
);
// 订单按时完成的数量
...
...
@@ -128,15 +128,16 @@ public class KpiCalculator {
private
void
calculateMachine
()
{
// 按设备ID分组工序列表(对应C# GroupBy + ToList)
Map
<
Long
,
List
<
GAScheduleResult
>>
machineTasks
=
chromosome
.
getResult
().
stream
()
List
<
GAScheduleResult
>
list
=
chromosome
.
getResult
();
Map
<
Long
,
List
<
GAScheduleResult
>>
machineTasks
=
list
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
GAScheduleResult:
:
getMachineId
));
// 计划工作时间:最后一个任务结束时间 - 第一个任务开始时间
int
firstTaskStart
=
chromosome
.
getResult
()
.
stream
()
int
firstTaskStart
=
list
.
stream
()
.
mapToInt
(
GAScheduleResult:
:
getStartTime
)
.
max
()
.
orElse
(
0
);
int
lastTaskEnd
=
chromosome
.
getResult
()
.
stream
()
int
lastTaskEnd
=
list
.
stream
()
.
mapToInt
(
GAScheduleResult:
:
getEndTime
)
.
max
()
.
orElse
(
0
);
...
...
@@ -187,9 +188,9 @@ public class KpiCalculator {
* @return 订单ID与延迟时间(小时)的Map
*/
private
void
calculateOrder
()
{
List
<
GAScheduleResult
>
list
=
chromosome
.
getResult
();
// 按GroupId(订单ID)分组 - 对应C#的GroupBy
Map
<
String
,
List
<
GAScheduleResult
>>
orderGroups
=
chromosome
.
getResult
()
.
stream
()
Map
<
String
,
List
<
GAScheduleResult
>>
orderGroups
=
list
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
GAScheduleResult:
:
getOrderId
));
for
(
Map
.
Entry
<
String
,
List
<
GAScheduleResult
>>
entry
:
orderGroups
.
entrySet
())
{
...
...
@@ -214,7 +215,7 @@ public class KpiCalculator {
.
mapToDouble
(
GAScheduleResult:
:
getProcessingTime
)
.
sum
();
Order
order
=
chromosome
.
getOrders
().
stream
()
Order
order
=
chromosome
.
getOrders
().
stream
()
.
filter
(
t
->
t
.
getOrderId
()==
orderId
)
.
findFirst
()
.
orElse
(
null
);
...
...
src/main/java/com/aps/service/Algorithm/ScheduleOperationService.java
View file @
bb843694
...
...
@@ -628,9 +628,58 @@ public class ScheduleOperationService {
}
public
void
DelOrder
(
Chromosome
chromosome
,
int
orderId
,
GlobalParam
globalParam
)
{
public
void
DelOrder
(
Chromosome
chromosome
,
String
orderId
,
GlobalParam
globalParam
)
{
List
<
Entry
>
allOperations
=
chromosome
.
getAllOperations
();
List
<
GlobalOperationInfo
>
globalOpList
=
chromosome
.
getGlobalOpList
();
List
<
Order
>
orders
=
chromosome
.
getOrders
();
List
<
Integer
>
OperationSequencing
=
chromosome
.
getOperationSequencing
();
List
<
GAScheduleResult
>
ScheduleResults
=
chromosome
.
getResult
();
Order
sourceorder
=
orders
.
stream
()
.
filter
(
o
->
o
.
getOrderId
().
equals
(
orderId
)
)
.
findFirst
()
.
orElseThrow
(()
->
new
NoSuchElementException
(
"Order not found: "
+
orderId
));
List
<
Entry
>
sourceOps
=
allOperations
.
stream
()
.
filter
(
o
->
o
.
getOrderId
().
equals
(
orderId
)
)
.
sorted
(
Comparator
.
comparing
(
Entry:
:
getSequence
))
.
collect
(
Collectors
.
toList
());
int
GroupId
=
0
;
for
(
Entry
entry
:
sourceOps
)
{
GroupId
=
entry
.
GroupId
;
OptionalInt
index
=
IntStream
.
range
(
0
,
allOperations
.
size
())
.
filter
(
h
->
entry
.
getId
()==
allOperations
.
get
(
h
).
getId
())
.
findFirst
();
allOperations
.
remove
(
index
.
orElse
(
0
));
OptionalInt
index1
=
IntStream
.
range
(
0
,
globalOpList
.
size
())
.
filter
(
h
->
entry
.
getId
()==
globalOpList
.
get
(
h
).
getOp
().
getId
())
.
findFirst
();
globalOpList
.
remove
(
index1
.
orElse
(
0
));
chromosome
.
getMachineSelection
().
remove
(
index1
.
orElse
(
0
));
OptionalInt
OperationIndex
=
IntStream
.
range
(
0
,
OperationSequencing
.
size
())
.
filter
(
i
->
OperationSequencing
.
get
(
i
).
equals
(
entry
.
GroupId
))
// 过滤出值为1的索引
.
findFirst
();
int
targetOpIndex
=
OperationIndex
.
getAsInt
();
OperationSequencing
.
remove
(
targetOpIndex
);
OptionalInt
OperationIndex1
=
IntStream
.
range
(
0
,
ScheduleResults
.
size
())
.
filter
(
i
->
ScheduleResults
.
get
(
i
).
getOperationId
()==
entry
.
getId
())
// 过滤出值为1的索引
.
findFirst
();
//锁定需要删除
ScheduleResults
.
remove
(
OperationIndex1
.
getAsInt
());
}
int
i
=
0
;
for
(
GlobalOperationInfo
globalOp
:
globalOpList
)
{
globalOp
.
setGlobalOpId
(
i
);
i
++;
}
// chromosome.getOperatRel().remove(GroupId-1);
orders
.
remove
(
sourceorder
);
redecode
(
chromosome
,
chromosome
.
getBaseTime
(),
globalParam
);
}
...
...
src/main/java/com/aps/service/plan/PlanResultService.java
View file @
bb843694
...
...
@@ -414,9 +414,9 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
// WriteScheduleSummary(chromosome);
ScheduleOperationService
ScheduleOperation
=
new
ScheduleOperationService
();
WriteScheduleSummary
(
chromosome
);
ScheduleOperation
.
moveOperation
(
chromosome
,
opId
,
(
int
)
ChronoUnit
.
SECONDS
.
between
(
chromosome
.
getBaseTime
(),
newStartTime
),
newMachineId
,
globalParam
);
//
WriteScheduleSummary(chromosome);
WriteScheduleSummary
(
chromosome
);
_sceneService
.
saveChromosomeToFile
(
chromosome
,
SceneId
);
return
chromosome
;
...
...
@@ -456,6 +456,26 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
return
chromosome
;
}
public
Chromosome
DelOrder
(
String
SceneId
,
String
orderId
)
{
GlobalParam
globalParam
=
new
GlobalParam
();
Chromosome
chromosome
=
_sceneService
.
loadChromosomeFromFile
(
SceneId
);
//this.baseTime=param.getBaseTime();
// WriteScheduleSummary(chromosome);
ScheduleOperationService
ScheduleOperation
=
new
ScheduleOperationService
();
ScheduleOperation
.
DelOrder
(
chromosome
,
orderId
,
globalParam
);
// WriteScheduleSummary(chromosome);
_sceneService
.
saveChromosomeToFile
(
chromosome
,
SceneId
);
return
chromosome
;
}
public
Chromosome
LockOperation
(
String
SceneId
,
int
opId
,
boolean
isLocked
)
{
...
...
src/test/java/com/aps/demo/PlanResultServiceTest.java
View file @
bb843694
...
...
@@ -10,6 +10,7 @@ import org.junit.jupiter.api.Test;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -24,7 +25,10 @@ public class PlanResultServiceTest {
@Test
public
void
testExecute
()
{
planResultService
.
execute2
(
""
);
LocalDateTime
t
=
LocalDateTime
.
of
(
2025
,
10
,
31
,
6
,
51
,
11
);
planResultService
.
Move
(
"86ED02C9BAB54BB6B8F413938A3F2869"
,
1
,
t
,
3402L
);
}
@Test
...
...
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