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

增加实体类

parent 273eaaae
package com.aps.controller.gantt;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.Gantt.ProductGanttVO;
import com.aps.entity.Gantt.ResourceGanttVO;
import com.aps.entity.Gantt.TaskVO;
import com.aps.entity.Schedule.MachineVO;
import com.aps.entity.basic.*;
import com.aps.service.plan.PlanResultService;
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 java.util.List;
......@@ -13,52 +15,52 @@ public class Chromosome {
/// <summary>
/// 机器选择部分(可选机器集中的顺序号)
/// </summary>
public List<Integer> machineSelection;
public List<Integer> MachineSelection;
/// <summary>
/// 工序排序部分(工件/订单ID)
/// </summary>
public List<Integer> operationSequencing;
public List<Integer> PperationSequencing;
/// <summary>
/// 适应度值
/// </summary>
public double fitness;
public double Fitness;
/// <summary>
/// 机器
/// </summary>
public List<Machine> machines;
public List<Machine> Machines;
/// <summary>
/// 解码后的调度结果
/// </summary>
public List<ScheduleResult> result;
public List<ScheduleResult> Result;
/// <summary>
/// 最早完工时间
/// </summary>
public double makespan;
public double Makespan;
/// <summary>
/// 总流程时间
/// </summary>
public double totalFlowTime;
public double TotalFlowTime;
/// <summary>
/// 总换型时间
/// </summary>
public double totalChangeoverTime;
public double TotalChangeoverTime;
/// <summary>
/// 机器负载标准差(越小越均衡)
/// </summary>
public double machineLoadStd;
public double MachineLoadStd;
/// <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;
......@@ -8,7 +8,7 @@ import lombok.Data;
*/
@Data
public class ScheduleResultDetail {
public String key;
public int startTime; // 相对开始时间(分钟)
public int endTime; // 相对结束时间(分钟)
public String Key;
public int StartTime; // 相对开始时间(分钟)
public int EndTime; // 相对结束时间(分钟)
}
......@@ -17,24 +17,24 @@ public class MaterialRequirement {
/**
* 物料ID
*/
public int materialId;
public int MaterialId;
/**
* 物料类型
*/
public MaterialType materialType;
public MaterialType MaterialType;
/**
* 该工序需要的物料数量
*/
public BigDecimal requiredQuantity;
public BigDecimal RequiredQuantity;
@Override
public String toString() {
return "MaterialRequirement{" +
"materialId=" + materialId +
", materialType=" + materialType +
", requiredQuantity=" + requiredQuantity +
"materialId=" + MaterialId +
", materialType=" + MaterialType +
", requiredQuantity=" + RequiredQuantity +
'}';
}
}
......
......@@ -17,24 +17,24 @@ public class MaterialSupply {
/**
* 物料ID
*/
public int materialId;
public int MaterialId;
/**
* 数量
*/
public double quantity;
public double Quantity;
/**
* 预计到货时间
*/
public LocalDateTime arrivalTime;
public LocalDateTime ArrivalTime;
@Override
public String toString() {
return "MaterialSupply{" +
"materialId=" + materialId +
", quantity=" + quantity +
", arrivalTime=" + arrivalTime +
"materialId=" + MaterialId +
", quantity=" + Quantity +
", arrivalTime=" + ArrivalTime +
'}';
}
}
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 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;
import com.aps.entity.basic.ScheduleChromosome;
/**
* 作者:佟礼
* 时间:2025-11-21
......
......@@ -3,6 +3,7 @@ package com.aps.service.plan;
import com.aps.common.util.FileHelper;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.basic.*;
import java.time.LocalDateTime;
......
......@@ -3,6 +3,7 @@ package com.aps.service.plan;
import com.aps.common.util.FileHelper;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.basic.*;
import java.time.LocalDateTime;
......
......@@ -2,9 +2,11 @@ package com.aps.service.plan;
import com.aps.common.util.JsonFileReader;
import com.aps.controller.gantt.FileUploadController;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.Schedule.GenVO;
import com.aps.entity.Schedule.MachineVO;
import com.aps.entity.basic.*;
import com.aps.service.Algorithm.GeneticAlgorithm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -141,8 +143,10 @@ public class PlanResultService {
}
// 5. 执行调度算法
AlgorithmScheduler7 scheduler = new AlgorithmScheduler7(products, machines, orders, machineScheduler);
List<ScheduleChromosome> scheduleChromosomes = scheduler.RunAll();
GeneticAlgorithm scheduler =new GeneticAlgorithm(); //new GeneticAlgorithm(products, machines, orders, machineScheduler);
List<ScheduleChromosome> scheduleChromosomes =null;
scheduler.Run();
// 对调度结果按照 fitness 由高到低排序
scheduleChromosomes.sort((c1, c2) -> Double.compare(c2.getFitness(), c1.getFitness()));
......
package com.aps.service.plan;
import com.aps.common.util.JsonFileReader;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.Schedule.GenVO;
import com.aps.entity.Schedule.MachineVO;
import com.aps.entity.Schedule.PlanResourceTaskGanttVO;
......
......@@ -2,8 +2,8 @@ package com.aps.demo;
import com.aps.common.util.JsonFileReader;
import com.aps.entity.basic.ScheduleChromosome;
import com.aps.entity.basic.*;
import com.aps.service.plan.AlgorithmScheduler6;
import com.aps.service.plan.AlgorithmScheduler7;
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