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
b0d9e31b
Commit
b0d9e31b
authored
Dec 11, 2025
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
2cda60b4
e647dc92
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
407 additions
and
5 deletions
+407
-5
Chromosome.java
src/main/java/com/aps/entity/Algorithm/Chromosome.java
+41
-0
ConfigSetting.java
src/main/java/com/aps/entity/ConfigSetting.java
+15
-0
StrategyScheduling.java
src/main/java/com/aps/entity/StrategyScheduling.java
+13
-0
Machine.java
src/main/java/com/aps/entity/basic/Machine.java
+4
-0
Order.java
src/main/java/com/aps/entity/basic/Order.java
+8
-0
KpiCalculator.java
src/main/java/com/aps/service/Algorithm/KpiCalculator.java
+291
-0
ScheduleOperationService.java
...a/com/aps/service/Algorithm/ScheduleOperationService.java
+4
-0
PlanResultService.java
src/main/java/com/aps/service/plan/PlanResultService.java
+31
-5
No files found.
src/main/java/com/aps/entity/Algorithm/Chromosome.java
View file @
b0d9e31b
...
@@ -115,4 +115,45 @@ public class Chromosome {
...
@@ -115,4 +115,45 @@ public class Chromosome {
private
String
ScenarioName
;
private
String
ScenarioName
;
private
LocalDateTime
BaseTime
;
// 当前基准时间
private
LocalDateTime
BaseTime
;
// 当前基准时间
//最大设备利用率
private
double
machineMaxRate
;
//最小设备利用率
private
double
machineMinRate
;
//设备等待时长
private
double
machineWaitTime
;
//订单及时完成率
private
double
orderOnTime
;
//最大延迟
private
double
orderMaxDelay
;
//最小延迟
private
double
orderMinDelay
;
//平均延迟
private
double
orderAvgDelay
;
//最长生产周期
private
double
orderMaxProductTime
;
//最短生产周期
private
double
orderMinProductTime
;
//平均生产周期
private
double
orderAvgProductTime
;
//最大流量
private
double
orderMaxFlow
;
//最小流量
private
double
orderMinFlow
;
//平均流量
private
double
orderAvgFlow
;
}
}
src/main/java/com/aps/entity/ConfigSetting.java
0 → 100644
View file @
b0d9e31b
package
com
.
aps
.
entity
;
import
lombok.Data
;
/**
* 作者:佟礼
* 时间:2025-12-10
*/
@Data
public
class
ConfigSetting
{
private
int
id
;
private
String
title
;
private
boolean
value
;
private
String
content
;
}
src/main/java/com/aps/entity/StrategyScheduling.java
0 → 100644
View file @
b0d9e31b
package
com
.
aps
.
entity
;
/**
* 作者:佟礼
* 时间:2025-12-10
*/
public
class
StrategyScheduling
{
private
String
name
;
private
String
title
;
private
String
content
;
private
int
amplitude
;
private
boolean
value
;
}
src/main/java/com/aps/entity/basic/Machine.java
View file @
b0d9e31b
...
@@ -19,6 +19,10 @@ public class Machine {
...
@@ -19,6 +19,10 @@ public class Machine {
private
List
<
Holiday
>
holidays
;
private
List
<
Holiday
>
holidays
;
private
double
actualWorkTime
;
private
double
rate
;
// 事件回调
// 事件回调
private
Consumer
<
Void
>
shiftsChanged
;
private
Consumer
<
Void
>
shiftsChanged
;
private
Consumer
<
Void
>
maintenanceWindowsChanged
;
private
Consumer
<
Void
>
maintenanceWindowsChanged
;
...
...
src/main/java/com/aps/entity/basic/Order.java
View file @
b0d9e31b
...
@@ -22,6 +22,12 @@ public class Order {
...
@@ -22,6 +22,12 @@ public class Order {
private
LocalDateTime
dueDate
;
private
LocalDateTime
dueDate
;
private
LocalDateTime
orderCompletion
;
private
LocalDateTime
orderCompletion
;
private
LocalDateTime
orderStart
;
private
double
machineProcessingTime
;
private
double
orderFlow
;
private
double
orderProductTime
;
private
double
tardiness
;
private
double
tardiness
;
private
int
priority
;
private
int
priority
;
private
boolean
canSplit
=
false
;
private
boolean
canSplit
=
false
;
...
@@ -30,4 +36,6 @@ public class Order {
...
@@ -30,4 +36,6 @@ public class Order {
private
String
mainId
;
private
String
mainId
;
/*使用这个半成品的成品工单*/
/*使用这个半成品的成品工单*/
public
List
<
String
>
FinishOrderId
;
public
List
<
String
>
FinishOrderId
;
private
double
delayHours
;
//延迟时间
}
}
\ No newline at end of file
src/main/java/com/aps/service/Algorithm/KpiCalculator.java
0 → 100644
View file @
b0d9e31b
package
com
.
aps
.
service
.
Algorithm
;
import
com.aps.entity.Algorithm.Chromosome
;
import
com.aps.entity.Algorithm.GAScheduleResult
;
import
com.aps.entity.basic.Machine
;
import
com.aps.entity.basic.Order
;
import
com.aps.entity.basic.TimeSegment
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
import
java.util.Comparator
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* 作者:佟礼
* 时间:2025-12-10
*/
public
class
KpiCalculator
{
private
Chromosome
chromosome
;
private
LocalDateTime
baseTime
;
public
KpiCalculator
(
Chromosome
_chromosome
)
{
chromosome
=
_chromosome
;
baseTime
=
_chromosome
.
getBaseTime
();
}
public
void
calculatekpi
()
{
calculateMachine
();
calculateOrder
();
//最大设备利用率
double
machineMaxRate
=
chromosome
.
getMachines
().
stream
()
.
mapToDouble
(
Machine:
:
getRate
)
.
max
()
.
orElse
(
0
);
chromosome
.
setMachineMaxRate
(
machineMaxRate
);
//最小设备利用率
double
machineMinRate
=
chromosome
.
getMachines
().
stream
()
.
mapToDouble
(
Machine:
:
getRate
)
.
min
()
.
orElse
(
0
);
chromosome
.
setMachineMinRate
(
machineMinRate
);
double
machineActualWorkTime
=
chromosome
.
getMachines
().
stream
()
.
mapToDouble
(
Machine:
:
getActualWorkTime
)
.
sum
();
double
machineallWorkTime
=
calculateAllTimeSegmentsTotalDuration
();
chromosome
.
setMachineWaitTime
((
machineallWorkTime
-
machineActualWorkTime
)/
60
/
60
);
// 订单按时完成的数量
double
orderNoDelayCount
=
chromosome
.
getOrders
().
stream
()
.
filter
(
t
->
t
.
getDelayHours
()
<=
0
)
.
count
();
//
double
orderOnTime
=
Math
.
round
(
orderNoDelayCount
/
chromosome
.
getOrders
().
size
()
*
10000
)
/
10000
*
100
;
chromosome
.
setOrderOnTime
(
orderOnTime
);
//最大延迟
double
OrderMaxDelay
=
chromosome
.
getOrders
().
stream
()
.
mapToDouble
(
Order:
:
getDelayHours
)
.
max
()
.
orElse
(
0
);
chromosome
.
setOrderMaxDelay
(
OrderMaxDelay
);
//最小延迟
double
OrderMinDelay
=
chromosome
.
getOrders
().
stream
()
.
mapToDouble
(
Order:
:
getDelayHours
)
.
min
()
.
orElse
(
0
);
chromosome
.
setOrderMinDelay
(
OrderMinDelay
);
double
OrderSumDelay
=
chromosome
.
getOrders
().
stream
()
.
mapToDouble
(
Order:
:
getDelayHours
)
.
sum
();
//平均延迟
double
OrderDelay
=
Math
.
round
(
OrderSumDelay
/
chromosome
.
getOrders
().
size
()
*
100
)
/
100
;
chromosome
.
setOrderAvgDelay
(
OrderDelay
);
//最长生产周期
double
OrderMaxProductTime
=
chromosome
.
getOrders
().
stream
()
.
mapToDouble
(
Order:
:
getOrderProductTime
)
.
max
()
.
orElse
(
0
);
chromosome
.
setOrderMaxProductTime
(
OrderMaxProductTime
);
//最小生产周期
double
OrderMinProductTime
=
chromosome
.
getOrders
().
stream
()
.
mapToDouble
(
Order:
:
getOrderProductTime
)
.
min
()
.
orElse
(
0
);
chromosome
.
setOrderMinProductTime
(
OrderMinProductTime
);
double
OrderSumProductTime
=
chromosome
.
getOrders
().
stream
()
.
mapToDouble
(
Order:
:
getOrderProductTime
)
.
sum
();
//平均生产周期
double
OrderProductTime
=
Math
.
round
(
OrderSumProductTime
/
chromosome
.
getOrders
().
size
()
*
100
)
/
100
;
chromosome
.
setOrderAvgProductTime
(
OrderProductTime
);
//最大流量
double
OrderMaxFlow
=
chromosome
.
getOrders
().
stream
()
.
mapToDouble
(
Order:
:
getOrderFlow
)
.
max
()
.
orElse
(
0
);
chromosome
.
setOrderMaxFlow
(
OrderMaxFlow
);
//最小流量
double
OrderMinFlow
=
chromosome
.
getOrders
().
stream
()
.
mapToDouble
(
Order:
:
getOrderFlow
)
.
min
()
.
orElse
(
0
);
chromosome
.
setOrderMinFlow
(
OrderMinFlow
);
double
OrderSumFlow
=
chromosome
.
getOrders
().
stream
()
.
mapToDouble
(
Order:
:
getDelayHours
)
.
sum
();
//平均流量
double
OrderFlow
=
Math
.
round
(
OrderSumFlow
/
chromosome
.
getOrders
().
size
()
*
100
)
/
100
;
chromosome
.
setOrderAvgFlow
(
OrderFlow
);
}
/**
* 计算每台设备的利用率(实际工作时间/计划工作时间)
*
* @return 设备ID与利用率的Map
*/
private
void
calculateMachine
()
{
// 按设备ID分组工序列表(对应C# GroupBy + ToList)
Map
<
Long
,
List
<
GAScheduleResult
>>
machineTasks
=
chromosome
.
getResult
().
stream
()
.
collect
(
Collectors
.
groupingBy
(
GAScheduleResult:
:
getMachineId
));
// 计划工作时间:最后一个任务结束时间 - 第一个任务开始时间
int
firstTaskStart
=
chromosome
.
getResult
().
stream
()
.
mapToInt
(
GAScheduleResult:
:
getStartTime
)
.
max
()
.
orElse
(
0
);
int
lastTaskEnd
=
chromosome
.
getResult
().
stream
()
.
mapToInt
(
GAScheduleResult:
:
getEndTime
)
.
max
()
.
orElse
(
0
);
double
plannedWorkTime
=
lastTaskEnd
-
firstTaskStart
;
// 遍历每个设备的任务组计算利用率
for
(
Map
.
Entry
<
Long
,
List
<
GAScheduleResult
>>
entry
:
machineTasks
.
entrySet
())
{
Long
machineId
=
entry
.
getKey
();
List
<
GAScheduleResult
>
tasks
=
entry
.
getValue
();
// 按开始时间排序(对应C# OrderBy + ToList)
List
<
GAScheduleResult
>
sortedTasks
=
tasks
.
stream
()
.
sorted
(
Comparator
.
comparingInt
(
GAScheduleResult:
:
getStartTime
))
.
collect
(
Collectors
.
toList
());
// 计算实际工作时间:所有任务加工时间总和
double
actualWorkTime
=
sortedTasks
.
stream
()
.
mapToDouble
(
GAScheduleResult:
:
getProcessingTime
)
.
sum
();
Machine
machine
=
chromosome
.
getMachines
().
stream
()
.
filter
(
t
->
t
.
getId
()==
machineId
)
.
findFirst
()
.
orElse
(
null
);
if
(
machine
==
null
)
{
continue
;
}
machine
.
setActualWorkTime
(
actualWorkTime
);
// // 计划工作时间:最后一个任务结束时间 - 第一个任务开始时间
// int firstTaskStart = sortedTasks.get(0).getStartTime();
// int lastTaskEnd = sortedTasks.get(sortedTasks.size() - 1).getEndTime();
// double plannedWorkTime = lastTaskEnd - firstTaskStart;
double
rate
=
Math
.
round
((
actualWorkTime
/
plannedWorkTime
)
*
10000
)
/
10000.0
*
100
;
machine
.
setRate
(
rate
);
}
}
/**
* 计算每个订单
*
* @return 订单ID与延迟时间(小时)的Map
*/
private
void
calculateOrder
()
{
// 按GroupId(订单ID)分组 - 对应C#的GroupBy
Map
<
String
,
List
<
GAScheduleResult
>>
orderGroups
=
chromosome
.
getResult
().
stream
()
.
collect
(
Collectors
.
groupingBy
(
GAScheduleResult:
:
getOrderId
));
for
(
Map
.
Entry
<
String
,
List
<
GAScheduleResult
>>
entry
:
orderGroups
.
entrySet
())
{
String
orderId
=
entry
.
getKey
();
List
<
GAScheduleResult
>
processList
=
entry
.
getValue
();
// 订单实际完工时间(该订单所有工序的最大结束时间)
int
orderCompletion
=
processList
.
stream
()
.
mapToInt
(
GAScheduleResult:
:
getEndTime
)
.
max
()
.
orElse
(
0
);
// 订单实际开工时间(该订单所有工序的最早开工时间)
int
orderStart
=
processList
.
stream
()
.
mapToInt
(
GAScheduleResult:
:
getStartTime
)
.
min
()
.
orElse
(
0
);
LocalDateTime
actualCompletionTime
=
baseTime
.
plusSeconds
(
orderCompletion
);
LocalDateTime
actualStartTime
=
baseTime
.
plusSeconds
(
orderStart
);
double
orderProcessingTime
=
processList
.
stream
()
.
mapToDouble
(
GAScheduleResult:
:
getProcessingTime
)
.
sum
();
Order
order
=
chromosome
.
getOrders
().
stream
()
.
filter
(
t
->
t
.
getOrderId
()==
orderId
)
.
findFirst
()
.
orElse
(
null
);
if
(
order
==
null
)
{
continue
;
}
order
.
setOrderCompletion
(
actualCompletionTime
);
order
.
setOrderStart
(
actualStartTime
);
order
.
setMachineProcessingTime
(
orderProcessingTime
);
Duration
Orderduration
=
Duration
.
between
(
actualCompletionTime
,
actualStartTime
);
double
orderProductTime
=
Orderduration
.
getSeconds
();
order
.
setOrderProductTime
(
orderProductTime
/
60
/
60
);
double
flow
=
Math
.
round
(
orderProcessingTime
/
orderProductTime
*
10000
)/
10000
*
100
;
order
.
setOrderFlow
(
flow
);
// 计算延迟时间(若提前完成则延迟为0)
if
(
actualCompletionTime
.
isAfter
(
order
.
getDueDate
()))
{
Duration
duration
=
Duration
.
between
(
order
.
getDueDate
(),
actualCompletionTime
);
double
delayHours
=
duration
.
toMinutes
()
/
60.0
;
// 转换为小时
order
.
setDelayHours
(
delayHours
);
}
else
{
Duration
duration
=
Duration
.
between
(
actualCompletionTime
,
order
.
getDueDate
());
double
delayHours
=
duration
.
toMinutes
()
/
60.0
;
// 转换为小时
order
.
setDelayHours
(
0
-
delayHours
);
}
}
}
/**
* 计算所有机器的所有TimeSegment时间段总时长(返回总秒数,便于转换单位)
*
* @return 所有时间段的总时长(秒)
*/
public
long
calculateAllTimeSegmentsTotalDuration
()
{
// 初始化总时长(秒)
long
totalSeconds
=
0
;
// 遍历每台机器
for
(
Machine
machine
:
chromosome
.
getMachines
())
{
// 空值保护:若当前机器的时间段列表为空/Null,跳过
if
(
machine
.
getAvailability
()
==
null
||
machine
.
getAvailability
().
isEmpty
())
{
continue
;
}
// 遍历当前机器的所有时间段,累加时长
for
(
TimeSegment
segment
:
machine
.
getAvailability
())
{
// 空值保护:跳过无效的时间段(开始/结束时间为Null)
if
(
segment
.
getStart
()
==
null
||
segment
.
getEnd
()
==
null
)
{
continue
;
}
// 计算单个时间段的时长(秒),确保结束时间≥开始时间
LocalDateTime
start
=
segment
.
getStart
();
LocalDateTime
end
=
segment
.
getEnd
();
long
segmentSeconds
=
Math
.
max
(
0
,
Duration
.
between
(
start
,
end
).
getSeconds
());
totalSeconds
+=
segmentSeconds
;
}
}
return
totalSeconds
;
}
}
src/main/java/com/aps/service/Algorithm/ScheduleOperationService.java
View file @
b0d9e31b
...
@@ -650,6 +650,10 @@ public class ScheduleOperationService {
...
@@ -650,6 +650,10 @@ public class ScheduleOperationService {
decoder
.
decode
(
chromosome
);
decoder
.
decode
(
chromosome
);
KpiCalculator
kpiCalculator
=
new
KpiCalculator
(
chromosome
);
kpiCalculator
.
calculatekpi
();
// if(chromosome.getWeightedObjective()==0) {
// if(chromosome.getWeightedObjective()==0) {
//
//
// double[] normalized = objectiveWeights.normalizeObjectives(chromosome.getObjectives(), null, null);
// double[] normalized = objectiveWeights.normalizeObjectives(chromosome.getObjectives(), null, null);
...
...
src/main/java/com/aps/service/plan/PlanResultService.java
View file @
b0d9e31b
...
@@ -13,10 +13,7 @@ import com.aps.entity.Schedule.GenVO;
...
@@ -13,10 +13,7 @@ import com.aps.entity.Schedule.GenVO;
import
com.aps.entity.Schedule.MachineVO
;
import
com.aps.entity.Schedule.MachineVO
;
import
com.aps.entity.basic.*
;
import
com.aps.entity.basic.*
;
import
com.aps.service.*
;
import
com.aps.service.*
;
import
com.aps.service.Algorithm.GeneticAlgorithm
;
import
com.aps.service.Algorithm.*
;
import
com.aps.service.Algorithm.IdGroupingWithDualSerial
;
import
com.aps.service.Algorithm.RoutingDataService
;
import
com.aps.service.Algorithm.ScheduleOperationService
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -73,6 +70,16 @@ public class PlanResultService {
...
@@ -73,6 +70,16 @@ public class PlanResultService {
@Autowired
@Autowired
private
RoutingDataService
_routingDataService
;
private
RoutingDataService
_routingDataService
;
@Autowired
private
ConfigService
_configService
;
@Autowired
private
StrategyRuleService
_strategyRuleService
;
private
LocalDateTime
baseTime
=
LocalDateTime
.
of
(
2025
,
11
,
1
,
0
,
0
,
0
);
private
LocalDateTime
baseTime
=
LocalDateTime
.
of
(
2025
,
11
,
1
,
0
,
0
,
0
);
public
List
<
ScheduleChromosome
>
execute
()
{
public
List
<
ScheduleChromosome
>
execute
()
{
...
@@ -305,12 +312,27 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
...
@@ -305,12 +312,27 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
List
<
Entry
>
entrys
=(
List
<
Entry
>)
list
.
get
(
1
);
List
<
Entry
>
entrys
=(
List
<
Entry
>)
list
.
get
(
1
);
List
<
GroupResult
>
entryRel
=(
List
<
GroupResult
>)
list
.
get
(
2
);
List
<
GroupResult
>
entryRel
=(
List
<
GroupResult
>)
list
.
get
(
2
);
Config
config
=
_configService
.
lambdaQuery
()
.
eq
(
Config:
:
getComponent
,
"setting"
)
.
one
();
StrategyRule
strategyRules
=
_strategyRuleService
.
lambdaQuery
()
.
eq
(
StrategyRule:
:
getIsDeleted
,
0
)
.
eq
(
StrategyRule:
:
getIsGlobal
,
1
)
.
one
();
GlobalParam
globalParam
=
new
GlobalParam
();
GlobalParam
globalParam
=
new
GlobalParam
();
// 5. 执行调度算法
// 5. 执行调度算法
GeneticAlgorithm
scheduler
=
new
GeneticAlgorithm
(
globalParam
,
machines
,
orders
,
null
,
machineScheduler
,
entryRel
);
//new GeneticAlgorithm(products, machines, orders, machineScheduler);
GeneticAlgorithm
scheduler
=
new
GeneticAlgorithm
(
globalParam
,
machines
,
orders
,
null
,
machineScheduler
,
entryRel
);
//new GeneticAlgorithm(products, machines, orders, machineScheduler);
param
.
initAdaptiveParams
(
entrys
.
size
());
param
.
initAdaptiveParams
(
entrys
.
size
());
double
[]
customWeights
=
new
double
[]
{
0.2
,
0.1
,
0.1
,
0.1
,
0.5
};
// 延迟时间权重提升到0.5
scheduler
.
Init
(
null
,
false
);
Chromosome
chromosome
=
scheduler
.
Run
(
param
,
entrys
);
Chromosome
chromosome
=
scheduler
.
Run
(
param
,
entrys
);
KpiCalculator
kpiCalculator
=
new
KpiCalculator
(
chromosome
);
kpiCalculator
.
calculatekpi
();
_sceneService
.
saveChromosomeToFile
(
chromosome
,
SceneId
);
_sceneService
.
saveChromosomeToFile
(
chromosome
,
SceneId
);
// Chromosomes.forEach(this::WriteScheduleSummary);
// Chromosomes.forEach(this::WriteScheduleSummary);
...
@@ -523,8 +545,12 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
...
@@ -523,8 +545,12 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
// 5. 执行调度算法
// 5. 执行调度算法
GeneticAlgorithm
scheduler
=
new
GeneticAlgorithm
(
globalParam
,
machines
,
orders
,
null
,
machineScheduler
,
entryRel
);
//new GeneticAlgorithm(products, machines, orders, machineScheduler);
GeneticAlgorithm
scheduler
=
new
GeneticAlgorithm
(
globalParam
,
machines
,
orders
,
null
,
machineScheduler
,
entryRel
);
//new GeneticAlgorithm(products, machines, orders, machineScheduler);
param
.
initAdaptiveParams
(
entrys
.
size
());
param
.
initAdaptiveParams
(
entrys
.
size
());
Chromosome
chromosomes
=
scheduler
.
Run
(
param
,
entrys
);
// double[] customWeights = new double[] { 0.2, 0.1, 0.1, 0.1, 0.5 }; // 延迟时间权重提升到0.5
scheduler
.
Init
(
null
,
true
);
Chromosome
chromosomes
=
scheduler
.
Run
(
param
,
entrys
);
KpiCalculator
kpiCalculator
=
new
KpiCalculator
(
chromosomes
);
kpiCalculator
.
calculatekpi
();
chromosomes
.
setScenarioID
(
SceneId
);
chromosomes
.
setScenarioID
(
SceneId
);
chromosomes
.
setBaseTime
(
param
.
getBaseTime
());
chromosomes
.
setBaseTime
(
param
.
getBaseTime
());
chromosomes
.
setOperatRel
(
entryRel
);
chromosomes
.
setOperatRel
(
entryRel
);
...
...
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