教學優(yōu)勢
曙海教育的課程培養(yǎng)了大批受企業(yè)歡迎的工程師。大批企業(yè)和曙海
建立了良好的合作關系。曙海教育的課程在業(yè)內(nèi)有著響亮的知名度。
本課程,秉承20年積累的教學品質(zhì),以項目實現(xiàn)為導向,老師將會與您分享設計的全流程以及工具的綜合使用經(jīng)驗、技巧。
課程簡介:
課程目標:
課程大綱:
1理論基礎
1.1運籌學規(guī)劃與APS
1.1.1運籌優(yōu)化的原理及其在現(xiàn)實生活中的應用;
1.1.2運籌優(yōu)化中的數(shù)學規(guī)劃原理;
1.1.3及其與APS技術的關系。
1.2規(guī)劃問題NP-Hard/NP-Complete問題
非多項式時間可解問題的由來,及其在數(shù)學領域的意義,包括:
1.2.1問題規(guī)模的來由;
1.2.2何謂NP-Hard問題;
1.2.3對NP-Hard問題的常見解法。
1.3規(guī)劃問題及問題規(guī)模
分析規(guī)劃問題的構成及其問題規(guī)劃(搜索空間)的大小
1.4求解器的原理及發(fā)展現(xiàn)狀
包括:
1.4.1何謂求解器,及其包含的啟動發(fā)式算法;
1.4.2國內(nèi)外,開源、商用求解器的現(xiàn)狀與選用;
1.4.3介紹世界若干最著名求解器的全面優(yōu)缺點,包括OptaPlanner, Google OR-Tools, IBM CPLEX等
2OptaPlanner相關概念與應用基礎
講解OptaPlanner的一些必須掌握的概念及應用方法。
2.1OptaPlanner的尋優(yōu)原理
介紹在規(guī)劃運算過程中,OptaPlanner如何以評分作為基礎,結合各種啟發(fā)式算法進行最優(yōu)方案尋找.
2.2約束及其分類
約束在求解器中的意義,從正負約束、軟硬約束等角度對約束進行分類分析。
2.3評分及評分規(guī)則
評分與約束的關系,不同層次的分數(shù)對解的影響。
2.4評分在引擎中的實現(xiàn)(Java Scoring, Drools Scoring, ConstraintStream)
講解OptaPlanner中可用的三種評分實現(xiàn)方式,及各種場景下的評分設計建議。
2.5規(guī)劃問題的解(Planning problem and solution)
定義規(guī)則問題的可能解、可行解、相對最優(yōu)解及絕對最優(yōu)解
2.6Problem Fact,Planning Entity與Planning Variable
講解使用OptaPlanner進行建模時的基本概念,及其在規(guī)劃問題中,各自代表的意義。
2.7Planning Variable的類型(genuine & shadow)
講解Planning Variable的類型、其意義及其在不同的模式中相互作用的機制。
2.8配置文件結構及內(nèi)容(Solver Configuration)
講解Solver的配置文件中,各個項目的意義及設置方法。
2.9Solver的使用
講解OptaPlanner的入口對象Solver的構造過程。
2.9.1創(chuàng)建并使用solver對象
通過SoverFactory等工廠構造Solver, ScoreDirector等對象的方法
2.9.2診斷模式
講解通過配置文件實現(xiàn)運行過程中,引擎的自檢模式。
2.9.3日志輸出
講解配置運行過程中日志輸出的方法;并講解如何通過日志分析引擎的行為。
2.9.4解決方案的評分獲取與分析
講解根據(jù)引擎的輸出結果對象,獲取各個層評分的方法;并分析各層得分的來源。
2.10認識及應用Shadow Variable
掌握鏈的結構及構成原則,實現(xiàn)Shadow Variable隨鏈變化而變化。講解Chained Through Time模式。
2.11規(guī)劃步驟與階段
講解引擎從開始到結束,對問題進行求解的步驟,包括:Exhaustive Search, Construction Heuristics 與Local Search
2.12簡介各啟發(fā)式尋優(yōu)算法
對目前OptaPlanner支持的各種尋優(yōu)算法進行講解,包括其原理、優(yōu)缺點及應用方法。
2.13分析解決方案的評分
通過 ConstraintMatchTotal來分析一個解決方案的約束違反情況,從而實現(xiàn)規(guī)劃評分可視化
3OptaPlanner的評分體系
3.1Drools相關概念及應用
簡單Drools的一些基礎概念,以備在OptaPlanner進行評分過程中,可以靈活使用該規(guī)則引擎。
3.1.1Drools簡介
講解規(guī)則引擎Drools的背景與應用場景。
3.1.2Drools Script
講解Drools腳本的語法與語義。
3.1.3Drools與在OptaPlanner中的應用
講解如何通過Drools規(guī)則引擎,在OptaPlanner中實現(xiàn)評分。
3.2ConstraintStream – 約束流的應用
3.2.1約束流程的作用
講解ConstraintStream如何實現(xiàn)增量評分計算
3.2.2約束流程的編寫方法
講解約束流程的常用設計、編寫方法。包含約束流的構建塊,懲罰、獎勵方式等。
3.3Incremental 評分計算
Incremental Java score calculation的使用方法,優(yōu)缺點與適用場景。
4OptaPlanner進階應用
介紹一些OptaPlanner高級應用,及一些可提高性能及規(guī)劃效率的方法與技巧。
4.1Score Calculation性能提升技巧
通過優(yōu)化約束與規(guī)則的設計、使用內(nèi)置硬約束等技巧,提高引擎的評分效率;從而在固定時間內(nèi)獲得更佳的解。
4.2時間分配模式
講解OptaPlanner在進行時間分配及規(guī)則的時,支持的三種模式:TimeSolt,TimeGrain,及ChainedThrough Time, 模式的原理、構成、實現(xiàn)方法及應用場景
4.3時間計算技巧(將時間轉為數(shù)值)
分享在引擎運行過程中,進行時間計算時,可提高性能、簡化計算的方法。
4.4約束流的評分方式詳解
講解如何通過約束流實現(xiàn)約束評分,從而提高評分邏輯的性能、避免使用Drools編寫評分邏輯。
5Optaplanner的規(guī)劃步驟及Move的深入學習
講解引擎在運行過程中的種個步驟構成,特別針對其具原子性的Move操作進行剖釋。
5.1Move的行為分析
分析最基本的規(guī)劃行為-Move的操作過程,從最基本的運算操作來認識引擎的尋優(yōu)過程。
5.2MoveSelector與過濾技巧
在引擎運行過程中,如何通過MoveSelection過濾器將不合理及無意義的Move過濾掉,從而提高求解效率。
6OptaPlanner高級特征
6.1啟用并行計算
講解設計并行計算時的原則與技巧,并在7.10.0.Final及以后的版本中,通過配置實現(xiàn)引擎內(nèi)部的并行運算,提高運行性能。
6.2實現(xiàn)非易失性規(guī)劃的方法
通過實時規(guī)劃來實現(xiàn)計劃的非易失性。即通過對Planning Variable的值轉換進行分析懲罰,減少前后兩個計劃的過度變化。
6.3實時規(guī)劃
講解實時計劃的原理、原則及實現(xiàn)方法,實現(xiàn)在引擎運行過程中,與外界進行實時交互,并實現(xiàn)實時輸出規(guī)則結果。
6.4鎖定Planning Entity
通過引擎內(nèi)部機制,實現(xiàn)在規(guī)則過程中對特定的Planning Entity實現(xiàn)鎖定。
6.5BenchMark的應用
講解如何通過BenchMark得到一個問題的規(guī)劃建議方案,包括尋優(yōu)算法的選用,其參數(shù)設定等。
6.6PJS模型的研究與應用
基于車間排產(chǎn)的場景,講解如何通過對PJS模型進行衍生,用于解決多工序、多資源模型限制條件下的排程。
1.1SolverManager批量并行規(guī)劃
講解通過SolverManager進行多數(shù)據(jù)集并行計算
2實例演練
2.1基礎應用 - 任務資源分配
設計、并開發(fā)一個將任務分配到合適的資源,并實現(xiàn)成本優(yōu)化的規(guī)則程序
2.2高級應用 – 時間規(guī)劃
設計開發(fā)一個將任務分配到指定的資源,并為每個任務分配開始時間的規(guī)則程序,即APS原型。
2.3簡介具體代表性的官方示例(抽取較具代表性的三個案例講解)
講解CloudBalance, TaskAssiging及Vehicle Routingdg三個表性的案例。
2.4Project Job Scheduling模型詳解
基于Project Job Scheduling講解排程場景中通用的規(guī)劃模型 – PJS
2.4.1PJS模塊的常見結構
講解PSJ模型及其衍生模型的常見結構與適用場景。
2.4.2PJS模型在OptaPlanner中的實現(xiàn)
通過OptaPlanner中的Project Job Scheduling示例,講解PSJ模型的具體實現(xiàn)
練習
答疑