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