当前位置: 首页 > article >正文

2023年亚太杯APMCM数学建模大赛B题玻璃温室小气候调控

2023年亚太杯APMCM数学建模大赛

B题 玻璃温室小气候调控

原题再现

  温室作物的产量受各种气候因素的影响,包括温度、湿度和风速[1]。其中,适宜的温度和风速对植物生长至关重要[2]。为了调节玻璃温室内的温度、风速等气候因素,在温室设计中常用带风机的通风系统,如图1所示。温室风机的位置和热风出口的速度影响着温室内速度场和温度场的分布和均匀性。因此,如何优化温室风机以获得合适的风速和温度,提高其均匀性,是当前玻璃温室设计中需要解决的重要问题。
在这里插入图片描述
  玻璃温室是密封放置在室内,不考虑外界因素,如温室门、通风、太阳辐射等环境因素。目前设计的玻璃温室尺寸为10m、3m、2m(长、宽、高),温室风机尺寸为0.5m、0.5m,位于温室左侧。温室风扇的中心位于地面上方1.3m处,如图2所示。温室风机侧的边界条件设为速度入口条件,水平方向吹40”暖风,平均风速2 m/s,温室外玻璃和底土设为墙体条件,主要通过对流换热和传导与整个温室进行能量交换[3],初始温度设为20”。在温室内种植作物时,必须考虑作物的冠层阻力。作物模型可以简化为一个尺寸为8m、2m、0.5m(长、宽、高)的多孔介质,放置在温室中心。温室内作物生长适宜风速为0.3-1m/s,适宜温度为23-26”。
在这里插入图片描述
  问题1:请建立无作物玻璃温室内温度和风速分布的数学模型。在0.5米高度的温室横截面上显示风速和温度分布。

  问题2:请建立种植作物的玻璃温室内温度和风速分布的数学模型。展示温室内两个横截面的风速和温度分布:一个在0.5米高度(作物冠层水平)处,另一个在0.1米高度(作物冠层内)。分析条件是否适合作物生长。

  问题3:请提供以下两种情况下玻璃温室内的温度和风速分布,并与第二个问题中给出的解决方案进行比较。在方案一中,将热风出口速度从2 m/s提高到3 m/s。在场景2中,通过将温室风扇从1.3 m移动到1 m来降低其位置。

  问题4:您的团队能否从温室风扇的数量、位置、风速、吹风温度、规格和不同作物等因素进一步优化玻璃温室的温室风扇设计。

function  money =  sumd_money(way,freight,M,b)

   index = unique(way);  
   money = sum(freight(index)); 

    for i = 1:b 
        money = money + M(way(i),i);  
    end
end

function way1 = gen_new_way(way0, s, b)
% way0:原来的买书方案,是一个1*b的向量,每一个元素都位于1-s之间
        index =  randi([1, b],1) ;  % 看哪一本书要更换书店购买
        way1 = way0;  % 将原来的方案赋值给way1
        way1(index) = randi([1, s],1);  % 将way1中的第index本书换一个书店购买   
end

clear; clc   
% 导入书的价格
% 这个数据文件里面保存了两个矩阵:
[s, b] = size(M);  % s
T0 = 1000;   % 初始温度
T = T0; % 迭代中温度会发生改变,第一次迭代时温度就是T0
k_total= 1000;  % 最大迭代次数
Lk = 300;  % 每个温度下的迭代次数
yita = 0.95;  % 温度衰减系数
way0 = randi([1, s],1,b); % 在1-s这些整数中随机抽取一个1*b的向量,表示这b本书分别在哪家书店购买
zhong_way = way0; %用来做中间计算
zhong_money = sumd_money(way0,freight,M,b);%zhong_money用来储存数值,sumd_money为函数计算,在上面可以看到,freight是快递费矩阵

for iter = 1 : k_total  % 外循环, 我这里采用的是指定最大迭代次数
    for i = 1 : Lk  %  内循环,在每个温度下开始迭代
        money0 = sumd_money(way0,freight,M,b); % 调用我们自己写的sum_money函数计算这个方案的花费
        way1 = gen_new_way(way0,s,b);  % 调用我们自己写的gen_new_way函数,也在上面
        money1 = sumd_money(way1,freight,M,b); % 计算新方案
        if money1 < money0    % 如果新方案小于当前方案
            way0 = way1; % 更新当前方案为新方案
            zhong_way = [zhong_way;way1]; % 将新找到的way1添加到中间结果中
            zhong_money = [zhong_money; money1];  % 将新找到的money1添加到中间结果中
        else
            p = exp(-(money1 - money0)/T); % 根据Metropolis准则计算一个概率
            if rand(1) < p   % 生成一个随机数和这个概率比较,如果该随机数小于这个概率
                way0 = way1;  % 更新当前方案为新方案
            end
        end
    end
    T = yita*T;   % 温度下降       
end


[best_money, ind] = min(zhong_money);  
min_way = zhong_way(ind,:); 
disp('最佳的方案是:'); disp(min_way)
disp('此时最优值是:'); disp(best_money)

http://www.kler.cn/a/155191.html

相关文章:

  • 【缺陷检测】Anomaly Detection via Reverse Distillation from One-Class Embedding
  • 第三十一天|贪心算法| 56. 合并区间,738.单调递增的数字 , 968.监控二叉树
  • androidstudio下载gradle慢
  • 利用滑动窗口解题
  • 【Rust练习】21.动态数组 Vector
  • 字节、快手、Vidu“打野”升级,AI视频小步快跑
  • Android实验:绑定service实验
  • 【Java面试——JUC全局观、原子类、锁、集合类、线程池、工具类】
  • 海林猴头菇 区域公用品牌形象正式发布
  • 服务器入侵如何防护,业务被攻击如何处理,服务器安全防护方案
  • 计算机网络TCP篇①
  • 【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
  • AIOps、微服务和云平台
  • 9.ROS的TF坐标变换(三):坐标系关系查看与一个案例
  • Linux /etc/hosts文件
  • 【Spring】AOP实现公共字段填充
  • 19.C++ 中将一维数组转成多维的三种方式
  • CMake语法入门篇
  • 基于51单片机的交通灯_紧急开关+黄灯倒计时+可调时间
  • ASP.NET Core MVC过滤器
  • Spring如何解决循环依赖问题?
  • 【EasyExcel实践】导出多个sheet到多个excel文件,并压缩到一个zip文件
  • SmartSoftHelp8,数据库字段详细文档自动生成工具
  • LeetCode 每日一题 2023/11/27-2023/12/3
  • 【数电笔记】18-卡诺图化简
  • 【C++练级之路】【Lv.1】C++,启动!(命名空间,缺省参数,函数重载,引用,内联函数,auto,范围for,nullptr)