evox.vis_tools.exv#

此模块帮助将数据序列化为EvoXVision存储格式(exv)。

Magic Number

Header Length

Metadata

Initial Iteration Data

Binary Data

0x65787631 (4 bytes)

u32 (4 bytes)

JSON encoded (n bytes)

binary data

binary data

数字以小端格式存储。元数据是一个 JSON utf-8 编码的字符串,其中包含二进制数据的模式。元数据的格式如下:

{
    "version": "v1",
    "n_objs": "<number>",
    "initial_iteration": {
        "population_size": "<number>",
        "chunk_size": "<number>",
        "fields": [
            {
                "name": "<field name>",
                "type": "<type>",
                "size": "<number>",
                "offset": "<number>",
                "shape": ["<number>"]
            }
        ]
    },
    "rest_iterations": {
        "population_size": "<number>",
        "chunk_size": "<number>",
        "fields": [
            {
                "name": "<field name>",
                "type": "<type>",
                "size": "<number>",
                "offset": "<number>",
                "shape": ["<number>"]
            }
        ]
    }
}

在这里, 代表字段的数据类型,可用的类型有:

  • "u8", "u16", "u32", "u64",

  • "i16", "i32", "i64",

  • "f16", "f32", "f64" 大小和偏移量以字节为单位。

备注

魔术数字用于识别文件格式。0x65787631 是 "exv1" 的字节码。二进制数据块是二进制数据块的序列。在 EvoX 中,算法允许在第一次迭代(初始化阶段)中具有不同的行为,这可能与其余迭代的块大小不同。因此,它包含了初始迭代和其余迭代的两种不同模式。

模块内容#

#

EvoXVisionAdapter

EvoXVisionAdapter 是一个类,用于将演化优化数据流式传输到 exv 文件。exv 文件格式是一种专门为演化优化数据创建的二进制格式。该格式设计为在流式读取和写入数据时都能高效运行,同时能够在任何迭代中随机访问数据。

函数#

_get_data_type

new_exv_metadata

接收前两次迭代的种群和适应度输入,并返回 exv 文件格式的模式。

API#

evox.vis_tools.exv._get_data_type(dtype)#
evox.vis_tools.exv.new_exv_metadata(population1: numpy.ndarray, population2: numpy.ndarray, fitness1: numpy.ndarray, fitness2: numpy.ndarray)#

接收前两次迭代的种群和适应度输入,并返回 exv 文件格式的模式。

class evox.vis_tools.exv.EvoXVisionAdapter(file_path: Union[str, pathlib.Path], buffering: int = 0)#

EvoXVisionAdapter 是一个类,用于将演化优化数据流式传输到 exv 文件。exv 文件格式是一种专门为演化优化数据创建的二进制格式。该格式设计为在流式读取和写入数据时都能高效运行,同时能够在任何迭代中随机访问数据。

初始化

创建一个新的EvoXVisionAdapter实例,该实例将数据写入exv文件。为了自动推断数据模式,EvoXVisionAdapter需要2次数据迭代,因此它将在优化循环的2次迭代完成后才开始写入数据。

参数:
  • file_path -- 通向exv文件的路径

  • buffering -- 用于文件操作的缓冲区大小,直接传递给 open() 函数。默认值为 0,表示禁用缓冲(无缓冲模式)。

_write_magic_number()#
_write_metedata(metadata)#
set_metadata(metadata)#
write_header()#

请写出 exv 文件的标题。

write(*fields)#

将数据流传输到 exv 文件。根据 buffering 参数,数据可能不会立即写入。

flush()#

将内部缓冲区刷新到文件。