预测控制matlab工具箱

预测控制matlab工具箱
预测控制matlab工具箱

matlab预测控制工具箱

一、设计示例

注:示例均为matlab自带

1、伺服系统控制器的设计

图4-1 位置伺服系统原理图

(1)伺服系统数学模型

位置伺服系统由直流电机、变速箱、弹性轴、负载等组成(见图4-1)。可用如下微分方程来描述:

上式中的变量定义及取值见表4-1。

将上述微分方程写成状态方程形式,有

其中,。

(2)控制目标及约束

控制目标:在电压V的控制下,使过载角位置跟踪指定值。输出量仅有可观测。

弹性轴承受的强度有一定的限制,因此对输出力矩T的赋值作一定约束:

对输入电压的约束:

该系统有一个输入V,两个输出:(可测量)和T(不可测量)。

(3)在matlab中定义该系统的状态空间模型

首先需要在matlab中对系统的数学模型进行定义。可以直接在命令行输入mpcmotormodel(建议做法),也可以在命令行中输入下列命令:

% DC-motor with elastic shaft

%

%Parameters (MKS)

%-----------------------------------------------------------

Lshaft=1.0; %Shaft length

dshaft=0.02; %Shaft diameter

shaftrho=7850; %Shaft specific weight (Carbon steel)

G=81500*1e6; %Modulus of rigidity

tauam=50*1e6; %Shear strength

Mmotor=100; %Rotor mass

Rmotor=.1; %Rotor radius

Jmotor=.5*Mmotor*Rmotor^2; %Rotor axial moment of inertia Bmotor=0.1; %Rotor viscous friction coefficient (A CASO)

R=20; %Resistance of armature

Kt=10; %Motor constant

gear=20; %Gear ratio

Jload=50*Jmotor; %Load inertia

Bload=25; %Load viscous friction coefficient

Ip=pi/32*dshaft^4; %Polar momentum of shaft

(circular) section

Kth=G*Ip/Lshaft; %Torsional rigidity

(Torque/angle)

Vshaft=pi*(dshaft^2)/4*Lshaft; %Shaft volume

Mshaft=shaftrho*Vshaft; %Shaft mass

Jshaft=Mshaft*.5*(dshaft^2/4); %Shaft moment of inertia

JM=Jmotor;

JL=Jload+Jshaft;

Vmax=tauam*pi*dshaft^3/16; %Maximum admissible torque

Vmin=-Vmax;

%Input/State/Output continuous time form

%----------------------------------------------------------

AA=[0 1 0 0;

-Kth/JL -Bload/JL Kth/(gear*JL) 0;

0 0 0 1;

Kth/(JM*gear) 0 -Kth/(JM*gear^2)

-(Bmotor+Kt^2/R)/JM];

BB=[0;0;0;Kt/(R*JM)];

Hyd=[1 0 0 0];

Hvd=[Kth 0 -Kth/gear 0];

Dyd=0;

Dvd=0;

% Define the LTI state-space model

sys=ss(AA,BB,[Hyd;Hvd],[Dyd;Dvd]);

(4)利用MPCTOOL界面设计控制器

第一步:导入模型

在命令行窗口中输入mpctool,工具箱界面出来后点击Imort Plant…,此时界面如4-2所示。

图4-2 Import Dialog Box with the Servomechanism Model Selected 此时先前定义的伺服系统数学模型sys默认被选中,Properties列出了该模型的主要属性。

点击Import,导入数学模型,见4-3所示。

第二步:设置属性

系统的数学模型导入后,需要对输入变量和输出变量的属性做一些修改,使之符合实际情况。默认情况下,输入变量类型均是manipulated,本例中不需要修改。默认输出变量类

型是measured,本例的两个输出变量中,可测量,T不可测量,需要相应修改。

可以修改输入变量和输出变量的名称,增加描述性内容,设置单位和初始值。此处将In1,Out1,Out2修改为V,ThetaL,T,其它修改见图4-3。

图4-3 Design Tool After Importing the Plant Model and Specifying Signal Properties 本例中的模型为连续系统,需要将之变为离散系统。选中MPCdesign---Controllers---MPC1---Model and Horizons,将Control interval(time units)(采样周期)改为0.1,其它设置不变,见图4-4。

图4-4 Controller Design View, Models and Horizons Pane 接下来设置变量约束。点击Constraints面板,输入变量V、输出变量和T的设置见图4-5。一般情况下需要对输入进行约束,而不对输出量作限制。角位置输出受到实际物

理装置的限制,因此不作限制。对输出力矩T设置了约束范围。

rate为非正值(或留空),它限制了每一个控制周期内控制量的减小幅度,同down

Max

理,Max up rate为非负值(或留空),他对每一个控制周期内控制量的增幅做了限制。此处均留空。

图4-5 Controller Design View, Constraints Pane

接下来点击Weight Tuning面板,此面板用于在设计控制器时对性能进行折中考虑。首先看Output weights,控制器的目的是为了尽可能缩小输出量与设定值之间的偏差。控制器计算预测时域内每个预测点处的实际值与设定值的误差,将之平方,然后相加,得到预测误差总和。控制器的一个目标就是使预测误差总和最小化,从而得到良好的跟踪效果。此处,

角位置输出应跟踪设定值,输出力矩T则不需要有此限制。

输入变量V处于不断变化之中,Weight应该设为0,为了使控制量变化平缓,此处设置Rate Weight为0.1。

在进行权重设置时需要记住一点,权重间的相对大小的重要性要远远大于绝对大小。例如,变量A变化0.1单位与变量B变化100单位效果等同,那么在设置权重时,A的权重将是B权重的1000倍。

上方的滑动条用来整定控制器的总体性能。滑动条越靠近左方,对控制量的惩罚项越大,这会增加控制器的鲁棒性,但会降低跟踪精度。

当存在不可测量干扰时,Estimation选项卡用来调节控制器的响应,此处没有用到。

图4-6 Controller Design View, Weight Tuning Pane

第三步:仿真场景的设置

见图4-7所示。Setpoints用来设置输出参考信号。设置ThetaL的参考信号为阶跃信号,阶跃时间为1s,幅度为1。设置T的参考信号为常值信号,幅度为零。

Look

ahead选项假定参考信号的变化是已知的,这样控制器可以提前修正控制变量来提

高跟踪精度,这在实际中不常见,此处不选中。

图4-7 Simulation Settings View for "Scenario1"

第四步:开始仿真 点击Simulate 按钮,或者工具栏中的绿色箭头,开始仿真。结果见4-8所示。灰色线为设定值,蓝色线为实际输出值。可见,输出信号在30s 时仍没有稳定下来,没有实现指令信号的准确跟踪。有一点值得称道,输出力矩和控制电压(此处没有给出)在指定范围之内。

0.511.52T h e t a L , R a d i a n

s

T , N .m

Plant Outputs

Time (sec)

图4-8 Response to Unit Step in the Angular Position Setpoint

为了得到更快速、精确的响应,进入MPC1 Weight Tuning 选项板,将滑动条拖至最右方,然后重新开始仿真,仿真结果见图4-9和图4-10。可见,此时的响应速度和跟踪精度都有了很大的改进。

00.20.40.60.811.21.4T h e t a L , R a d i a n

s

-80

-60-40-20020T , N .m

Plant Outputs

Time (sec)

图4-9 Faster Servo Response

-50

50

100

150

200

Plant Input: V, V

Time (sec)

图4-10 Manipulated Variable Adjustments Corresponding to Figure 4-9

将ThetaL 的阶跃响应幅度重新设置为pi ,仿真结果见图4-11和图4-12所示。可见仍能实现很好的跟踪效果,注意此时对输出力矩和控制电压做了限幅。

01234T h e t a L , R a d i a n s

-80

-60-40-2002040T , N .m

Plant Outputs

Time (sec)

图4-11 Servo Response for Step Increase of pi Radians

-100

-50

50

100

150

200

250

Plant Input: V, V

Time (sec)

图4-12 Voltage Adjustments Corresponding to Figure 4-11

第五步:保存工作 设计完毕后,将控制器导出至工作区,方便在Simulink block diagram 进行分析和设计。 为了导出控制器,右击Controllers 节点,选择Export Controller ,将会出现如图4-13所示的对话框,点击Export ,所设计的控制器将会以MPC1为名导出到工作区。

图4-13 Exporting a Controller to the Workspace

在退出MPCTOOL 时,会提示将整个设计保存到一个MAT 文件中。

(5)利用MPC Toolbox 命令函数设计控制器

熟悉MPC 工具箱后,也许你会觉得利用命令函数设计控制器更为方便。

在步骤(3)定义的数学模型的基础上,输入下列指令:

ManipulatedVariables = struct('Min', -220, 'Max', 220, 'Units', 'V');

OutputVariables(1) = struct('Min', -Inf, 'Max', Inf, 'Units',

'rad');

OutputVariables(2) = struct('Min', -78.5, 'Max', 78.5, 'Units',

'Nm');

Weights = struct('Input', 0, 'InputRate', 0.05, 'Output', [10 0]); Model.Plant = sys;

Model.Plant.OutputGroup = {[1], 'Measured' ; [2], 'Unmeasured'};

Ts = 0.1;

PredictionHorizon = 10;

ControlHorizon = 2;

这样就生成了一些结构变量。ManipulatedVariables定义了控制电压的变化范围、单位等,Weights定义了权重值(类似图4-6,此处定义的数值可以得到更好的性能)。Model指定了待控制模型,Model.Plant.OutputGroup指定第二个输出是不可测量的。

输入下列语句,构建MPC控制对象:

ServoMPC = mpc(Model, Ts, PredictionHorizon, ControlHorizon);

在构建MPC控制对象后,可以对一些属性进行设置。例如可以利用下面语句之一对预测时域长度进行设置:

ServoMPC.PredictionHorizon = 12;

set(ServoMPC, 'PredictionHorizon', 12);

为了得到对象的全部属性,输入:

get(ServoMPC)

为了得到对象的特定属性,例如控制时域长度,可以输入:

M = get(ServoMPC, 'ControlHorizon');

M = ServoMPC.ControlHorizon;

可以同时设置多个属性。

本例中需要继续设置下列属性:

set(ServoMPC, 'Weights', Weights, ...

'ManipulatedVariables', ManipulatedVariables, ...

'OutputVariables', OutputVariables);

在命令行里直接输入属性名称可以显示属性值,也可以调用下列语句:

display(ServoMPC)

sim命令用于线性系统的仿真:

TimeSteps = round(10/Ts);

r = [pi 0];

[y, t, u] = sim(ServoMPC, TimeSteps, r);

sim命令将输出结果和控制量分别用y和u来表示:

subplot(311)

plot(t, y(:,1), [0 t(end)], pi*[1 1])

title('Angular Position (radians)');

subplot(312)

plot(t, y(:,2), [0 t(end)], [-78.5 -78.5])

title('Torque (nM)')

subplot(313)

stairs(t, u)

title('Applied Voltage (volts)')

xlabel('Elapsed Time (seconds)')

结果见图4-14所示。

Angular Position (radians)

Torque (nM)

Applied Voltage (volts)

Elapsed Time (seconds)

图4-14 Plotting the Output of the sim Command

(6)在Simulink中使用MPC Tools

图4-15为在Simulink中搭建的伺服控制系统的预测控制器。大部分模块来自Simulink 常用库。伺服系统的数学模型来自Control System Toolbox库,sys必须在工作区间存在定义。MPC Controller来自MPC Blocks库,双击该模块,会出现如图4-16所示的对话框,在MPC Controller中输入ServoMPC(ServoMPC必须存在于工作区间,其创建过程可参考上一节)。

仿真结果见图4-17。

图4-15 Block Diagram for the Servomechanism Example

图4-16 Model Predictive Control Toolbox? Simulink? Block Dialog Box

图4-17 Servomechanism Simulation Scopes

2、造纸机控制器的设计

(1)造纸机非线性数学模型

此例为matlab预测控制工具箱自带,具体可参考Ying, Y., M. Rao, and Y. Sun "Bilinear control strategy for paper making process," Chemical Engineering Communications (1992), V ol. 111, pp. 13-28.

图4-18 Schematic of Paper Machine Headbox Elements

设状态变量为,H1、H2分别是Feed Tank和Headbox液位高度,N1是feed tank浓度,N2是headbox浓度。

可测量输出为。

控制目标:使H2和N2跟踪设定值。

控制变量:。其中G p是进入Feed Tank液体流速,G w是再回收水的流速。

流入Feed Tank中液体浓度N p为可测量干扰:

流入Feed Tank中再回收水的浓度N w为不可测量干扰:

变量均经过归一化处理。稳态时均为零,有界变量。时间单位为分。整个控制过程为开环稳定。

mpcdemos文件夹下包含了mpc_pmmodel.m文件,以S函数形式定义了该控制过程的非线性数学模型。输入序列为G p, G w, N p, N w,输出序列为H2, N1, N2。

(2)线性化原数学模型

容易得到造纸机的head box线性化数学模型,得到的状态空间方程系数如下:

A = [-1.9300 0 0 0

0.3940 -0.4260 0 0

0 0 -0.6300 0

0.8200 -0.7840 0.4130 -0.4260];

B = [1.2740 1.2740 0 0

0 0 0 0

1.3400 -0.6500 0.2030 0.4060

0 0 0 0];

C = [0 1.0000 0 0

0 0 1.0000 0

0 0 0 1.0000];

D = zeros(3,4);

然后利用下述命令创建一个连续时间LTI状态空间模型:

PaperMach = ss(A, B, C, D);

PaperMach.InputName = {'G_p', 'G_w', 'N_p', 'N_w'};

PaperMach.OutputName = {'H_2', 'N_1', 'N_2'};

(后两条指令用来在作图时标注图示,可选择)

再利用下面语句获得该模型的阶跃响应,检查是否是开环稳定,结果见图4-19:step(PaperMach);

-1-0.500.51From: G

p

T o : H 2

-1012

3T o : N 1

-10123T o : N

2

From: G

w

From: N

p

From: N

w

Step Response

Time (sec)

A m p l i t u d e

图4-19 Linearized Paper Machine Model's Step Responses

从图4-19可以看出:

(1)G p , G w 对三个输出均存在控制作用(存在耦合)。 (2)G p , G w 对H 2的控制效果类似。 (3)N 2对G w 产生相反的响应过程。 这些特征使精确、独立地控制H 2 和N 2存在难度。

(3)利用预测控制工具箱设计控制器

在命令行中输入mpctool ,然后点击Import Plant…,将先前创建的PaperMach 导入进来(具体过程可参考“伺服系统控制器的设计”第四小节)。 然后定义输入变量和输出变量的属性,最后得到的结果如图4-20所示。

图4-20Signal Properties for the Paper Machine Application 设置MPC控制器参数(其它参数保留默认值):

?Models and Horizons. Control interval = 2 minutes

?Constraints. 对于G p和G w, Minimum = -10, Maximum = 10, Max down rate = -2, Max up rate = 2.

?Weight Tuning. 对于G p和G w, Weight = 0, Rate weight = 0.4.

对于N1, Weight = 0. (其它输出变量Weight = 1.)

在Scenario1设置:

? Duration = 30

?H2 setpoint = 1 (constant)

然后运行仿真,得到的结果见图4-21和图4-22所示。

00.511.5H 2,

m

-1.5-1-0.50N 1,

%

-0.1

00.10.20.3N 2, %

Plant Outputs

Time (sec)

图4-21 Servo Response for Unit Step in Headbox Level Setpoint

-0.500.5G p , k g /

h

11.52G w , k g /

h

-101N p ,

%

0510********

-1

01N w , %

Plant Inputs

Time (sec)

图4-22 Manipulated Variable Moves Corresponding to Figure 4-21

动态响应过程在8min 左右,可以通过调整control interval 、输入变量的rate weights 、up/down rate constraints 来减小动态响应时间。为了获得鲁棒性,前面控制器参数设置得较

保守。在现在控制器的基础上,继续改进。 由图4-21可见N 1存在稳态误差(-0.25单位)。由于只存在两个输入变量,不可能使三个输出变量同时跟踪设定值。此处不需要跟踪N 1,所以设置它的weight 为零,否则会使三个输出均存在稳态误差(可以将weight 改为1来验证)。 浓度控制的重要性要高于液面的控制。将H 2 weight 由1改为0.2,仿真后会发现N 2峰值误差几乎降低了一个数量级,与此同时H 2的响应时间由8min 延长到18min 。(在后面的仿真中继续使用此组参数) 点击Scenarios ,新建一个名为Feedforward 的场景。在新建场景中,令可测量干扰N p 作阶跃变化:Initial value = 0, Size = 1, Time = 10。令所有输出变量的参考值为零,仿真时间为30min 。运行后,会发现H 2 和N 2离设定值有轻微偏离。下面使用“look ahead ”功能。注意在先前的仿真中,阶跃干扰出现以前(10min ),控制输入变量一直为零。选中N p 栏中的“look ahead ”选项框,然后运行,可以观察到在阶跃干扰未出现前,控制输入就存在变化了,这是由于选中此栏后能够预知未来出现的干扰而提前作出变化。由于在实际中不可能提前得知未来出现的干扰,因此在下面的仿真中取消“look ahead ”选项。 新建一个名为“Feedback ”的仿真场景,观测对不可测量干扰N w 的响应性能。将N p 设为0(constant ),将N w 设为1(constant ),表示在时间0时突然出现一个幅值为1的未知干扰。运行后得到如图4-23的仿真结果。H 2 和N 2离设定值0有轻微偏差。与图4-21相比,响应时间较长。Model and Horizons 选项卡中的control interval 会影响控制性能。估计器的设置也会影响对未知干扰的控制性能。图4-23为Estimation 默认设置时的结果。

-0.2-0.15-0.1-0.050H 2,

m

-0.200.20.40.6N 1,

%

-0.1

00.10.2N 2, %

Plant Outputs

Time (sec)

图4-23 Feedback Scenario: Unmeasured Disturbance Rejection

选中MPC1---Estimation ,出现如图4-24所示的对话框。最底下的状态栏提示信息表示使用预测控制工具箱默认参数。默认进入Output Disturbances 选项卡,Signal-by-signal 被默认选中。前两个输出量设为独立阶跃干扰。然后点击Input Disturbances ,不可测输入干扰也为独立阶跃类型。这样,一共有三个独立阶跃类型的干扰,幅值均为1。选中

Measurement Noise选项卡,看到每个输出量均被加上白噪声。如果某个输出干扰很大,那么控制器就会减小该输出的权重,依靠该输出的预测值。在此处造纸机控制器的设计中,默认的噪声设置是合理的。

图4-24 Default Estimator Assumptions: Output Disturbances

(4)利用Simulink对原非线性模型进行仿真

上一节中利用线性化模型设计了预测控制器,得到了很好的控制效果。这样子得到的控制器没有预测误差。由于实际模型是非线性的,需要将得到的控制器控制非线性模型,这种情况下会引入预测误差。

图4-25为造纸机非线性数学模型的Simulink控制框图,图中的S函数为造纸机的非线性数学模型,其定义见mpc_pmmodel.m。

MATLAB模型预测控制工具箱函数

MATLAB模型预测控制工具箱函数 8.2 系统模型建立与转换函数 前面读者论坛了利用系统输入/输出数据进行系统模型辨识的有关函数及使用方法,为时行模型预测控制器的设计,需要对系统模型进行进一步的处理和转换。MATLAB的模型预测控制工具箱中提供了一系列函数完成多种模型转换和复杂系统模型的建立功能。 在模型预测控制工具箱中使用了两种专用的系统模型格式,即MPC状态空间模型和MPC传递函数模型。这两种模型格式分别是状态空间模型和传递函数模型在模型预测控制工具箱中的特殊表达形式。这种模型格式化可以同时支持连续和离散系统模型的表达,在MPC传递函数模型中还增加了对纯时延的支持。表8-2列出了模型预测控制工具箱的模型建立与转换函数。 表8-2 模型建立与转换函数 8.2.1 模型转换 在MATLAB模型预测工具箱中支持多种系统模型格式。这些模型格式包括: ①通用状态空间模型; ②通用传递函数模型; ③MPC阶跃响应模型; ④MPC状态空间模型; ⑤MPC传递函数模型。

在上述5种模型格式中,前两种模型格式是MATLAB通用的模型格式,在其他控制类工具箱中,如控制系统工具箱、鲁棒控制工具等都予以支持;而后三种模型格式化则是模型预测控制工具箱特有的。其中,MPC状态空间模型和MPC传递函数模型是通用的状态空间模型和传递函数模型在模型预测控制工具箱中采用的增广格式。模型预测控制工具箱提供了若干函数,用于完成上述模型格式间的转换功能。下面对这些函数的用法加以介绍。 1.通用状态空间模型与MPC状态空间模型之间的转换 MPC状态空间模型在通用状态空间模型的基础上增加了对系统输入/输出扰动和采样周期的描述信息,函数ss2mod()和mod2ss()用于实现这两种模型格式之间的转换。 1)通用状态空间模型转换为MPC状态空间模型函数ss2mod() 该函数的调用格式为 pmod= ss2mod(A,B,C,D) pmod= ss2mod(A,B,C,D,minfo) pmod= ss2mod(A,B,C,D,minfo,x0,u0,y0,f0) 式中,A, B, C, D为通用状态空间矩阵; minfo为构成MPC状态空间模型的其他描述信息,为7个元素的向量,各元素分别定义为: ◆minfo(1)=dt,系统采样周期,默认值为1; ◆minfo(2)=n,系统阶次,默认值为系统矩阵A的阶次; ◆minfo(3)=nu,受控输入的个数,默认值为系统输入的维数; ◆minfo(4)=nd,测量扰的数目,默认值为0; ◆minfo(5)=nw,未测量扰动的数目,默认值为0; ◆minfo(6)=nym,测量输出的数目,默认值系统输出的维数; ◆minfo(7)=nyu,未测量输出的数目,默认值为0; 注:如果在输入参数中没有指定m i n f o,则取默认值。 x0, u0, y0, f0为线性化条件,默认值均为0; pmod为系统的MPC状态空间模型格式。 例8-5将如下以传递函数表示的系统模型转换为MPC状态空间模型。 解:MATLAB命令如下:

Matlab优化工具箱函数简介

Matlab优化工具箱函数简介 一维搜索问题fminbnd 无约束极小值fminunc, fminsearch 约束极小值fmincon 线性规划linprog 二次规划quadprog 1.一维搜索问题 优化工具箱函数fminbnd 对应问题:min f(x) x10表示计算收敛,exitflag=0表示超过了最大的迭代次数,exitflag<0表示计算不收敛,返回值output有3个分量,其中iterations是优化过程中迭代次数,funcCount是代入函数值的次数,algorithm是优化所采用的算法。 例: clear fun='(x^5+x^3+x^2-1)/(exp(x^2)+sin(-x))' ezplot(fun,[-2,2])

Matlab 的 Fuzzy 工具箱实现模糊控制

Matlab的 Fuzzy 工具箱实现模糊控制(rulelist的确定) 用Matlab的 Fuzzy 工具箱实现模糊控制- - 用Matlab中的 Fuzzy 工具箱做一个简单的模糊控制,流程如下: 1、创建一个 FIS (Fuzzy Inference System ) 对象, a = newfis(fisName,fisType,andMethod,orMethod,impMethod, aggMethod,defuzzMethod) 一般只用提供第一个参数即可,后面均用默认值。 2、增加模糊语言变量 a = addvar(a,'varType','varName',varBounds) 模糊变量有两类:input 和 output。在每增加模糊变量,都会按顺序分配一个 index,后面要通过该index 来使用该变量。 3、增加模糊语言名称,即模糊集合。 a = addmf(a,'varType',varIndex,'mfName','mfType',mfParams) 每个模糊语言名称从属于一个模糊语言。Fuzzy 工具箱中没有找到离散模糊集合的隶属度表示方法,暂且用插值后的连续函数代替。 参数mfType即隶属度函数(Membership Functions),它可以是Gaussmf、trimf、trapmf等,也可以是自定义的函数。 每一个语言名称也会有一个 index,按加入的先后顺序得到,从 1 开始。 4、增加控制规则,即模糊推理的规则。 a = addrule(a,ruleList) 其中ruleList是一个矩阵,每一行为一条规则,他们之间是 ALSO 的关系。 假定该 FIS 有 N 个输入和 M 个输出,则每行有 N+M+2 个元素,前 N 个数分别表示 N 个输入变量的某一个语言名称的 index,没有的话用 0 表示,后面的 M 个数也类似,最后两个分别表示该条规则的权重和个条件的关系,1 表示 AND,2 表示 OR。 例如,当“输入1” 为“名称1” 和“输入2” 为“名称3” 时,输出为“ 输出1” 的“状态2”,则写为: [1 3 2 1 1] 5、给定输入,得到输出,即进行模糊推理。 output = evalfis(input,fismat) 其中fismat为前面建立的那个 FIS 对象。 一个完整的例子如下: clear all; a = newfis('myfis'); a = addvar(a,'input','E',[0 7]); a = addmf(a,'input',1,'small','trimf',[0 1 4.333]); a = addmf(a,'input',1,'big','trimf',[1.6667 6 7]); a = addvar(a,'output','U',[0 7]); a = addmf(a,'output',1,'small','trimf',[0 1 4.333]);

2019年matlab优化工具箱的使用

优化工具箱的使用 MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MA TLAB还提供了图形界面的优化工具(GUI Optimization tool)。 1 GUI优化工具 GUI优化工具的启动 有两种启动方法: (1)在命令行输入optimtool; (2)在MA TLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool” GUI优化工具的界面 界面分为三大块: 左边(Problem Setup and Results)为优化问题的描述及计算结果显示; 中间(Options)为优化选项的设置; 右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“<<”、“>>”的按钮将帮助隐藏或显示。 1、优化问题的描述及计算结果显示 此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。 选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。 ?Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。 ?Algorithm:选择算法,对于不同的求解函数,可用的算法也不同。 Problem框组用于描述优化问题,包括以下内容: ?Objective function: 输入目标函数。 ?Derivatives: 选择目标函数微分(或梯度)的计算方式。 ?Start point: 初始点。 Constraints框组用于描述约束条件,包括以下内容: ?Linear inequalities: 线性不等式约束,其中A为约束系数矩阵,b代表约束向量。 ?Linear equalities: 线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。 ?Bounds: 自变量上下界约束。 ?Nonlinear Constraints function; 非线性约束函数。 ?Derivatives: 非线性约束函数的微分(或梯度)的计算方式。 Run solver and view results框组用于显示求解过程和结果。 (对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc 函数就没有Constraints框组。) 2、优化选项(Options) ?Stopping criteria: 停止准则。

Matlab+灰色预测模型模型GM(1,1)

GM(1,1)灰色预测模型 Introduction Initial 给定原始序列: x(0) =(x(0)(1), x(0)(2), x(0)(3)…, x(0)(n)) Step 1 一次AGO(1-AGO)生成序列,以弱化原始序列的随机性和波动性:x(1) =(x(1)(1), x(1)(2), x(1)(3)…, x(1)(n)) Matlab Program clear syms a b; c=[a b]'; fid=fopen('.\Grey Model\test.txt'); x0=fscanf(fid,'%f');x0=x0'; fclose(fid); x1=cumsum(x0); %原始数据累加 n=length(x0); for i=1:(n-1) z(i)=(x1(i)+x1(i+1))/2; %生成累加矩阵end %计算待定参数的值 Y=x0;Y(1)=[]; Y=Y'; B=[-z;ones(1,n-1)];B=B'; c=inv(B'*B)*B'*Y; c=c'; a=c(1);b=c(2); %预测后续数据 %预测之后10个时间单位的数据 xx1=[];xx1(1)=x0(1); for i=2:(n+10) xx1(i)=(x0(1)-b/a)/exp(a*(i-1))+b/a; end xx0=[];xx0(1)=x0(1);

Step 2 (1) dx (1) dt +ax1t=u,式中a, u为待定系数。 灰微分方程模型为: x0k+az1k=u,z为背景值 z1k=1/2(x1k+x1k?1) (2) 构造矩阵B和数据向量Y n Y n=Ba Y n=x02 x03 ? x0n , B= ?1/2(x11+x12), ?1/2(x12+x13), ? ?1/2(x1n?1+x1n), 1 1 ? 1 a=a u=(B T B)?1B T Y n Step 3 模型响应函数 x1k+1= x01?u e?ak+ u x0k+1=x1k+1?x1k Step 4 检验和判断GM(1,1)模型的精度(1) 残差检验for i=2:(n+10) xx0(i)=xx1(i)-xx1(i-1); end %关联度检验 for i=1:n e(i)=abs(x0(i)-xx0(i)); end mmax=max(e); for i=1:n ee(i)=0.5*mmax/(e(i)+0.5*mmax); end r=sum(ee)/n; %后验差检验 x0bar=sum(x0)/n; s1=0; for i=1:n s1=s1+(x0(i)-x0bar)^2; end s1=sqrt(s1/n); s2=0; ebar=sum(e)/n; for i=1:n s2=s2+(e(i)-ebar)^2; end s2=sqrt(s2/n); C=s2/s1; p=0; for i=1:n if abs(e(i)-ebar)<0.6745*s1

灰色预测模型的Matlab程序及检验程序(精)

灰色预测模型的Matlab 程序及检验程序 %灰色预测模型程序 clear syms a b; c=[a b]'; A=[46.2 32.6 26.7 23.0 20.0 18.9 17.5 16.3];% 原始序列 B=cumsum(A);%累加n=length(A); for i=1:(n-1) C(i)=(B(i)+B(i+1))/2; end %计算待定参数 D=A; D(1)=[]; D=D'; E=[-C; ones(1,n-1)]; c=inv(E*E')*E*D; c=c'; a=c(1); b=c(2); %预测往后预测5个数据 F=[];F(1)=A(1); for i=2:(n+5) F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a; end G=[];G(1)=A(1); for i=2:(n+5) G(i)=F(i)-F(i-1); end t1=2002:2009; t2=2002:2014; G plot(t1,A,'o',t2,G) %灰色预测模型检验程序 function [ q,c,p ] = checkgm( x0,x1 ) %GM 检验函数 %x0 原始序列

%x1 预测序列 %·返回值 % q –- 相对误差 % c -- ·方差比 % p -- 小误差概率 e0=x0-x1; q=e0/x0; s1=var(x0); %qpa=mean(e0); s2=var(e0); c=s2/s1; len=length(e0); p=0; for i=1:len if(abs(e0(i)) < 0.6745*s1) p=p+1; end end p=p/len; end

(完整版)matlab模糊控制工具箱的使用

matlab模糊控制工具箱的使用 本学期选修了周川老师的智能控制及应用这门课程,大三时候曾上过周老师的英文版的控制工程基础这门课程,比较喜欢周老师上课的风格,智能控制这门课也收获不小,模糊控制是课程中讲到的第一个智能控制算法。 模糊不是真的模糊,模糊是为了精确。模糊控制中涉及到一个隶属度的概念,通常我们认为一个事物属于一个概念与否是确定的,比如数字电路的0与1,但是实际情况或者人们的思维习惯却不是这样的。比如规定18到30岁为青年,那么还差一天到18岁的人算不算青年呢?照规定看不算,但是如果我们加入概率的概念,比如说这个人90%属于青年人,可能更符合人们的思维习惯。 L.A.Zadeh在其《不相容原理》所述:“随着系统的复杂程度不断提高,人们对其精确而有意义地描述的能力不断的降低,以致在达到某一个阈值之后,系统的精确性和复杂性之间呈现出几乎是相互完全排斥的性质”。我们通常所用的控制算法一般是建立在模型比较确定的情况下,而模糊控制不依赖于对象的模型就可以进行控制决策,而且对系统参数变化具有较强的适应性。 对于模糊控制的原理,我不是很清楚,也没有这个心情去搞清楚,感觉知道大概怎么用就可以了。Matlab中集成了模糊控制工具箱,可以使用图像界面进行模糊控制器的设计,极大的简化了设计过程。下面介绍利用模糊工具箱进行控制系统设计的过程。 在matlab的主窗口中输入fuzzy即可调出模糊工具箱界面,退出界面的时候会提示保存,保存格式为fis,如果我们将文件保存为njust.fis,那么下次使用这个文件的时候在主窗口中输入fuzzy njust即可。 模糊控制器的建立过程如下:(1)设定误差E、误差变化率EC和控制量U的论域为,一般为[-6 6]。(2)设定E、EC、U的模糊集。一般可设为{NB、NM、NS、ZO、PS、PM、PB}。(3)设定隶属度函数。有高斯型隶属度函数、三角型隶属度函数等。(4)设定模糊控制规则。常用的模糊控制规则如图1所示,当然可以根据特定的控制对象和要求进行相应的调整。

MA AB模型预测控制工具箱函数

M A T L A B模型预测控制工具箱函数 8.2系统模型建立与转换函数 前面读者论坛了利用系统输入/输出数据进行系统模型辨识的有关函数及使用方法,为时行模型预测控制器的设计,需要对系统模型进行进一步的处理和转换。MATLAB的模型预测控制工具箱中提供了一系列函数完成多种模型转换和复杂系统模型的建立功能。 在模型预测控制工具箱中使用了两种专用的系统模型格式,即MPC状态空间模型和MPC传递函数模型。这两种模型格式分别是状态空间模型和传递函数模型在模型预测控制工具箱中的特殊表达形式。这种模型格式化可以同时支持连续和离散系统模型的表达,在MPC传递函数模型中还增加了对纯时延的支持。表8-2列出了模型预测控制工具箱的模型建立与转换函数。 表8-2模型建立与转换函数 8.2.1模型转换 在MATLAB模型预测工具箱中支持多种系统模型格式。这些模型格式包括: ①通用状态空间模型; ②通用传递函数模型; ③MPC阶跃响应模型; ④MPC状态空间模型;

⑤MPC传递函数模型。 在上述5种模型格式中,前两种模型格式是MATLAB通用的模型格式,在其他控制类工具箱中,如控制系统工具箱、鲁棒控制工具等都予以支持;而后三种模型格式化则是模型预测控制工具箱特有的。其中,MPC状态空间模型和MPC传递函数模型是通用的状态空间模型和传递函数模型在模型预测控制工具箱中采用的增广格式。模型预测控制工具箱提供了若干函数,用于完成上述模型格式间的转换功能。下面对这些函数的用法加以介绍。 1.通用状态空间模型与MPC状态空间模型之间的转换 MPC状态空间模型在通用状态空间模型的基础上增加了对系统输入/输出扰动 和采样周期的描述信息,函数ss2mod()和mod2ss()用于实现这两种模型格式之间的转换。 1)通用状态空间模型转换为MPC状态空间模型函数ss2mod() 该函数的调用格式为 pmod=ss2mod(A,B,C,D) pmod=ss2mod(A,B,C,D,minfo) pmod=ss2mod(A,B,C,D,minfo,x0,u0,y0,f0) 式中,A,B,C,D为通用状态空间矩阵; minfo为构成MPC状态空间模型的其他描述信息,为7个元素的向量,各元素分别定义为: ◆minfo(1)=dt,系统采样周期,默认值为1; ◆minfo(2)=n,系统阶次,默认值为系统矩阵A的阶次; ◆minfo(3)=nu,受控输入的个数,默认值为系统输入的维数; ◆minfo(4)=nd,测量扰的数目,默认值为0; ◆minfo(5)=nw,未测量扰动的数目,默认值为0; ◆minfo(6)=nym,测量输出的数目,默认值系统输出的维数; ◆minfo(7)=nyu,未测量输出的数目,默认值为0; 注:如果在输入参数中没有指定m i n f o,则取默认值。 x0,u0,y0,f0为线性化条件,默认值均为0; pmod为系统的MPC状态空间模型格式。 例8-5将如下以传递函数表示的系统模型转换为MPC状态空间模型。 解:MATLAB命令如下:

灰色预测MATLAB程序

作用:求累加数列、求a b的值、求预测方程、求残差 clc %清屏,以使结果独立显示 x=[ ]; format long; %设置计算精度 if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换 x=x'; end n=length(x); %取输入数据的样本量 z=0; for i=1:n %计算累加值,并将值赋予矩阵be z=z+x(i,:); be(i,:)=z; end for i=2:n %对原始数列平行移位 y(i-1,:)=x(i,:); end

for i=1:n-1 %计算数据矩阵B的第一列数据 c(i,:)=*(be(i,:)+be(i+1,:)); end for j=1:n-1 %计算数据矩阵B的第二列数据 e(j,:)=1; end for i=1:n-1 %构造数据矩阵B B(i,1)=c(i,:); B(i,2)=e(i,:); end alpha=inv(B'*B)*B'*y; %计算参数矩阵即a b的值 for i=1:n+1 %计算数据估计值的累加数列,如改为n+1为n+m可预测后m-1个值 ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,: );%显示输出预测值的累加数列 end var(1,:)=ago(1,:) %显示输出预测值 for i=1:n %如改n为n+m-1,可预测后m-1个值 var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值end for i=1:n error(i,:)=x(i,:)-var(i,:); %计算残差 end c=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值c ago %显示输出预测值的累加数列 alpha %显示输出参数数列 var %显示输出预测值 error %显示输出误差 c %显示后验差的比值 作用:数据处理判断是否可以用灰色预测、求级比、求累加数列、求a b的值、求预测方程 clc,clear x0=[ ]'; %注意这里为列向量 n=length(x0); lamda=x0(1:n-1)./x0(2:n) %计算级比 range=minmax(lamda') %计算级比的范围 x1=cumsum(x0) %累加运算 B=[*(x1(1:n-1)+x1(2:n)),ones(n-1,1)]; Y=x0(2:n); u=B\Y %拟合参数u(1)=a,u(2)=b x=dsolve('Dx+a*x=b','x(0)=x0'); %求微分方程的符号解

灰色系统新陈代谢模型源码(matlab)

function g(x); %定义函数gm(x) for j=1:10 clc; %清屏,以使计算结果独立显示 format long; %设置计算精度 if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换x=x'; end; n=length(x); %取输入数据的样本量 z=0; for i=1:n %计算累加值,并将值赋与矩阵be z=z+x(i,:); be(i,:)=z; end for i=2:n %对原始数列平行移位 y(i-1,:)=x(i,:); end for i=1:n-1 %计算数据矩阵B的第一列数据 c(i,:)=-0.5*(be(i,:)+be(i+1,:)); end for j=1:n-1 %计算数据矩阵B的第二列数据 e(j,:)=1; end for i=1:n-1 %构造数据矩阵B B(i,1)=c(i,:); B(i,2)=e(i,:); end alpha=inv(B.'*B)*B.'*y; %计算参数α、μ矩阵 for i=1:n+1 %计算数据估计值的累加数列,如改n+1为n+m可预测后m-1个值ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:); end var(1,:)=ago(1,:) for i=1:n %如改n为n+m-1,可预测后m-1个值 var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值end for i=1:n error(i,:)=var(i,:)-x(i,:); %计算残差 end c=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值c ago %显示输出预测值的累加数列 alpha %显示输出参数α、μ数列 var %显示输出预测值 error %显示输出误差 c %显示后验差的比值c var=fix(var);

灰色预测matlab程序

Matlab的灰色预测程序: y=input('请输入数据'); n=length(y); yy=ones(n,1); yy(1)=y(1); for i=2:n yy(i)=yy(i-1)+y(i) end B=ones(n-1,2); for i=1:(n-1) B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; end BT=B'; for j=1:(n-1) YN(j)=y(j+1); end YN=YN'; A=inv(BT*B)*BT*YN; a=A(1); u=A(2); t=u/a; t_test=input('输入需要预测的个数'); i=1:t_test+n; yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); end x=1:n; xs=2:n+t_test; yn=ys(2:n+t_test); plot(x,y,'^r',xs,yn,'*-b'); det=0; for i=2:n det=det+abs(yn(i)-y(i)); end det=det/(n-1); disp(['百分绝对误差为:',num2str(det),'%']); disp(['预测值为:',num2str(ys(n+1:n+t_test))]); 请输入数据[29.8 30.11 41.05 70.12 77.79 77.79 104.82 65.22 82.7 100.79] 输入需要预测的个数4

百分绝对误差为:14.5128% 预测值为:110.5718 120.8171 132.0116 144.2434

通过算例熟悉MATLAB模糊控制工具箱

通过算例熟悉MATLAB模糊控制工具箱 设计一个二维模糊控制器控制一个一阶被控对象 1 () 1 G s Ts = + ,然后改变控制对象参 数的大小,观察模糊控制的鲁棒性。 1、模糊推理的五个步骤 1)输入变量的模糊化 这是模糊推理的第一步,是获取输入变量,并确定它们的隶属函数,从而确定属于每个模糊集合的隶属度。 2) 应用模糊算子 完成了输入模糊化,就知道了对于每个模糊规则,前提中每一个部分被满足的程度。如果一个给定规则的前提有多个部分,则要应用模糊算子来获得一个数值,这个数值表示前提对于该规则的满足程度。 3) 应用推理方法 推理的类型有mamdani和sugeno 推理。Mamdani推理法是一种在模糊控制中普遍使用的方法,它本质上仍然是一种合成推理方法,只不过对模糊蕴涵关系取不同的形式而已。Mamdani型推理,从每个规则的结果中得到的模糊集通过聚类运算后得到结果模糊集,被反模糊化后得到系统输出。Sugeon型推理:其中每个规则的结果是输入的线性组合,而输出是结果的加权线性组合。 4) 输出的聚类 由于决策是在对模糊推理系统中所有规则进行综合考虑的基础上做出的,因此必须以某种方式将规则结合起来以做出决策。聚类就是这样一个过程,它将表示每个规则输出的模糊集结合成一个单独的模糊集。聚类方法有max,probor(概率乘),sum。其中,sum执行的是各规则输出集的简单相加。 5) 解模糊化 解模糊化过程也叫反模糊化过程,它的输入是一个模糊集,既上一步的聚类输出模糊集,其输出为一个单值。模糊集的聚类中包含很多输出值,因此必须进行反模糊化,以从集合中解析出一个单输出值。 2、模糊逻辑工具箱的介绍 模糊逻辑工具箱提供的图形用户界面(GUI)工具有五个:模糊推理系统(FIS)编辑器;隶属函数编辑器;模糊规则编辑器;模糊规则观察器;输出曲面观察器。 1)FIS编辑器: Matlab的FIS界面如图1所示。FIS处理系统有多少个输入变量,输出变量,名称是什么,模糊算子“与”(min,prod乘积,custom自定义),“或”(max大,probor 概率统计方法,custom),推理方法(min,prod,custom),聚类方法(max,probor,sum,custom),解模糊的方法(centroid质心法,bisector中位线法,middle of maximum,largest of maximum,smallest of maximum)。

灰色预测模型matlab程序精确版

灰色预测模型matlab程序 %下面程序是灰色模型GM(1,1)程序二次拟合和等维新陈代谢改进预测程序,mat lab6.5 ,使用本程序请注明,程序存储为gm1.m %x = [5999,5903,5848,5700,7884];gm1(x); 测试数据 %二次拟合预测GM(1,1)模型 function gmcal=gm1(x) sizexd2 = size(x,2); %求数组长度 k=0; for y1=x k=k+1; if k>1 x1(k)=x1(k-1)+x(k); %累加生成 z1(k-1)=-0.5*(x1(k)+x1(k-1)); %z1维数减1,用于计算B yn1(k-1)=x(k); else x1(k)=x(k); end end %x1,z1,k,yn1 sizez1=size(z1,2); %size(yn1); z2 = z1'; z3 = ones(1,sizez1)'; YN = yn1'; %转置 %YN B=[z2 z3]; au0=inv(B'*B)*B'*YN; au = au0'; %B,au0,au

ufor = au(2); ua = au(2)./au(1); %afor,ufor,ua %输出预测的 a u 和 u/a的值 constant1 = x(1)-ua; afor1 = -afor; x1t1 = 'x1(t+1)'; estr = 'exp'; tstr = 't'; leftbra = '('; rightbra = ')'; %constant1,afor1,x1t1,estr,tstr,leftbra,rightbra strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,r ightbra,'+',leftbra,num2str(ua),rightbra) %输出时间响应方程 %****************************************************** %二次拟合 k2 = 0; for y2 = x1 k2 = k2 + 1; if k2 > k else ze1(k2) = exp(-(k2-1)*afor); end end %ze1 sizeze1 = size(ze1,2); z4 = ones(1,sizeze1)'; G=[ze1' z4]; X1 = x1'; au20=inv(G'*G)*G'*X1; au2 = au20'; %z4,X1,G,au20

MATLAB模糊逻辑工具箱及函数调用方法

4 MATLAB模糊工具箱介绍 Fuzzy Logic工具箱功能非常强大,利用它人们可以方便地建立模糊逻辑推理系统,并对其进行测试。这里我们主要介绍它提供的5个图形化的系统设计工具。 4.1模糊推理系统编辑器 启动模糊推理系统编辑器(FISE, Fuzzy Inference SystemEditer)的方法有两种,在MATLAB的命令窗口中输入“fuzzy”命令或者依次点击MATLAB软件左下角的“Start”,“Toolboxes”,“Fuzzy Logic”也可打开FISE,然后双击FIS Editor Viewer项。FISE的图形界面如下图14示。 图1FISE图形界面 4.2隶属函数编辑器 在MATLAB的命令界面输入“mfedit”命令或者在模糊推理系统编辑器的“File” “Edit/Membership Functions”或者双击图14中红色矩形,都可打开隶属函数编辑器。通过该编辑器可以设定和变更输入/输出语言变量的各自的语言值的隶属函数的类型及参数。如下图15所示。 图2隶属函数编辑器界面 4.3模糊规则编辑器 在MATLAB的命令界面中输入“ruleedit”命令或者利用模糊推理系统编辑

器的“File” “Edit/Rules”或双击图2里红色框旁的黑色的矩形框,都可以打开模糊规则编辑器。通过该编辑器可以添加、修改和删除必要的模糊规则,其空白界面如下图3所示。 图3模糊规则编辑器界面 4.4模糊规则观察器 在MATLAB的命令界面输入“ruleview”命令,或者在前面介绍的三种编辑器中的任一个中选择相应的“View/Rules”,均可打开模糊规则观察器。在模糊规则观察器中,以图形形式描述了模糊推理系统的推理过程,如下图4所示。 图4模糊规则浏览器界面 4.5模糊推理输入输出变量特性观察器 在MATLAB的命令窗口中输入“surfview”命令,或者在各个编辑器窗口选择相应菜单“View/Surface”,都可打开模糊推理输入输出曲面浏览器。该窗口用三维图形展示出输入与输出变量的曲面特性,如下图5所示。

灰色预测模型matlab程序精确版

%x=[1019,1088,1324,1408,1601];gm1(x); 测试数据%二次拟合预测GM(1,1)模型 function gmcal=gm1(x) if nargin==0 x=[1019,1088,1324,1408,1601] end format long g sizex=length(x); %求数组长度 k=0; for y1=x k=k+1; if k>1 x1(k)=x1(k-1)+x(k); %累加生成 z1(k-1)=-0.5*(x1(k)+x1(k-1)); %z1维数减1,用于计算B yn1(k-1)=x(k); else x1(k)=x(k); end end %x1,z1,k,yn1 sizez1=length(z1); %size(yn1); z2 = z1'; z3 = ones(1,sizez1)'; YN = yn1'; %转置 %YN B=[z2 z3]; au0=inv(B'*B)*B'*YN; au = au0'; %B,au0,au afor = au(1); ufor = au(2); ua = au(2)./au(1); %afor,ufor,ua %输出预测的 a u 和 u/a的值 constant1 = x(1)-ua; afor1 = -afor; x1t1 = 'x1(t+1)'; estr = 'exp'; tstr = 't'; leftbra = '(';

rightbra = ')'; %constant1,afor1,x1t1,estr,tstr,leftbra,rightbra strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+ ',leftbra,num2str(ua),rightbra) %输出时间响应方程 %****************************************************** %二次拟合 k2 = 0; for y2 = x1 k2 = k2 + 1; if k2 > k else ze1(k2) = exp(-(k2-1)*afor); end end %ze1 sizeze1=length(ze1); z4 = ones(1,sizeze1)'; G=[ze1' z4]; X1 = x1'; au20=inv(G'*G)*G'*X1; au2 = au20'; %z4,X1,G,au20 Aval = au2(1); Bval = au2(2); %Aval,Bval %输出预测的 A,B的值 strcat(x1t1,'=',num2str(Aval),estr,leftbra,num2str(afor1),tstr,rightbra,'+',lef tbra,num2str(Bval),rightbra) %输出时间响应方程 nfinal = sizex-1 + 1;(其中+1可改为+5等其他数字,即可预测更多的数字) %决定预测的步骤数5 这个步骤可以通过函数传入 %nfinal = sizexd2 - 1 + 1; %预测的步骤数 1 for k3=1:nfinal x3fcast(k3) = constant1*exp(afor1*k3)+ua; end %x3fcast %一次拟合累加值 for k31=nfinal:-1:0 if k31>1 x31fcast(k31+1) = x3fcast(k31)-x3fcast(k31-1); else if k31>0

MATLAB中常用的工具箱

6.1.1MA TLAB中常用的工具箱 MA TLAB中常用的工具箱有: Matlab main toolbox——matlab主工具箱 Control system toolbox——控制系统工具箱Communication toolbox——通信工具箱 Financial toolbox——财政金融工具箱 System identification toolbox——系统辨识工具箱 Fuzzy logic toolbox ——模糊逻辑工具箱 Higher-order spectral analysis toolbox——高阶谱分析工具箱Image processing toolbox——图像处理工具箱 Lmi contral toolbox——线性矩阵不等式工具箱 Model predictive contral toolbox——模型预测控制工具箱 U-Analysis ang sysnthesis toolbox——u分析工具箱 Neural network toolbox——神经网络工具箱 Optimization toolbox——优化工具箱 Partial differential toolbox——偏微分奉承工具箱 Robust contral toolbox——鲁棒控制工具箱 Spline toolbox——样条工具箱 Signal processing toolbox——信号处理工具箱 Statisticst toolbox——符号数学工具箱 Symulink toolbox——动态仿真工具箱 System identification toolbox——系统辨识工具箱 Wavele toolbox——小波工具箱 6.2优化工具箱中的函数 1、最小化函数 2、最小二乘问题 3、方程求解函数

matlab自带优化工具箱遗传算法中文解释

matlab自带优化工具箱遗传算法中文解释 problem setup and results设置与结果 problem fitness function适应度函数 number of variable变量数 constraints约束 linear inequalities线性不等式,A*x<=b形式,其中A是矩阵,b是向量 linear equalities线性等式,A*x=b形式,其中A是矩阵,b是向量 bounds定义域,lower下限,upper上限,列向量形式,每一个位置对应一个变量 nonlinear constraint function非线性约束,用户定义,非线性等式必须写成c=0形式,不等式必须写成c<=0形式 integer variable indices整型变量标记约束,使用该项时Aeq和beq必须为空,所有非线性约束函数必须返回一个空值,种群类型必须是实数编码 run solver and view results求解 use random states from previous run使用前次的状态运行,完全重复前次运行的过程和结果 population population type编码类型 double vector实数编码,采用双精度 bitstring二进制编码对于生成函数和变异函数,只能选用uniform和custom,对于杂交函数,只能使用 scattered singlepoint,twopoint或custom不能使用hybrid function和nonlinear constraint function custom 自定义 population size:种群大小 creation function:生成函数,产生初始种群 constraint dependent:约束相关,无约束时为uniform,有约束时为feasible population uniform:均匀分布 feasible population :自适应种群,生成能够满足约束的种群 initial population:初始种群,不指定则使用creation function生成,可以指定少于种群数量的种群,由creation function完成剩余的 initial scores:初始值,如果不指定,则有计算机计算适应度函数作为初始值,对于整型约束不可用,使用向量表示 initial range:初始范围,使用向量矩阵表示,第一行表示范围的下限,第二行表示上限 fitness scaling:适应度尺度 rank:等级。将适应度排序,然后编号 proportional:按比例 top:按比例选取种群中最高适应度的个体,这些个体有等比例的机会繁衍,其余的个体被淘汰 shift linear:线性转换

相关文档
最新文档