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
1d0d9fa2
Commit
1d0d9fa2
authored
Feb 06, 2026
by
DESKTOP-VKRD9QF\Administration
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://39.100.78.207:1213/tongli/hyh.apsj
parents
02cf8d24
08c5cbf1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
95 additions
and
32 deletions
+95
-32
GeneticAlgorithm.java
...main/java/com/aps/service/Algorithm/GeneticAlgorithm.java
+2
-0
GeneticDecoder.java
src/main/java/com/aps/service/Algorithm/GeneticDecoder.java
+83
-27
MaterialRequirementService.java
...com/aps/service/Algorithm/MaterialRequirementService.java
+6
-2
PlanResultService.java
src/main/java/com/aps/service/plan/PlanResultService.java
+2
-1
PlanResultServiceTest.java
src/test/java/com/aps/demo/PlanResultServiceTest.java
+2
-2
No files found.
src/main/java/com/aps/service/Algorithm/GeneticAlgorithm.java
View file @
1d0d9fa2
...
@@ -134,6 +134,7 @@ public class GeneticAlgorithm {
...
@@ -134,6 +134,7 @@ public class GeneticAlgorithm {
// best.setOrderMaterials(orderMaterials);
// best.setOrderMaterials(orderMaterials);
best
.
setMaterialIds
(
materialIds
);
best
.
setMaterialIds
(
materialIds
);
best
.
setMaterials
(
null
);
best
.
setMaterials
(
null
);
best
.
setScenarioID
(
sceneId
);
// best.setOperatRel(_entryRel);
// best.setOperatRel(_entryRel);
if
(
best
.
getInitMachines
()==
null
)
if
(
best
.
getInitMachines
()==
null
)
...
@@ -275,6 +276,7 @@ public class GeneticAlgorithm {
...
@@ -275,6 +276,7 @@ public class GeneticAlgorithm {
best
.
setBaseTime
(
param
.
getBaseTime
());
best
.
setBaseTime
(
param
.
getBaseTime
());
best
.
setMaterialIds
(
materialIds
);
best
.
setMaterialIds
(
materialIds
);
best
.
setMaterials
(
null
);
best
.
setMaterials
(
null
);
best
.
setScenarioID
(
sceneId
);
// best.setOperatRel(_entryRel);
// best.setOperatRel(_entryRel);
if
(
best
.
getInitMachines
()==
null
)
if
(
best
.
getInitMachines
()==
null
)
...
...
src/main/java/com/aps/service/Algorithm/GeneticDecoder.java
View file @
1d0d9fa2
...
@@ -268,7 +268,9 @@ if(finishedOrder==null||finishedOrder.size()==0)
...
@@ -268,7 +268,9 @@ if(finishedOrder==null||finishedOrder.size()==0)
}
}
finalSequence
.
add
(
orderid
);
finalSequence
.
add
(
orderid
);
}
else
{
}
else
{
int
insertPos
=
Math
.
max
(
0
,
finalSequence
.
size
()
-
rnd
.
nextInt
(
2
));
int
insertPos
=
Math
.
max
(
0
,
finalSequence
.
size
());
// int insertPos = Math.max(0, finalSequence.size() - rnd.nextInt(2));
finalSequence
.
add
(
insertPos
,
orderid
);
finalSequence
.
add
(
insertPos
,
orderid
);
}
}
orderProcessCounter
.
put
(
orderid
,
scheduledCount
);
orderProcessCounter
.
put
(
orderid
,
scheduledCount
);
...
@@ -488,13 +490,17 @@ if(finishedOrder==null||finishedOrder.size()==0)
...
@@ -488,13 +490,17 @@ if(finishedOrder==null||finishedOrder.size()==0)
int
setupTime
=
0
;
int
setupTime
=
0
;
CopyOnWriteArrayList
<
GAScheduleResult
>
machineTasks
=
null
;
CopyOnWriteArrayList
<
GAScheduleResult
>
machineTasks
=
null
;
// CopyOnWriteArrayList<GAScheduleResult> machineTasks
=chromosome.getResult().stream()
CopyOnWriteArrayList
<
GAScheduleResult
>
machineTasks1
=
chromosome
.
getResult
().
stream
()
//
.filter(t -> t.getMachineId() == machine.getId())
.
filter
(
t
->
t
.
getMachineId
()
==
machine
.
getId
())
//
.sorted(Comparator.comparingInt(GAScheduleResult::getStartTime))
.
sorted
(
Comparator
.
comparingInt
(
GAScheduleResult:
:
getStartTime
))
//
.collect(Collectors.toCollection(CopyOnWriteArrayList::new));
.
collect
(
Collectors
.
toCollection
(
CopyOnWriteArrayList:
:
new
));
GAScheduleResult
lastGeneOnMachine
=
machine
.
getLastGene
();
GAScheduleResult
lastGeneOnMachine
=
null
;
if
(
machineTasks1
!=
null
&&
machineTasks1
.
size
()>
0
)
{
lastGeneOnMachine
=
machineTasks1
.
get
(
machineTasks1
.
size
()-
1
);
}
if
(
lastGeneOnMachine
!=
null
)
if
(
lastGeneOnMachine
!=
null
)
{
{
earliestStartTime
=
Math
.
max
(
earliestStartTime
,
lastGeneOnMachine
.
getEndTime
());
earliestStartTime
=
Math
.
max
(
earliestStartTime
,
lastGeneOnMachine
.
getEndTime
());
...
@@ -503,33 +509,30 @@ if(finishedOrder==null||finishedOrder.size()==0)
...
@@ -503,33 +509,30 @@ if(finishedOrder==null||finishedOrder.size()==0)
// _globalParam.set_smoothChangeOver(false);
// _globalParam.set_smoothChangeOver(false);
CopyOnWriteArrayList
<
ScheduleResultDetail
>
geneDetails
=
new
CopyOnWriteArrayList
<>();
CopyOnWriteArrayList
<
ScheduleResultDetail
>
geneDetails
=
new
CopyOnWriteArrayList
<>();
int
bomtime
=
0
;
int
bomtime
=
0
;
if
(
machine
.
getId
()==
2063
)
{
int
i
=
0
;
}
LocalDateTime
startTime1
=
baseTime
.
plus
(
earliestStartTime
,
ChronoUnit
.
SECONDS
);
TimeSegment
slot
=
machineCalculator
.
GetCurrentOrNextShift
(
machine
,
startTime1
,
""
,
false
);
if
(
slot
!=
null
)
{
earliestStartTime
=
slot
.
getStart
().
isAfter
(
startTime1
)
?(
int
)
ChronoUnit
.
SECONDS
.
between
(
baseTime
,
slot
.
getStart
())
:
earliestStartTime
;
}
if
((
operation
.
getMaterialRequirements
()!=
null
&&
operation
.
getTargetFinishedOperationId
()==
null
)||
calbom
)
{
if
((
operation
.
getMaterialRequirements
()!=
null
&&
operation
.
getTargetFinishedOperationId
()==
null
)||
calbom
)
{
int
earliestStartTimeold
=
earliestStartTime
;
int
earliestStartTimeold
=
earliestStartTime
;
if
(
_globalParam
.
is_smoothChangeOver
())
{
if
(
_globalParam
.
is_smoothChangeOver
())
{
Map
<
Integer
,
Object
>
reslte
=
calculateSetupTime
(
machine
.
getLastGene
()
,
operation
,
machine
,
earliestStartTime
,
processingTimeTotal
,
_globalParam
.
is_smoothChangeOverInWeek
(),
chromosome
.
getAllOperations
());
Map
<
Integer
,
Object
>
reslte
=
calculateSetupTime
(
lastGeneOnMachine
,
operation
,
machine
,
earliestStartTime
,
processingTimeTotal
,
_globalParam
.
is_smoothChangeOverInWeek
(),
chromosome
.
getAllOperations
());
// setupTime = (int) reslte.get(1);//换型时间
// setupTime = (int) reslte.get(1);//换型时间
// int setupStartTime = (int) reslte.get(2);//换型开始时间
// int setupStartTime = (int) reslte.get(2);//换型开始时间
//earliestStartTime=(int)reslte.get(3);//上个任务的结束时间
//earliestStartTime=(int)reslte.get(3);//上个任务的结束时间
earliestStartTime
=
(
int
)
reslte
.
get
(
4
);
//最早开工时间
earliestStartTime
=
(
int
)
reslte
.
get
(
4
);
//最早开工时间
}
}
LocalDateTime
startTime1
=
baseTime
.
plus
(
earliestStartTime
,
ChronoUnit
.
SECONDS
);
TimeSegment
slot
=
machineCalculator
.
GetCurrentOrNextShift
(
machine
,
startTime1
,
""
,
false
);
if
(
slot
!=
null
)
{
earliestStartTime
=
slot
.
getStart
().
isAfter
(
startTime1
)
?(
int
)
ChronoUnit
.
SECONDS
.
between
(
baseTime
,
slot
.
getStart
())
:
earliestStartTime
;
}
bomtime
=
EditOperationBOMTime
(
operation
,
chromosome
,
earliestStartTime
);
bomtime
=
EditOperationBOMTime
(
operation
,
chromosome
,
earliestStartTime
);
...
@@ -540,11 +543,21 @@ if(finishedOrder==null||finishedOrder.size()==0)
...
@@ -540,11 +543,21 @@ if(finishedOrder==null||finishedOrder.size()==0)
}
}
machineTasks1
=
chromosome
.
getResult
().
stream
()
.
filter
(
t
->
t
.
getMachineId
()
==
machine
.
getId
())
.
sorted
(
Comparator
.
comparingInt
(
GAScheduleResult:
:
getStartTime
))
.
collect
(
Collectors
.
toCollection
(
CopyOnWriteArrayList:
:
new
));
if
(
machineTasks1
!=
null
&&
machineTasks1
.
size
()>
0
)
{
lastGeneOnMachine
=
machineTasks1
.
get
(
machineTasks1
.
size
()-
1
);
}
if
(
_globalParam
.
is_smoothChangeOver
())
{
if
(
_globalParam
.
is_smoothChangeOver
())
{
//是否考虑换型时间
//是否考虑换型时间
Map
<
Integer
,
Object
>
reslte
=
calculateSetupTime
(
machine
.
getLastGene
()
,
operation
,
machine
,
earliestStartTime
,
processingTimeTotal
,
_globalParam
.
is_smoothChangeOverInWeek
(),
chromosome
.
getAllOperations
());
Map
<
Integer
,
Object
>
reslte
=
calculateSetupTime
(
lastGeneOnMachine
,
operation
,
machine
,
earliestStartTime
,
processingTimeTotal
,
_globalParam
.
is_smoothChangeOverInWeek
(),
chromosome
.
getAllOperations
());
setupTime
=(
int
)
reslte
.
get
(
1
);
//换型时间
setupTime
=(
int
)
reslte
.
get
(
1
);
//换型时间
int
setupStartTime
=(
int
)
reslte
.
get
(
2
);
//换型开始时间
int
setupStartTime
=(
int
)
reslte
.
get
(
2
);
//换型开始时间
//earliestStartTime=(int)reslte.get(3);//上个任务的结束时间
//earliestStartTime=(int)reslte.get(3);//上个任务的结束时间
...
@@ -828,6 +841,8 @@ return getOperationBOMTime(currentOp, chromosome);
...
@@ -828,6 +841,8 @@ return getOperationBOMTime(currentOp, chromosome);
.
filter
(
t
->
t
.
getGroupId
()
==
groupId
)
.
filter
(
t
->
t
.
getGroupId
()
==
groupId
)
.
sorted
(
Comparator
.
comparing
(
Entry:
:
getSequence
))
.
sorted
(
Comparator
.
comparing
(
Entry:
:
getSequence
))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
for
(
Entry
currentOp
:
orderOps
)
{
for
(
Entry
currentOp
:
orderOps
)
{
if
(
currentOp
.
isNewCreate
())
{
if
(
currentOp
.
isNewCreate
())
{
...
@@ -836,13 +851,11 @@ return getOperationBOMTime(currentOp, chromosome);
...
@@ -836,13 +851,11 @@ return getOperationBOMTime(currentOp, chromosome);
GAScheduleResult
existingResult
=
chromosome
.
getResult
().
stream
()
.
filter
(
r
->
r
.
getOperationId
()
==
currentOp
.
getId
())
.
findFirst
().
orElse
(
null
);
Long
machineId
=
existingResult
.
getMachineId
();
Long
machineId
=
currentOp
.
getSelectMachineID
();
MachineOption
machineOption
=
currentOp
.
getMachineOptions
().
stream
()
MachineOption
machineOption
=
currentOp
.
getMachineOptions
().
stream
()
...
@@ -881,8 +894,6 @@ return getOperationBOMTime(currentOp, chromosome);
...
@@ -881,8 +894,6 @@ return getOperationBOMTime(currentOp, chromosome);
.
findFirst
()
.
findFirst
()
.
orElse
(
null
);
.
orElse
(
null
);
AddMachineAvailable
(
machine
,
existingResult
.
getGeneDetails
());
chromosome
.
getResult
().
remove
(
existingResult
);
int
actualEndTime
=
processWithSingleMachine
(
currentOp
,
machine
,
processTime
,
prevtime
,
opMachine
,
chromosome
,
true
,
prevendtime
);
int
actualEndTime
=
processWithSingleMachine
(
currentOp
,
machine
,
processTime
,
prevtime
,
opMachine
,
chromosome
,
true
,
prevendtime
);
...
@@ -890,6 +901,51 @@ return getOperationBOMTime(currentOp, chromosome);
...
@@ -890,6 +901,51 @@ return getOperationBOMTime(currentOp, chromosome);
}
}
public
void
ClearorderOperationResult
(
Chromosome
chromosome
,
int
groupId
){
List
<
Entry
>
orderOps
=
chromosome
.
getAllOperations
().
stream
()
.
filter
(
t
->
t
.
getGroupId
()
==
groupId
)
.
sorted
(
Comparator
.
comparing
(
Entry:
:
getSequence
))
.
collect
(
Collectors
.
toList
());
for
(
Entry
currentOp
:
orderOps
)
{
GAScheduleResult
existingResult
=
chromosome
.
getResult
().
stream
()
.
filter
(
r
->
r
.
getOperationId
()
==
currentOp
.
getId
())
.
findFirst
().
orElse
(
null
);
if
(
existingResult
==
null
)
{
continue
;
}
Long
machineId
=
existingResult
.
getMachineId
();
Machine
machine
=
chromosome
.
getMachines
().
stream
()
.
filter
(
m
->
m
.
getId
()
==
machineId
)
.
findFirst
()
.
orElse
(
null
);
AddMachineAvailable
(
machine
,
existingResult
.
getGeneDetails
());
chromosome
.
getResult
().
remove
(
existingResult
);
List
<
OrderMaterialRequirement
>
MaterialRequirements
=
currentOp
.
getMaterialRequirements
().
stream
()
.
filter
(
t
->!
"MP"
.
equals
(
t
.
getMaterialTypeName
())
&&
t
.
getProductOrderID
()
!=
null
&&
!
t
.
getProductOrderID
().
isEmpty
()
)
.
collect
(
Collectors
.
toList
());
if
(
MaterialRequirements
==
null
||
MaterialRequirements
.
size
()==
0
)
{
continue
;
}
for
(
OrderMaterialRequirement
orderMaterial:
MaterialRequirements
)
{
List
<
Integer
>
orderids
=
orderMaterial
.
getProductOrderID
();
if
(
orderids
!=
null
&&
orderids
.
size
()>
0
)
{
for
(
Integer
orderid
:
orderids
)
{
ClearorderOperationResult
(
chromosome
,
orderid
);
}
}
}
}
}
public
void
DelOrder
(
Chromosome
chromosome
,
int
groupid
,
OrderMaterialRequirement
orderMaterialRequirement
)
{
public
void
DelOrder
(
Chromosome
chromosome
,
int
groupid
,
OrderMaterialRequirement
orderMaterialRequirement
)
{
List
<
Entry
>
allOperations
=
chromosome
.
getAllOperations
();
List
<
Entry
>
allOperations
=
chromosome
.
getAllOperations
();
List
<
GlobalOperationInfo
>
globalOpList
=
chromosome
.
getGlobalOpList
();
List
<
GlobalOperationInfo
>
globalOpList
=
chromosome
.
getGlobalOpList
();
...
...
src/main/java/com/aps/service/Algorithm/MaterialRequirementService.java
View file @
1d0d9fa2
...
@@ -1296,8 +1296,12 @@ if(headers1==null)
...
@@ -1296,8 +1296,12 @@ if(headers1==null)
List
<
Integer
>
orderids
=
orderMaterial
.
getProductOrderID
();
List
<
Integer
>
orderids
=
orderMaterial
.
getProductOrderID
();
if
(
orderids
!=
null
&&
orderids
.
size
()>
0
)
{
if
(
orderids
!=
null
&&
orderids
.
size
()>
0
)
{
for
(
Integer
orderid
:
orderids
)
{
if
((
allneeded
-
needed
)>
0
)
coder
.
EditorderOperation
(
chromosome
,
orderid
,
needed
);
{
for
(
Integer
orderid
:
orderids
)
{
coder
.
ClearorderOperationResult
(
chromosome
,
orderid
);
coder
.
EditorderOperation
(
chromosome
,
orderid
,
needed
);
}
}
}
}
else
{
}
else
{
List
<
MaterialPurchase
>
materialPurchaseList
=
material
.
getMaterialPurchases
();
List
<
MaterialPurchase
>
materialPurchaseList
=
material
.
getMaterialPurchases
();
...
...
src/main/java/com/aps/service/plan/PlanResultService.java
View file @
1d0d9fa2
...
@@ -776,7 +776,7 @@ public class PlanResultService {
...
@@ -776,7 +776,7 @@ public class PlanResultService {
kpiCalculator
.
calculatekpi
();
kpiCalculator
.
calculatekpi
();
chromosomes
.
setScenarioID
(
SceneId
);
chromosomes
.
setScenarioID
(
SceneId
);
chromosomes
.
setBaseTime
(
param
.
getBaseTime
());
chromosomes
.
setBaseTime
(
param
.
getBaseTime
());
chromosomes
.
setOperatRel
(
new
CopyOnWriteArrayList
<>(
entryRel
));
//
chromosomes.setOperatRel(new CopyOnWriteArrayList<>(entryRel));
// 保存chromosomes到文件
// 保存chromosomes到文件
_sceneService
.
saveChromosomeToFile
(
chromosomes
,
SceneId
);
_sceneService
.
saveChromosomeToFile
(
chromosomes
,
SceneId
);
...
@@ -839,6 +839,7 @@ public class PlanResultService {
...
@@ -839,6 +839,7 @@ public class PlanResultService {
job
.
getChangeOverTime
(),
job
.
getChangeOverTime
(),
ConvertTime
(
job
.
getBomTime
()),
ConvertTime
(
job
.
getBomTime
()),
TargetFinishedOperationIds
TargetFinishedOperationIds
));
));
// 追加基因详情
// 追加基因详情
...
...
src/test/java/com/aps/demo/PlanResultServiceTest.java
View file @
1d0d9fa2
...
@@ -39,7 +39,7 @@ public class PlanResultServiceTest {
...
@@ -39,7 +39,7 @@ public class PlanResultServiceTest {
// TestSortService sortService=new TestSortService();
// TestSortService sortService=new TestSortService();
// sortService.test1();
// sortService.test1();
// nsgaiiUtils.Test();
// nsgaiiUtils.Test();
planResultService
.
execute2
(
"72F484E1E19C4F10A56EABE3A48AD6CD
"
);
planResultService
.
execute2
(
"921BC266191E4812A105E406BF91E812
"
);
// planResultService.execute2("00E0C5D3E4AD4F36B56C39395906618D");
// planResultService.execute2("00E0C5D3E4AD4F36B56C39395906618D");
// planResultService.execute2("726D4C1A712B4B1393175BD44B775B66");
// planResultService.execute2("726D4C1A712B4B1393175BD44B775B66");
...
@@ -49,7 +49,7 @@ public class PlanResultServiceTest {
...
@@ -49,7 +49,7 @@ public class PlanResultServiceTest {
// opids.add(7);
// opids.add(7);
// planResultService.Move("27065EA0ECD14A81B7FAAFEF52273F93",opids,t,1265l,0);
// planResultService.Move("27065EA0ECD14A81B7FAAFEF52273F93",opids,t,1265l,0);
// planResultService.Redecode("27065EA0ECD14A81B7FAAFEF52273F93");
// planResultService.Redecode("27065EA0ECD14A81B7FAAFEF52273F93");
// planResultService.Redecode("00E0C5D3E4AD4F36B56C39395906618D
");
// planResultService.Redecode("921BC266191E4812A105E406BF91E812
");
// planResultService.Drag("27065EA0ECD14A81B7FAAFEF52273F93",opids,6,false,0l);
// planResultService.Drag("27065EA0ECD14A81B7FAAFEF52273F93",opids,6,false,0l);
// MaintenanceWindow maintenanceWindow=new MaintenanceWindow();
// MaintenanceWindow maintenanceWindow=new MaintenanceWindow();
// maintenanceWindow.setStartTime(LocalDateTime.of(2026, 2, 4, 0, 0, 0));
// maintenanceWindow.setStartTime(LocalDateTime.of(2026, 2, 4, 0, 0, 0));
...
...
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