系列文章目錄
MATLAB 模型預(yù)測(cè)控制(MPC)
前言
模型預(yù)測(cè)控制工具箱? 提供了用于開發(fā)模型預(yù)測(cè)控制 (MPC) 的函數(shù)、應(yīng)用程序、Simulink? 模塊和參考示例。對(duì)于線性問題,該工具箱支持設(shè)計(jì)隱式、顯式、自適應(yīng)和增益調(diào)度 MPC。對(duì)于非線性問題,您可以實(shí)現(xiàn)單級(jí)和多級(jí)非線性 MPC。該工具箱提供可部署的優(yōu)化求解器,還能讓您使用自定義求解器。
您可以在 MATLAB? 和 Simulink 中通過運(yùn)行閉環(huán)仿真來評(píng)估控制器性能。對(duì)于自動(dòng)駕駛,您還可以使用提供的符合 MISRA C? 和 ISO 26262 標(biāo)準(zhǔn)的模塊和示例,快速開始車道保持輔助、路徑規(guī)劃、路徑跟蹤和自適應(yīng)巡航控制應(yīng)用。
工具箱支持 C 和 CUDA? 代碼以及 IEC 61131-3 結(jié)構(gòu)化文本生成。
一、使用 MPC Designer 設(shè)計(jì)控制器
本例說明如何使用 MPC Designer 為連續(xù)攪拌槽反應(yīng)器 (CSTR) 設(shè)計(jì)模型預(yù)測(cè)控制器。
1.1 CSTR 模型
連續(xù)攪拌罐反應(yīng)器(CSTR)的線性化模型見 CSTR 模型。在該模型中,前兩個(gè)狀態(tài)變量分別是試劑濃度(此處稱為 CA,單位為 kmol/m3)和反應(yīng)器溫度(此處稱為 T,單位為 K),而前兩個(gè)輸入量分別是冷卻劑溫度(Tc,單位為 K,用于控制被控對(duì)象)和流入的進(jìn)料試劑濃度 CAf,單位為 kmol/m3,(通常被視為未測(cè)量的干擾)。
在本例中,冷卻劑溫度與標(biāo)稱值的變化范圍為 ±10 度,變化速率為每秒 ±2 度。
創(chuàng)建 CSTR 系統(tǒng)的狀態(tài)空間模型。
A = [ -5 -0.3427;
47.68 2.785];
B = [ 0 1
0.3 0];
C = flipud(eye(2));
D = zeros(2);
CSTR = ss(A,B,C,D);
1.2 導(dǎo)入被控對(duì)象并定義 MPC 結(jié)構(gòu)
mpcDesigner
在 "MPC 設(shè)計(jì)器 "選項(xiàng)卡的 "結(jié)構(gòu) "部分,單擊 “MPC 結(jié)構(gòu)”。
在 "通過導(dǎo)入定義 MPC 結(jié)構(gòu) "對(duì)話框中,在 "從 MATLAB 工作區(qū)選擇一個(gè)被控對(duì)象模型或一個(gè) MPC 控制器 "表中,選擇 CSTR 模型。
由于 CSTR 是一個(gè)穩(wěn)定的連續(xù)時(shí)間 LTI 系統(tǒng),因此 MPC Designer 將控制器采樣時(shí)間設(shè)置為 0.1 Tr,其中 Tr 是 CSTR 的平均上升時(shí)間。在本例中,在指定 MPC 控制器采樣時(shí)間字段中,輸入 0.5 秒的采樣時(shí)間。
默認(rèn)情況下,所有被控對(duì)象輸入均定義為操縱變量,所有被控對(duì)象輸出均定義為測(cè)量輸出。在 "分配被控對(duì)象 i/o 通道 "部分,分配輸入和輸出通道索引,以便
-
第一個(gè)輸入,即冷卻液溫度,為操縱變量。
-
第二個(gè)輸入,進(jìn)料濃度,是一個(gè)未測(cè)量的干擾。
-
第一個(gè)輸出,反應(yīng)器溫度,是一個(gè)測(cè)量輸出。
-
第二個(gè)輸出,反應(yīng)物濃度,是一個(gè)未測(cè)量的輸出。
單擊導(dǎo)入。
應(yīng)用程序會(huì)將 CSTR 被控對(duì)象導(dǎo)入數(shù)據(jù)瀏覽器。以下內(nèi)容也會(huì)添加到數(shù)據(jù)瀏覽器中:
-
mpc1 - 使用 CSTR 作為內(nèi)部模型創(chuàng)建的默認(rèn) MPC 控制器。
-
scenario1 - 默認(rèn)模擬場(chǎng)景。
該程序運(yùn)行默認(rèn)模擬場(chǎng)景,并更新輸入響應(yīng)和輸出響應(yīng)圖。閉環(huán)系統(tǒng)能夠成功跟蹤所需的測(cè)量輸出,而未測(cè)量輸出則不然。由于被控對(duì)象只有一個(gè)操縱變量,因此這種行為是意料之中的。
一旦定義了 MPC 結(jié)構(gòu),就不能在當(dāng)前的 MPC Designer 會(huì)話中進(jìn)行更改。要使用不同的通道配置,請(qǐng)啟動(dòng)新的應(yīng)用程序會(huì)話。
1.3 定義輸入和輸出通道屬性
在 MPC Designer 選項(xiàng)卡上,選擇 I/O Attributes。
在 "輸入和輸出通道規(guī)格 "對(duì)話框的 "名稱 "欄中,為每個(gè)輸入和輸出通道指定一個(gè)有意義的名稱。
在 "單位 "欄中,可選擇指定每個(gè)通道的單位。
由于狀態(tài)空間模型是使用與標(biāo)稱工作點(diǎn)的偏差來定義的,因此請(qǐng)將每個(gè)輸入和輸出通道的標(biāo)稱值保持為 0。
各通道的比例因子保持默認(rèn)值 1。
單擊 “確定”。
輸入響應(yīng)和輸出響應(yīng)繪圖標(biāo)簽會(huì)更新,以反映新的信號(hào)名稱和單位。
1.4 配置仿真場(chǎng)景
在 "MPC 設(shè)計(jì)器 "選項(xiàng)卡的 "場(chǎng)景 "部分,單擊 “編輯場(chǎng)景”>“場(chǎng)景 1”。
在 "模擬場(chǎng)景 "對(duì)話框中,將模擬持續(xù)時(shí)間設(shè)置為 20 秒。
在參考信號(hào)表的第一行,指定步長(zhǎng)為 2,時(shí)間為 5。
在信號(hào)列第二行,選擇常量參考,將濃度設(shè)定點(diǎn)保持在輸入和輸出通道規(guī)格對(duì)話框中定 義的標(biāo)稱值上(本例中標(biāo)稱值為零)。
默認(rèn)設(shè)置為模擬參考反應(yīng)器溫度 T 在 5 秒鐘內(nèi)發(fā)生 2 開爾文的階躍變化。
單擊確定。
響應(yīng)圖更新以反映新的模擬方案配置。CA 的參考值不再是階躍值,而是等于零的常數(shù)。
在 MPC Designer 左下方的 "情景 "部分,單擊情景 1。第二次單擊情景 1,并將情景重命名為 stepT。
1.5 配置控制器水平線
在 "調(diào)整 "選項(xiàng)卡的 "水平線 "部分,指定預(yù)測(cè)水平線為 15,控制水平線為 3。
響應(yīng)圖更新以反映新的范圍。輸入響應(yīng)圖顯示,控制操作違反了對(duì)冷卻劑溫度變化率的限制要求。
1.6 定義輸入約束條件
在 "設(shè)計(jì) "部分,單擊 “約束”。
在 "約束 "對(duì)話框的 "輸入和輸出約束 "部分的 "輸入 "行中,分別在 "最小值 "和 "最大值 "列中輸入冷卻劑溫度的上下限。
在 RateMin 和 RateMax 欄中指定變化率限制。
單擊 “確定”。
輸入響應(yīng)圖顯示了受控變量的控制行動(dòng)。輸入響應(yīng)圖顯示了受控變量的控制行動(dòng)。
1.7 指定控制器調(diào)整權(quán)重
在 "調(diào)整 "選項(xiàng)卡的 "設(shè)計(jì) "部分,單擊 “權(quán)重”。
在輸入權(quán)重表中,將操縱變量 (MV) 比率權(quán)重增加到 0.3。在控制器優(yōu)化成本函數(shù)中,增加 MV 率權(quán)重可抑制 MV 的大幅變化。
在輸出權(quán)重表中,保留默認(rèn)權(quán)重值。默認(rèn)情況下,所有未測(cè)量的輸出權(quán)重為零。
由于只有一個(gè)受控變量,如果控制器試圖將兩個(gè)輸出都保持在特定的設(shè)定點(diǎn)上,則一個(gè)或兩個(gè)輸出的響應(yīng)都會(huì)出現(xiàn)穩(wěn)態(tài)誤差。由于控制器會(huì)忽略權(quán)重為零的輸出設(shè)定點(diǎn),因此將濃度輸出權(quán)重設(shè)置為零可實(shí)現(xiàn)反應(yīng)釜溫度設(shè)定點(diǎn)跟蹤,且穩(wěn)態(tài)誤差為零。
單擊 “確定”。
輸入響應(yīng)圖顯示了較為保守的控制操作,這導(dǎo)致輸出響應(yīng)速度較慢。
1.8 消除輸出超調(diào)
假設(shè)應(yīng)用要求輸出響應(yīng)零過沖。在 "性能調(diào)整 "選項(xiàng)卡上,向左拖動(dòng) "閉環(huán)性能 "滑塊,直到輸出響應(yīng)沒有過沖。向左移動(dòng)該滑塊可同時(shí)增加控制器的操縱速率權(quán)重和減少輸出變量權(quán)重,使控制器更加穩(wěn)健。假設(shè)應(yīng)用要求輸出響應(yīng)零過沖。在 "性能調(diào)整 "選項(xiàng)卡上,向左拖動(dòng) "閉環(huán)性能 "滑塊,直到輸出響應(yīng)沒有過沖。向左移動(dòng)該滑塊可同時(shí)增加控制器的操縱速率權(quán)重和減少輸出變量權(quán)重,使控制器更加穩(wěn)健。
使用 "閉環(huán)性能 "滑塊調(diào)整控制器調(diào)整權(quán)重時(shí),MPC Designer 不會(huì)更改您在 "權(quán)重 "對(duì)話框中指定的權(quán)重。相反,滑塊控制一個(gè)調(diào)整系數(shù),該系數(shù)與用戶指定的權(quán)重一起用于定義實(shí)際控制器權(quán)重。
當(dāng)滑塊居中時(shí),該系數(shù)為 1;當(dāng)滑塊向左移動(dòng)時(shí),其值減??;當(dāng)滑塊向右移動(dòng)時(shí),其值增大。權(quán)重系數(shù)乘以操縱變量和輸出變量權(quán)重,再除以權(quán)重對(duì)話框中的操縱變量速率權(quán)重。因此,移動(dòng)滑塊增加魯棒性會(huì)降低 OV 和 MV 權(quán)重,增加 MV 率權(quán)重,從而放寬對(duì)輸出的控制,使控制動(dòng)作更加保守。
要查看實(shí)際控制器權(quán)重,請(qǐng)將控制器導(dǎo)出到 MATLAB? 工作區(qū),然后查看導(dǎo)出控制器對(duì)象的權(quán)重屬性。
1.9 測(cè)試控制器抗干擾能力
在過程控制應(yīng)用中,干擾抑制往往比設(shè)定點(diǎn)跟蹤更重要。模擬控制器對(duì)進(jìn)料濃度階躍變化(未測(cè)量干擾)的響應(yīng)。
在 "MPC 設(shè)計(jì)器 "選項(xiàng)卡的 "情景 "部分,單擊 “繪制情景”>“新建情景”。
在模擬場(chǎng)景對(duì)話框中,將模擬持續(xù)時(shí)間設(shè)為 20 秒。
在參考信號(hào)表的第一行信號(hào)下拉列表中,選擇步長(zhǎng),然后指定步長(zhǎng)為 2,時(shí)間為 5。在第二行的信號(hào)列中,保持恒定參考以將濃度設(shè)定點(diǎn)保持在標(biāo)稱值上。
在 "未測(cè)量的干擾 "行的信號(hào)下拉列表中,選擇 “步長(zhǎng)”,然后指定步長(zhǎng)為 0.2,時(shí)間為 5。
單擊確定。
應(yīng)用程序會(huì)將新方案添加到數(shù)據(jù)瀏覽器中,并創(chuàng)建新的相應(yīng)輸入響應(yīng)圖和輸出響應(yīng)圖。
在數(shù)據(jù)瀏覽器的 "方案 "部分,將 NewScenario 重命名為 distReject。
從輸出響應(yīng)圖中可以看出,閉環(huán)系統(tǒng)仍能達(dá)到預(yù)期的反應(yīng)器溫度。在這種情況下,所需的控制動(dòng)作加上輸入干擾會(huì)導(dǎo)致輸出濃度 CA 穩(wěn)態(tài)下降 0.1 kmol/m3。
1.10 指定濃度輸出約束條件
之前,您定義了控制器調(diào)整權(quán)重,以實(shí)現(xiàn)跟蹤反應(yīng)釜溫度設(shè)定點(diǎn)且穩(wěn)態(tài)誤差為零的主要控制目標(biāo)。這樣做可以使未測(cè)量的反應(yīng)器濃度自由變化。假設(shè)反應(yīng)器濃度相對(duì)于其標(biāo)稱值降至 0.05 kmol/m3 以下時(shí),會(huì)發(fā)生不必要的反應(yīng)。要限制反應(yīng)釜濃度,請(qǐng)指定輸出限制。
在 "設(shè)計(jì) "部分的 "調(diào)諧 "選項(xiàng)卡上,單擊 “約束”。
在 "約束 "對(duì)話框的 "輸入 "和 "輸出約束 "部分的 "輸出 "表第二行中,指定最小未測(cè)量輸出 (UO) 值為 -0.05。
默認(rèn)情況下,所有輸出約束都是軟約束,即最小ECR 值和最大ECR 值都大于零。要進(jìn)一步軟化未測(cè)量輸出 (UO) 約束,請(qǐng)?jiān)黾悠渥畲驟CR 值。
單擊 “確定”。
在輸出響應(yīng)圖中,反應(yīng)器濃度 CA 在 10 秒后穩(wěn)定在-0.05 kmol/m3 的水平。由于只有一個(gè)控制變量,控制器在兩個(gè)相互競(jìng)爭(zhēng)的控制目標(biāo)之間進(jìn)行了折中: 溫度跟蹤和滿足約束條件。較軟的輸出約束使控制器可以犧牲更多的約束要求來改善溫度跟蹤。
由于輸出約束條件較軟,控制器可通過允許少量違反濃度約束條件來保持一定的溫度控制水平。一般來說,根據(jù)您的應(yīng)用要求,您可以嘗試使用不同的約束設(shè)置來實(shí)現(xiàn)可接受的控制目標(biāo)折衷。
輸出控制器
在 "調(diào)諧 "選項(xiàng)卡的 "分析 "部分,單擊 "導(dǎo)出控制器 "將調(diào)諧控制器 mpc1 保存到 MATLAB 工作區(qū)。
1.11 刪除被控對(duì)象、控制器和場(chǎng)景
要?jiǎng)h除被控對(duì)象、控制器或場(chǎng)景,請(qǐng)?jiān)?"數(shù)據(jù)瀏覽器 "中右鍵單擊要?jiǎng)h除的項(xiàng)目,然后選擇 “刪除”。
不能刪除當(dāng)前控制器。此外,如果被控對(duì)象是唯一列出的工廠或方案,則無法刪除。
如果某個(gè)工廠被任何控制器或場(chǎng)景使用,則無法刪除該工廠。
要?jiǎng)h除多個(gè)被控對(duì)象、控制器或場(chǎng)景,請(qǐng)按住 Shift 鍵并單擊要?jiǎng)h除的每個(gè)項(xiàng)目。
二、使用步驟
1.引入庫(kù)
代碼如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.讀入數(shù)據(jù)
代碼如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
該處使用的url網(wǎng)絡(luò)請(qǐng)求的數(shù)據(jù)。
總結(jié)
提示:這里對(duì)文章進(jìn)行總結(jié):
文章來源:http://www.zghlxwxcb.cn/news/detail-783272.html
例如:以上就是今天要講的內(nèi)容,本文僅僅簡(jiǎn)單介紹了pandas的使用,而pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-783272.html
到了這里,關(guān)于MATLAB 模型預(yù)測(cè)控制(MPC)控制入門 —— 設(shè)計(jì)并仿真 MPC 控制器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!