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 是一个类,用于将演化优化数据流式传输到 exv 文件。exv 文件格式是一种专门为演化优化数据创建的二进制格式。该格式设计为在流式读取和写入数据时都能高效运行,同时能够在任何迭代中随机访问数据。 |
函数#
接收前两次迭代的种群和适应度输入,并返回 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()#
将内部缓冲区刷新到文件。