快速开始
总览
FlexDMO 是一个专为动态多目标算法设计的高效分析与实验平台,目前已实现以下两大核心模块:
- 🧩 分析模块
- 支持实验算法的动态组合与参数灵活选择
- 提供实验数据可视化,直观展示优化过程
- 内置算法性能统计分析工具
- 独有实验过程回放功能,便于复现与对比
- 🧪 实验模块
- 集成多种经典动态多目标测试问题
- 内置丰富的动态多目标算法
- 支持实验并行数量自定义,提升效率
- 提供一站式结果输出工具,方便数据整理与分析
🚀 FlexDMO 致力于为研究者和开发者提供结构化、可视化、易扩展的动态多目标优化实验环境。
安装
前提条件
Python的版本需大于3.10,且以下的安装方式仅保证用户可以启动平台,某些算法可能用到了其他额外的库,需要用户根据运行提示自行安装
克隆仓库
bashgit clone https://github.com/Xieliuliuliu/FlexDMO.git cd FlexDMO创建虚拟环境(推荐)
bashpython -m venv venv # Windows venv\Scripts\activate # macOS/Linux source venv/bin/activate安装依赖
bashpip install -r requirements.txt启动平台
bashpython main.py
功能概述
本节将分步骤简要介绍平台的核心操作流程,帮助用户快速理解和掌握各项功能
分析模块
步骤一: 选择响应策略,搜索算法以及优化问题
在动态多目标优化领域,通常的动态多目标算法由静态搜索算法与动态响应策略两部分组成。有些算法通过专门设计动态响应策略来应对动态多目标问题[1],一些算法通过历史信息来辅助静态算法搜索[2],还有些算法在动态策略和搜索算法两方面都进行了设计[3]。 
因此,为方便研究人员快速对比分析不同的算法组合表现,本平台支持用户根据需要设计动态策略与搜索算法,并将二者组合起来。
如下图所示,在算法运行前,用户需依次选择 Dynamic Strategy、Search Algorithm 和 Problem 。
提示
此处仅支持单选,多选仅第一个生效

步骤二: 设置算法超参
在选择好需要测试的相关选项后,用户可以根据自己需要设置运行参数以观察算法表现。
补充
平台中按照规定实现的Search Algorithm、 Dynamic Strategy与Problem会实现相关父类并编写info.json与config.json,前者是其相关背景信息,后者是其需要的超参与默认的参数。因此,默认情况用户不需要对参数进行修改。
步骤三: 选择显示指标
在开始运行前或优化过程中,用户都可以选择希望观察的图表。平台会合并 高频更新,只绘制最新画面;选择的图表越多,绘图开销仍会相应增加。
提示
运行结束后可直接回放本次运行。只有需要以后再次加载时,才需要选中 Auto-save result 保存结果文件。
在运行过程中,用户可以通过 Start / Resume、 Pause 与 Terminate 控制开始/恢复、暂停和终止。

步骤四: 运行结果回放

算法运行结束后,回放时间轴会自动定位到最后一个快照。用户可以立即拖动 时间轴查看整个优化过程;加载已保存结果时使用同一套回放流程。
| 功能模块 | 具体功能 |
|---|---|
| 回放控制 | • 按实际快照顺序拖动时间轴 • 显示当前与最终评估次数 |
| 可视化展示 | • 显示种群分布变化 • 展示 Pareto 前沿演化 • 灰色显示动态不可行域 |
| 性能指标计算 | • 支持多种指标的计算(MHV、MIGD...) |
提示
时间轴按保存的快照移动,而不是把稀疏的评估次数当作连续帧,因此每次 拖动都会对应一个真实画面。
实验模块
步骤一 选择对比算法与测试问题
此处选择方式与分析模块的步骤一选择方式相同,区别是这里可以多选,通过ctrl+左键多选或者shift+左键范围多选。多选的搜索算法和响应策略会通过笛卡尔积的方式组合,并在用户选择的每个测试问题上进行运行。
多选说明
- 使用
Ctrl + 左键进行多选 - 使用
Shift + 左键进行范围选择 - 选中的算法组合将在每个测试问题上运行
步骤二 设置环境变化参数
如下图所示,在选择完算法后,用户需设置环境的变化参数 和 。这些参数决定了优化过程中环境的变化特性:
对于规则变化的DMOPs,环境变化时间计算公式为:
其中:
- 表示环境变化的烈度(severity)
- 表示总代数(total generation)
- 表示变化频率(frequency of change)
参数说明
- 较小的 值表示环境变化更快
- 较小的 值表示环境变化更强烈
runs 参数用于设置实验的重复运行次数。由于进化算法具有随机性,单次运行的结果可能不够可靠。通过多次重复运行,我们可以:
- 获得更稳定的统计结果
- 评估算法的鲁棒性
- 进行更可靠的性能比较

当用户选择好运行配置并添加到运行管理栏后,平台会根据用户配置创建运行任务。任务数量由以下因素决定:
| 配置项 | 示例值 | 说明 |
|---|---|---|
| 策略数量 | 5 | 动态响应策略 |
| 算法数量 | 1 | 搜索算法 |
| 问题数量 | 8 | 测试问题 |
| 环境参数 | 2 | 值(10, 20) |
| 运行次数 | 5 | 重复运行次数 |
任务计算
总任务数 = 策略数量 × 算法数量 × 问题数量 × 环境参数数量 × 运行次数
示例:5 × 1 × 8 × 2 × 5 = 400 个运行任务
步骤三 运行任务管理
在运行任务前,请设置好保存结果的路径与并行运行的数量,以上内容请勿在运行时进行修改,在运行时,pause按钮进行暂停,再次点击pause即可继续运行,当用户想中断运行时,通过remove即可删除所有运行任务
步骤四 运行控制
运行前设置
在开始运行任务前,必须完成以下设置:
- 设置结果保存路径
- 配置并行运行数量(建议设置为 CPU 核心数的 50%)
运行控制说明:
- 运行过程中请勿修改配置参数
- 使用
Pause按钮可随时暂停/继续运行 - 使用
Remove按钮可中断并删除所有运行任务
步骤五 结果分析
平台提供了多种结果分析工具,支持生成图片、Excel等格式的分析结果。分析流程如下:
选择分析工具
- 从预定义的分析工具中选择所需类型
- 平台自动读取工具的
param.json配置文件
参数配置
- 根据工具要求填写相关参数
- 参数配置决定了分析的具体内容和输出格式
执行分析
- 点击执行按钮开始分析
- 平台将参数传递给分析代码
- 自动生成分析结果文件

自定义内容
FlexDMO 平台支持用户自定义测试问题、搜索算法和响应策略等。
详细文档
| 组件类型 | 文档链接 |
|---|---|
| 自定义问题 | 自定义问题文档 |
| 自定义算法 | 自定义算法文档 |
| 自定义响应策略 | 自定义响应策略文档 |
| 自定义指标 | 自定义指标文档 |
| 自定义分析 | 自定义分析文档 |
| 自定义显示 | 自定义显示文档 |
寻求帮助
如果您在使用 FlexDMO 平台时遇到问题,可以尝试以下方式获取帮助:
查看文档
- 阅读本指南和 API 文档
- 查看常见问题(FAQ)部分
- 参考示例代码
GitHub Issues
- 访问 GitHub Issues 页面
- 查看是否有类似问题
- 如果没有找到相关问题,可以提交新的 Issue
提交 Issue 建议
- 简单描述遇到的问题
- 说明复现步骤
- 提供错误信息
- 注明运行环境
参与改进
- 欢迎 Fork 项目
- 创建分支进行开发
- 提交 Pull Request
提示
提交 Issue 时建议:
- 先查看文档中是否有相关说明
- 确保问题可以复现
- 提供必要的信息
[1] Zhou, Aimin, Yaochu Jin, and Qingfu Zhang. "A population prediction strategy for evolutionary dynamic multiobjective optimization." IEEE Transactions on Cybernetics 44.1 (2013): 40-53. [2] Yu, Kunjie, et al. "A framework based on historical evolution learning for dynamic multiobjective optimization." IEEE Transactions on Evolutionary Computation (2023). [3] Wang, Feng, et al. "A new prediction strategy for dynamic multi-objective optimization using diffusion model." IEEE Transactions on Evolutionary Computation (2025).
