正在加载中...

展开本页目录
算法教程MVO-多宇宙优化

MVO-多宇宙优化

No.197 · 在线教程

MVO(Multi-Verse Optimizer)是一类基于白洞、黑洞和虫洞机制的单目标群智能算法。本项目的核心搜索器位于 MVO-多宇宙优化/core/mvo.py,统一计算与导出位于 core/mvocalculator.py。项目支持内置单目标基准函数和上传数据代理优化…

MVO-多宇宙优化

1. 方法概述

MVO(Multi-Verse Optimizer)是一类基于白洞、黑洞和虫洞机制的单目标群智能算法。本项目的核心搜索器位于 MVO-多宇宙优化/core/mvo.py,统一计算与导出位于 core/mvo_calculator.py。项目支持内置单目标基准函数和上传数据代理优化两种模式,但都以单次 MVO 搜索为主,不包含多次独立运行统计。

设第 \(i\) 个宇宙在第 \(t\) 轮的位置为

$$ \boldsymbol{x}_i^{(t)}\in\Omega \tag{1} $$

项目内部统一求解

$$ \min_{\boldsymbol{x}\in\Omega}\tilde f(\boldsymbol{x}) \tag{2} $$

2. 问题定义与代理优化

上传模式下,项目先读取数值样本并训练随机森林代理模型:

$$ \hat f(\boldsymbol{x})=\frac{1}{300}\sum_{b=1}^{300}T_b(\boldsymbol{x}) \tag{3} $$

若用户选择最大化,则内部目标通过符号翻转改写为

$$ \tilde f(\boldsymbol{x})= \begin{cases} \hat f(\boldsymbol{x}), & \text{min}\\ -\hat f(\boldsymbol{x}), & \text{max} \end{cases} \tag{4} $$

变量边界由样本特征极值确定:

$$ l_j=\min_n x_j^{(n)},\qquad u_j=\max_n x_j^{(n)} \tag{5} $$

3. 核心数学模型

3.1 初始化与最优宇宙

项目按均匀分布初始化全部宇宙:

$$ \boldsymbol{x}_i^{(0)}=\boldsymbol{l}+\boldsymbol{r}_i\odot(\boldsymbol{u}-\boldsymbol{l}),\qquad \boldsymbol{r}_i\sim U(0,1)^d \tag{6} $$

每轮计算膨胀率(即适应度)并保留当前最优宇宙:

$$ \boldsymbol{x}_{best}^{(t)}= \operatorname*{arg\,min}_{1\le i\le N}\tilde f(\boldsymbol{x}_i^{(t)}) \tag{7} $$

3.2 WEP 与 TDR

虫洞存在概率按线性方式上升:

$$ \mathrm{WEP}^{(t)}= \mathrm{WEP}_{\min}+\frac{t}{T}\big(\mathrm{WEP}_{\max}-\mathrm{WEP}_{\min}\big) \tag{8} $$

旅行距离率按六次根衰减:

$$ \mathrm{TDR}^{(t)}= 1-\frac{t^{1/6}}{T^{1/6}} \tag{9} $$

3.3 排序与白洞选择

项目先按适应度升序排序宇宙:

$$ \tilde f(\boldsymbol{x}_{(1)}^{(t)})\le \tilde f(\boldsymbol{x}_{(2)}^{(t)})\le \cdots \le \tilde f(\boldsymbol{x}_{(N)}^{(t)}) \tag{10} $$

与一些文献直接使用归一化膨胀率不同,本项目代码并未按真实适应度计算更新概率,而是显式采用秩线性概率:

$$ p_i^{(t)}=0.1+\frac{i-1}{N-1}(0.9-0.1), \qquad i=1,\ldots,N \tag{11} $$

由于排序是“最好在前、最差在后”,式(11)意味着排名越差的宇宙越容易被改写。

白洞来源的选择同样采用秩权重,而不是直接使用适应度值。若排序索引 \(k=1\) 表示最优宇宙,则其被抽中的概率满足

$$ \pi_k=\frac{N-k+1}{\sum_{s=1}^{N}(N-s+1)} \tag{12} $$

3.4 白洞交换与虫洞更新

对第 \(i\) 个宇宙(代码中从 \(i=2\) 开始,显式跳过精英宇宙),若随机数 \(r_1<p_i^{(t)}\),则对白洞交换维度 \(j\) 执行

$$ x_{ij}^{(t)}\leftarrow x_{kj}^{(t)},\qquad k\sim \pi \tag{13} $$

随后若另一随机数 \(r_2<\mathrm{WEP}^{(t)}\),则围绕当前最优宇宙执行虫洞更新。若 \(r_3<0.5\),代码使用

$$ x_{ij}^{(t)}\leftarrow x_{best,j}^{(t)}+ \mathrm{TDR}^{(t)}\big((u_j-l_j)r_4+l_j\big) \tag{14} $$

否则使用

$$ x_{ij}^{(t)}\leftarrow x_{best,j}^{(t)}- \mathrm{TDR}^{(t)}\big((u_j-l_j)r_4+l_j\big) \tag{15} $$

其中 \(r_4\sim U(0,1)\)。注意式(14)与式(15)中的括号严格对应代码写法,包含了 + lb[j] 项。

3.5 边界处理与收敛记录

每轮评价前都会进行边界截断:

$$ x_{ij}^{(t)}\leftarrow \min\!\big(\max(x_{ij}^{(t)},l_j),u_j\big) \tag{16} $$

并把当前最优宇宙的适应度记为

$$ g^{(t)}=\tilde f(\boldsymbol{x}_{best}^{(t)}) \tag{17} $$

项目在结果汇总中还记录整条收敛曲线的均值与标准差:

$$ \mu_g=\frac{1}{T}\sum_{t=1}^{T}g^{(t)},\qquad \sigma_g=\sqrt{\frac{1}{T}\sum_{t=1}^{T}\big(g^{(t)}-\mu_g\big)^2} \tag{18} $$

4. 算法流程

根据 core/mvo.pycore/mvo_calculator.py,本项目的 MVO 流程为:

  1. 选择基准函数模式或上传代理优化模式。
  2. 若为上传模式,则训练随机森林代理目标并自动确定边界。
  3. 按式(6)初始化宇宙群体。
  4. 每轮计算 WEP 与 TDR,并识别当前最优宇宙。
  5. 对非精英宇宙执行式(13)的白洞交换。
  6. 按式(14)与式(15)执行虫洞更新。
  7. 进行边界裁剪并记录式(17)的收敛曲线。
  8. 导出 Excel、收敛图和复现实验脚本。

5. 关键参数说明

  • universes:宇宙数量 \(N\)。
  • max_iter:最大迭代次数 \(T\)。
  • wep_minwep_max:虫洞存在概率范围。
  • dim:问题维度。
  • bounds_mode:计算器层支持的边界校验模式,支持 strictlenient,当前界面未单独暴露。
  • seed:计算器层支持的随机种子参数。

6. 评价指标与输出结果解释

项目当前是单次运行版本,实际导出的主要工作表包括:

  • Summarybest_fitnessbest_fitness_lastcurve_meancurve_stddimuniversesmax_iter 等汇总信息;
  • Objectiveobjective_namedimlbubseedbounds_mode 等原始问题元数据;上传模式下还会带 source_filetarget_columnobjective_direction
  • MVO_Params:界面提交的多宇宙优化参数表;
  • Bounds:变量边界表;
  • Convergenceiter / best_fitness 逐轮最优值历史;
  • Best_Solution:最优宇宙位置,仅含 dim / value
  • Charts:图表路径索引。

上传模式下还会额外导出 UploadedDataSurrogateMetricsBounds_Detail

论文结果部分更适合采用“Summary 报告最优值与收敛统计、Convergence 描述单次运行轨迹、Best_Solution 作为最优宇宙位置表”的写法,而不应表述为多次运行均值实验。若为上传代理模式,还应同时报告 SurrogateMetricsBounds_Detail,说明代理模型误差及边界来源。

7. 论文写作模板

可在论文方法部分表述为:

“本文采用多宇宙优化算法求解连续变量单目标优化问题。算法通过白洞交换机制让较差宇宙从较优宇宙继承部分维度信息,同时通过虫洞机制围绕当前最优宇宙进行局部搜索。与部分文献直接基于适应度归一化不同,本文实现采用基于排序的概率机制:较差宇宙具有更高的被改写概率,而白洞来源则按优先选择高排名宇宙的方式确定,从而形成更稳定的代码实现。”

7.1 结果部分补充模板

若需把实验结果直接写入论文结果部分,可进一步表述为:

“表X给出了算法在当前问题上的最优目标值、平均最优值和标准差(如有多次独立运行),图X展示了收敛曲线变化。结果表明,该算法在迭代前期能够快速逼近优势区域,并在后期逐步趋于稳定,最终获得最优解 \(\boldsymbol{x}^*\) 及其对应目标值 \(f(\boldsymbol{x}^*)\)。对于上传代理优化场景,结合代理模型误差指标可认为该最优结果具有一定的数据驱动解释性。”

7.2 写作替换提示

为便于直接落稿,正文撰写时可将结果文件中的字段替换为以下论文措辞:

  • best_fitness 或结果汇总表中的最优值,可写为“最优目标函数值”或“最优适应度值”;
  • BestSolutionBestPositionBest_Solution最优解 等工作表,可统一写为“最优决策变量组合 \(\boldsymbol{x}^*\)”;
  • Convergence收敛曲线 等图表,可统一写为“算法收敛曲线图”;
  • SurrogateMetrics 可写为“代理模型训练误差与拟合优度指标”,如 RMSE、MAE、\(R^2\)。

7.3 可直接替换的论文结果段落

若需进一步直接落稿,可按以下模板替换其中的表号、图号和数值:

“由表X可知,该算法在[问题名称]上的最优目标值为 [best_fitness]。若进行了多次独立运行,则其平均最优值与标准差分别为 [mean_best_fitness] 和 [std_best_fitness]。由图X所示收敛曲线可见,算法在迭代前期快速逼近优势区域,后期逐渐趋于平稳,表现出较好的收敛性。最终得到的最优决策变量组合为 \(\boldsymbol{x}^*=[x_1^*,x_2^*,\ldots,x_d^*]\)。若采用上传代理优化模式,则结合 RMSE、MAE 和 \(R^2\) 等代理误差指标,可认为该优化结果具有一定的数据驱动可信度。”

8. 实现说明与注意事项

  • 本实现适用于连续变量单目标优化。
  • 代码中的白洞交换概率和白洞来源选择都采用秩驱动策略,而非严格照搬原始 MVO 公式。
  • 精英宇宙通过 for i in range(1, N) 被显式保留,不参与白洞/虫洞改写。
  • bounds_mode=strict 时若用户给出非法边界会直接报错;lenient 模式下会尽量纠正边界顺序。

9. 单篇终审补充

9.1 图题与表题对齐建议

  • Summary 表可写为:表X MVO 最优值与收敛统计摘要。
  • Objective 表可写为:表X MVO 问题定义与边界元数据。
  • MVO_Params 表可写为:表X MVO 算法参数设置。
  • Convergence 表可写为:表X MVO 单次运行收敛轨迹。
  • Best_Solution 表可写为:表X MVO 求得的最优宇宙位置向量。
  • Charts 中收敛图建议写为:图X 多宇宙优化算法收敛曲线。

9.2 终审说明

  • 当前实现是单次运行版,正文不宜写成多次独立运行均值统计。
  • 上传代理模式下,最优值的解释应与 Bounds_DetailSurrogateMetrics 同步出现。

9.3 全量强化补充

本次全量强化建议绑定更干净的真实结果目录 具体的算法3/优化与多目标/MVO-多宇宙优化/results/MVO-多宇宙优化分析结果_20260329_171857,而不是结果堆积非常重的 baseline 聚合目录。该目录下主结果文件为 MVO_results_20260329_171857.xlsx,实际工作表为 SummaryObjectiveMVO_ParamsBoundsConvergenceBest_SolutionCharts;主图文件为 MVO_convergence_20260329_171857.png

这份目录结构很干净,只包含一份工作簿、一张收敛图和一个 repro_mvo.py,适合作为论文正文里的主证据引用对象。相比之下,window3_baseline... 这类目录里混有大量多时间戳结果,容易把多轮回归输出混写成单次实验结果。

repro_mvo.py 的真实口径是 benchmark:objective_name = 'sphere'bounds_mode = 'lenient'problem_mode 虽写入参数但执行上仍走内置基准函数,并把 output_dir 指向相对目录 results。因此这篇文档当前绑定的是 benchmark 单次复算链路,而不是上传数据代理链路;若后续要写上传版实验,应改为绑定 manual_upload_verify_20260325 这类目录单独说明。

10. 软件实现核查补充(2026-07)

本篇对应的软件源码目录是 具体的算法3/优化与多目标/MVO-多宇宙优化。当前软件实现支持优化模式和上传数据代理优化模式;上传模式额外导出 UploadedProblemUploadedDataSurrogateMetrics。文档中的白洞、黑洞、虫洞、通货膨胀率和最优宇宙机制可以保留,但软件结果应按 MVO_ParamsRaw_ConfigConvergence_CurvesBest_TraceBest_Solution 解读。

当前较新的代表性目录为 results/MVO-多宇宙优化分析结果_20260517_150134-优化模式results/MVO-多宇宙优化分析结果_20260517_150146-上传数据代理优化。主工作簿包含 结果说明SummaryProblemMVO_ParamsRaw_ConfigBoundsRun_Summary稳定性统计History_MeanHistory_AllConvergence_CurvesConvergenceBest_TraceBest_SolutionInitial_PopulationFinal_PopulationCharts 以及中文兼容表;上传模式额外包含 UploadedProblemUploadedDataSurrogateMetrics。这与旧文绑定的干净 benchmark 单次目录不同,当前较新版本已经包含多运行统计和上传代理链路。

当前图表稳定输出为 charts/convergence.pngcharts/best_position.png。复现代码位于 复现代码/优化模式/复现代码/上传数据代理优化/,上传模式输入副本为 repro_inputs/mvo_sample.xlsx,复现输出进入 repro_outputs/,复现工作簿常命名为 repro_outputs.xlsx。写正式说明时应优先按当前 20260517 主结果目录解释,旧 benchmark 目录只作为历史补充。