教学优势
曙海教育的课程培养了大批受企业欢迎的工程师。大批企业和曙海
建立了良好的合作关系。曙海教育的课程在业内有着响亮的知名度。
本课程,秉承20年积累的教学品质,以项目实现为导向,老师将会与您分享设计的全流程以及工具的综合使用经验、技巧。
课程简介:
课程目标:
课程大纲:
1理论基础
1.1运筹学规划与APS
1.1.1运筹优化的原理及其在现实生活中的应用;
1.1.2运筹优化中的数学规划原理;
1.1.3及其与APS技术的关系。
1.2规划问题NP-Hard/NP-Complete问题
非多项式时间可解问题的由来,及其在数学领域的意义,包括:
1.2.1问题规模的来由;
1.2.2何谓NP-Hard问题;
1.2.3对NP-Hard问题的常见解法。
1.3规划问题及问题规模
分析规划问题的构成及其问题规划(搜索空间)的大小
1.4求解器的原理及发展现状
包括:
1.4.1何谓求解器,及其包含的启动发式算法;
1.4.2国内外,开源、商用求解器的现状与选用;
1.4.3介绍世界若干最著名求解器的全面优缺点,包括OptaPlanner, Google OR-Tools, IBM CPLEX等
2OptaPlanner相关概念与应用基础
讲解OptaPlanner的一些必须掌握的概念及应用方法。
2.1OptaPlanner的寻优原理
介绍在规划运算过程中,OptaPlanner如何以评分作为基础,结合各种启发式算法进行最优方案寻找.
2.2约束及其分类
约束在求解器中的意义,从正负约束、软硬约束等角度对约束进行分类分析。
2.3评分及评分规则
评分与约束的关系,不同层次的分数对解的影响。
2.4评分在引擎中的实现(Java Scoring, Drools Scoring, ConstraintStream)
讲解OptaPlanner中可用的三种评分实现方式,及各种场景下的评分设计建议。
2.5规划问题的解(Planning problem and solution)
定义规则问题的可能解、可行解、相对最优解及绝对最优解
2.6Problem Fact,Planning Entity与Planning Variable
讲解使用OptaPlanner进行建模时的基本概念,及其在规划问题中,各自代表的意义。
2.7Planning Variable的类型(genuine & shadow)
讲解Planning Variable的类型、其意义及其在不同的模式中相互作用的机制。
2.8配置文件结构及内容(Solver Configuration)
讲解Solver的配置文件中,各个项目的意义及设置方法。
2.9Solver的使用
讲解OptaPlanner的入口对象Solver的构造过程。
2.9.1创建并使用solver对象
通过SoverFactory等工厂构造Solver, ScoreDirector等对象的方法
2.9.2诊断模式
讲解通过配置文件实现运行过程中,引擎的自检模式。
2.9.3日志输出
讲解配置运行过程中日志输出的方法;并讲解如何通过日志分析引擎的行为。
2.9.4解决方案的评分获取与分析
讲解根据引擎的输出结果对象,获取各个层评分的方法;并分析各层得分的来源。
2.10认识及应用Shadow Variable
掌握链的结构及构成原则,实现Shadow Variable随链变化而变化。讲解Chained Through Time模式。
2.11规划步骤与阶段
讲解引擎从开始到结束,对问题进行求解的步骤,包括:Exhaustive Search, Construction Heuristics 与Local Search
2.12简介各启发式寻优算法
对目前OptaPlanner支持的各种寻优算法进行讲解,包括其原理、优缺点及应用方法。
2.13分析解决方案的评分
通过 ConstraintMatchTotal来分析一个解决方案的约束违反情况,从而实现规划评分可视化
3OptaPlanner的评分体系
3.1Drools相关概念及应用
简单Drools的一些基础概念,以备在OptaPlanner进行评分过程中,可以灵活使用该规则引擎。
3.1.1Drools简介
讲解规则引擎Drools的背景与应用场景。
3.1.2Drools Script
讲解Drools脚本的语法与语义。
3.1.3Drools与在OptaPlanner中的应用
讲解如何通过Drools规则引擎,在OptaPlanner中实现评分。
3.2ConstraintStream – 约束流的应用
3.2.1约束流程的作用
讲解ConstraintStream如何实现增量评分计算
3.2.2约束流程的编写方法
讲解约束流程的常用设计、编写方法。包含约束流的构建块,惩罚、奖励方式等。
3.3Incremental 评分计算
Incremental Java score calculation的使用方法,优缺点与适用场景。
4OptaPlanner进阶应用
介绍一些OptaPlanner高级应用,及一些可提高性能及规划效率的方法与技巧。
4.1Score Calculation性能提升技巧
通过优化约束与规则的设计、使用内置硬约束等技巧,提高引擎的评分效率;从而在固定时间内获得更佳的解。
4.2时间分配模式
讲解OptaPlanner在进行时间分配及规则的时,支持的三种模式:TimeSolt,TimeGrain,及ChainedThrough Time, 模式的原理、构成、实现方法及应用场景
4.3时间计算技巧(将时间转为数值)
分享在引擎运行过程中,进行时间计算时,可提高性能、简化计算的方法。
4.4约束流的评分方式详解
讲解如何通过约束流实现约束评分,从而提高评分逻辑的性能、避免使用Drools编写评分逻辑。
5Optaplanner的规划步骤及Move的深入学习
讲解引擎在运行过程中的种个步骤构成,特别针对其具原子性的Move操作进行剖释。
5.1Move的行为分析
分析最基本的规划行为-Move的操作过程,从最基本的运算操作来认识引擎的寻优过程。
5.2MoveSelector与过滤技巧
在引擎运行过程中,如何通过MoveSelection过滤器将不合理及无意义的Move过滤掉,从而提高求解效率。
6OptaPlanner高级特征
6.1启用并行计算
讲解设计并行计算时的原则与技巧,并在7.10.0.Final及以后的版本中,通过配置实现引擎内部的并行运算,提高运行性能。
6.2实现非易失性规划的方法
通过实时规划来实现计划的非易失性。即通过对Planning Variable的值转换进行分析惩罚,减少前后两个计划的过度变化。
6.3实时规划
讲解实时计划的原理、原则及实现方法,实现在引擎运行过程中,与外界进行实时交互,并实现实时输出规则结果。
6.4锁定Planning Entity
通过引擎内部机制,实现在规则过程中对特定的Planning Entity实现锁定。
6.5BenchMark的应用
讲解如何通过BenchMark得到一个问题的规划建议方案,包括寻优算法的选用,其参数设定等。
6.6PJS模型的研究与应用
基于车间排产的场景,讲解如何通过对PJS模型进行衍生,用于解决多工序、多资源模型限制条件下的排程。
1.1SolverManager批量并行规划
讲解通过SolverManager进行多数据集并行计算
2实例演练
2.1基础应用 - 任务资源分配
设计、并开发一个将任务分配到合适的资源,并实现成本优化的规则程序
2.2高级应用 – 时间规划
设计开发一个将任务分配到指定的资源,并为每个任务分配开始时间的规则程序,即APS原型。
2.3简介具体代表性的官方示例(抽取较具代表性的三个案例讲解)
讲解CloudBalance, TaskAssiging及Vehicle Routingdg三个表性的案例。
2.4Project Job Scheduling模型详解
基于Project Job Scheduling讲解排程场景中通用的规划模型 – PJS
2.4.1PJS模块的常见结构
讲解PSJ模型及其衍生模型的常见结构与适用场景。
2.4.2PJS模型在OptaPlanner中的实现
通过OptaPlanner中的Project Job Scheduling示例,讲解PSJ模型的具体实现
练习
答疑