MATLAB SVR代码实现LNG制冷循环优化研究

需积分: 19 4 下载量 71 浏览量 更新于2024-11-16 收藏 62KB ZIP 举报
资源摘要信息:"本文档提供了关于使用MATLAB进行LNG(液化天然气)制冷循环优化运行的详细信息。文档标题“matlabsvr代码-OptimRefCycles:LNG制冷循环的优化运行”暗示了其内容涉及到利用MATLAB软件中的SVR(支持向量回归)方法来对LNG制冷循环进行建模和优化。Nekså于2010年提出了用于建模和优化Mini-LNG系统的MATLAB仿真代码。后续,Leguizamon在2016年对该系统模型进行了开发,而文档中所提及的工作则是对早期模型的扩展和改进。 文档描述了模型创建的过程,该模型首先使用伪模块化方法构建,并且被用作全厂模拟的面向方程(EO)解决方案的起点。热力学部分通过使用SRK(Soave-Redlich-Kwong)方程完成。文档还提到了使用Kamath于2010年提出的EO方法来执行闪蒸计算,并利用MATLAB内置的优化函数fmincon求解每个闪存计算问题,除非有特别的说明。fmincon是一个用于求解有约束非线性优化问题的函数,适用于求解包含等式和不等式约束的问题。 优化过程涉及在得到每个物流的完整信息后实现全厂EO解决方案,并针对一系列干扰对解决方案进行优化。文档提到,这部分工作尚未实现。 在挑战部分,文档指出优化问题的困难之处在于目标函数并非凸函数,这会导致多个局部最优解,因此需要找到确保获得全局最优值的方法。此外,还需要确保每个点的收敛性。分析方面,文档提到了基于获得的活动约束将优化结果进行划分,并进行了相应的分析思路概述。 该文档还涉及了“主动约束领域”的分析,这通常是指在优化过程中识别和处理那些在特定操作条件下变为激活状态的约束。这样的分析有助于理解系统在特定操作点的性能限制,并可指导设计改进。 从标签“系统开源”来看,该仿真代码是开源的,即任何个人或组织都可以自由地使用、修改和分发该代码,这有利于行业内的合作和知识共享。 最后,文件名称“OptimRefCycles-master”表明这是一个版本控制系统的主分支文件夹,可能是Git的master分支,其中包含用于优化参考循环(LNG制冷循环)的源代码和相关资源。" 知识点包括: 1. MATLAB软件及其应用:MATLAB是一种用于数值计算、可视化以及编程的高级语言和交互式环境。它被广泛用于工程和科学领域。该文档描述了使用MATLAB进行复杂仿真和优化的过程。 2. LNG制冷循环优化:LNG制冷循环是将天然气通过低温液化的方式进行储存和运输的关键过程。文档涉及到对该循环进行建模和优化的技术和方法。 3. 伪模块化方法:这是一种系统建模方法,通过将复杂系统分解为一系列较小的、可以独立分析的模块来简化整个系统的建模过程。 4. SRK方程:这是一种热力学模型,用于描述真实气体的行为,特别是在压力和温度偏离理想条件时。 5. 闪蒸计算和EO方法:闪蒸是一种物理过程,涉及液体在特定压力和温度下迅速变为蒸汽。EO方法,如文档中提到的Kamath方法,是一种用于执行这类计算的技术。 6. fmincon函数:MATLAB中的一个函数,用于解决有约束条件的非线性优化问题。 7. 全厂EO解决方案:指的是在工厂级别上对整个工艺流程进行建模和优化的方法。 8. 非凸优化问题:在优化理论中,目标函数不是凸函数意味着可能存在多个局部最优解,使得寻找全局最优解变得更加复杂。 9. 主动约束领域分析:指在优化过程中识别和处理那些在特定操作条件下变为激活状态的约束,对系统性能有重要影响。 10. 开源系统:开源系统意味着该系统的源代码可以被公众访问和修改,这是软件开发中的一个重要趋势,有助于知识共享和技术发展。

简化下列代码:gdf = gpd.read_file("shanghai_districts.shp") lis_time=['0:00-4:00','4:00-8:00','8:00-12:00','12:00-16:00','16:00-20:00','20:00-24:00','次日0:00-4:00'] j1=0 for i in (df.groupby(pd.Grouper(key='stime', freq='4H'))): data_r=i[1] gdf_points = gpd.GeoDataFrame(data_r, geometry=gpd.points_from_xy(data_r['gcj_s_lng'], data_r['gcj_s_lat'])) plt.figure(figsize=(10,10)) ax = gdf.plot(color='white',edgecolor='k',linewidth=0.3) gdf_points.plot(ax=ax, column=None, cmap='Oranges', scheme='quantiles', k=5, alpha=0.9, markersize=0.01) plt.yticks([30.8,31.0,31.2,31.4,31.6,31.8],['30.8°N','31.0°N','31.2°N','31.4°N','31.6°N','31.8°N'],fontsize=12) plt.xticks([120.8,121.0,121.2,121.4,121.6,121.8,122.0,122.2],['120.8°E','121.0°E','121.2°E','121.4°E','121.6°E','121.8°E','122.0°E','122.2°E'],fontsize=12,rotation=45) plt.title(lis_time[j1]+'时间段内出发订单数量分布') plt.show() j1=j1+1 j1=0 for i in (df.groupby(pd.Grouper(key='etime', freq='4H'))): data_r=i[1] gdf_points = gpd.GeoDataFrame(data_r, geometry=gpd.points_from_xy(data_r['gcj_e_lng'], data_r['gcj_e_lat'])) plt.figure(figsize=(10,10)) ax = gdf.plot(color='white',edgecolor='k',linewidth=0.3) gdf_points.plot(ax=ax, column=None, cmap='Oranges', scheme='quantiles', k=5, alpha=0.9, markersize=0.01) plt.yticks([30.8,31.0,31.2,31.4,31.6,31.8],['30.8°N','31.0°N','31.2°N','31.4°N','31.6°N','31.8°N'],fontsize=12) plt.xticks([120.8,121.0,121.2,121.4,121.6,121.8,122.0,122.2],['120.8°E','121.0°E','121.2°E','121.4°E','121.6°E','121.8°E','122.0°E','122.2°E'],fontsize=12,rotation=45) plt.title(lis_time[j1]+'时间段内到达订单数量分布') plt.show() j1=j1+1

2023-05-05 上传