1. 程式人生 > >顯式預測控制(Explicit MPC)

顯式預測控制(Explicit MPC)

顯式預測控制是 Bemporad 等人在2002年提出來的一種面向小規模控制命題的快速 MPC 演算法。主要思想是通過引數規劃的思想,將優化求解的線上計算放到離線進行,從而提高線上計算的速度。本文從理論上對這種演算法進行介紹,並用例子進行一些說明,最後會提到該方法的一些侷限和改進。

理論推導

下面我們結合 [BMDP02],[FBD08] 和 [PRW07] 三篇文章的內容簡單介紹一下 Explicit MPC 的原理。這裡我們考慮一個離散的,線性時不變的狀態空間模型:

x(t+1)=Ax(t)+Bu(t)

其中 x(k)Rnx 是系統狀態,u(k)Rnu 是系統輸入。A,B 都是相應的係數矩陣。為簡單起見,我們考慮一個從當前狀態 x

0 調節到原點的調節問題。同時我們要保證輸入和狀態都滿足一定的約束,即

cCx(t)c¯ dDu(t)d¯ 對任何k∈N都滿足。同時 CRnoc×nxDRnic×nu 是常數矩陣,c,c¯d,d¯都是常數向量。

然後 MPC 在沒週期求解的 QP 命題為:

minu(0),...,u(N1)x(0),...,x(N)x(N)TPx(N)+i=0N1(x(i)TQx(i)+u(i)TRu(i)) s.t. x(t+1)=Ax(t)+Bu(t) (x(0) given) cCx(t)c¯ dDu(t)d¯

其中 PRnx×nxQRnx×nx 是半正定矩陣,R

Rnu×nu 是正定陣。NN 是預測時域長度(和控制時域等長)。P 是終端懲罰加權陣,可以通過求解無約束系統的一個黎卡提方程來得到。

通過將 x(t)=Atx(0)+t1j=0AjBu(t1j) 代入上式進行替換,上面的優化命題可以寫成

J(x(0))=12x(0)TYx(0)+minU12UTHU+x(0)TFU s.t. GUW+Ex(0)

這裡這裡的 x(0) 代表的是當前時刻的狀態,Y,H,F,G

相關推薦

預測控制Explicit MPC

顯式預測控制是 Bemporad 等人在2002年提出來的一種面向小規模控制命題的快速 MPC 演算法。主要思想是通過引數規劃的思想,將優化求解的線上計算放到離線進行,從而提高線上計算的速度。本文從理論上對這種演算法進行介紹,並用例子進行一些說明,最後會提到該方

模型預測控制MPC簡介

1.引言 在當今過程控制中,PID當然是用的最多的控制方法,但MPC也超過了10%的佔有率。MPC是一個總稱,有著各種各樣的演算法。其動態矩陣控制(DMC)是代表作。DMC採用的是系統的階躍響應曲線,其突出的特點是解決了約束控制問題。那麼是DMC是怎麼解決約束

路徑規劃: 模型預測控制MPC,Model Predictive Controlmark

發展歷史 20世紀70年代後期,一類新型的計算機控制演算法出現在美法等國的工業過程領域,如動態矩陣控制(DMC,Dynamic Matrix Control)、模型演算法控制(MAC,Model Algorithm Control)。1987年,首次有學者闡述了該系列演算法的

3種softmax函式python實現方式迴圈,向量,矩陣

Python三種方式實現Softmax損失函式計算 python實現的softmax損失函式程式碼,我們先回顧一下softmax損失函式的定義: 其中右邊一項為第y=j項的概率值。令J(w) = log(J(w)): 損失函式的梯度:   import

java裡的鎖總結synchronized隱鎖、Lock鎖、volatile、CAS

# 一、介紹 首先, java 的鎖分為兩類: 1. 第一類是 **synchronized** 同步關鍵字,這個關鍵字屬於隱式的鎖,是 jvm 層面實現,使用的時候看不見; 2. 第二類是在 jdk5 後增加的 **Lock** 介面以及對應的各種實現類,這屬於顯式的鎖,就是我們能在程式碼層面看

php流程控制新建流程

數組元素 ray cat 通過 觸發事件 else text [] code 流程控制,又是一個廣泛應用於辦公自動化等內部自定義流程及審核的功能。比如請假流程啊,申請辦公用品經費,報銷申請啊,等等,需要層層審批通過才能完成的(按規章辦事,最好別越級,你說是吧) 不習慣一篇博

學習21 css內聯寫入法直接寫入

個人 css樣式 最大 code div utf 介紹 head 能力 <!doctype html> <html> <head> <meta charset="utf-8"> <title>css樣式介紹<

流程控制循環

知識 color 代碼 con code 重復 量變 求和 class 今天給初學者的同學,帶來了循環最基礎的知識。先還有練習題,可以多練習,裏面我有寫了詳細的思路 循環結構 1、循環用途:重復執行某個代碼 a)遍歷數組時候首選for循環,簡單的循環使用for

響應編程Reactive ProgrammingRx介紹

基本 master 個人 點擊 next() 展示 練習 already rand 很明顯你是有興趣學習這種被稱作響應式編程的新技術才來看這篇文章的。 學習響應式編程是很困難的一個過程,特別是在缺乏優秀資料的前提下。剛開始學習時,我試過去找一些教程,並找到了為數不多的實用教

socket遠程控制練手___源碼

socket 基於 遠程控制 服務器端: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/8/22 16:14 # @Author : Mr_zhang # @Site : # @File : serv

html5 響應布局媒體查詢

href 高級 ont spa 問題 界面 p s ide display 響應式布局 響應式布局,簡而言之,就是一個網站能夠兼容多個終端——而不是為每個終端做一個特定的版本。這個概念是為解決移動互聯網瀏覽而誕生的。 響應式布局可以為不同終端

python學習之4函數編程廖雪峰

報錯 uil str log font abs col 輸出結果 都是 一、高階函數 1、變量可以指向函數 例如,python內置的求絕對值函數abs(): f=abs print(f(-10)) 輸出結果是10 2、函數名也是變量 任何函數名都是變量,如果對其賦值了,

奇怪的表達求值 java實現

name 所在 cas 生活 div img num rar java 題目參考:http://blog.csdn.net/fuxuemingzhu/article/details/68484749 問題描述; 題目描述: 常規的表達式求值,我們都會根據計算的優先級來計算。

python 流程控制條件語句

int none ase num inpu 單條件 pre 條件控制 python 1,python流程控制單條件基本語句 2,python流程流程多條件控制語句 1,python流程控制單條件基本語句    if 判斷條件: 執行語句…… else:

7-21 求前綴表達的值25 分

str 掃描 元素 class pos 求值 gpo blog body 前綴表達式的計算機求值:從右至左掃描表達式,遇到數字時,將數字壓入堆棧,遇到運算符時,彈出棧頂的兩個數,用運算符對它們做相應的計算(棧頂元素 op 次頂元素),並將結果入棧;重復上述過程直到表達式最左

《python核心編程》——正則表達學習筆記課後練習

返回 gin write tld d+ 匹配 yahoo .py lin 1. 識別後續的字符串:“bat”,“bit”,“but”,“hat”,“hit”或者“hut”。 [bh][aiu]t 2. 匹配由單個空格分割的任意單詞對,也就是姓和名。 [A-Za-z]+

關於分布套件Distributed-Kit簡述

rule 工具 over sets PE 私服 ride 分布 測試用例 基於redis和zookeeper分布式工具集-包括:分布式鎖實現,分布式速率限制器,分布式ID生成器等. 使用maven: 需先編譯安裝到本地倉庫或者本地私服 。 <dependency>

jmeter分布壓測簡單版

否則 如何 就是 jmeter linux ima 安裝 測試的 .cn   需要使用jmeter模擬大並發的情況時,單臺壓測機不能滿足需求,可進行分布式壓測。   簡單來說就是,多臺機器同時安裝jmeter,選擇一臺機器作為調度機,其他作為壓力機。進行相應的配置後,就可以

JMeter分布負載測試吞吐量控制器

相同 線程組 粘貼 選項 目的 sts file header read 在本節中,我們將學習如何使用吞吐量控制器在JMeter中創建分布式負載測試計劃。 出於測試目的,我們將在我們網站 www.yiibai.com 的URL下的某些網頁上創建分布式負載。這些網頁包括:

Selenium入門11 滾動條控制通過js

窗口 元素滾動 滾動 瀏覽器 window http 找到 sna 操作 這一節要有js基礎。做web端的UI自動化必須要有html,css,javascript前端基礎。 滾動條控制: 1 移動垂直滾動條 document.documentElement.scroll