modelx v0.8.0 (2020年7月6日)#

本次更新引入了复制空间(Space)和单元格(Cell)的新方法,新增了将模型保存为zip文件的函数和方法,以及将输入值输出到日志文件的功能。

功能增强#

复制方法介绍

新增了UserSpace.copyCells.copy方法。

将模型写入/从zip文件读取 (GH33)

新的zip_model()函数和 Model.zip方法与write_model()Model.write功能完全相同, 区别在于它们将模型写入zip文件。 该zip文件的内容与write_model()Model.write输出的文件夹内容一致, 即解压该zip文件会生成与write_model()Model.write输出的文件夹和文件相同的文件结构。

输入值记录 (GH32)

在编写模型时,单元格中的输入值会与其对象ID一起存储在二进制文件中。 即使输入值本身未发生变化,每次写入同一模型时对象ID都会改变。 因此仅通过查看输出文件无法判断输入值是否已更改。 为弥补这一限制,引入了输出单元格输入键值字符串表示形式的功能,作为write和zip方法及函数的参数。

write_model(), Model.write, 新的zip_model()函数和 Model.zip方法现在都有一个 参数log_input。如果设置为True,Cells输入键和值的字符串表示 会输出到模型文件夹下名为_input_log.txt的文件中。

以下示例代码将模型写入model文件夹,并在model文件夹下输出_input_log.txt文件。

import modelx as mx

m = mx.new_model()

@mx.defcells
def foo(x):
    return x

foo[0] = 1
foo[1] = "foo"

m.write("model", log_input=True)

以下是model文件夹下_input_log.txt文件的内容:

Space1.foo(x=0)=1
Space1.foo(x=1)='foo'