Commit 15b3d7d4 authored by Tong Li's avatar Tong Li

增加实体类

parent 273eaaae
package com.aps.controller.gantt; package com.aps.controller.gantt;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.Gantt.ProductGanttVO; import com.aps.entity.Gantt.ProductGanttVO;
import com.aps.entity.Gantt.ResourceGanttVO; import com.aps.entity.Gantt.ResourceGanttVO;
import com.aps.entity.Gantt.TaskVO; import com.aps.entity.Gantt.TaskVO;
import com.aps.entity.Schedule.MachineVO;
import com.aps.entity.basic.*; import com.aps.entity.basic.*;
import com.aps.service.plan.PlanResultService; import com.aps.service.plan.PlanResultService;
import com.aps.service.plan.PlanSchedulerService; import com.aps.service.plan.PlanSchedulerService;
......
package com.aps.entity.basic; package com.aps.entity.Algorithm;
import com.aps.entity.Algorithm.ScheduleResult;
import com.aps.entity.basic.Machine;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -13,52 +15,52 @@ public class Chromosome { ...@@ -13,52 +15,52 @@ public class Chromosome {
/// <summary> /// <summary>
/// 机器选择部分(可选机器集中的顺序号) /// 机器选择部分(可选机器集中的顺序号)
/// </summary> /// </summary>
public List<Integer> machineSelection; public List<Integer> MachineSelection;
/// <summary> /// <summary>
/// 工序排序部分(工件/订单ID) /// 工序排序部分(工件/订单ID)
/// </summary> /// </summary>
public List<Integer> operationSequencing; public List<Integer> PperationSequencing;
/// <summary> /// <summary>
/// 适应度值 /// 适应度值
/// </summary> /// </summary>
public double fitness; public double Fitness;
/// <summary> /// <summary>
/// 机器 /// 机器
/// </summary> /// </summary>
public List<Machine> machines; public List<Machine> Machines;
/// <summary> /// <summary>
/// 解码后的调度结果 /// 解码后的调度结果
/// </summary> /// </summary>
public List<ScheduleResult> result; public List<ScheduleResult> Result;
/// <summary> /// <summary>
/// 最早完工时间 /// 最早完工时间
/// </summary> /// </summary>
public double makespan; public double Makespan;
/// <summary> /// <summary>
/// 总流程时间 /// 总流程时间
/// </summary> /// </summary>
public double totalFlowTime; public double TotalFlowTime;
/// <summary> /// <summary>
/// 总换型时间 /// 总换型时间
/// </summary> /// </summary>
public double totalChangeoverTime; public double TotalChangeoverTime;
/// <summary> /// <summary>
/// 机器负载标准差(越小越均衡) /// 机器负载标准差(越小越均衡)
/// </summary> /// </summary>
public double machineLoadStd; public double MachineLoadStd;
/// <summary> /// <summary>
/// 交付期延迟时间 /// 交付期延迟时间
/// </summary> /// </summary>
public double delayTime; public double DelayTime;
} }
package com.aps.entity.Algorithm;
import com.aps.entity.basic.Entry;
import lombok.Data;
/**
* 作者:佟礼
* 时间:2025-11-21
*/
@Data
public class GlobalOperationInfo {
/**
* 全局唯一工序ID(0开始递增)
*/
public int GlobalOpId;
/**
* 所属组ID
*/
public int GroupId;
/**
* 订单内工序顺序号
*/
public int Sequence;
/**
* 对应的工序实例
*/
public Entry Op;
}
package com.aps.entity.Algorithm;
import lombok.Data;
/**
* 作者:佟礼
* 时间:2025-11-21
*/
@Data
public class OperationSequencingWeight {
/**
* 工序基因的序号
*/
public int Index ;
/**
* 工序基因的值
*/
public int OsValue;
/**
* 权重
*/
public int Weight;
}
package com.aps.entity.Algorithm;
import com.aps.entity.basic.Entry;
import lombok.Data;
import java.util.Date;
/**
* 作者:佟礼 遗传参数
* 时间:2025-11-21
*/
@Data
public class ScheduleParams {
public Date BaseTime = new Date(); // 当前基准时间
/// <summary>
/// 设备总数
/// </summary>
public int MachineCount; // 设备总数
/// <summary>
/// 交叉概率
/// </summary>
public double CrossoverProb = 0.8;
/// <summary>
/// 变异概率
/// </summary>
public double MutationProb = 0.1; // 变异概率
/// <summary>
/// 种群规模
/// </summary>
public int PopulationSize = 50; // 种群规模
/// <summary>
/// 最大迭代次数
/// </summary>
public int MaxIterations = 100; // 最大迭代次数
/// <summary>
/// 精英保留计数
/// </summary>
public int ElitismCount = 5;
/// <summary>
/// 全局选择占比
/// </summary>
public double GsRatio = 0.4; // 全局选择占比
/// <summary>
/// 局部选择占比
/// </summary>
public double LsRatio = 0.4; // 局部选择占比
/// <summary>
/// 随机选择占比
/// </summary>
public double RsRatio = 0.2; // 随机选择占比
}
package com.aps.entity.Algorithm;
import lombok.Data;
import java.util.List;
/**
* 作者:佟礼
* 时间:2025-11-21
*/
@Data
public class ScheduleResult {
public int GroupId;
public int ProductId;
public int OperationId;
public int MachineId;
public int StartTime; // 相对开始时间(分钟)
public int EndTime; // 相对结束时间(分钟)
public int Quantity; // 批次大小(订单可拆分)
public List<ScheduleResultDetail> GeneDetails; // 时间详情
public int OneTime; // 单件工时
public int ProcessingTime; // 绝对处理时间(分钟)
public int ChangeoverTime;
}
package com.aps.entity.basic; package com.aps.entity.Algorithm;
import lombok.Data; import lombok.Data;
...@@ -8,7 +8,7 @@ import lombok.Data; ...@@ -8,7 +8,7 @@ import lombok.Data;
*/ */
@Data @Data
public class ScheduleResultDetail { public class ScheduleResultDetail {
public String key; public String Key;
public int startTime; // 相对开始时间(分钟) public int StartTime; // 相对开始时间(分钟)
public int endTime; // 相对结束时间(分钟) public int EndTime; // 相对结束时间(分钟)
} }
...@@ -17,24 +17,24 @@ public class MaterialRequirement { ...@@ -17,24 +17,24 @@ public class MaterialRequirement {
/** /**
* 物料ID * 物料ID
*/ */
public int materialId; public int MaterialId;
/** /**
* 物料类型 * 物料类型
*/ */
public MaterialType materialType; public MaterialType MaterialType;
/** /**
* 该工序需要的物料数量 * 该工序需要的物料数量
*/ */
public BigDecimal requiredQuantity; public BigDecimal RequiredQuantity;
@Override @Override
public String toString() { public String toString() {
return "MaterialRequirement{" + return "MaterialRequirement{" +
"materialId=" + materialId + "materialId=" + MaterialId +
", materialType=" + materialType + ", materialType=" + MaterialType +
", requiredQuantity=" + requiredQuantity + ", requiredQuantity=" + RequiredQuantity +
'}'; '}';
} }
} }
......
...@@ -17,24 +17,24 @@ public class MaterialSupply { ...@@ -17,24 +17,24 @@ public class MaterialSupply {
/** /**
* 物料ID * 物料ID
*/ */
public int materialId; public int MaterialId;
/** /**
* 数量 * 数量
*/ */
public double quantity; public double Quantity;
/** /**
* 预计到货时间 * 预计到货时间
*/ */
public LocalDateTime arrivalTime; public LocalDateTime ArrivalTime;
@Override @Override
public String toString() { public String toString() {
return "MaterialSupply{" + return "MaterialSupply{" +
"materialId=" + materialId + "materialId=" + MaterialId +
", quantity=" + quantity + ", quantity=" + Quantity +
", arrivalTime=" + arrivalTime + ", arrivalTime=" + ArrivalTime +
'}'; '}';
} }
} }
package com.aps.entity.basic; package com.aps.entity.basic;
import com.aps.entity.basic.Gene;
import com.aps.entity.basic.Machine;
import com.aps.entity.basic.Order;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
......
package com.aps.entity.basic;
import lombok.Data;
import java.util.List;
/**
* 作者:佟礼
* 时间:2025-11-21
*/
@Data
public class ScheduleResult {
public int groupId;
public int productId;
public int operationId;
public int machineId;
public int startTime; // 相对开始时间(分钟)
public int endTime; // 相对结束时间(分钟)
public int quantity; // 批次大小(订单可拆分)
public List<ScheduleResultDetail> geneDetails; // 时间详情
public int oneTime; // 单件工时
public int processingTime; // 绝对处理时间(分钟)
public int changeoverTime;
}
package com.aps.service.Algorithm; package com.aps.service.Algorithm;
import com.aps.entity.basic.ScheduleChromosome;
/** /**
* 作者:佟礼 * 作者:佟礼
* 时间:2025-11-21 * 时间:2025-11-21
......
...@@ -3,6 +3,7 @@ package com.aps.service.plan; ...@@ -3,6 +3,7 @@ package com.aps.service.plan;
import com.aps.common.util.FileHelper; import com.aps.common.util.FileHelper;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.basic.*; import com.aps.entity.basic.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
......
...@@ -3,6 +3,7 @@ package com.aps.service.plan; ...@@ -3,6 +3,7 @@ package com.aps.service.plan;
import com.aps.common.util.FileHelper; import com.aps.common.util.FileHelper;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.basic.*; import com.aps.entity.basic.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
......
...@@ -2,9 +2,11 @@ package com.aps.service.plan; ...@@ -2,9 +2,11 @@ package com.aps.service.plan;
import com.aps.common.util.JsonFileReader; import com.aps.common.util.JsonFileReader;
import com.aps.controller.gantt.FileUploadController; import com.aps.controller.gantt.FileUploadController;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.Schedule.GenVO; 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.Algorithm.GeneticAlgorithm;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -141,8 +143,10 @@ public class PlanResultService { ...@@ -141,8 +143,10 @@ public class PlanResultService {
} }
// 5. 执行调度算法 // 5. 执行调度算法
AlgorithmScheduler7 scheduler = new AlgorithmScheduler7(products, machines, orders, machineScheduler); GeneticAlgorithm scheduler =new GeneticAlgorithm(); //new GeneticAlgorithm(products, machines, orders, machineScheduler);
List<ScheduleChromosome> scheduleChromosomes = scheduler.RunAll(); List<ScheduleChromosome> scheduleChromosomes =null;
scheduler.Run();
// 对调度结果按照 fitness 由高到低排序 // 对调度结果按照 fitness 由高到低排序
scheduleChromosomes.sort((c1, c2) -> Double.compare(c2.getFitness(), c1.getFitness())); scheduleChromosomes.sort((c1, c2) -> Double.compare(c2.getFitness(), c1.getFitness()));
......
package com.aps.service.plan; package com.aps.service.plan;
import com.aps.common.util.JsonFileReader; import com.aps.common.util.JsonFileReader;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.Schedule.GenVO; import com.aps.entity.Schedule.GenVO;
import com.aps.entity.Schedule.MachineVO; import com.aps.entity.Schedule.MachineVO;
import com.aps.entity.Schedule.PlanResourceTaskGanttVO; import com.aps.entity.Schedule.PlanResourceTaskGanttVO;
......
...@@ -2,8 +2,8 @@ package com.aps.demo; ...@@ -2,8 +2,8 @@ package com.aps.demo;
import com.aps.common.util.JsonFileReader; import com.aps.common.util.JsonFileReader;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.basic.*; import com.aps.entity.basic.*;
import com.aps.service.plan.AlgorithmScheduler6;
import com.aps.service.plan.AlgorithmScheduler7; import com.aps.service.plan.AlgorithmScheduler7;
import com.aps.service.plan.MachineSchedulerService; import com.aps.service.plan.MachineSchedulerService;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment