Python × Aspen 开源项目推荐:AspenPythonInterface

各位好!我达到了一千五百个粉丝!

大家好!一直关注本号的朋友都知道,咱们这里是专门深耕 Python + Aspen 交叉领域的。在往期的文章中,我陆陆续续给大家分享过不少 Python 操控 Aspen 的具体实操案例,比如如何读取变量、如何做灵敏度分析等等。

但是今天,我不打算讲具体的某个细分操作。今天我想给大家强烈推荐一个完整的开源项目:AspenPythonInterface

在我的QQ群会分享资源:562721026

为什么突然推荐这个项目?因为这是我最开始学习 Python 控制 Aspen 时,接触并且深度研究的第一个项目。它对我后来的代码风格、工程化思维产生了极其深远的影响。如果你已经掌握了一些 Python 的基础语法,并且正准备在 Aspen 自动化这条路上深耕,那么这个项目绝对是你不可错过的“必读教科书”。

今天,我也会在文末把这个项目的官方完整版全英文说明文档以及核心代码库分享给大家。

二、 5000行代码里,藏着什么宝藏?

这个库并不是一个简单的玩具脚本,而是一个可以应用于实际科研和工程设计的武器库。它几乎把 Aspen 里的常规操作全部映射成了 Python 函数。

1. 极高覆盖率的设备支持 作者把 Aspen 中最常用的模块全部手写了 Input 和 Output 函数。无论你是调节物流(Streams),还是控制复杂的精馏塔(Radfrac),亦或是各种反应器(RPLUG、RCSTR、RYIELD),甚至换热器和混合器,你都能在源码里找到对应的现成方法。 以最复杂的 Radfrac 为例,作者甚至根据 Aspen 的界面逻辑(Page 1 Configuration, Page 2 Streams, Page 3 Pressures 等),分门别类地写好了对应的参数读写接口。

2. 突破极限的高阶玩法 通过这个优雅的接口,你能做的事情将远远超出 Aspen 自身的限制。在作者提供的源码和说明中,展示了极其硬核的实战场景:

  • 单变量/双变量动态寻优: 比如动态改变精馏塔的进料位置和理论板数,寻找最优能耗点。

  • 接入 Scipy 优化库: 利用 Python 强大的生态,直接引入暴力搜索算法(Brute force algorithm)。

  • 结合遗传算法(Genetic algorithm): 全自动寻优精馏塔序列的年度总成本(TAC),让算法代替人工去试凑。

三、 赏析:感受一下大神的逻辑

为了让大家直观感受到这个库的魅力,我从今天分享的 CodeLibrary.py 源码中截取了一段核心的初始化代码供大家赏析:

import win32com.client as win32
import os

class Simulation():
    """Class which starts a Simulation interface instance
    
    Args:
        AspenFileName: Name of the Aspenfile on which you are working with
        WorkingDirectoryPath: Path to the Folder where we will be working
        VISIBILITY: Toggles the opening and interactive running of the Aspen simulation
    """
    AspenSimulation = win32.gencache.EnsureDispatch("Apwn.Document")

    def __init__(self, AspenFileName:str, WorkingDirectoryPath:str, VISIBILITY:bool = True):
        print("The current Directory is :  ")
        print(os.getcwd())                      
        os.chdir(WorkingDirectoryPath)          
        print("The new Directory where you should also have your Aspen file is : ")
        print(os.getcwd())          
        # 后续连接与初始化代码...

你看,仅仅是一个初始化动作,作者就清晰地定义了文档字符串(Docstring),规范了类型提示(Type Hinting,如 str, bool),并且在实例化类的一瞬间,自动完成了工作目录的切换和 COM 接口的派发。这就是标准的、具有大厂风范的 Python 生产力代码!模仿这种代码写上几个月,你的编程水平绝对会产生质的飞跃。

四、 极其详尽的保姆级文档

除了代码优雅,这个项目还有一个极为难得的优点:它配有一份长达 30 多页的纯干货官方说明文档(Final Report)!

很多开源项目只有冷冰冰的代码,新人根本无从下手。但这位作者非常良心,在他的文档里(今天也会一并分享给大家),详细拆解了:

  1. Aspen Plus 内部文件格式的底层逻辑。

  2. 变量管理器(Variable manager)的工作原理。

  3. 如何从零开始连接、运行、获取报告。

  4. 以及手把手教你跑通遗传算法的完整 Case。

我当年正是啃完了这份文档,才真正打通了 Python 和 Aspen 交互的任督二脉。

五、 写在最后 & 资料获取

学习自动化的道路上,我们不应该总是重复造轮子。站在巨人的肩膀上,去学习优秀开源项目的架构思路,是我们成长最快的捷径。这也是我今天把这个项目隆重推荐给大家的初衷。

本期我不仅推荐项目,还将直接把这套极具学习价值的核心代码(CodeLibrary.py以及那份的原版全英文说明文档(AspenPythonInterfaceDocumentationFinalReport.docx)全部分享给大家!

github项目地址:https://github.com/YouMayCallMeJesus/AspenPlus-Python-Interface

或者可以进QQ群:562721026

顺便说一下,我可能要对这个整个项目进行中文的翻译,因为这个文档总共120页,所以翻译起来比较繁重,如果有人帮我的话,那将更好!

如果你在阅读源码的过程中有任何灵感,或者对面向对象控制 Aspen 有什么疑问,欢迎在评论区和我交流讨论!我们下期再见!

1 个赞

太棒啦~