# aps-tt **Repository Path**: ypier_coder/aps-tt ## Basic Information - **Project Name**: aps-tt - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-01 - **Last Updated**: 2025-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 高级生产排程系统 (APS) 本系统是一个基于OptaPlanner的高级生产排程系统(Advanced Planning and Scheduling),用于解决离散制造业的排程问题。 ## 功能特点 - **基于约束的排程**: 使用OptaPlanner的ConstraintProvider实现复杂的排程约束 - **基础数据管理**: 支持工作中心、设备、工作日历、产品、BOM和工艺路线等基础数据管理 - **多策略排程**: 支持多种排程策略,包括根据交期倒排、订单自动分批、最少设备使用等 - **实时插单**: 支持在已有排程中插入新订单,自动重新优化排程 - **工作日历约束**: 根据工作中心的工作日历安排生产 - **设备可用性约束**: 只有在设备可用状态时才可以安排生产 - **工序前置约束**: 考虑工序之间的前后依赖关系 ## 技术栈 - Java 11 - Spring Boot 2.7.12 - OptaPlanner 8.36.0 - MyBatis Plus 3.5.3 - H2 Database ## 核心模型 ### 排程约束 系统实现了以下约束: - **硬约束**(必须满足): - 设备冲突: 同一设备在同一时间不能安排多个作业 - 设备可用性: 只有设备在可用状态时才可以安排作业 - 工序顺序: 前序工序必须在后续工序之前完成 - 设备兼容性: 作业必须分配到正确工作中心的设备上 - **中等约束**(尽量满足): - 满足交期: 尽量按时完成订单 - 最大生产量: 尊重每日最大生产数量限制 - **软约束**(优化目标): - 最小化设备使用: 尽量使用最少的设备 - 最小化完工时间: 尽量减少总的生产周期 - 优先较早开始: 尽量早开始作业 ### 排程策略 系统支持以下排程策略: 1. **根据交期倒排**: 从交期往前安排工序,确保按时交付 2. **自动分单**: 将大批量订单拆分为小批次,每个单子最多承载固定数量 3. **最少设备原则**: 优先使用最少的设备,提高设备利用率 4. **单台设备每天最多生产固定数量**: 限制单台设备的日产量 ## API接口 系统提供以下REST API接口: - `POST /api/scheduling/schedule-orders`: 对指定订单进行排程 - `POST /api/scheduling/schedule-all-pending`: 排程所有待处理订单 - `POST /api/scheduling/apply`: 应用排程结果 - `POST /api/scheduling/insert-order/{orderId}`: 插入新订单 - `GET /api/scheduling/by-time-range`: 获取指定时间范围内的排程 ## 快速开始 ### 环境要求 - JDK 11或更高版本 - Maven 3.6或更高版本 ### 构建与运行 ```bash # 克隆项目 git clone https://github.com/yourusername/fd-aps.git cd fd-aps # 编译 mvn clean package # 运行 java -jar target/fd-aps-1.0-SNAPSHOT.jar ``` ### 演示模式 我们提供了演示模式,可以快速体验系统功能: #### Windows: ``` run-demo.bat ``` #### Linux/macOS: ``` chmod +x run-demo.sh ./run-demo.sh ``` 演示模式会自动加载示例数据,并执行排程过程,在控制台显示排程结果。 ### API测试 我们还提供了API测试脚本,可以测试系统的REST API接口: #### Windows: ``` test-api.bat ``` #### Linux/macOS: ``` chmod +x test-api.sh ./test-api.sh ``` ### 初始数据 系统启动时会自动加载以下初始数据: - 3个工作中心 - 5个设备 - 工作日历(含工作日和休息日) - 2种产品及其BOM清单 - 2个产品的工艺路线和工序 - 3个样例生产订单 - 3种排程策略 ### H2数据库控制台 系统使用H2内存数据库,可以通过Web控制台访问: ``` http://localhost:8080/h2-console JDBC URL: jdbc:h2:mem:aps 用户名: sa 密码: (空) ``` ## 后续改进方向 - 增加更复杂的约束条件,如人员技能、物料限制等 - 提供可视化的排程甘特图界面 - 实现排程结果的保存和比较功能 - 添加实时监控和异常处理能力 - 优化大规模排程问题的性能