nekosilverfox / Binary-Equilibrium-OA

🔬0-1 Knapsack问题的二元均衡优化算法 | A Binary Equilibrium Optimization Algorithm for 0–1 Knapsack Problems

Repository from Github https://github.comnekosilverfox/Binary-Equilibrium-OARepository from Github https://github.comnekosilverfox/Binary-Equilibrium-OA

NekoSilverfox

0-1背包问题的二元均衡优化算法

A Binary Equilibrium Optimization Algorithm for 0–1 Knapsack Problems

ogo_building_spbstu

Санкт-Петербургский государственный политехнический университет
Институт компьютерных наук и технологий

License

[toc]

概述

算法来自于论文:https://doi.org/10.1016/j.cie.2020.106946


A Binary Equilibrium Optimization Algorithm for 0–1 Knapsack Problems


Mohamed Abdel-Basset, Reda Mohamed, Seyedali Mirjalilib

Faculty of Computers and Informatics, Zagazig University, Zagazig 44519, Egypt Center for Artificial Intelligence Research and Optimization, Torrens University Australia, AustraliaYonsei Frontier Lab, Yonsei University, Seoul, Korea d King Abdul Aziz University, Jeddah, Saudi Arabia

该仓库将注重本算法的实现及验证

缩写说明

专有名词

Я изучал статью, которая наз-ся XXXXX

缩写 说明
KP Knapsack Problems - 背包问题 задач рюкзака
(B)EO (Binary) version of Equilibrium Optimization Алгоритм оптимизации (бинарного) равновесия
a_1 勘探能力 исследованию
a_2 开发能力 эксплуатации
Ceq, pool 均衡池 Равновесный бассейн
fitness 适应度函数 Функция приспособленности
约束条件 Ограничения условие
惩罚函数 Функция штрафа
可行解 выполнимое решение
RA Repair Algorithm - 修复算法 Алгоритм исправления
IA 改进算法 Алгоритм улучшения
tf 转移函数 Передаточная функция
迭代 итераций
Оптимальное решение

符号

符号 说明
$n$ 0-1 背包问题中,一共有 n 项
$i$ 背包中的第 $i$
$w_i$ $i$ 项的权重(占用的空间)
$p_i$ $i$ 项的利润(价值)
$x_i=1$ $i$ 项物品装入了背包
$x_i=0$ $i$ 项没有装入背包

摘要

本文提出了一个二进制版本的均衡优化(BEO - binary version of equilibrium optimization),用于解决0-1 knapsack问题,该问题被描述为一个离散问题。由于标准的均衡优化器(EO - equilibrium optimizer)是为解决连续优化问题而提出的,因此需要一个离散的变体来解决二进制问题。因此,包括V型和S型在内的八个转移函数被用来将连续EO转换为二进制EO(BEO)。在这些传递函数中,==本研究表明,V形V3是最好的函数。我们还发现,S3传输函数比V3更有利于提高本文所采用的其他算法的性能==。我们得出结论,任何二进制算法的性能都依赖于传递函数的良好选择。此外,我们使用惩罚函数从问题的解决方案中筛选出不可行的解决方案,并应用修复算法(RA - repair algorithm)将其转换为可行的解决方案。我们在三个基准数据集上评估了所提出的算法的性能,这些数据集有63个小型、中型和大型实例,并在不同的统计分析下与其他一些为解决0-1 knapsack而提出的算法进行了比较。实验结果表明,BEOV3算法在所有的小型、中型案例研究中都有优势。关于大规模的测试案例,所提出的方法在18个实例中的13个达到了最优值。

简介(第1节)

背包问题简单来说就是,在固定的背包容量下,装入价值最多最高的物品

**Knapsack问题(KP)**在许多现实世界的应用中得到了它们的重要性。这些问题常见于投资决策(Rooderkerk和van Heerde,2016)、货物装载问题(Mladenović,2019,Cho,2019,Brandt和Nickel,2019)、能源最小化(Müller,2015,Karaboghossian和Zito,2018)、资源分配(Jacko,2016)、计算机内存(Oppong,2019)、项目组合选择(Koc,2009,Bas,2012,Tavana,2015,Tavana et al, 2013),自适应多媒体系统(Khan,2002),密码学(Khan,2002,Liu等人,2019),住房问题(Chan,2018),以及切割库存问题(Alfares和Alsawafy,2019)。因此,解决KP使许多应用得以蓬勃发展和壮大。然而,KP是一个NP-hard问题,所以找到一个多项式时间的解决方案是困难的。KP是一个组合优化问题,我们寻求在有限的解决方案中找到最佳解决方案如果KP的大小增加,精确方法搜索最优解所需的时间就会呈指数级增长。精确的方法,如穷举搜索或分支和约束,在空间和时间方面消耗了巨大的计算资源,特别是对于大规模的KP。因此,需要在可接受的时间内找到一个接近最优的解决方案,这是许多研究人员在解决KP时遵循的一个趋势。

在0-1 KP中,假设给定了一个由**==n个项目==**组成的集合,每个项目都有一个私人==$权重 w_i$==和==$利润 p_i$==。从给定的n个项目中,决策者需要一个能使利润最大化的子集,同时保持其权重之和小于或等于背包的容量。为了找到这个项目子集,如果背包包含所选的==第i项==,其值为$x_i=1$,如果没选入背包值为$x_i=0$。最后,这个问题在数学上可以表述为:

$$ \operatorname{maximize} \sum_{i=1}^{n} x_{i}^{*} p_{i}

\

subjectto (使)\sum_{i=1}^{n} w_{i}^{*} x_{i}<c

\

x_{i}=0 \ or \ 1, i=0,1 \cdots \cdots n

\

p_{i}>0,\ w_{i}>0,\ c>0 $$

最近,许多**元启发式算法meta-heuristic algorithms)**被建议为各种优化问题寻找最优解,并取得了相对较好的结果(Bairathi and Gopalani, 2018; Mirjalili and Lewis, 2016; Askarzadeh, 2016; Abualigah, 2019; Abualigah et al., 2018; Abualigah et al., 2018; Mohammad Abualigah, 2020; Abualigah and Diabat, 2020; Safaldin et al., 2020)。与精确方法相比,元启发式方法的特点是更快地收敛到最优解,并减少了计算成本。因此,许多作者争相使用元启发法来解决KP。任何元启发式算法的主要目标是有效地探索搜索空间,找到接近最优的解决方案。一个稳健的元启发式算法是能够保持探索和利用阶段之间的平衡。下一节将讨论一些为解决0-1背包而提出的元启发式算法。

元启发式算法的优异表现促使我们提出了一种新的元启发式算法的二进制版本,即均衡优化器(EO)(Faramarzi,2019),其灵感来自物理学,用于处理knapsack问题。该算法在处理连续问题方面的高稳定性是提出二进制版本的原因,以研究其在处理作为组合优化问题的0-1 knapsack问题时的性能。元启发式算法相对于现有算法的优势总结如下:

  1. 避免过早向局部最优收敛
  2. 在迭代结束前有很强的稳定性
  3. 有两个因子帮助算法平衡和前进
  4. 算法存储目前为止最好的 4 个解,使算法具有额外的能力,以避免陷入局部最小值,从而加速向最优解决方案收敛。

根据这些优点,它被认为是一个强大的算法,随后调查它在离散问题上的表现是一个不可缺少的命令。为了将EO的连续值转换为离散值,使用了八个转移函数,即V-Shape和S-Shape,并对这些函数进行了广泛的实验,以获得性能最好的一个二进制版本的EO(BEO)。经过实验,很明显,V-Shape V3是最好的一个。此外,为了检查BEO的性能,它在小型、中型和大型三个基准数据集上进行了验证,并与14种最先进的算法进行了比较。经过验证和比较,所提出的算法在三个基准的大多数实例上,特别是在大规模的实例上的优势是非常明显的。最后,本文中主要贡献有以下几点:

  • 提出了解决0-1背包问题的二元版新型EO
  • 增加一个决策模型,在解决大规模的背包问题上有更高的能力,为剪切原料寻找最不丰富的方式,选择投资和组合,为默克尔-海尔曼(Lagarias, 1984)生成关键和解决其他背包问题(Kellerer et al., 2004)
  • 提出了转移函数的良好选择可以提高二进制算法的性能

本文的其余部分组织如下:

第2节:之前解决 0-1KP 和 MKP 的工作

第3节:总结了原始的EO。

第4节:说明了使用充分的转移函数作为建议,说明了 EO 在解决 0-1KP 的适应性。

第5节:介绍了所提出的方法在三组标准的知名基准上解决0-1 knapsack问题的讨论和实验结果,并进行了详细说明。

第6节:提供了关于建议的方法和未来工作的一些结论。

文献回顾(第2节)

为了展示最先进的技术,我们将介绍以前为解决单0-1 KP所做的一些工作。Ye等人(Ye, 2019)应用模仿生物组织机制的组织P系统来解决KP。虽然这个系统显示了正确的结果,但作者确实测试了该系统对大规模KP的性能。Wu等人(Wu et al., 2018)将共生搜索算法与和谐搜索相结合,用于解决小型和大型的KP。

此外,Gao等人(Gao, 2018)通过采用量子编码提高了狼群算法的性能。该算法使用量子旋转和量子塌陷来移动到全局搜索并避免局部最优。在(Zouache等人,2016);Zouache等人将量子概念与萤火虫算法和粒子群优化相结合,结果非常令人鼓舞。其他算法,如谐波振荡器和社会进化(Pavithr, 2016, Huang, 2019, Wang, 2007)利用了量子计算的优势。复值编码法除了与风动优化算法(Zhou,2017)结合,还采用了贪婪策略,以增加种群的多样性,增强算法的局部搜索能力。同时,复值编码方法被加入到蝙蝠算法中,以使蝙蝠种群多样化(Zhou等人,2016)。

在(Kulkarni和Shabir,2016)中,采用了群组智能(CI)算法来解决项目数在4到75之间的0-1 KP。此外,问题大小的增加通过增加计算时间和函数评估来影响算法的性能,而且,为实验选择的数据集是低维的。因此,Sapre等人(Sapre,2019)用一种选择候选者最优解的教育方法改进了低维数据集的性能CI算法。Feng等人(Feng,2018)通过对君主蝴蝶优化(MBO)采用基于反对的学习策略(OBL)和高斯扰动改善了解决方案的质量。该算法在后期对一半的种群使用了OBL,但高斯扰动策略对一半具有最小适配度的个体起作用。之后,使用相同的算法(MBO),Feng等人(2018)采用混沌图来增强MBO算法的全局优化能力。

Zhou等人(2016)改进了一种猴子算法,该算法使用贪婪算法来纠正解决方案的不可行性,并提升这些解决方案的可行性。此外,如果全局最优解在预定的迭代次数中没有变化,该算法会重新初始化群体。实验表明,该算法在解决0-1 KP方面是有价值的。Kong, 2015)中介绍的简化二元和谐搜索依赖于存储在和谐存储器中的和谐之间的差异,而不是参数。此外,El-Shafei等人(2018)利用基于FPGA的Harare加速器的并行处理,使用二进制和谐搜索解决大维KP。

此外,一种新型的全局和谐搜索算法(NGHS)(Zou,2011)已经被开发出来,用于解决0-1背包问题。NGHS使用两种操作进行了改进:第一种是位置更新,用于在每次迭代中迅速将最差的和谐度更新为最佳的全局和谐度;第二种是遗传变异,旨在使NGHS脱离局部最优。在解决0-1 KP时,NGHS仍然存在陷入局部最小值的问题,因此无法达到更好的解决方案。此外,有人提出了一种改进的鲸鱼优化算法(IWOA)(Abdel-Basset等人,2019),用于解决单一的0-1 KP和MKP。IWOA由局部搜索策略(LSS)和征收飞行策略整合而成,在探索和开发操作者之间进行了更好的权衡。此外,为了提高效率,IWOA还与位运算器进行了整合。WOA也被用于其他二进制问题。

在(Wu, 2020)中,最近提出了离散的基于教与学的混合优化算法(HTLBO)来解决折算的0-1 KP。HTLBO的优化能力从三个方面得到了提高:(1)为了提高HTLBO的探索能力,改进了学习策略;(2)为了平衡探索和开发操作者,在教师和学习者阶段集成了自学因素;(3)最后,使用了两种类型的交叉法来提高HTLBO的搜索能力。

均衡优化器(第3节)

==EO - Equilibrium optimizer - 均衡优化器==

最近,Faramarzi(2019)提出了一种新的基于物理学的元启发式算法,称为平衡优化器(EO),用于解决连续优化问题。EO寻求找到平衡状态,以实现进入、产生和离开控制体的质量平衡。EO在数学上表述如下

$$ Step 1: initialization $$ 在初始化步骤中,已经生成了一组𝑁粒子,每个粒子的尺寸数为𝑛。每个粒子内的尺寸都是随机初始化的,具体如下:

$$ \vec{v}{i}=L{\min }+\left(U_{\max }-\mathrm{L}_{\min }\right) * \mathrm{ri}=0,1,2, \cdots, \mathrm{N}

\tag1 $$ 其中:

  • 𝑣⃗𝑖 是一个向量,包含颗粒𝑖的浓度
  • 𝐿𝑚𝑖𝑛,𝑈𝑚𝑎𝑥 表示每个维度的专门搜索空间的最大和最小边界
  • 𝑟 是一个在0和1之间随机产生的数字

$$ {Step 2: Equilibrium\ pool\ and\ candidates \left(c_{e q}\right)} \\ 均衡池和候选着\left(c_{e q}\right) $$

EO的工作是寻找在控制体积上实现平衡的状态。当EO到达这个状态时,它可能是达到了它所寻找的近似最优解。像所有的元启发式算法一样,在优化过程的开始,全局最优解是不知道的,所以它们选择群体中最合适的一个作为全局解。同样,EO在开始时也不知道能达到系统平衡的质量浓度,所以它在$\overrightarrow{\mathrm{p}}{\text {eq,pool }}$中加入最好的四个粒子作为平衡候选粒子,此外还有一个包含最好的四个粒子的平均值。**$\overrightarrow{\mathrm{p}}{\text {eq,pool }}$ 中的前四个均衡候选粒子的作用是提高EO的探索能力,而最后一个则是提高其开发能力**。

$$ \vec{p}{\text {eqppool }}=\left[\vec{p}{\text {eq(1) }}, \vec{p}{\text {eq(2) }}, \vec{p}{\text {eq(3) }}, \vec{p}{\text {eq(4) }}, \vec{p}{\text {eq(avg) }}\right]

\tag2 $$


$$ {Step 3: updating\ the\ concentration} \\ 更新浓度 $$

以下公式的设计是为了确保EO在探索和开发操作者之间有一个合理的平衡: $$ \vec{F}=e^{-\vec{\lambda}\left(t-t_{0}\right)}

\tag3 $$ 其中 $\vec{\lambda}$ 是在(Rooderkerk和van Heerde,2016)的范围内随机生成的一个向量,$t$ 随着迭代逐渐减少,其表述如下: $$ t=\left(1-\frac{i t}{t_{\max }}\right)^{(a 2^{*}\left(\frac{i t}{t_{\max }}\right)}

\tag4 $$ 其中:

  • $it$ 是当前的迭代
  • $t_{max }$ 表示最大的迭代次数
  • $a 2$ 是控制EO的开发能力的一个固定值

作为改善EO的探索和开发能力的另一种尝试,EO还考虑了: $$ \vec{t}{0}=\frac{1}{\vec{\lambda}} \ln \left(-a{1} \operatorname{sign}(\vec{r}-0.5)\left[1-e^{-\vec{\lambda}^{t}}\right)+t\right.

\tag5 $$ 其中:

  • $a_{1}$ 是一个预先确定的固定值,用于控制多样化能力

    在$a_{1}$较高的情况下,则勘探操能力较高,而开发能力较低。相反,当$a_{2}$较大时,那么EO的开发能力优于勘探能力

式(6)描述了将式(5)代入式(3)后对式(3)的修正: $$ \vec{F}=a_{1} \operatorname{sign}(\vec{r}-0.5)\left[e^{-\vec{\lambda}(t)}-1\right]

\tag6 $$ 其中:

  • $\vec{r}$ 是一个在0到1之间创建的随机向量

为提高EO的开发能力,提出了R,具体如下: $$ \vec{R}=\vec{R}{0} * e^{-\vec{\lambda}^{*}\left(t-t{0}\right)}

\tag7 $$

其中 $R_0$ 为初值,计算公式如下: $$ \vec{R}{0}=\overrightarrow{R C P^{*}} *\left(\overrightarrow{c{e q}}-\vec{\lambda} * \vec{C}\right)

\tag8 $$

$$ \overrightarrow{R C P}=\left{\begin{array}{c}0.5 r_{1} r_{2}>R P \ \text { 0 otherwise }\end{array}\right.

\tag9 $$

  • $\overrightarrow{R C P}$ 用于确定是否将 $\vec{R}{0}$ 应用到更新的解决方案。如果 $概率RP$ 小于 $r_2$ ,则应用 $\vec{R}{0}$,否则不应用 $\vec{R}_{0}$

优化过程中的每个解通常会使用以下等式进行更新: $$ \vec{C}=\overrightarrow{c_{e q}}+\left(\vec{C}-\overrightarrow{c_{e q}}\right) * \vec{F}+\frac{\vec{R}}{\vec{\lambda} * V} *(1-\vec{F})

\tag{10} $$ 其中 $V = 1$

一般来说,EO的主要步骤如算法1所示:

Algorithm 1. (EO algorithm):

image-20221003193402394

提出的方法(第4节)

本项目里的代码可以在这里找到:

https://seyedalimirjalili.com/projects

在本节中,平衡优化算法被重新设计为求解0-1背包问题的二进制版本。标准EO是为解决连续优化问题而设计的,而背包问题被认为是一个离散问题,因此它必须重新设计,以足够解决这个问题。**要将标准EO转换为二进制版本,将使用后面介绍的传递函数之一进行转换,其中从标准算法返回连续值并转换为0或1。0的值指定从背包中取出的物品,1的值指定在背包中选择的物品。**在接下来的小节中,将展示构建我们提出的算法的各个阶段。

初始化

在这一阶段,提出了==𝑁个组==,其中==每个组包含n个粒子(维度)==,这些粒子(维度)被随机初始化为实值 $P_{j}$,$ \mathrm{j}=0,1,2 \cdots n$ ,==$P_{j}$在0到1之间==,然后根据式(11)将 $V_j$ 转换为0或1。求解0-1背包的初始群表示如图1所示。 $$ P_{j}=\left{\begin{array}{l}\text { 1 \ if } \ {P_j}>0.5 \ \text { 0 \ otherwise }\end{array}\right. \tag{11} $$ Fig. 1. Representation of the initial group:

Fig. 1. Representation of the initial group

https://blog.csdn.net/weixin_30239361/article/details/101540896

适应度函数也叫评价函数,主要是通过个体特征从而判断个体的适应度

评价一个个体的适应度的一般过程: 对个体编码串进行解码处理后,可得到个体的表现型。由个体的表现型可计算出对应个体的目标函数值。


https://baike.baidu.com/item/适应度函数/20593164

适应度函数(Fitness Function)的选取直接影响到遗传算法的收敛速度以及能否找到最优解,因为遗传算法在进化搜索中基本不利用外部信息,仅以适应度函数为依据,利用种群每个个体的适应度来进行搜索。因为适应度函数的复杂度是遗传算法复杂度的主要组成部分,所以适应度函数的设计应尽可能简单,使计算的时间复杂度最小。

遗传算法评价一个解的好坏不是取决于它的解的结构,而是取决于该解的适应度值,这正体现了遗传算法“优胜劣汰”的特点。遗传算法不需要适应度函数满足连续可微等条件,唯一要求是针对输入可计算出能加以比较的非负结果。这一特点使得遗传算法具有广泛的适用性。在实际问题中,适应度函数与问题的目标函数是不完全一致的,如有的问题的目标是要求得最小值(费用问题),而有的问题的目标是要求得最大值(利润函数)。因此在不少场合,将目标函数映射成求最大值形式而且函数值非负的适应度函数是必要的。

在遗传算法中,适应度是描述个体性能的主要指标。根据适应度的大小,对个体进行优胜劣汰。适应度是驱动遗传算法的动力。从生物学角度讲,适应度相当于“生存竞争、适者生存”的生物生存能力,在遗传过程中具有重要意义。将优化问题的目标函数与个体的适应度建立映射关系,即可在群体进化过程中实现对优化问题目标函数的寻优。==适应度函数也称评价函数,是根据目标函数确定的用于区分群体中个体好坏的标准,总是非负的,任何情况下都希望它的值越大越好。在选择操作中,会出现2个成为遗传算法欺骗的问题:==

1)在遗传算法初期,通常会产生一些超常个体,按照比例选择法,这些超常个体会因竞争力突出,而控制选择过程,影响到算法的全局优化性能;

2)遗传算法后期,当算法趋于收敛时,由于种群中个体适应度差异较小,继续优化的潜能降低,可能获得某个局部最优解。因此,如果适应度函数选择不当就会产生以上的欺骗问题。可见适应度函数的选择对于遗传算法的意义重大。

适应度函数是所有元启发式算法中不可或缺的函数。因此,在使用元启发式平衡优化方法求解背包问题时,必须给出适合度函数,直到能够找到优化过程的搜索核心。EO用于解决0-1背包问题的==适应度函数计算为背包中发现的物品的利润之和 $\mathrm{f}(x)=\sum_{i=1}^{n} P_{i}{ }^{*} p_{i}$==,它的结果取决于这个**==约束条件 $\sum_{i=1}^{n} w_{i}{ }^{*} P_{i}&lt;c$==**,其中 ==𝑤𝑖 和 𝑃𝑖 是背包中每件物品的重量和状态(0或1)==,==𝑐 是背包容量==。不受上述约束,且由于其适应度最大,可被选为最佳适应度值的解称为==不可行解==。我们将使用一个惩罚函数来处理这个不可行的解,==该惩罚函数给出该解的负适应度值,直到它不是被选为最佳解。算法2描述了惩罚函数(PF)的步骤。==

Algorithm 2. (Penalty function (PF)):

image-20221003224219562

修复不可行解

在这些小节中,将说明将不可行解转化为可行解所使用的算法。该阶段有两种算法,

  • 第一种是修复算法(Repair Algorithm, RA),其作用是修正PF算法返回的不可行解,
  • 第二种是改进算法(Improvement Algorithm, IA),其作用是改进RA返回的可行解。这两种算法如下:

在修复算法中:

  1. $\frac{\mathrm{p}{i}}{\mathrm{w}{i}}$ 值最低的物品是从背包中取出的。
  2. 对新解决方案进行评估
  3. 检查新解决方案的可行性,如果不可行,则重复步骤1和2,直到找到可行的解决方案(参见算法3)。

Algorithm 3 Repair Algorithm (RA):

image-20221004112338611

在改进算法中:

  1. $\frac{\mathrm{p}{i}}{\mathrm{w}{i}}$ 比值最高的物品被选择在背包中?
  2. 对新解决方案进行评估
  3. 检查新解决方案的可行性,如果不可行,则删除背包中最后选择的项目,并终止改进过程(如算法4所示)。

Algorithm 4. (Improvement Algorithm (IA))

image-20221004112857303

转移函数

有八个不同的传递函数,分为S型和V型两类。它们允许将连续值映射为0或1值。这些传递函数将一个实值作为输入,然后每个函数使用一个特定的公式将这个实值转换为0和1之间的值。之后,位于0和1之间的值使用公式(12)转换为二进制值。每个函数的公式显示在表1中,图2说明了同一类型函数的图形形状。关于这些转移函数的更多信息可在(Mirjalili & Lewis, 2013)找到。应该指出的是,在文献中存在着具有单一传递函数的EO的二元变体。然而,这项工作是在BEO算法中整合八个转移函数的半尝试,并对它们进行彻底的比较。 $$ F_{\text {bin }}=\left{\begin{array}{c}1 \text { if F}(a) \geq \operatorname{rand}() \ \text { 0 otherwise }\end{array}\right.

\tag{12} $$ Table 1. V-Shaped and S-Shaped Transfer Function:

V-Shaped S-Shaped
$\mathrm{V}1\boldsymbol{F}(\boldsymbol{a})=\left \frac{2}{\pi}\operatorname{arcTan}\left(\frac{\pi}{2}\mathbf{a}\right)\right
$\mathrm{~V} 2 \boldsymbol{F}(\boldsymbol{a})= \tanh (\boldsymbol{a})
$\mathrm{~V} 3 \boldsymbol{F}(\boldsymbol{a})=\left \frac{\mathbf{a}}{\sqrt{1+\boldsymbol{a}^2}}\right
$\mathrm{~V} 4 \boldsymbol{F}(\boldsymbol{a})=\left \operatorname{erf}\left(\frac{\sqrt{\pi}}{2} \boldsymbol{a}\right)\right

Fig. 2. (a) S-Shaped and (b) V-Shaped transfer Functions:

![S-Shaped and (b) V-Shaped transfer Functions](doc/pic/README/S-Shaped and (b) V-Shaped transfer Functions.jpg)

评估

在更新了当前的解决方案之后,更新的解决方案被转换成一个二进制的解决方案,使用之前的一个转移函数,然后用PF来检查它是否是可行的。如果不可行,则应用之前说明的修复算法(RA),将这个不可行的解决方案转换为可行的解决方案。此外,使用改进算法(IA)来改进从修复算法返回的可行方案。如果改进后的方案比以前的方案好,它将被更新到群体中,并在下一代中作为一个个体使用。最后,在算法5中介绍了二进制版本的EO(BEO)。相同步骤的流程图也在图3中描述

算法5 标准均衡优化器的二进制版本(BEO):

Algorithm 5 The binary version of the standard Equilibrium optimizer (BEO)

图3. 标准均衡优化的二进制版本的步骤:

![The steps of a binary version of the standard equilibrium optimization](doc/pic/README/The steps of a binary version of the standard equilibrium optimization.jpg)

一个说明性的例子

在清楚地描述了所提出的算法后,在这一节中,假设一个小例子来提高所提出的可读性。

假设我们有一个背包,由几个具有不同大小和利润的物品组成,这个背包的容量为15立方英寸(Ezugwu,2019)。我们需要在不破坏容量约束的情况下,在背包中插入能使利润最大化的物品。假设有三个潜在的项目。A、B 和 C,在表2中给出了它们的权重和利润

Table 2. Weights and profits of three items:

Items Weights (w) Profits (p)
A 2 5
B 30 10
C 10 15

我们需要在保持背包容量(见公式(13))的前提下,找到总利润最大化的物品数量(见公式(14))。 $$ totalprofit =\sum_{i=1}^{3} x_{i}^{*} p_{i}

\tag{13} $$

$$ capacity =\sum_{i=1}^{3} w_{i}{ }^{*} x_{i}<15

\tag{14} $$

开始时,拟议的算法将创建一个由N个解决方案组成的群体,每个解决方案包括d个维度,在我们的例子中d=3。之后,这些解决方案将被随机分配,转移函数被用来将这些连续的解决方案转换成二进制的。作为一个说明性的例子,图4给出了一个由提议创建的解决方案。在创建和初始化这个解决方案后,它将被转换为使用转移函数的二进制。图像显示,在使用转移函数后,得到的二进制解决方案如图5所示。

Fig. 4. an initial solution, x.

Fig. 4. an initial solution, x

Fig. 5. The binary solution of the initial solution, x.

![Fig. 5. The binary solution of the initial solution, x](doc/pic/README/Fig. 5. The binary solution of the initial solution, x.jpg)

计算出二元解后,该解中的0表示不选择该位置的物品,1表示选择。根据图5中给出的二元解,所选项目的总利润计算如下。

$f(x)=0 * 5+1 * 10+1 * 15=25$

而这个解决方案的容量计算如下。

$capacity =0 * 2+1 * 30+1 * 10=40&gt;15$


在计算了这个解决方案的容量后,我们发现它超过了背包的允许容量,即15。因此,这个不可行的解决方案必须从人口中移除,以避免被选为目前最好的解决方案。为了做到这一点,将调用PF算法,把这个解决方案的适配度转换成一个负值。调用PF算法后,f (x) = - 25,随后这个解决方案将不会被选为最佳解决方案。在我们的建议中,这个不可行的解决方案将使用RA进行修复。在调用RA算法并从这个不可行的解决方案中删除一个具有最低 $\frac{\mathrm{p}{i}}{\mathrm{w}{i}}$ 的项目后,说这个项目在第二个位置,所以这个不可行的解决方案在RA步骤后将是如下。

Fig. 6. The repaired binary solution.

![Fig. 6. The repaired binary solution.](doc/pic/README/Fig. 6. The repaired binary solution..jpg)

根据图6中给出的修复后的二元解,所选项目的总利润计算如下。

$f(x)=0 * 5+0 * 10+1 * 15=15$

而这个解决方案的容量计算如下。

$capacity =0 * 2+0 * 30+1 * 10=10&lt;15$


在计算了这个修复后的方案的容量后,很明显,它小于背包的容量,因此这个方案被认为是可行的。在将不可行的解决方案转换为可行的之后,将使用IA算法对其进行改进。IA算法将把具有最高 $\frac{\mathrm{p}{i}}{\mathrm{w}{i}}$ 的项目插入背包,这就是第一个项目。因此,调用IA后,这个可行的解决方案将如下。

Fig. 7. The improved repaired binary solution.

![Fig. 7. The improved repaired binary solution.](doc/pic/README/Fig. 7. The improved repaired binary solution..jpg)

根据图7中给出的二元解决方案,所选项目的总利润计算如下。

$f(x)=1 * 5+0^{*} 10+1 * 15=20$

而这个解决方案的容量计算如下。

$capacity =1 * 2+0 * 30+1 * 10=12&lt;15$

很明显,这个改进后的方案的容量小于背包的容量,因此,它被认为是一个可行的方案,并被用于下一代的群体。这个例子是在由N个解决方案组成的群体中的一个单一解决方案上进行的,以说明我们的主张的阶段。

实验结果

在本文中,我们对小型、中型和大型问题进行了一些实验研究,以验证我们提出的算法的性能。我们在配备了Windows 7终极平台的设备上进行了所有的实验研究,该平台采用64位操作系统,Intel® Core™ i3-2330 M CPU @ 2.20 GHz,以及1GB的内存。IEOA和EOA是用Java编程语言实现的。

本节组织如下。第4.1节说明了参数设置。第4.2节展示了我们提出的算法(BEO)在小规模问题上获得的结果。第4.3节提供了我们提出的算法(BEO)在大规模问题上获得的结果。

参数设置

在本节中,我们说明了分配给拟议算法的参数值。为了在算法之间进行公平的比较,最大的迭代次数和种群大小分别被设定为20和5000。关于其他算法,它们的比较是基于发表的论文中发现的参数。拟议算法的a1被设置为3,作为一个推荐值,而a2等于1也是推荐值。最后,表3显示了拟议算法的参数。

Table 3. the parameter setting of all algorithms used.

Parameters Value
最大迭代次数 5000
颗粒数 20
运行次数 20
a1 3
a2 1

基准数据集的描述

在本节中,我们在表4中介绍的小型和中型数据集上检查我们所提出的算法的性能。这些数据集被分为两组。

  1. 第一组是从(Kulkarni等人,2017)得到的,项目范围在10和75之间。
  2. 第二组是在https://pages.mtu.edu/~kreher/cages/Data.html上找到的,项目数在8和24之间。

Table 4. Benchmark datasets descriptions.

ID Problem Capacity D Opt
First Benchmark Datasets(Small-Scale)
1 KP_1 269 10 295
2 KP_2 878 20 1024
3 KP_3 20 4 35
4 KP_4 11 4 23
5 KP_5 375 15 481.07
6 KP_6 60 10 52
7 KP_7 50 7 107
8 KP_8 10,000 23 9767
9 KP_9 80 5 130
10 KP_10 879 20 1025
11 KP_11 577 30 1437
12 KP_12 655 35 1689.0
13 KP_13 819 40 1821
14 KP_14 907 45 2033
15 KP_15 882 50 2440
16 KP_16 1050 55 2651
17 KP_17 1006 60 2917
18 KP_18 1319 65 2817
19 KP_19 1426 70 3223
20 KP_20 1433 75 3614
Second Benchmark Datasets (small-scale)
21 KP_8a 1,863,633 8 3,924,400
22 KP_8b 1,822,718 8 3,813,669
23 KP_8c 1,609,419 8 3,347,452
24 KP_8d 2,112,292 8 4,187,707
25 KP_8e 2,493,250 8 4,955,555
26 KP_12a 2,805,213 12 5,688,887
27 KP_12b 3,259,036 12 6,473,019
28 KP_12c 2,489,815 12 5,170,626
29 KP_12d 3,453,702 12 6,941,564
30 KP_12e 2,520,392 12 5,337,472
31 KP_16a 3,780,355 16 7,850,983
32 KP_16b 4,426,945 16 9,352,998
33 KP_16c 4,323,280 16 9,151,147
34 KP_16d 4,550,938 16 9,348,889
35 KP_16e 3,760,429 16 7,769,117
36 KP_20a 5,169,647 20 10,727,049
37 KP_20b 4,681,373 20 9,818,261
38 KP_20c 5,063,791 20 10,714,023
39 KP_20d 4,286,641 20 8,929,156
40 KP_20e 4,476,000 20 9,357,969
41 KP_24a 6,404,180 24 13,549,094
42 KP_24b 5,971,071 24 12,233,713
43 KP_24c 5,870,470 24 12,448,780
44 KP_24d 5,762,284 24 11,815,315
45 KP_24e 6,654,569 24 13,940,099

在表4中,问题一栏包含了我们实验中使用的每个基准实例的名称,容量一栏包含了每个实例的knapsack容量,D一栏显示了小型、中型和大型问题的维数,最后,opt一栏包含了每个实例的最优值。在我们的实验中,我们使用六个标准来评估每个算法的性能:最佳、平均、最差、标准偏差(SD)、成功率(SR)和偏差百分比(PDav(%))。偏差百分比是一个统计测试,用于检查每个算法在多大程度上接近最优解,用以下公式计算。 $$ PDav(%)\geq\frac{opimalalue-fmebaleblebledledt}{opimalvalue}*100

\tag{15} $$ 成功率是指一个算法在独立运行中达到最优解的百分比,计算方法如下: $$ \mathrm{SR}(%)=\frac{\text { number of optimal solution obtained with in the independent runs }}{\text{number of runs}}{ }^{ {*}} 100

\tag{16} $$ 最后,我们在本节的实验组织如下。

  1. 实验1:EO配备并测试了之前说明的所有转移函数。

  2. 实验2:提议的算法结果。

  3. 实验3:与不同算法的比较。

实验1:八个转移函数的性能与BEO

在本节中,所有八个转移函数都被用于将BEO映射到二进制版本,以检查它们对BEO的有效性。在这里,我们只用第一个基准数据集来比较每个函数对BEO的优越性。

表5、表6、表7显示了使用八个不同的转移函数对BEO进行映射得到的最佳、最差和平均适配值。在这些表中,BEOS1、BEOS2、BEOS3、BEOS4、BEOV1、BEOV1、BEOV1和BEOV1这几列分别表示使用S1、S2、S3、S4、V1、V2、V3和V4转移函数映射BEO所得到的结果。

Table 5. the best fitness values under eight different transfer functions.

Instance Opt BEOS1 BEOS2 BEOS3 BEOS4 BEOV1 BEOV2 BEOV3 BEOV4
KP_1 295 295 295 295 295 295 295 295 295
KP_2 1024 1024 1024 1024 1024 1024 1018 1024 1024
KP_3 35 35 35 35 35 35 35 35 35
KP_4 23 23 23 23 23 22 22 23 23
KP_5 481.07 481.07 481.07 481.07 481.07 481.07 481.07 481.07 481.07
KP_6 52 52 52 52 52 52 52 52 52
KP_7 107 107 107 107 107 105 105 107 107
KP_8 9767 9767 9767 9767 9767 9767 9767 9767 9767
KP_9 130 130 130 130 130 130 130 130 130
KP_10 1025 1025 1025 1025 1025 1025 1025 1025 1025
KP_11 1437 1437 1437 1437 1437 1437 1437 1437 1437
KP_12 1689.0 1689 1689 1689 1689 1689 1689 1689 1689
KP_13 1821 1817 1817 1817 1817 1817 1817 1817 1817
KP_14 2033 2033 2033 2033 2033 2033 2033 2033 2033
KP_15 2440 2444 2444 2438 2440 2444 2444 2444 2351
KP_16 2651 2651 2651 2651 2651 2651 2651 2651 2651
KP_17 2917 2917 2917 2917 2917 2917 2917 2917 2917
KP_18 2817 2817 2817 2817 2817 2817 2817 2817 2817
KP_19 3223 3223 3223 3223 3223 3223 3223 3223 3223
KP_20 3614 3614 3614 3614 3614 3614 3614 3614 3614

Table 6. the worst results under 8 different transfer functions.

Instance Opt BEOS1 BEOS2 BEOS3 BEOS4 BEOV1 BEOV2 BEOV3 BEOV4
KP_1 295 295 295 295 295 295 295 295 295
KP_2 1024 1024 1024 1024 1024 1024 1018 1024 1024
KP_3 35 35 35 35 35 35 35 35 35
KP_4 23 23 23 23 23 22 22 23 23
KP_5 481.07 481.07 481.07 481.07 481.07 481.07 481.07 481.07 481.07
KP_6 52 52 52 52 52 52 52 52 52
KP_7 107 107 107 107 107 105 105 107 107
KP_8 9767 9767 9767 9767 9767 9767 9767 9767 9767
KP_9 130 130 130 130 130 130 130 130 130
KP_10 1025 1025 1025 1025 1025 1025 1025 1025 1025
KP_11 1437 1437 1437 1437 1437 1437 1437 1437 1437
KP_12 1689.0 1689 1689 1689 1682 1684 1689 1689 1689
KP_13 1821 1817 1817 1817 1792 1778 1817 1817 1817
KP_14 2033 2033 2033 2033 1979 2016 2033 2033 2033
KP_15 2440 2444 2444 2444 2444 2444 2444 2444 2444
KP_16 2651 2630 2651 2566 2568 2651 2651 2651 2651
KP_17 2917 2917 2917 2801 2735 2917 2917 2917 2917
KP_18 2817 2752 2818 2674 2581 2818 2818 2818 2818
KP_19 3223 3056.0 3206 3103 2915 3223 3221 3223 3223
KP_20 3614 3494 3614 3385 3222 3614 3614 3614 3605

Table 7. the average fitness under 8 different transfer functions.

Instance Opt BEOS1 BEOS2 BEOS3 BEOS4 BEOV1 BEOV2 BEOV3 BEOV4
KP_1 295 295 295 295 295 295 295 295 295
KP_2 1024 1024 1024 1024 1024 1024 1024 1024 1024
KP_3 35 35 35 35 35 35 35 35 35
KP_4 23 23 23 23 23 22 22 23 23
KP_5 481.07 481.07 481.07 481.07 481.07 481.07 481.07 481.07 481.07
KP_6 52 52 52 52 52 52 52 52 52
KP_7 107 107 107 107 107 105 105 107 107
KP_8 9767 9767 9767 9767 9767 9767 9767 9767 9767
KP_9 130 130 130 130 130 130 130 130 130
KP_10 1025 1025 1025 1025 1025 1025 1025 1025 1025
KP_11 1437 1437 1437 1437 1437 1437 1437 1437 1437
KP_12 1689.0 1689 1689 1689 1688.75 1688.4 1689 1689 1689
KP_13 1821 1817 1817 1817 1814.95 1816.4 1688.75 1817 1817
KP_14 2033 2033 2033 2033 2019.1 2031.5 2033 2033 2033
KP_15 2440 2444 2444 2436.75 2428.0 2444 2444 2444 2444
KP_16 2651 2649.75 2651 2625.95 2613.7 2651 2651 2651 2651
KP_17 2917 2917 2917 2886.6 2831.5 2917 2917 2917 2917
KP_18 2817 2806.7 2818 2777.7 2702.3 2818 2818 2818 2818
KP_19 3223 3216.85 3221 3154.6 2999.45 3223 3222.2 3223 3223
KP_20 3614 3599.75 3614 3533.4 3325.55 3614 3614 3614 3613.15

根据这些表格中介绍的结果,使用V3的映射BEO优于所有其他转移函数,其中BEOV3可以在所有20次独立运行中为所有实例实现最优值,而其他转移函数则不能在所有运行中实现最优值。图8显示了V3转移函数的优越性,其中BEOV3在20次运行中获得的所有实例的平均适配值(AFV)之和超过了使用其他转移函数与BEO获得的所有AFV。

Fig. 8. Comparison of the summation of the fitness values.

![Fig. 8. Comparison of the summation of the fitness values](doc/pic/README/Fig. 8. Comparison of the summation of the fitness values.jpg)

表 8 介绍了 BEO 在 KP_1 到 KP_20 的每个实例的不同转移函数下获得的 PDav(%) 值。该表的最后一行显示了BEO在每个转移函数下获得的所有实例的PDav值之和。检查这一行可以看出,使用V3的BEO可以获得所有实例的最优值,并占据第一的位置,而使用V2的BEO排名第二,数值为0.012,使用S4的BEO排名最后,数值为0.1813。

Table 8. the PDav values under 8 different transfer functions.

Name Opt BEOS1 BEOS2 BEOS3 BEOS4 BEOV1 BEOV2 BEOV3 BEOV4
KP_1 0 0 0 0 0 0 0 0 0
KP_2 0 0 0 0 0 0 0 0 0
KP_3 0 0 0 0 0 0 0 0 0
KP_4 0 0 0 0 0 0 0 0 0
KP_5 0 0 0 0 0 0 0 0 0
KP_6 0 0 0 0 0 0 0 0 0
KP_7 0 0 0 0 0 0 0 0 0
KP_8 0 0 0 0 0 0 0 0 0
KP_9 0 0 0 0 0 0 0 0 0
KP_10 0 0 0 0 0 0 0 0 0
KP_11 0 0 0 0 0 0 0 0 0
KP_12 0 0 0 0 0.014 0.0355 0 0 0
KP_13 0 0 0 0 0.0002 0.033 0 0 0
KP_14 0 0 0 0 0.0033 0.07 0 0 0
KP_15 0 0 0 0.0058 0.0068 0 0 0 0
KP_16 0 0.047 0 0.003 0.004 0 0 0 0
KP_17 0 0 0 0.0120 0.0140 0 0 0 0
KP_18 0 0.03 0 0.027 0.029 0 0 0 0
KP_19 0 0.001 0.06 0.035 0.040 0 0.012 0 0
KP_20 0 0.03 0 0.06 0.07 0 0 0 0.03
Sum 0 0.108 0.06 0.1428 0.1813 0.1385 0.012 0 0.03

实验2:提议的算法(BEOV3)结果

在上一节中,用BEO调查了八个转移函数,以检查它们在将EO产生的连续值映射为二进制值时的性能。这项调查在第一个基准实例上得到了验证,验证后得出结论,V3可以比其他的性能更好。因此,在本节中,所提出的算法BEOV3将在前面提到的两个基准上进行评估。本节的其余部分组织如下。

  1. A部分:第一个基准的比较

  2. B部分:第二个基准的比较

A. 第一个基准的比较

根据表9中介绍的结果,所提出的算法对第一个基准数据集的所有实例都获得了最佳解决方案,成功率(SR)=100%,PDav=0%。在证明了所提出的算法在这个由20个实例组成的基准上的优越性后,下一节将进一步研究它在一个由25个实例组成的基准上的性能,这些实例的项目数量在8到24之间。

Table 9. The results of BEOV3 on the first benchmark datasets.

Instance Opt Best Avg Worst SD SR(%) PDav(%)
KP_1 295 295 295 295 0 100 0
KP_2 1024 1024 1024 1024 0 100 0
KP_3 35 35 35 35 0 100 0
KP_4 23 23 23 23 0 100 0
KP_5 481.07 481.07 481.07 481.07 0 100 0
KP_6 52 52 52 52 0 100 0
KP_7 107 107 107 107 0 100 0
KP_8 9767 9767 9767 9767 0 100 0
KP_9 130 130 130 130 0 100 0
KP_10 125 125 125 125 0 100 0
KP_11 1437 1437 1437 1437 0 100 0
KP_12 1689 1689 1689 1689 0 100 0
KP_13 1821 1821 1821 1821 0 100 0
KP_14 2033 2033 2033 2033 0 100 0
KP_15 2440 2440 2440 2440 0 100 0
KP_16 2651 2651 2651 2651 0 100 0
KP_17 2917 2917 2917 2917 0 100 0
KP_18 2817 2817 2817 2817 0 100 0
KP_19 3223 3223 3223 3223 0 100 0
KP_20 3614 3614 3614 3614 0 100 0

B. 第二个基准的比较

表10列出了BEOV3在第二个基准数据集上获得的结果。从这些结果中可以看出,在SR=100和PDav=0的情况下,BEOV3可以实现所有实例的最优解,只有SR=10和PDav=0.04的KP_24d除外。

Table 10. the results of BEOV3 on the datasets from KP_8a to KP_24e.

Name Opt Best Avg Worst SD SR(%) PDav(%)
KP_8a 3,924,400 3,924,400 3,924,400 3,924,400 0 100 0
KP_8b 3,813,669 3,813,669 3,813,669 3,813,669 0 100 0
KP_8c 3,347,452 3,347,452 3,347,452 3,347,452 0 100 0
KP_8d 4,187,707 4,187,707 4,187,707 4,187,707 0 100 0
KP_8e 4,955,555 4,955,555 4,955,555 4,955,555 0 100 0
KP_12a 5,688,887 5,688,887 5,688,887 5,688,887 0 100 0
KP_12b 6,473,019 6,498,597 6,498,597 6,498,597 0 100 0
KP_12c 5,170,626 5170626.0 5170626.0 5170626.0 00 100 0
KP_12d 6,941,564 6,992,404 6,992,404 6,992,404 0 100 0
KP_12e 5,337,472 5,337,472 5,337,472 5,337,472 0 100 0
KP_16a 7,850,983 7,850,983 7,850,983 7,850,983 0 100 0
KP_16b 9,352,998 9,352,998 9,352,998 9,352,998 0 100 0
KP_16c 9,151,147 9,151,147 9,151,147 9,151,147 0 100 0
KP_16d 9,348,889 9,348,889 9,348,889 9,348,889 0 100 0
KP_16e 7,769,117 7,769,117 7,769,117 7,769,117 0 100 0
KP_20a 10,727,049 10,727,049 10,727,049 10,727,049 0 100 0
KP_20b 9,818,261 9,818,261 9,818,261 9,818,261 0 100 0
KP_20c 10,714,023 10,714,023 10,714,023 10,714,023 0 100 0
KP_20d 8,929,156 8,929,156 8,929,156 8,929,156 0 100 0
KP_20e 9,357,969 9,357,969 9,357,969 9,357,969 0 100 0
KP_24a 1,359,094 1,359,094 1,359,094 1,359,094 0 100 0
KP_24b 12,233,713 12,233,713 12,233,713 12,233,713 0 100 0
KP_24c 12,448,780 12,448,780 12,448,780 12,448,780 0 100 0
KP_24d 11,815,315 11,815,315 11,814,367 11,810,051 1147.262 25 0.0036
KP_24e 13,940,099 13,940,099 13,940,099 13,940,099 0 100 0

黑体值表示最佳结果。

作为我们在第一个和第二个基准上进行的实验的结果,我们提出的算法可以在这两个基准的总共45个中的44个达到最佳值。为了检查我们提出的算法比现有算法的优越性,在接下来的章节中,我们将在不同的基准上与一些现有算法进行比较。

实验3:与不同算法的比较。

在这一节中,我们将提议的算法与下列二元启发式算法的优越性进行比较。

  1. 使用S2(FPS2)映射的花朵授粉算法(Yang等人,2014)。

  2. 使用S2(WOS2)映射的鲸鱼优化算法(Mirjalili和Lewis,2016)。

  3. 蝙蝠算法(Yang,2010)使用S2(BAS2)进行映射

  4. 一种乌鸦搜索算法(Askarzadeh,2016),使用(CSAS2)映射。

  5. 粒子群优化算法(Eberhart and Kennedy, 1995)(PSOS2)。

  6. 一种离散改进的人工蜂群算法(DIABC)(张和刘,2019)。

  7. CWDO(Lagarias,1984)。

  8. HS (Zou, 2010)

  9. IHS (Zou, 2010)

  10. NGHS(Zou,2010)。

  11. PA(Sonuc等人,2016)。

  12. 一种改进的猴子算法(CGMA)(Zhou等人,2016)。

  13. 一种混合共生生物搜索算法(GHSOS)(Wu等人,2018)。

  14. 一种改进的人工蜂群算法(BABC-DE)(Cao,2018)。

前面列出的前五种算法在本文中是用Java编程语言实现的。如前所述,转移函数的良好选择可以提高二进制算法的性能,因此我们用八个转移函数对前五种算法进行了实验,经过实验,我们发现S2在这些算法上的表现优于所有其他转移函数。所有以前的算法都被用来验证我们提出的算法的优越性。本节的其余部分结构如下。

  1. A节:第一个基准的比较

  2. B节:第二个基准的比较


A. 第一个基准的比较

表11介绍了BEOV3和其他11种二进制算法在KP_1到KP_12数据集上获得的结果,其中在PDav(%)=0的情况下,它可以在所有运行中实现这些数据集的最优解。检查该图可以证实,我们提出的算法在该基准的前10个实例中可以真正达到最优值。

Table 11. Comparison of the datasets from KP_1 and KP_10.

InstanceOptAlgorithmsBestAverageWorstStdPDav(%)InstanceOptBestAverageWorstStdPDav(%)
KP_1295BEOV329529529500KP_65252525200
WOS22952952950052525200
PSOS22952952950052525200
FPS22952952950052525200
CSAS22952952950052525200
BAS22952952950052525200
CWD (Zhou, 2017)2952952950052525200
DIABC (Zhang and Liu, 2019)2952952950052525200
HS (Zou, 2010)2952952950050505003.8
IHS (Zou, 2010)295295295005049.2441.855.3
NGHS (Zou, 2010)295294.782880.0750505003.8
PA (Sonuc et al., 2016)2952952950052525200
KP_21024BEOV310241024102400KP_710710710710700
WOS21024102410240010710710700
PSOS21024102410240010710710700
FPS21024102410240010710710700
CSAS21024102410240010710710700
BAS21024102410240010710710700
CWD (Zhou, 2017)1024102410240010710710700
DIABC (Zhang and Liu, 2019)1024102410240010710710700
HS (Zou, 2010)10241024102400107106.81050.2
IHS (Zou, 2010)10241024102400107103.98932.28
NGHS (Zou, 2010)1024102410240010710710700
PA (Sonuc et al., 2016)10241024102400107100.5817.536.06
KP_335BEOV335353500KP_8976797679767976700
WOS23535350097679763.1797565.580.039
PSOS23535350097679766.5597632.1910.040
FPS23535350097679766.5597632.1910.040
CSAS23535350097679767976700
BAS23535350097679767976700
CWD (Zhou, 2017)353535009767975397483.50.14
DIABC (Zhang and Liu, 2019)353535009767975397483.50.14
HS (Zou, 2010)3535350097679767976700
IHS (Zou, 2010)3535350097679767976700
NGHS (Zou, 2010)3534.552801.1297679767976700
PA (Sonuc et al., 2016)3535350097679767976700
KP_423BEOV323232300KP_913013013013000
WOS22323230013013013000
PSOS22323230013013013000
FPS22323230013013013000
CSAS22323230013013013000
BAS22323230013013013000
CWD (Zhou, 2017)2323230013013013000
DIABC (Zhang and Liu, 2019)2323230013013013000
HS (Zou, 2010)2323230013013013000
IHS (Zou, 2010)2323230013013013000
NGHS (Zou, 2010)2323230013013013000
PA (Sonuc et al., 2016)2323230013013013000
KP_5481.07BEOV3481.07481.07481.0700KP_10102510251025102500
WOS2481.07481.07481.070010251025102500
PSOS2481.07481.07481.070010251025102500
FPS2481.07481.07481.070010251025102500
CSAS2481.07481.07481.070010251025102500
BAS2481.07481.07481.070010251025102500
CWD (Zhou, 2017)481.07481.07481.072.9E-13010251025102500
DIABC (Zhang and Liu, 2019)481.07481.07481.070010251025102500
HS (Zou, 2010)481.07481.07481.070010251025102500
IHS (Zou, 2010)481.07478.48437.9310.350.2010251025102500
NGHS (Zou, 2010)481.07481.07481.070010251025102500
PA (Sonuc et al., 2016)481.07472.4424437.9317.251.7910251025102500

Fig. 9. Comparison of the PDav values of the datasets from KP_1 to KP_10.

![Fig. 9. Comparison of the PDav values of the datasets from KP_1 to KP_10](doc/pic/README/Fig. 9. Comparison of the PDav values of the datasets from KP_1 to KP_10.jpg)

表12介绍了所提算法和其他五种二元技术在KP_11至KP_20数据集上获得的结果,在所有的运行中,PDav(%)=0,它可以实现这些数据集的最优解。图10以图形方式显示了所提算法与基于各算法在相同数据集上获得的PDav值的比较。图11还说明了基于PDav值平均值的拟议算法的比较。检查该图可以看出,我们提出的算法是最好的,PDav的平均值为0。

Table 12. Comparison on the datasets from KP_11 and KP_20

InstanceOptEmpty CellBEOV3WOS2PSOS2CSAS2FBS2BAS2InstanceOptEmpty CellBEOV3WOS2PSOS2CSAS2FBS2BAS2
KP_111437Best143714371437143714371437KP_162651Best265126512651265126512651
Avg143714371437143714371437Avg265126512648.152643.826512650
Worst143714371437143714371437Worst265126512651263026512643
SD000000SD003.9403.9204.35
SR100100100100100100SR100100603510065
PDav000000PDav000.100.2700.03
KP_121689.0Best168916891689168916891689KP_172917Best291729172917291729172917
Avg16891687.91688.2168916891689Avg29172917291729112913.22917
Worst168916841676168916891689Worst291729172917287828912917
SD02.622.874000SD000218.0910
SR1005590100100100SR1001001009580100
PDav00.0650.047000PDav00.000.200.130
KP_131821Best182118211821182118211821KP_182817Best281828182817281728162817
Avg18211818.81821182118211821Avg28182815.952809.02797.82794.252809.5
Worst182118171821182118211821Worst281828152761276727742752
SD02.0030000SD01.53314.95325.2212.235.56
SR10055100100100100SR1006040100.030
PDav00.12080000PDav00.0720.280. 6820.800.266
KP_142033Best203320332033203320332033KP_193223Best3223.032233223320532213221
Avg203320332033203320332033Avg3223.03220.553208.5531863220.253215.8
Worst203320332033203320332033Worst3223.032203161315932203200
SD000000SD01.5917.3523.110.5210.93
SR100100100100100100SR10055000
PDav000000PDav00.0760.4481.1470.0850.22
KP_152440Best244424442444244424442444KP_203614Best361436143614359635903614
Avg24442440.12442.152441.32442.42441.3Avg36143600.335923562.43559.953588.24
Worst244424382438243824402435Worst361435953507351735263524
SD03.0443.0723.0042.0134.618SD07.21725.68348.5316.5946.35
SR1006045604560SR1002050015
PDav00.1590.07560.1100.0650.110PDav00.3790.6081.4271.490.712

黑体字的数值表示最好的结果

Fig. 10. Comparison of the PDav values of the datasets from KP_11 to KP_20

![Fig. 10. Comparison of the PDav values of the datasets from KP_11 to KP_20](doc/pic/README/Fig. 10. Comparison of the PDav values of the datasets from KP_11 to KP_20.jpg)

Fig. 11. Comparison of the first benchmark datasets.

![Fig. 11. Comparison of the first benchmark datasets](doc/pic/README/Fig. 11. Comparison of the first benchmark datasets.jpg)


B节:第二个基准的比较

表13介绍了所提出的算法和其他八种二进制算法在KP_8a到KP_12e数据集上取得的结果,其中在PDav(%)=0的情况下,它可以在所有运行中实现这些数据集的最优解。

Table 13. comparison on the datasets from KP_8a and KP_12e

InstanceOptAlgorithmsBestAverageWorstStdSR(%)PDav(%)InstanceOptBestAverageWorstStdSR(%)PDav(%)
KP_8a3,924,400BEOV33,924,4003,924,4003,924,40001000KP_12a5,688,8875,688,8875,688,8875,688,88701000
WOS23,924,4003,924,4003,924,400010005,688,8875,683,2665,665,9805062.05400.01
PSOS23,924,4003,924,4003,924,400010005,688,8875,688,8875,688,88701000
FPS23,924,4003,924,4003,924,400010005,688,8875,688,8875,688,88701000
CSAS23,924,4003,924,4003,924,400010005,688,8875,688,8875,688,88701000
BAS23,924,4003,924,4003,924,400010005,688,8875,688,8875,688,88701000
CGMA (Zhou et al., 2016)3,924,4003,924,4003,924,40005,688,8875,683,2660.09
GHSOS (Abualigah et al., 2018)3,924,4003,924,4003,924,400005,688,8875,688,8875,688,88700
BABC-DE (Cao, 2018)3,924,4005,688,887
KP_8b3,813,669BEOV33,813,6693,813,6693,813,66901000KP_12b6,473,0196,498,5976,498,5976,498,59701000
WOS23,813,6693,805,9213,782,67713419.750.206,498,5976,494,7606,473,0199133.17850.06
PSOS23,813,6693,813,6693,813,669010006,498,5976,498,5976,498,59701000
FPS23,813,6693,813,6693,813,669010006,498,5976,498,5976,498,59701000
CSAS23,813,6693,813,6693,813,669010006,498,5976,488,3656,473,01912530.6600.15
BAS23,813,6693,813,6693,813,669010006,498,5976,498,5976,498,59701000
CGMA (Zhou et al., 2016)3,813,6693,813,6693,813,669006,498,5976,494,7600.05
GHSOS (Abualigah et al., 2018)3,813,6693,813,6693,813,669006,498,5976,498,5976,498,59700
BABC-DE (Cao, 2018)
KP_8c3,347,452BEOV33,347,4523,347,4523,347,45201000KP_12c5,170,6265,170,6265,170,6265,170,62601000
WOS23,347,4523,347,4523,347,452010005,170,6265,170,6265,170,62601000
PSOS23,347,4523,347,4523,347,452010005,170,6265,170,6265,170,62601000
FPS23,347,4523,347,4523,347,452010005,170,6265,170,6265,170,62601000
CSAS23,347,4523,347,4523,347,452010005,170,6265,170,6265,170,62601000
BAS23,347,4523,347,4523,347,452010005,170,6265,170,6265,170,62601000
CGMA (Zhou et al., 2016)3,347,4523,347,4523,347,452005,170,6265,170,6265,170,62600
GHSOS (Abualigah et al., 2018)3,347,4523,347,4523,347,452005,170,6265,170,6265,170,62600
BABC-DE (Cao, 2018)
KP_8d4,187,707BEOV3-LS4,187,7074,187,7074,187,70701000KP_12d6,941,5646,941,5646,941,5646,941,56401000
BEOV34,187,7074,187,7074,187,707010006,941,5646,941,5646,941,56401000
WOS24,187,7074,187,7074,187,707010006,941,5646,941,5646,941,56401000
PSOS24,187,7074,187,7074,187,707010006,941,5646,941,5646,941,56401000
FPS24,187,7074,187,7074,187,707010006,992,4046,971,7816,940,79123341.7550.29
CSAS24,187,7074,187,7074,187,707010006,941,5646,941,5646,941,56401000
BAS24,187,7074,187,7074,187,707010006,941,5646,941,5646,941,56400
CGMA (Zhou et al., 2016)4,187,7074,187,7074,187,707006,941,5646,941,5646,941,56400
GHSOS (Abualigah et al., 2018)4,187,7074,187,7074,187,70700
BABC-DE (Cao, 2018)5,337,4725,337,4725,337,47201000
KP_8e4955555.0BEOV3-LS4,955,5554,955,5554,955,55501000KP_12e5,337,4725,337,4725,337,4725,337,47201000
BEOV34,955,5554,955,5554,955,555010005,337,4725,337,4725,337,47201000
WOS24,955,5554,955,5554,955,555010005,337,4725,337,4725,337,47201000
PSOS24,955,5554,955,5554,955,555010005,337,4725,337,4725,337,47201000
FPS24,955,5554,955,5554,955,555010005,337,4725,337,4725,337,47201000
CSAS24,955,5554,955,5554,955,555010005,337,4725,337,4725,337,47200
BAS24,955,5554,955,5554,955,555010005,337,4725,337,4725,337,47200
CGMA (Zhou et al., 2016)
GHSOS (Abualigah et al., 2018)5,688,8875,688,8875,688,88701000
BABC-DE (Cao, 2018)5,688,8875,683,2665,665,9805062.05400.01

表14介绍了所提出的算法和其他八种二进制算法在数据集KP_16a到KP_24e上获得的结果。很明显,BEOV3在为评估我们提出的算法的性能而提出的六个标准中优于其他所有二进制算法。在本段的其余部分,我们将重点关注PDav标准,以验证我们提出的算法的优越性。根据表13中介绍的PDav值,BEOV3对所有实例获得的PDav值的平均值是最好的,可以占据第一的位置,超过了其他算法的表现。此外,图12比较了各算法获得的PDav值的平均值。该图证实了该算法比其他算法的优越性。

Table 14. Comparison on the datasets from KP_16a and KP_24e.

NameOptAlgorithmsBestAverageWorstStdSR(%)PDav(%)
KP_16a7,850,983BEOV37,850,9837,850,9837,850,98301000
WOS27,850,9837,832,9717,832,0234132.23650.22
PSOS27,850,9837,850,9837,850,98301000
FPS27,850,9837,850,9837,850,98301000
CSAS27,850,9837,850,9837,850,98301000.0
BAS27,850,9837,850,9837,850,98301000
CGMA (Zhou et al., 2016)7,832,0237831152.50.25
GHSOS (Abualigah et al., 2018)7,850,9837,850,9837,850,98300
BABC-DE (Cao, 2018)7,850,9837,850,9837,850,98300
KP_16b9,352,998BEOV39,352,9989,352,9989,352,99801000
WOS29,352,9989334569.859,213,92742733.237800.20
PSOS29,352,9989,352,9989,352,99801000.0
FPS29,352,9989,352,9989,352,99801000
CSAS29,352,9989,352,9989,352,99801000
BAS29,352,9989,352,9989,352,99801000
CGMA (Zhou et al., 2016)9,352,9989334569.850.19
GHSOS (Abualigah et al., 2018)9,352,9989,352,9989,352,99800
BABC-DE (Cao, 2018)
KP_16c9,151,147BEOV39,151,1479,151,1479,151,14701000
WOS29,151,1479,151,1479,151,14701000
PSOS29,151,1479,151,1479,151,14701000
FPS29,151,1479,151,1479,151,14701000
CSAS29,151,1479,151,1479,151,14701000
BAS29,151,1479,151,1479,151,14701000
CGMA (Zhou et al., 2016)9,151,1479,151,1479,151,14700
GHSOS (Abualigah et al., 2018)9,151,1479,151,1479,151,14700
BABC-DE (Cao, 2018)
KP_16d9,348,889BEOV39,348,8899,348,8899,348,88901000
WOS29,336,6919,336,6919,336,691000.12
PSOS29,348,8899,348,8899,348,889010000
FPS29,348,8899,348,8899,348,88901000
CSAS29,348,8899,348,8899,348,88901000.0
BAS29,348,8899347059.39,336,6914879.200800.019
CGMA (Zhou et al., 2016)9,348,8899345229.200.039
GHSOS (Abualigah et al., 2018)9,348,8899,348,88900
BABC-DE (Cao, 2018)
KP_16e7,769,117BEOV3-LS7,769,1177,769,1177,769,11701000
BEOV37,769,1177,769,1177,769,11701000
WOS27,769,1177761876.67,691,88216054.133350.22
PSOS27,769,1177,769,1177,769,11701000
FPS27,769,1177,769,1177,769,11701000
CSAS27,769,1177,769,1177,769,11701000
BAS27,769,1177,769,1177,769,11701000
CGMA (Zhou et al., 2016)7,769,1177767929.20.015
GHSOS (Abualigah et al., 2018)7,769,1177767778.320.017
BABC-DE (Cao, 2018)
KP_20a10,727,049BEOV3-LS10,727,04910,727,04910,727,04901000
BEOV310,727,04910,727,04910,727,04901000
WOS210,727,0491071775.510,674,31415820.500950.05
PSOS210,727,04910,727,04910,727,04901000
FPS210,727,04910,727,04910,727,04901000
CSAS210,727,04910,727,04910,727,04901000
BAS210,727,04910,727,04910,727,04901000
CGMA (Zhou et al., 2016)10,727,04910,727,0490
GHSOS (Abualigah et al., 2018)10,727,04910,727,04910,727,04900
BABC-DE (Cao, 2018)10,727,04900
KP_20b9,818,261BEOV3-LS9,818,2619,818,2619,818,26101000
BEOV39,818,2619,818,2619,818,26101000
WOS29,818,2619,818,2619,818,26101000
PSOS29,818,2619,818,2619,818,26101000
FPS29,818,2619,818,2619,818,26101000
CSAS29,818,2619,818,2619,818,26101000
BAS29,818,2619,818,2619,818,26101000
CGMA (Zhou et al., 2016)9,818,2619,818,2619,818,26100
GHSOS (Abualigah et al., 2018)9,818,2619,818,2619,818,26100
BABC-DE (Cao, 2018)
KP_20c10,714,023BEOV310,714,02310,714,02310,714,02301000
WOS210,712,57210707307.910,687,0367182.32000.062
PSOS210,714,02310,714,02310,714,02301000.0
FPS210,714,02310,714,02310,714,02301000.0
CSAS210,714,02310,714,02310,714,02301000
BAS210,714,02310713732.810,712,572580.400700.0027
CGMA (Zhou et al., 2016)10,714,02310712553.700.013
GHSOS (Abualigah et al., 2018)10,714,02310,714,02310,714,02300
BABC-DE (Cao, 2018)
KP_20d8,929,156BEOV38,929,1568,929,1568,929,15601000
WOS28,929,1568,917,4608,915,3964913.303150.13
PSOS28,929,1568925028.08,915,3966305.624700.04
FPS28,929,1568,929,1568,929,15601000
CSAS28,929,1568,929,1568,929,15601000
BAS28,929,1568,929,1568,929,15601000
CGMA (Zhou et al., 2016)8,929,1568918423.2000.12
GHSOS (Abualigah et al., 2018)8,929,1568,929,15600
BABC-DE (Cao, 2018)
KP_20e9,357,969BEOV39,357,9699,357,9699,357,96901000
WOS29,357,9699352636.49,332,1658573.682300.06
PSOS29,357,9699,357,9699,357,96901000.0
FPS29,357,9699,357,9699,357,96901000
CSAS29,357,9699,357,9699,357,96901000
BAS29,357,9699,357,9699,357,96901000
CGMA (Zhou et al., 2016)9,357,9699357922.380.0004
GHSOS (Abualigah et al., 2018)9,357,9699357456.180.005
BABC-DE (Cao, 2018)
KP_24a13,549,094BEOV313,549,09413,549,09413,549,09401000
WOS213,549,09413513046.159,332,1658573.682250.27
PSOS213,549,09413,549,09413,549,09401000
FPS213,549,09413,549,09413,549,09401000
CSAS213,549,09413,549,09413,549,09401000
BAS213,549,09413,549,09413,549,09401000
CGMA (Zhou et al., 2016)13,549,09413538097.10.08
GHSOS (Abualigah et al., 2018)13,549,09413546441.040.019
BABC-DE (Cao, 2018)13,549,09413,523,7730.18
KP_24b12,233,713BEOV312,233,71312,233,71312,233,71301000
WOS212,233,71312,233,71312,233,71301000
PSOS212,233,71312,233,71312,233,71301000
FPS212,233,71312,233,71312,233,71301000
CSAS212,233,71312,233,71312,233,71301000
BAS212,233,71312,233,71312,233,71301000
CGMA (Zhou et al., 2016)12,233,71312,233,71312,233,71300
GHSOS (Abualigah et al., 2018)12,233,71312,233,71312,233,71300
BABC-DE (Cao, 2018)
KP_24c12,448,780BEOV312,448,78012,448,78012,448,78001000
WOS212,448,78012,448,78012,448,78001000
PSOS212,448,78012,448,78012,448,78001000
FPS212,448,78012,448,78012,448,78001000
CSAS212,233,71312,233,71312,233,71301000
BAS212,448,78012,448,78012,448,78001000
CGMA (Zhou et al., 2016)12,448,78012448618.30.0012
GHSOS (Abualigah et al., 2018)12,448,78012,448,78012,448,78000
BABC-DE (Cao, 2018)
KP_24d11,815,315BEOV311,815,31511,814,36711,810,0512795.200250.00361
WOS211,810,05111,810,05111,810,051000.044
PSOS211,815,31511810840.611,810,0511879.624150.037
FPS211,815,31511810840.611,810,0511879.624100.044
CSAS211,815,31511810840.611,810,0511879.624100.044
BAS211,815,31511811103.811,810,0512105.600250.035
CGMA (Zhou et al., 2016)11,815,31511808614.90.05
GHSOS (Abualigah et al., 2018)11,815,31511815209.720.00089
BABC-DE (Cao, 2018)
KP_24e13,940,099BEOV313,940,09913,940,09913,940,09901000
WOS213,940,09913931016.6513,894,07414162.599600.07
PSOS213,940,09913,940,09913,940,09901000
FPS213,940,09913,940,09913,940,09901000
CSAS213,940,09913,940,09913,940,09901000
BAS213,940,09913,940,09913,940,09901000
CGMA (Zhou et al., 2016)13,940,09913,940,09913,940,099
GHSOS (Abualigah et al., 2018)13,940,09913,940,09913,940,099
BABC-DE (Cao, 2018)

Fig. 12. A comparison the average of PDAV(%) of the second benchmark datasets.

![Fig. 12. A comparison the average of PDAV(%) of the second benchmark datasets](doc/pic/README/Fig. 12. A comparison the average of PDAV(%) of the second benchmark datasets.jpg)

大规模的背包问题

在本节中,我们测试了我们提出的算法在表15中介绍的大规模数据集上的性能。一些算法在小数据集上很好地完成了他们的任务,但是在大数据集上他们的性能就下降了。因此,我们用这些大规模的实例来检查我们提出的问题的规模显著增加时的性能。这些实例根据每个实例的利润和权重之间的相关性被分为三类,它们是不相关、弱相关和强相关的实例。表15中发现的这些实例可在http://artemisa.unicauca.edu.co/~johnyortega/instances_01_KP/,这些实例中的项目范围在100到5000之间。此外,为了检查我们提出的算法的有效性,将其与一些已发表的算法进行比较,如遗传算法(GA)(Ezugwu,2019)模拟退火(SA)(Ezugwu,2019),贪婪搜索算法(Ezugwu,2019),混合GA-SA(Ezugwu,2019),以及分支和约束算法(BB)(Ezugwu,2019)。

Table 15. large-scale datasets descriptions

ID Problem Capacity D opt
Uncorrelated instances
1 KP1_100 995 100 9147
2 KP1_200 1008 200 11,238
3 KP1_500 2543 500 28,857
4 KP1_1000 5002 1000 54,503
5 KP1_2000 10,011 2000 110,625
6 KP1_5000 25,016 5000 276,457
Weakly correlated instances
7 KP2_100 995 100 1514
8 KP2_200 1008 200 1634
9 KP2_500 2543 500 4566
10 KP2_1000 5002 1000 9052
11 KP2_2000 10,011 2000 18,051
12 KP2_5000 25,016 5000 44,356
Strongly correlated instances
13 KP3_100 997 100 2397
14 KP3_200 997 200 2697
15 KP3_500 2517 500 7117
16 KP3_1000 4990 1000 14,390
17 KP3_2000 9819 2000 28,919
18 KP3_5000 24,805 5000 72,505

实际上,在求解大规模数据集时,建议使用S2作为BEO的转移函数。表16介绍了各算法在大规模数据集上获得的结果,在PDav(%)=0的情况下,我们提出的算法在18个数据集的所有运行中,有12个达到了最优解,在PDav(%)分别等于0.035和0.013的情况下,可以在一些运行中达到KP2_500和KP2_1000的最优解。遗憾的是,在其他数据集上,它不能达到最优解。通过将BEOS2与其他已发表的算法进行比较,我们发现BEOS2的性能优于其他所有算法,只有BB算法在KP2_5000和KP3_5000中的性能优于其他算法。图13比较了每种算法在KP1_100到KP2_5000的实例上获得的PDav值。图14描述了各算法在所有实例上获得的PDav值的平均值的比较。

Table 16. the results obtained by the implemented algorithms on the large-scale problems

InstanceOptEmpty CellEOS2SA (Ezugwu, 2019)GA (Ezugwu, 2019)IGA-SA (Ezugwu, 2019)GSA (Ezugwu, 2019)BB (Ezugwu, 2019)
KP1_1009147Best9147
Avg914791479147857529838026
Worst9147
PDav(%)0.0000.0000.0006.25367.38812.255
KP1_20011,238Best11,238
Avg11,23810,163102,3408576986510,438
Worst11,238
PDav(%)0.0009.566−89.01923.68712.2177.119
KP1_50028,857Best28,857
Avg28,85721,390102,34012,072986528,043
Worst28,857
PDav(%)0.00025.876−71.80358.16665.8142.821
KP1_100054,503Best54,503
Avg54,50336,71913014,56314,92753,397
Worst54,503
PDav(%)0.00032.62999.76173.28072.6132.029
KP1_2000110,625Best110,578
Avg110,57895,739102,34027,64525,579109,679
Worst110,578
PDav(%)0.00013.4198.05075.00076.8680.813
KP1_5000276,457Best275,725
Avg274,358150,731102,34049,30639,677275,720
Worst273,367
PDav(%)0.75945.47862.98282.16585.6480.267
KP2_1001514Best1514
Avg151414861158121710411440
Worst1514
PDav(%)0.0001.84923.51419.61731.2424.888
KP2_2001634Best1634
Avg163415371306134710731603
Worst1634
PDav(%)0.0005.93625.11517.56434.3331.897
KP2_5004566Best4566
Avg4564.437443701303829514484
Worst4556
PDav(%)0.03518.00323.37233.46535.3701.796
KP2_10009052Best9052
Avg9050.868317912543556759006
Worst9047
PDav(%)0.01324.53612.59439.95837.3070.508
KP2_200018,051Best17,698
Avg17,49712,78015,88710,93811,06417,794
Worst16,875
PDav(%)3.06929.20113.62139.40538.7071.424
KP2_500044,356Best44,305
Avg44,29829,22037,74627,38725,44844,198
Worst44,291
PDav(%)0.13134.12414.90238.25642.6280.356
KP3_1002397Best2397
Avg239722962091148110952268
Worst2397
PDav(%)0.0004.21412.76638.21454.3185.382
KP3_2002697Best2697
Avg2697259425,319149510952542
Worst2697
PDav(%)0.0003.819−838.78444.56859.3995.747
KP3_5007117Best7117
Avg711761036517341229166995
Worst7117
PDav(%)0.00014.2488.43152.05859.0281.714
KP3_100014,390Best14,390
Avg14,39011,78913,0905589629014,271
Worst14,390
PDav(%)0.00018.0759.03461.16156.2890.827
KP3_200028,919Best28,919
Avg28,91922,48225,31910,81812,31228,726
Worst28,919
PDav(%)0.00022.25912.44962.59257.4260.667
KP3_500072,505Best72,205
Avg71,98453,67261,90427,30430,30272,345
Worst71,705
PDav(%)0.71925.97514.62162.34258.2070.221

Fig. 13. Comparison of the PDav values of the datasets on the large-scale problems

![Fig. 13. Comparison of the PDav values of the datasets on the large-scale problems](doc/pic/README/Fig. 13. Comparison of the PDav values of the datasets on the large-scale problems.jpg)

Fig. 14. Comparison of the average of PDav values.

Рис. 14. Сравнение средних значений PDav

我们的实验总结

在第一个实验中,我们提出的算法与一些最先进的算法在20个实例上进行了比较,这些实例的项目范围在10和75之间。实验结束后,很明显,我们提出的算法的性能非常高,对于20个实例来说,它可以达到真正的最优值,而WOS2排在我们提出的算法之后,CSAS2被认为是这个基准上性能最差的一个。之后,第二个实验是在第二个基准上进行的,项目范围在8到12之间。这个基准的实验结果显示了我们提出的算法比其他算法的优越性,我们提出的算法可以以0.00015的PDav度量值占据第一位,而GHSOS以0.0016的数值排在第二位,而WOS2在这个基准中排名最后。最后,为了检查所提出的大规模基准的稳定性,第三个实验是在一个项目范围在100到5000的基准上进行的。实验结束时,我们发现在18个实例中,有13个实例的提议可以达到最优值,其余的也接近最优值;在这个基准上,提议的性能也优于其他的基准。总的来说,作为我们对这三个实验的结论,我们提出的算法在解决0-1背包问题时,在不同的规模下(小、中、大)都能胜过现有的算法,这使它成为克服这个问题的有力选择。

结论和未来工作

在本文中,我们介绍了一个二进制版本的EO来解决0-1背包问题。为了将标准的EO转换为二进制的,我们尝试了八个将连续值转换为二进制值0或1的转移函数,与EO一起找出能取得更好结果的最佳转移函数。实验后发现,转移函数V3比其他所有转移函数表现得更好。当在本文实现的其他算法上尝试这个函数V3来与二进制EO进行比较以考察其性能时,我们发现它们的性能会下降。因此,我们尝试了其他转移函数,以寻找另一个可以得到更好结果的函数。经过尝试,我们发现S2比V3在这些实现的算法上能取得更好的结果。因此,我们得出结论,二元启发式算法的性能依赖于转移函数的良好选择。同时,我们使用惩罚函数从群体中获得不可行的解决方案,并应用修复算法将这个不可行的解决方案转换为可行的解决方案,然后在这个解决方案上应用改进算法来改进它。我们提出的算法在三个基准数据集上进行了实验,包括小型、中型和大型的63个实例,并与14种最先进的算法进行了比较。实验的结果是,我们提出的V3算法在所有小规模和中等规模的实例中都能实现最优值,优于其他所有用于解决0-1背包问题的算法。而对于大规模的实例,使用S2的BEO的性能比使用V3的要好,并大大超过了其他算法。未来的工作包括通过将EO与其他元启发式算法、征收飞行策略或基于反对的学习相结合来提高其性能。二进制版本的EO的性能可以通过将其与解决0-1 knapsack的局部搜索方法相结合来提高。此外,EO还可用于解决其他组合问题,如DNA片段组装问题和流动车间调度问题。

About

🔬0-1 Knapsack问题的二元均衡优化算法 | A Binary Equilibrium Optimization Algorithm for 0–1 Knapsack Problems

License:Apache License 2.0


Languages

Language:Jupyter Notebook 68.2%Language:Python 31.8%