批量修改的后台代码_【技术教程】利用Pyhton进行批量e+模拟

文章转载自公众号领绿建筑性能设计

作者 魏贝贝

引子

最近听说Java从2018年开始开始收费了,心里有点慌。不过别担心,咱们可以用Python大法,一样可以玩得很畅快。下面带来魏同学的Python+能耗模拟第二篇。
正文
上一篇介绍了Python批量修改idf模型的操作,这篇接着介绍利用Pyhton进行批量e+模拟并读取模拟结果的方法,最后为了加速批量模拟的速度,会介绍多线程和多进程模拟的方法。
利用Python进行批量模拟首先要调用e+,Python调用e+运行一次的代码如下:

6b08d83a39224ac585a2d4fd56eeb3a8.png

代码解释:
第1行:调用os模块对系统进行操作;
第2行:进入存放idf文件 testidf 的工作路径,这里是绝对路径;
第3行:调用e+安装目录下的 RunEPlus.bat 文件进行模拟。
需要注意的是,模拟用的天气文件必须要放在e+安装目录C:EnergyPlusV8-1-0WeatherData下,否则会报出找不到天气文件的错误。
这样调用e+进行模拟和利用EP-Launch模拟效果是一样的,也并没有提高模拟效率,但如果能利用Python的for循环批量修改、模拟并读取模拟结果,这样效率就比所有操作都手动完成高的多。批量模拟可以用程序框图来表示为:

29f43691211c592703dde2fea94e6f55.png

代码如下:

14d02ec5450e84dd41da72e74f5f99a9.png

代码解释

  • 第1~2行:利用列表存放不同方案,这里是保温材料的厚度,并把列表中的数据转换成字符串的类型,以便对保温层厚度进行替换;
  • 第3行:新建空列表tem_list,用来存放模拟结果,这里是某一时刻的空气温度;
  • 第4~33行:for循环,根据方案进行批量修改、模拟并读取所需数据;
  • 第5~6行:将基准模型拷贝到工作文件夹中,以便每一次修改都是在基准模型的基础上进行;
  • 第8~19行:对基准模型进行修改,详见上一篇文章《利用Python批量修改建筑模型IDF文件》
  • 第21~23行:调用e+对修改后的模型进行模拟;
  • 第25~33行:调用Python中的CSV模块,读取模拟结果CSV文件testidf.csv,提取所需数据,并将每次提取的数据都添加在列表tem_list中;
  • 第35行:打印出批量模拟的结果。

多线程和多进程模拟:
如果有大量样本,对计算速度有更高的要求,还可以利用Python中的多线程和多进程进行并发模拟,关于Python多线程和多进程,建议自行百度,这里直接给出多线程和多进程模拟的代码。
多线程:

8f7ae180c59ecf577e9bc7763b3c347b.png

代码解释:

  • 第1行:调用Python中的多线程模块;
  • 第2行:定义e+运行的文件夹路径,这里是多个线程的公共路径,每个线程的路径再添加特定字符串进行标记,这里用的是'1'和'2'标记的;
  • 第4~7行:将线程实例化;
  • 第9~12行:把要执行的代码写到run函数里面,线程在创建后会直接运行run函数的代码;第14~15行:创建新线程;第17~18行:开启线程;

多进程:

77bc2b0bd622d17518cbee4e849c0618.png

代码解释:

  • 第1~6行:定义功能函数,与多线程代码的第9~12行类似;
  • 第8~14行:创建新进程并开启进程;

多进程模拟实现的过程和多线程是类似的,区别在于这里在使用多进程时,先定义了功能函worker,再调用模块multiprocessing实现多进程。
总结:
1. 对于多线程和多进程,最好用命令行python **.py的方式运行脚本文件**.py,不推荐直接F5运行脚本的方法;
2. 代码中涉及到Python操作CSV文件,实际上能够利用Python实现与Excel的交互,进行Excel文件的读写操作,还能将Python作为一种替代VBA的编程语言实现更复杂的Excel操作;
3. 这篇文章介绍了批量模拟、多线程模拟和多进程模拟,更复杂的用法是将批量模拟和多线程或多进程结合,也就是在多线程或多进程内部添加一个for循环,这样在每个进程内部都在进行批量模拟。作者简介
姓名:魏贝贝
邮箱:weibeibei24@126.com
研究方向:建筑被动式优化设计
擅长EnergyPlus, OpenStudio能耗模拟,Matlab, Python编程,以及Python与EnergyPlus联合模拟,并熟悉常用优化算法。
向我们投稿,宣传您在大建筑(建筑、技术、景观、城市规划、暖通)领域技术的研究成果和技术细节。署名的宣传有助于您扩大行业影响力和知名度。联系方式:微信zicao423。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值