找到最佳的输入组合,使非线性ODE数学模型的输出最大化

10次观看(过去30天)
Darshna Joshi
Darshna Joshi 2021年8月7日
评论道: Darshna Joshi2022年1月13日
如何找到输入(3个输入)的最佳组合,从而获得最大的输出。请注意,我有一个非线性ODE模型的输出也作为微分eqn。另外,我有SBML文件,如何处理?
2的评论
Darshna Joshi
Darshna Joshi 2021年9月6日
@darova @Alan韦斯 下面是我求解ODE的matlab代码。如何使用fmincon同样。因为我对它是新的,即使在看了fmincon的帮助部分,不能解决这个问题。
问题是通过改变kst,x1,x5和xo,在(-8e-4到2e-4)范围内找到x3的最佳(最大值)值。
输入2(输入2是一个状态变量,在执行优化时可以在4到15的范围内变化)
kst= 1%输入3(输入3是速率常数,它可以从0.1到2)
输入4(输入4是一个状态变量,可以在4到10的范围内变化)
输入1可以从1e-9变化到1e-6
% MATLAB代码%
%脚本文件
函数rest = scrt1 (t,X)
x2 = X(1);
x3 = X(2);
%的参数
如果t < 15
X1 = 1e-7;输入1可以从1e-9到1e-6不等
其他的X1 = 0;
结束
x5 = 5%输入2(输入2是一个状态变量,在执行优化时可以在4到15的范围内变化)
自主软件= 1%输入3(输入3是速率常数,它可以从0.1到2)
xo = 4%输入4(输入4是一个状态变量,可以在4到10的范围内变化)
K1 = 6e7;
Km1 = 0.20;
Km4 = 0.003;
K3 = 2500.00;
K4 = km4/9;
Km3 = km1;
圈= 1.5
%微分方程
dx2dt = km1*x3 + km3*LAP - k1*x1*x2 + km4*x3 - k4*x2;
Dx3dt = k1*x1*x2 - km1*(x3+x5+xo) - k3*x3*kst;
Rest = [dx2dt;dx3dt];
结束
ODE解决方案的函数文件
选项= odeset(“InitialStep”, 0.0001,“RelTol”1 e-09);
[T、Y] = ode15s (@Scrpt1 60 [0], [e-13 9,0],选项);
X3 = Y (:, 2);
情节(T, X3)
如何使用fmincon或者其他的优化求解器来解决前面提到的寻找x3最大值的优化问题。对于x5,kst,xo,x1的哪个值,x3最大?
目标函数是最大化(x3)

登录发表评论。

接受的答案

艾伦·韦斯
艾伦·韦斯 2021年9月6日
在ODE计算中添加要优化的参数作为向量:
函数rest = scrt1 (t,X,params)
x2 = X(1);
x3 = X(2);
%的参数
如果t < 15
X1 = params(1);输入1可以从1e-9到1e-6不等
其他的
X1 = 0;
结束
X5 = params(2);%输入2(输入2是一个状态变量,在执行优化时可以在4到15的范围内变化)
KST = params(3);%输入3(输入3是速率常数,它可以从0.1到2)
Xo = params(4);%输入4(输入4是一个状态变量,可以在4到10的范围内变化)
K1 = 6e7;
Km1 = 0.20;
Km4 = 0.003;
K3 = 2500.00;
K4 = km4/9;
Km3 = km1;
Lap = 1.5;
%微分方程
dx2dt = km1*x3 + km3*LAP - k1*x1*x2 + km4*x3 - k4*x2;
Dx3dt = k1*x1*x2 - km1*(x3+x5+xo) - k3*x3*kst;
Rest = [dx2dt;dx3dt];
结束
写出目标函数如下所示:
函数Y = objfun(params)
选项= odeset(“InitialStep”, 0.0001,“RelTol”1 e-09);
(~ Y) = ode15s (@ (t, X) Scrpt1 (t, X, params), 60 [0], [e-13 9,0],选项);
y = -Y(end,2);%负的,因为你想最大化
我假设你要求的是Y在最后一次的值。
结束
获取解决方案:
Lb = [1e-9,4,0.1,4];
Ub = [1e-6,15,2,10];
X0 = [1e-7,5,1,4];
Opts = optimoptions(“fmincon”,“PlotFcn”,“optimplotfval”);
[溶胶,fval] = fmincon (x0 @objfun ,[],[],[],[], 磅,乌兰巴托,[],选择)
函数的真实值是-fval,因为你减去了y
艾伦·韦斯
MATLAB数学工具箱文档
16条评论

登录发表评论。

更多答案(1)

艾伦·韦斯
艾伦·韦斯 2021年8月8日
我不知道SBML文件是什么。但要优化ODE,你可以看看以下例子:
艾伦·韦斯
MATLAB数学工具箱文档

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!