You are on page 1of 6

1.

开发包介绍
目前开发包对之前的元素进行了精简,目前共 9 种元素(见表 1)+两种接口(fluidPort
spool)。

表 1 9 种元素详细说明及参数
名 接口类型 接口实 编码
图标 可调参数
称 例
进 FluidPort portA  总 压 P
口 (指定) I
边  温度 T(指
界 定)
条  流 量 W
件 (指定)
分 FluidPort portA  分 流 比
流 FluidPort portB B ( 0.1- S
FluidPort portC 0.9)
汇 FluidPort portA 无可调参数,
流 FluidPort portB 混合损失已内 M
FluidPort portC 置。

气 FluidPort portA 无可调参数,


体 按理想膨胀面 N
势 积比、环境静
能 压已内置。




耗 FluidPort portA  压缩比 PR
功 FluidPort portB ( 1.1-6 ) C
压 Spool spool1 改
缩 Spool spool2  压缩效率
EFF
(0.86)
膨 FluidPort portA  膨胀效率
胀 FluidPort portB EFF T
做 Spool spool1 (0.89)
功 Spool spool2

换 FluidPort portA  换热系数


热 FluidPort portB h ( 120 ) E
FluidPort portC 不改
FluidPort portD

气 FluidPort portA  出口温度


路 FluidPort portB T4 (1200- H
热 1800)



出 无参数,起到
口 封闭方程组的 O
边 作用


2. 方案样本的代码生成。
根据编码形成模型代码 mo 文件。mo 文件结构如下,从上到下分别是模型名,元素实例
(参数给定),方程区(连接关系)。

为了保证新生成的 mo 文件能够被识别,文件前需要再加上该文件的归属目录“ within


AIFDJ.samples;”。完整代码示例如下:
within AIFDJ.samples;
model sample1
C C1(PR = 5, EFF = 0.85);
I I1(W = 31.6);
T T1;
H H1(T4 = 1450);
N N1;
S S1;
M M1;
E E1;
I I2;
O O1;
equation
connect(I1.portA, C1.portA);
connect(C1.portB, S1.portA);
connect(S1.portB, E1.portB);
connect(S1.portC, H1.portA);
connect(H1.portB, T1.portA);
connect(E1.portD, M1.portA);
connect(T1.portB, M1.portB);
connect(M1.portC, N1.portA);
connect(C1.spool2, T1.spool1);
connect(I2.portA, E1.portA);
connect(E1.portC, O1.portA);
end sample1;

3. 驱动方案样本模型进行计算
2 中 mo 文件生成后 保存在 AIFDJ\samples 目录下。
在 AIFDJ 目录下有两个文件 1.bat (名称可以改) EXE.py
1. bat 中为驱动 py 脚本执行的 windows 命令
@echo on
%修改成本机 MWorks 安装路径%
set ExePath="C:\Program Files\mworks\Bin64\mworks.exe"
set PyPath="%~dp0EXE.py"
call %ExePath% -r %PyPath%
echo %errorlevel%
pause
软件环境部署,联系我远程。
2 py 脚本内容如下,该脚本需要根据不同方案模型修改的部分在下面标红了。
import os
#模型存放路径
#获取当前模型存放绝对路径
curDir=os.path.dirname(os.path.abspath(__file__))
#软件恢复初始化
ClearAll()
#加载 Modelica3.2.1
LoadLibrary('Modelica','3.2.1')
#打开用户库
OpenModelFile(curDir+r"\package.mo")
#打开样本模型
OpenModel('AIFDJ.samples.sample1',ModelView.Diagram)
#修改部分参数 这部分可以不要 因为在 mo 生成中已经设置了 这里设置会覆盖掉 mo 中
的设置。
SetParamValue('S1.B','1.2')
SetParamValue('H1.T4','1500')
#检查模型
CheckModel('AIFDJ.samples.sample1')
#翻译模型
TranslateModel('AIFDJ.samples.sample1')
#仿真模型
SimulateModel(model_name='AIFDJ.samples.sample1',stop_time=1.0,algo=Integration.Dassl)
#创建曲线窗口 1
CreatePlot(id = 1, y = ['N1.FN','H1.WF'])
#导出结果文件
ExportPlot(curDir+r"\sample1.csv",PlotFileFormat.Csv,1)
#关闭曲线窗口
RemovePlots()
#退出软件
Exit()

4. 获取结果
在 AIFDJ 目录下有新生成的 csv 文件,读取 csv 文件中任意一行数据即可获得结果。
5. 其他说明
 方案以单一 I 为起点,以 N 或 O 为结束,至少有一个
N。
 在可执行方案中,输出所有 N 元素的 FN 参数(求和
sumFN ) , 以 及 输 出 所 有 H 元 素 的 WF 参 数 ( 求 和
sumWF)。
 优化目标为 在 I 中参数 P=100000,T=288,W=50 的前提
下,优化方案以及各元素参数,使得 sumFN/sumWF 最
大。
 其他限制条件待补充。(2022-5-18)

1. 先用 py 批量生成 mo 文件
2. 根据 py,修改 EXE.py (N,H 的数量)
3. 用 py 运行 1.bat
4. 然后用 py 批量读取 csv 文件计算,得到目标值

You might also like