正在加载中...

展开本页目录
算法教程EWOA-改进鲸鱼优化

EWOA-改进鲸鱼优化

No.183 · 在线教程

改进鲸鱼优化算法(Enhanced Whale Optimization Algorithm, EWOA)是在标准鲸鱼优化算法(WOA)基础上引入 Pool 机制、迁移子群与重尾随机参数的连续单目标优化方法。本项目的核心实现位于 EWOA-改进鲸鱼优化/core/ewoacal…

EWOA-改进鲸鱼优化

1. 方法概述

改进鲸鱼优化算法(Enhanced Whale Optimization Algorithm, EWOA)是在标准鲸鱼优化算法(WOA)基础上引入 Pool 机制、迁移子群与重尾随机参数的连续单目标优化方法。本项目的核心实现位于 EWOA-改进鲸鱼优化/core/ewoa_calculator.py,既支持内置 \(F1\sim F9\) 测试函数,也支持上传数据后的代理优化,并可输出最佳运行的初始群体、最终群体与 Pool 以便论文追溯。

设第 \(i\) 个鲸鱼在第 \(t\) 轮的位置为

$$ \boldsymbol{x}_i^{(t)}=(x_{i1}^{(t)},x_{i2}^{(t)},\ldots,x_{id}^{(t)})^\top \in \Omega \tag{1} $$

其中 \(d\) 为维度,\(\Omega=[\boldsymbol{l},\boldsymbol{u}]\subset\mathbb{R}^d\) 为可行域。项目默认按最小化问题求解;若选择最大化,则通过符号翻转将目标转换为内部最小化。

2. 问题定义与代理优化模式

2.1 基准函数模式

对内置测试函数,项目求解的基本形式为

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

其中 get_benchmarks() 提供了 \(F1\sim F9\) 函数,包括若干带罚函数约束的测试问题。例如 \(F7\sim F9\) 在目标函数内部已经嵌入不等式或等式约束罚项。

2.2 上传数据代理优化

problem_mode=upload_surrogate 时,系统根据上传样本训练随机森林代理模型。设训练样本为

$$ \mathcal{D}=\{(\boldsymbol{x}^{(n)},y^{(n)})\}_{n=1}^{N_s} \tag{3} $$

则代理目标函数为

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

其中 \(B=300\) 为回归树数量。变量边界由样本特征的逐维极值给出:

$$ l_j=\min_{1\le n\le N_s}x_j^{(n)},\qquad u_j=\max_{1\le n\le N_s}x_j^{(n)} \tag{5} $$

若用户选择最大化,则内部求解目标改写为

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

结果输出阶段再通过 predict_actualdisplay_curve 恢复到原始方向。

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{7} $$

设种群规模为 \(N\),最优个体记为

$$ \boldsymbol{x}_{best}^{(t)}=\arg\min_{1\le i\le N} f(\boldsymbol{x}_i^{(t)}) \tag{8} $$

3.2 Pool 机制

EWOA 的关键改造之一是 Pool 机制。首先定义 Pool 容量

$$ \kappa=\left\lceil \eta_\kappa \cdot N \right\rceil \tag{9} $$

其中 \(\eta_\kappa\) 对应 pool_kappa_factor。然后从当前种群中选出最差解数量

$$ N_w=\left\lceil \rho_w \cdot \kappa \right\rceil \tag{10} $$

其中 \(\rho_w\) 对应 pool_worst_ratio_of_kappa。记最差个体集合为 \(\mathcal{X}_{worst}\)。项目通过二值掩码和最优解坐标范围生成新的 Pool 候选:

$$ \boldsymbol{x}_{brnd}\sim U\!\big(\min(\boldsymbol{x}_{best}),\max(\boldsymbol{x}_{best})\big) \tag{11} $$

$$ \boldsymbol{p}_{new}=\boldsymbol{b}\odot \boldsymbol{x}_{brnd}+(1-\boldsymbol{b})\odot \boldsymbol{x}_{worst},\qquad \boldsymbol{b}\in\{0,1\}^d \tag{12} $$

生成的 \(\boldsymbol{p}_{new}\) 去重后填充到 Pool 中,用于后续个体更新。

3.3 Cauchy 型参数 \(a\)

项目并未沿用标准 WOA 的线性参数 \(A\),而是通过 Cauchy 分布式采样生成重尾参数:

$$ a_i = \min\!\left(1,\ 0.5 + 0.1\tan\big(\pi(u_i-0.5)\big)\right),\qquad u_i\sim U(0,1) \tag{13} $$

若采样结果 \(a_i\le 0\),则重新采样,直到 \(a_i>0\)。这一设计增强了搜索步长的随机性。

3.4 主更新机制

对非迁移子群中的个体,程序先生成随机参数 \(p_i\sim U(0,1)\)、\(c_i=2r_i\),并按迭代线性更新局部变量

$$ a_2^{(t)}=-1-\frac{t}{T} \tag{14} $$

随后对每个维度生成

$$ l_{ij}^{(t)}=(a_2^{(t)}-1)\,r_{ij}+1,\qquad r_{ij}\sim U(0,1) \tag{15} $$

若 \(p_i<0.5\) 且 \(a_i<0.5\),则项目执行最优个体引导的收缩更新:

$$ d'_{ij}=\left|c_i\,x_{best,j}^{(t)}-p^{(rand)}_{j}\right| \tag{16} $$

$$ x_{ij}^{(t+1)}=x_{best,j}^{(t)}-a_i\,d'_{ij} \tag{17} $$

其中 \(p^{(rand)}_{j}\) 为从 Pool 中随机选取的参考坐标。

若 \(p_i<0.5\) 且 \(a_i\ge 0.5\),则采用 Pool 引导的差分式更新:

$$ x_{ij}^{(t+1)}=x_{ij}^{(t)}+a_i\left(c_i\,p_{r_1,j}-p_{r_2,j}\right) \tag{18} $$

其中 \(p_{r_1,j}\) 与 \(p_{r_2,j}\) 为从 Pool 中抽取的两个不同参考位置。

若 \(p_i\ge 0.5\),则采用螺旋包围机制:

$$ d'_{ij}=\left|x_{best,j}^{(t)}-x_{ij}^{(t)}\right| \tag{19} $$

$$ x_{ij}^{(t+1)}=d'_{ij}\exp(b\,l_{ij}^{(t)})\cos(2\pi l_{ij}^{(t)})+x_{best,j}^{(t)} \tag{20} $$

项目中固定 \(b=1\)。

3.5 迁移策略

EWOA 的第二个关键改造是迁移子群。设每轮有 \(P\) 个个体被抽中迁移(代码中为 p_portion),则其新位置由

$$ \boldsymbol{x}_{rnd}\sim U(\boldsymbol{l},\boldsymbol{u}) \tag{21} $$

$$ \boldsymbol{x}_{brnd}\sim U\!\big(\min(\boldsymbol{x}_{best}),\max(\boldsymbol{x}_{best})\big) \tag{22} $$

共同构造:

$$ \boldsymbol{x}_{mig}^{(t+1)}=\boldsymbol{x}_{rnd}-\boldsymbol{x}_{brnd} \tag{23} $$

该策略用于增强跳出局部最优的能力。

3.6 边界处理

项目支持三种边界处理方式:

  1. 截断式:

$$ x_{ij}\leftarrow \min(\max(x_{ij},l_j),u_j) \tag{24} $$

  1. 随机重采样:越界分量在对应边界区间内重新采样;
  2. 中点回拉:若越界,则取“前一位置”和边界的中点。

其中默认方式为 midpoint

3.7 选择与 Pool 更新

对每个个体,若新位置适应度更优,则更新全局最优:

$$ \text{若 } f(\boldsymbol{x}_{new,i}^{(t+1)})<f(\boldsymbol{x}_{best}^{(t)}),\ \text{则}\ \boldsymbol{x}_{best}^{(t+1)}=\boldsymbol{x}_{new,i}^{(t+1)} \tag{25} $$

随后对所有改进个体执行贪婪更新,并将其旧位置作为 x_worst 候选重新送入 Pool:

$$ \boldsymbol{x}_i^{(t+1)}= \begin{cases} \boldsymbol{x}_{new,i}^{(t+1)}, & f(\boldsymbol{x}_{new,i}^{(t+1)})<f(\boldsymbol{x}_i^{(t)})\\ \boldsymbol{x}_i^{(t)}, & \text{否则} \end{cases} \tag{26} $$

3.8 收敛记录

第 \(t\) 轮迭代记录的收敛值为当前全局最优:

$$ g^{(t)}=\min_{1\le i\le N}f(\boldsymbol{x}_i^{(t)}) \tag{27} $$

当执行多次独立运行时,系统还会统计均值曲线与标准差曲线。

4. 算法流程

结合 _ewoa_optimizeEwoaCalculator.run_analysis,本项目的求解流程为:

  1. 解析问题模式、目标方向、边界和算法参数。
  2. 初始化种群并根据最差个体构造初始 Pool。
  3. 在每轮迭代中,对非迁移个体执行收缩/Pool 差分/螺旋三类更新。
  4. 对迁移子群按式(23)执行跳跃式迁移。
  5. 按所选边界处理方式修正越界分量。
  6. 评价新个体并更新全局最优解。
  7. 对改进个体执行贪婪替换,并以其旧位置更新 Pool。
  8. 记录最佳收敛曲线;若 runs>1,则汇总多次运行统计。

5. 关键参数说明

  • pop_size:鲸鱼数量 \(N\)。
  • max_iter:最大迭代次数 \(T\)。
  • runs:独立重复运行次数,用于输出均值/标准差统计。
  • seed:随机种子,第 \(r\) 次运行采用 seed + r - 1
  • p_portion:迁移子群数量 \(P\)。
  • pool_kappa_factor:Pool 容量放大系数,对应式(9)。
  • pool_worst_ratio_of_kappa:用于生成 Pool 的最差解比例,对应式(10)。
  • bound_method:边界处理方式,可选 midpointcliprandom
  • minmax:目标方向。若为 max,程序内部按相反数最小化处理。

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

设共有 \(R\) 次独立运行,第 \(r\) 次运行的最优值为 \(b_r\),则项目输出中会统计:

$$ b_{\mathrm{best}}= \begin{cases} \min_{1\le r\le R} b_r, & \text{最小化}\\ \max_{1\le r\le R} b_r, & \text{最大化} \end{cases} \tag{28} $$

$$ \bar{b}=\frac{1}{R}\sum_{r=1}^{R} b_r \tag{29} $$

$$ s_b=\sqrt{\frac{1}{R-1}\sum_{r=1}^{R}(b_r-\bar{b})^2} \tag{30} $$

系统还会输出:

  • Metrics:最佳运行编号、best_fitness、均值、标准差、总耗时和 pool_size_best_run
  • Parameters:问题配置、边界、p_portion、Pool 参数和边界处理方式;
  • InitialPopulationFinalPopulation:最佳运行复跑得到的初始/最终群体;
  • Runs:每次运行的 run / seed / best_fitness / runtime_s
  • Convergence:最佳运行曲线以及多次运行均值/标准差;
  • BestSolution:最佳运行最优解向量;
  • Pool:最佳运行最终 Pool 内容;
  • Charts:收敛曲线图与多次运行箱线图路径;
  • 上传代理模式下额外导出 BoundsUploadedDataSurrogateMetrics

论文结果部分可先用 Metrics 汇总多次运行统计,再结合 Convergence 描述最佳运行与均值收敛行为,并把 Pool 作为改进机制的结果支撑表。由于 InitialPopulationFinalPopulationPool 都来自最佳运行复跑结果,正文引用时应明确其用途是解释代表性最优运行,而不是全部运行的直接缓存。

7. 论文写作模板

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

“本文采用改进鲸鱼优化算法对连续变量单目标问题进行求解。相较于标准 WOA,本文实现引入了三项改造:其一,利用最差个体与当前最优解坐标范围构造 Pool 机制,为个体更新提供额外的参考样本;其二,采用基于 Cauchy 分布的重尾参数增强搜索步长的随机性;其三,设置迁移子群执行跳跃式位置迁移,以提升全局探索能力。对于目标方向为最大化的情形,本文将目标函数转换为等价的最小化形式求解;对于数据驱动任务,则先训练随机森林代理模型,再在样本边界内实施 EWOA 搜索。”

在结果部分可进一步写为:

“本文记录了 EWOA 在多次独立运行下的最优值、均值、标准差及收敛曲线,并输出最佳运行对应的 Pool、初始群体和最终群体,以支持算法行为分析与实验复现。”

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. 实现说明与注意事项

  • 本实现适用于连续变量单目标优化,不直接适用于显式多目标问题。
  • F7-F9 基准函数在目标函数内部已经嵌入罚项,因此论文中应将其解释为约束处理后的等价单目标问题。
  • Pool 机制和迁移子群是本项目 EWOA 区别于标准 WOA 的核心,不能在说明中忽略。
  • bound_method=midpoint 时,越界分量会用“前一位置与边界中点”修正,这会影响边界附近的搜索行为。
  • 上传代理优化的最优结果依赖随机森林代理精度,应结合 RMSE、MAE、\(R^2\) 等指标一起解读。

9. 单篇终审补充

9.1 图题与表题对齐建议

  • Metrics 表可写为:表X EWOA 多次运行统计与最佳运行摘要。
  • Runs 表可写为:表X EWOA 各次运行最优值与耗时。
  • Convergence 表可写为:表X EWOA 最佳运行与均值收敛曲线。
  • BestSolution 表可写为:表X EWOA 求得的最优解向量。
  • Pool 表可写为:表X EWOA 最佳运行末期 Pool 候选集合。
  • Charts 中收敛图建议写为:图X 改进鲸鱼优化算法收敛曲线。

9.2 终审说明

  • 当前文档已具备较完整结果解释,正式落稿时应明确 InitialPopulationFinalPopulationPool 都来自最佳运行复跑结果,不代表所有运行。
  • 若引用多次运行箱线图,应在正文中明确对应的是 Runs 结果分布。

9.3 全量强化补充

本次全量强化能绑定到的真实磁盘证据主要位于 具体的算法3/优化与多目标/EWOA-改进鲸鱼优化/results 顶层,而不是常规的“单次结果子目录”。当前可直接核验的主结果文件是 EWOA_smoke_20260213_010739.xlsx,对应真实工作表为 MetricsParametersInitialPopulationFinalPopulationRunsConvergenceBestSolutionPool;配套图文件为 EWOA_smoke_20260213_010739_plots/convergence_curve.png

这里需要如实说明一个现状差异:与 AOA、GSA、POA 这类已经形成“结果目录 + xlsx + repro + repro_inputs”的结构不同,EWOA 当前 results 下可直接看到的主要是 smoke 主结果与图目录,尚未在同级证据中看到新的标准化子目录快照。因此这篇文档此轮强化应明确写成“当前绑定的是 smoke 实跑证据”,而不是伪装成已经存在完整上传验证目录或 repro_inputs 目录。

对论文写作而言,这并不影响方法介绍和结果表结构说明,但若要在正文里主张“可移植复现链路已完整落盘”,还需要后续再补一轮真实 repro_ewoa.py 与独立结果目录证据。当前这一篇最稳妥的写法,是把 EWOA_smoke_20260213_010739.xlsx 作为已核验的主工作簿,把 convergence_curve.png 作为当前可直接引用的真实图。

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

本篇对应的软件源码目录是 具体的算法3/优化与多目标/EWOA-改进鲸鱼优化。当前软件实现已经不只停留在旧的 smoke 结果证据,而是有优化模式和上传数据代理优化模式两类目录;上传模式读取 csv/xlsx/xls 数值表,通过代理模型把用户数据连接到改进鲸鱼优化搜索。文档中的包围猎物、螺旋更新、随机搜索和改进策略公式可以保留,但应说明软件结果是当前工程化单目标连续优化实现。

当前较新的代表性目录为 results/EWOA-改进鲸鱼优化分析结果_20260517_103906-优化模式results/EWOA-改进鲸鱼优化分析结果_20260517_104017-上传数据代理优化。主工作簿 EWOA_results_*.xlsx 同时保留新版统一表和旧式兼容表,包括 结果摘要结果说明字段说明SummaryProblemEWOA_ParamsBoundsRun_SummaryHistory_MeanHistory_AllBest_SolutionChartsMetricsParametersInitialPopulationFinalPopulationRunsConvergenceBestSolutionPool;上传模式额外包含 UploadedProblemUploadedDataSurrogateMetrics。因此文档中应解释两套表名是兼容导出,不是两轮不同实验。

当前图表目录形如 EWOA_results_时间戳_plots/,稳定图为 convergence_curve.png;部分历史检查目录中可能有 best_fitness_boxplot.png,但较新主目录不应把箱线图写成必有产物。复现代码位于 复现代码/优化模式/复现代码/上传数据代理优化/,上传模式输入副本为 repro_inputs/ewoa_sample.xlsx,复现输出可生成 EWOA_repro_results.xlsx 与同名图目录。旧文关于 smoke 证据的说明可保留为历史,但当前交付文档应优先绑定 20260517 新目录。