2021年数学建模B组代码

第一问

clc
clear
%%
data=xlsread('附件 1.xlsx');%加载数据
load('zu.mat');%加载数据21组
for i=1:length(unique(zu))%i从1:21
    A(i)={data(find(zu==i),:)}%定义一个元组,分成21组
end
%%
for i=1:5
    for j=1:4
        subplot(4,5,(i-1)*4+j);%4*5的方块,在4*5方块的哪个位置
        B=A{1,(i-1)*4+j};%提取A中在4*5方块的各个位置的数据
        plot(B(:,1),B(:,2),B(:,1),B(:,4));%B中第1列,第2列画图,B中第1列,第4列画图
        hold on
        xlabel('温度/C');%x标签
        ylabel('百分比/%');%y标签
        title(sprintf('催化剂组合%i\n',(i-1)*4+j));%每次组合标题
    end
end
%%
legend('乙醇转化率','C4烯烃选择率');   %右上角标注
%%
% 每组画图
figure(2)%创建新窗口
for i=1:21
    B=A{1,i};%提取A中每组数据
    plot(B(:,1),B(:,2));
    [b,bint,r,rint,stats]=regress(n',t);
    hold on
end
%%
%每组标注
for i=1:21
    str{i}=['催化剂组合',num2str(i)];
end
legend(str);
%%
title('不同组合乙醇转化率随温度变化图');
xlabel('温度/C');%x标签
ylabel('百分比/%');%y标签
%%
% 每组画图
figure(3)%创建新窗口
for i=1:21
    B=A{1,i};%提取A中每组数据
    plot(B(:,1),B(:,4));
    hold on
end
%%
%每组标注
for i=1:21
    str{i}=['催化剂组合',num2str(i)];
end
legend(str);
%%
title('不同组合C4烯烃选择率随温度变化图');
xlabel('温度/C');%x标签
ylabel('百分比/%');%y标签
%%
% 乙醇转化率
x=[1:21];
y=[250,275,300,325,350,400,450];%最多的温度列
for i=1:length(x)
    for j=1:length(y)
        B=A{1,i};%提取A中21组每组数据
        if j<=length(B(:,1))%如果21组中第1列温度列少于y
            Z(i,j)=B(j,2);%直接赋值等于B中第2列乙醇转化率
        else
            Z(i,j)=0;%长度大于y
        end
    end
end
% cftool
%%
% C4烯烃选择率
x=[1:21];
y=[250,275,300,325,350,400,450];%最多的温度列
for i=1:length(x)
    for j=1:length(y)
        B=A{1,i};%提取A中21组每组数据
        if j<=length(B(:,1))%如果21组中第1列温度列少于y
            Z(i,j)=B(j,4);%直接赋值等于B中第4列C4烯烃选择率
        else
            Z(i,j)=0;%长度大于y
        end
    end
end
cftool

第二问

clc
clear
%%
data=xlsread("附件 2.xlsx")%加载数据
for i=1:7
%绘制时间列与各列的关系图形
subplot(2,4,i)
plot(data(:,1),data(:,i+1));
switch(i)
case 1
xlabel('时间/min');%x 标签
ylabel('乙醇转化率/%');%y 标签
title(sprintf('时间与乙醇转化率组合'));%每次组合标题
case 2
xlabel('时间/min');%x 标签
ylabel('乙烯选择性/%');%y 标签
title(sprintf('时间与乙烯选择性组合'));%每次组合标题
case 3
xlabel('时间/min');%x 标签
ylabel('C4 烯烃选择性/%');%y 标签
title(sprintf('时间与 C4 烯烃选择性组合'));%每次组合标题
case 4
xlabel('时间/min');%x 标签
ylabel('乙醛选择性/%');%y 标签
title(sprintf('时间与乙醛选择性组合'));%每次组合标题
case 5
xlabel('时间/min');%x 标签
ylabel('碳数为 4-12 脂肪醇/%');%y 标签
title(sprintf('时间与碳数为 4-12 脂肪醇组合'));%每次组合标题
case 6
xlabel('时间/min');%x 标签
ylabel('甲基苯甲醛和甲基苯甲醇/%');%y 标签
23
title(sprintf('时间与甲基苯甲醛和甲基苯甲醇组合'));%每次组合标题
otherwise
xlabel('时间/min');%x 标签
ylabel('其他/%');%y 标签
title(sprintf('时间与其他组合'));%每次组合标题
end
end

遗传算法求最优解

clc,clear
options=gaoptimset('Generations',800,'StallGenLimit',300,'PopInitRange',[0.25 0.15 0.24 5 250;7.5 3.05 1.5 300 400],'PlotFcns',@gaplotbestf);
[x,f]=ga(@SA,5,options)
function f=SA(x)
if (x(1)>7.5|x(1)<0.25|x(2)>3.05|x(2)<0.15|x(3)>1.5|x(3)<0.24627|x(4)>300|x(4)<5|x(5)>400|x(5)<250)%变量范围
    f=0;                              %s适应度
else
    a=(-41.909616+12.75438*x(3)+0.108627*x(4)+0.00052319939932*(x(5)^2)-8.519519*(x(2)/x(3)));
    b=(-20.530653-3.239872.*x(1)+2.892962.*x(2)+0.086185*x(3)*x(4)+0.0002875058634*(x(5)^2));
    f=-a*b;       %由于只能求最小值,加一个-号反向求最大值
end
end
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sparename

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值