# japs **Repository Path**: rorop/japs ## Basic Information - **Project Name**: japs - **Description**: 基于Java构建的企业级高级计划排程系统(APS),专注于智能制造领域的生产计划与调度优化。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-24 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: APS, 生产排程, 排产, 智能求解 ## README # 🏭 JAPS 企业级高级计划排程系统 ## 📋 系统概述 JAPS(Advanced Planning and Scheduling)是基于Java+SpringBoot+Langchain4j构建的企业级高级计划排程系统,专注于智能制造领域的生产计划与调度优化。系统采用现代化微服务架构,提供完整的约束求解、智能排产、多维度甘特图可视化功能。 ### 🎯 核心价值 - **🧠 智能决策**:基于AI约束求解引擎,自动生成最优排产方案 - **⚡ 高效执行**:支持1000+任务规模的秒级求解,满足大型制造企业需求 - **🔄 灵活适配**:多策略动态切换,适应不同生产场景和业务需求 - **📊 可视化管控**:多维度甘特图展示,实时监控生产进度和资源状态 ## 🚀 核心特性 ### 1. 🧠 智能排程求解引擎 - **混合求解策略**:基于Timefold Solver、HIGHS、OR-Tools/CP-SAT最新版本的约束求解引擎,根据不同场景动态切换,支持多求解器协同优化 - **多目标优化**:同时优化交期准时率、资源利用率、设备切换成本 - **动态约束系统**:运行时可配置的硬约束和软约束,支持业务规则灵活调整 - **增量计算**:支持大规模问题的高效求解,1000+任务5分钟内完成 - **实时进度监控**:WebSocket实时推送求解进度和状态变化 - **AI助手集成**:通过LangChain4j Tools暴露求解能力 ### 2. 📊 完整的生产数据体系 - **生产任务模型**:支持复杂的任务依赖关系、工序路径和分段执行 - **资源管理**:统一的生产资源抽象,支持技能匹配和能力约束 - **工作日历**:灵活的时间管理,支持班次、假期和设备维护窗口 - **物料约束**:MRP物料需求计划,考虑物料可用性和库存限制 - **工艺路线**:完整的工艺路径管理,支持多工序并行和串行执行 ### 3. 🎭 多策略情景模拟 - **策略版本管理**:支持多个排产策略版本对比分析 - **情景模拟**:假设分析,评估不同策略对生产效率的影响 - **版本对比**:详细的策略效果对比报告和可视化图表 - **智能推荐**:基于历史数据推荐最优排产策略 ### 4. 🔧 企业级技术特性 - **分布式架构**:基于Redis的分布式缓存,支持集群部署 - **异步求解**:支持长时间运行的大规模排程任务 - **故障恢复**:支持求解过程的中断和恢复 - **性能监控**:完整的求解状态监控和性能指标统计 - **安全认证**:基于Sa-Token的安全认证和权限控制 ### 整体架构 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ 调用层 │ │ │ │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ │ │ SmartScheduling │ │ AI Assistant │ │ REST API │ │ │ │ Controller │ │ (LangChain4j) │ │ │ │ │ └────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘ │ │ │ │ │ │ └───────────┼─────────────────────┼─────────────────────┼──────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────────────┐ │ aps-solver │ │ │ │ ┌───────────────────────────────────────────────────────────────────┐ │ │ │ SolverFacadeService │ │ │ │ 统一门面:屏蔽不同求解器差异,提供统一求解接口 │ │ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ │ │ • solve(context) → 自动选择求解器并求解 │ │ │ │ │ │ • solveWith(type,context) → 指定求解器求解 │ │ │ │ │ │ • hybridSolve(context) → 混合求解策略 │ │ │ │ │ │ • getSolverStatus() → 获取求解器状态 │ │ │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ └───────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────────────────────────────────────────────────┐ │ │ │ SolverSelectorService │ │ │ │ 智能选择:基于问题特征推荐最优求解器 │ │ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ │ │ • analyze(problem) → 提取问题特征 │ │ │ │ │ │ • recommend(features) → 推荐求解器 │ │ │ │ │ │ • getSelectionRules() → 获取选择规则 │ │ │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ └───────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────────────────────────────────────────────────┐ │ │ │ ProblemConverterService │ │ │ │ 模型转换:将APS领域模型转换为各求解器所需格式 │ │ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ │ │ • toTimefoldModel() → 转换为Timefold模型 │ │ │ │ │ │ • toCpSatModel() → 转换为OR-Tools CP-SAT模型 │ │ │ │ │ │ • toHiGHSModel() → 转换为HiGHS LP/MIP模型 │ │ │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ └───────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────────────────────────────────────────────────┐ │ │ │ 求解器适配器层 (Adapter Pattern) │ │ │ │ │ │ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ │ │ SolverAdapter (接口) │ │ │ │ │ │ • getName() : String │ │ │ │ │ │ • getSupportedTypes() : List │ │ │ │ │ │ • solve(context) : SolveResult │ │ │ │ │ │ • isAvailable() : boolean │ │ │ │ │ │ • getCapabilities() : SolverCapabilities │ │ │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ │ │ △ │ │ │ │ │ │ │ │ │ ┌───────────────┼───────────────┐ │ │ │ │ │ │ │ │ │ │ │ ┌────────┴───────┐ ┌────┴─────────┐ ┌───┴──────────┐ │ │ │ │ │ TimefoldAdapter │ │ CpSatAdapter │ │ HiGHSAdapter │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • 动态重排程 │ │ • Job Shop │ │ • LP/MIP │ │ │ │ │ │ • 复杂约束 │ │ • 精确解 │ │ • 产能规划 │ │ │ │ │ │ • 增量求解 │ │ • 大规模调度 │ │ • 资源分配 │ │ │ │ │ └─────────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ │ │ │ └───────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────────┐ │ 底层求解器库 │ │ │ │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ │ │ Timefold Solver │ │ Google OR-Tools │ │ HiGHS │ │ │ │ (Java) │ │ CP-SAT (C++) │ │ (C++) │ │ │ │ │ │ [Java JNI] │ │ [Java JNI] │ │ │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` ### 求解器选择决策流程 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ 求解器智能选择流程 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ 输入:排程问题上下文 (ProblemContext) │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Step 1: 特征提取 (ProblemAnalyzer) │ │ │ │ │ │ │ │ • taskCount : 任务数量 │ │ │ │ • resourceCount : 资源数量 │ │ │ │ • constraintCount : 约束数量 │ │ │ │ • problemType : 问题类型(SCHEDULING/LP/MIP) │ │ │ │ • hasNonlinear : 是否有非线性约束 │ │ │ │ • timeLimit : 时间限制 │ │ │ │ • needExactSolution: 是否需要精确解 │ │ │ │ • isRealtime : 是否实时场景 │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Step 2: 规则匹配 (RuleEngine) │ │ │ │ │ │ │ │ Rule 1: 线性规划类 → HiGHS │ │ │ │ 条件: problemType == LP || (problemType == MIP && !complex) │ │ │ │ │ │ │ │ Rule 2: Job Shop调度 → OR-Tools CP-SAT │ │ │ │ 条件: problemType == SCHEDULING && taskCount > 50 │ │ │ │ && needExactSolution │ │ │ │ │ │ │ │ Rule 3: 动态重排程 → Timefold │ │ │ │ 条件: isRealtime && timeLimit < 5 │ │ │ │ │ │ │ │ Rule 4: 复杂约束组合 → Timefold │ │ │ │ 条件: constraintCount > 20 && !needExactSolution │ │ │ │ │ │ │ │ Default: Timefold (兼容现有系统) │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Step 3: 生成推荐 (SolverRecommendation) │ │ │ │ │ │ │ │ • solverType : 推荐的求解器类型 │ │ │ │ • confidence : 置信度 (0-1) │ │ │ │ • reason : 推荐理由 │ │ │ │ • alternatives : 备选求解器 │ │ │ │ • estimatedTime : 预估求解时间 │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ 输出:最优求解器 + 配置参数 │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ```