1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y56XmJhv
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
生物发酵过程,其中稀释速率和供料基质浓度可作为操作变量。出口的细胞浓度或生物浓度、基质浓度以及产品浓度是过程的状态变量。例如在生产酒精的发酵过程中,是酵母浓度,是葡萄糖浓度,而是乙醇浓度。假设发酵培养基是单一均相生长的有机体,则广泛采用的非构造化模型较适用于非线性控制器的设计。
4.部分源码
...............................................................
%发酵模型
%已知初始浓度
X0 = 0.0005;
S0 = 0.1;
P0 = 0;
[RX,RS,RP] = model_of_fj(X0,S0,P0);
%采样时间
ts=20
%PID的控制变量
kp=1;
ki=0.05;
kd=0.3;
%原系统离散化
sysc=tf([1],[60 1],'inputdelay',80);
sysd=c2d(sysc,ts,'zoh');
%得到需要的离散系统参数
[num,den]=tfdata(sysd,'v');
%PID仿真参数设定
u1=0;
u2=0;
u3=0;
u4=0;
u5=0;
y1=0;
y2=0;
y3=0;
e1=0;
e2=0;
es=0;
%开始PID仿真
for k=1:500
t(k)=k*ts;
y(k)=-den(2)*y1+num(2)*u5;
r(k)=1;
e(k)=r(k)-y(k);
es=es+e(k)*ts;
%PID Control
u(k)=kp*e(k)+kd*(e(k)-e1)/ts+ki*es;
if u(k)>5
u(k)=5;
elseif u(k)<-5
u(k)=-5;
end
u5=u4;
u4=u3;
u3=u2;
u2=u1;
u1=u(k);
e2=e1;
e1=e(k);
end
%DMC仿真
%建立离散的系统
gmpc=poly2tfd([1],[60 1],0,80);
%系统阶跃响应的时间
tend=20000;
mymodel=tfd2step(tend,ts,1,gmpc);
%MPC参数设定
P=5;
M=3;
ywt=[];
uwt=[1];
rmpc=[1];
%系统的仿真时间设定
tend=10000;
%建立MPC的系数矩阵
mpcM=mpccon(mymodel,ywt,uwt,M,P);
%MPC仿真
[ympc,umpc,ymmpc]=mpcsim(mymodel,mymodel,mpcM,tend,rmpc);
%MPC控制绘图
08_003_m