教學優勢
曙海教育的課程培養了大批受企業歡迎的工程師。大批企業和曙海
建立了良好的合作關系。曙海教育的課程在業內有著響亮的知名度。
本課程,秉承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模型的具體實現
練習
答疑