如何将拉格朗日乘子法(最大化)与多函数和约束,用于生物过程

15次浏览(过去30天)
大家好,我目前正在尝试建立一个模型来寻找生物过程的最佳条件。从稻草中提取葡萄糖和木糖,同时保持糠醛产量低于3克/升。
参数为时间(z1)、温度(z2)和浓度(z3),输出糠醛、葡萄糖和木糖。
通过基因编程,我发现了以下功能:
糠醛: 9.1e-8 exp(-1.0 Time) - 1.33e-4浓度时间+ 1.01e-6浓度温度时间+ 0.00584
葡萄糖: (6.56e+23 Time - 1.2e+25 Concentration + 1.6e+23 Concentration 2 - 9.4e+18浓度 4 + 1.03e+23浓度温度))/浓度
木糖: 0.0117温度+ 0.00229时间+ 0.26浓度 1/2 - 1.0e-4浓度温度- 2.0
为了找到最优的参数值,我认为拉格朗日乘法方法是可行的。
约束条件:z1, z2, z3 > 0和糠醛产量< 3克/升(在公式中转换为0.15341,因为数据是aquaeous %)
葡萄糖的“价值”是木糖的两倍,因此最大化函数为f = 2*glu + xyyl
我在网上找到了一些代码,并得到了这一点,但我不确定如何放入关于z1, z2和z3的约束。我甚至不知道这段代码是否正确,我在编码方面很糟糕,所以请使用外行术语:)
我的Matlab代码是这样的:
符号z1 z2 z3
% %数据
%中的%数据(未规范化)
glu = (6.781 * 10 ^ -26 * 23 * 6.56 * 10 ^ (z1 - 1.2 * 10 ^ 25 * 23 * z3 z3 + 1.6 * 10 ^ ^ 2 - 9.4 * 10 ^ 18 * z3 ^ 4 + 1.03 * 10 ^ 23 * z3 * z2)) / z3; %葡萄糖功能
Xyl = 0.0117*z2 + 0.00229*z1 + 0.26*z3(1/2) - 1.0*10^-4*z3*z2 - 2;%木糖功能
毛皮= 9.1 * 10 ^ 8 * exp (z1) - 1.33 * 10 ^ 4 * z3 * z1 + 1.01 * 10 ^ 6 * z1 * z2 * z3 + 0.00584 + 0.15341 = = 0;%糠醛约束
F = 2*glu + xyl %最大化函数
L = f + lambda * lhs(皮毛);%拉格朗日函数
dL_dz1 = diff(L,z1) == 0;L对z1(时间)求导的%
dL_dz2 = diff(L,z2) == 0;L对z2求导的% (temp)
dL_dz3 = diff(L,z3) == 0;L对z3求导的% (conc)
dL_dlambda = diff(L,lambda) == 0;% L对的导数
system = [dL_dz1;dL_dz2;dL_dz3;dL_dlambda];建立一个方程组
[z1_val, z2_val, z3_val,lambda_val] = solve(system, [z1 z2 z3 lambda], 'Real', true) %求解方程组并显示结果
Results_numeric = double([z1, z2_val, z3_val,lambda_val]) %显示数据类型为double的向量的结果
Fur_res = 0.332*z3_val*z2_val^2 - 0.0289*z3_val + 0.332*z2_val*z1_val^2 + 0.332*z1_val*z2_val*z3_val + 0.00825
glu_res = 0.442 * z2_val - 0.207 * z3_val - 0.367 * exp (-z3_val) * exp (-z1_val) + 1.33 * z3_val * exp (-z3_val) + 0.348
xyl_res = 0.192 * z1_val - 0.624 * exp (3 * z3_val) + 0.507 * z2_val ^ (1/2) - 0.11 * abs (z3_val) ^ 2 * abs (z2_val) * abs (2 * z3_val + z1_val) + 0.66
1评论
Max van den Heuvel
Max van den Heuvel 2021年9月13日
我对参数约束也很感兴趣不是z1 z2 z3 > 0,而是
10 < z1 < 50
130 < z2 < 170
11 < z3 < 89
提前谢谢你!

登录评论。

答案(0)

下载188bet金宝搏


释放

R2021a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!