没有合适的资源?快使用搜索试试~ 我知道了~
软件X 18(2022)101047原始软件出版物MatHH:基于Matlab的超启发式框架Jorge M. Cruz-Duarte,José C.伊万?阿马亚?奥尔蒂斯-贝利斯工程和科学学院,Tecnologico de Monterrey,Av。 Eugenio Garza Sada 2501 Sur,蒙特雷,NL 64849,墨西哥ar t i cl e i nf o文章历史记录:2021年11月25日收到2022年3月8日收到修订版,2022年保留字:组合优化车间作业调度MatlabMatHHa b st ra ct超启发式(HH)已被证明是一个有价值的工具,用于解决复杂的问题,如组合优化问题(COP)。这些求解器有一组通过科学界的广泛研究而产生的各种模型。因此,研究人员通常从头开始开发他们的模型,这增加了开发时间。起草和测试新的想法变得繁重和耗时。在这项工作中,我们提出了MatHH,一个基于Matlab的框架,允许快速原型的HH。我们总结的架构和一些例子,他们的使用。我们还讨论了一些研究问题,即将到来的研究可能会通过MatHH探索。©2022作者(S)。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v1.0.0用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-21-00223Code Ocean compute capsule无法律代码许可证MIT许可证使用GitHub的代码版本控制系统使用Matlab R2017b的软件代码语言、工具和服务(学术许可证)编译要求、操作环境依赖性如果可用,链接到开发人员文档/手册https://github.com/iamaya2/MatHH/blob/main/README.md问题支持电子邮件iamaya2@tec.mx1. 动机和意义每天我们都被不同的优化问题所包围,在这些问题中,我们必须为一些感兴趣的变量选择值,以最小化或最大化结果。虽然其中一些问题是连续的,但其他问题是组合的[1]。在前一种情况下,变量具有无限的值组合。在后者中,它们被限制在有限集合中。也有混合问题,其中一些变量是离散的,而另一些是连续的。人们可以用不同的方法处理每种优化问题。例如,连续问题可以通过基于梯度的方法或元分析来解决[2相比之下,简单算法对于 解 决 组 合 问 题 是 有 用 的 [6] 。 但 也 可 以 解 决 这 些 问 题 与metabolistics [7,8]。*通讯作者。电子邮件地址:jorge. tec.mx(Jorge M.Cruz-Duarte),jcobayliss@tec.mx(José C.Ortiz-Bayliss),iamaya2@tec.mx(IvanAmaya).https://doi.org/10.1016/j.softx.2022.101047在这项工作中,我们专注于组合优化问题(COP)。启发式是快速提供COP解决方案的有效工具尽管如此,启发式通常只对特定模式的问题实例的子集表现出色。因此,最近有一种方法试图通过学习识别这种模式来提高启发式性能。作为一个实践者,可以根据每个实例展示的模式,对每个实例使用最佳启发式文献通常将此类技术称为选择超启发式(HH)[9]。尽管如此,请记住,还有其他种类的超现实主义,感兴趣的读者可以直接阅读[9有不同的方法来部署超启发式。例如,可以定义一组用于选择动作的规则(动作)[12]。相反,人们可以只是布置这样的动作的序列并优化所述序列[13]。或者一个人可以诉诸来自不同领域的想法,例如来自强化学习[14,15]或其他[16当然,还有其他类型的HH不选择现有的求解器,例如那些完全生成新求解器的HH[10,11,22]。过几2352-7110/©2022作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxJorge M.Cruz-Duarte,José C.Ortiz-Bayliss和Ivan Amaya软件X 18(2022)1010472换句话说,一个超启发式模型可以是简单的,也可以是复杂的,就像人们所希望的那样。撇开细节不谈,HH(作为一个整体)已被证明是一条值得追求和打磨的道路[1]。例如,Sanchez等人将HH与一种旨在为单目标问题获得各种质量设计的方法合并[13]。这种方法通常被称为照明算法,因为它试图为不同范围的设计变量提供对良好设计的见解。在他们的工作中,作者利用这一想法来获得有关某些决策对HH性能的影响的信息。他们得到的HHS优于通过蛮力方法生成的合成Oracle。类似地,Anwar等人开发了一种超启发式方案,但基于移动和交换算法[16],用于检查可执行的COP。此外,Din等人提供了另一个成功的HHS例子[21]。作者开发了一个无参数的HH软件测试,他们取得了良好的效果与现有的战略。此外,Xu等人提出了一个HH,一个相对复杂的现实问题[15]。他们考虑了几个起重机和自动化车辆的装卸任务和U形集装箱的综合调度。通过强化学习方法的训练,他们达成了解决方案,车辆之间没有冲突,整体处理效率提高。当然,这是一个非常期望的结果。虽然超代数主要用于解决COPs问题,但研究人员也试图将这些思想应用于实值问题。例如,Segredo et al.和Oliva等人试图提供全局优化的模型[23,24]。同样,Abd Elaziz等人开发了一种超启发式算法,用于增强最近被称为鲸鱼优化算法的元启发式算法所使用的初始种群[17]。相反,Cruz-Duarte et al. 已经提出了一种方法来产生新的无隐喻元分析学通过hyper-prostitics [25,26].此外,Fritsche等人专注于通过HHS解决许多客观问题[27]。此外,研究人员已经将超几何学应用于现实生活中的问题,例如图像分割[18]。然而,讨论这些场景超出了我们的范围。尽管这篇手稿提出了一个超启发式的框架,但重要的是要披露文献中包含其他替代方案。如果你看一下最先进的技术,你会发现相关的框架包括HyFlex[28],ESTA[29]和CUSTOMHyS[25],以及其他[30HyFlex是一个用Java实现的面向对象的框架[28]。HyFlex允许轻松地实现和比较不同的此外,HyFlex已被用于研究和 比 赛 。 例 如 , 2011 年 和 2013 年 的 跨 域 启 发 式 搜 索 挑 战 赛(CHeSC)不幸的是,它不再由其组织者维护。Java是一个面向对象的生成算法框架,也是用Java实现的,它促进了超并行计算的快速原型化[29]。使用XML,可以从程序上识别有助于算法成功的组件。递归依赖于通过局部搜索邻域的分层嵌套来聚合超递归与HyFlex一样,HyFlex不再由其开发人员维护。最后,CUSTOMHyS是一个完全用Python编码的框架,致力于将超并行算法应用于连续域。CUSTOMHyS旨在为自动开发具有更高性能的新型元分析提供工具为了做到这一点,它将元算法分解为简单的搜索算子,这些算子会干扰现有的解。因此,超启发式算法找到了一个这些操作符的适当组合,有效地创建了一个新的元启发式。其余的求解器遵循类似的方法,尽管有一些重要的特性。例如,ParHyFlex代表由Van On-sem和Demoen开发的HyFlex框架的并行版本 [31],HH-DSL是用于支持HyFlex框架内的开发的领域 特定 语言[32] 。 在最 近的 提议 中, 人 们可 以找 到 Pillay 和Beckedahl的工作,他们提出了一个用Java编码的基于进化的超进化工具包[34]。基于上面提到的框架,至关重要的是要有替代环境,使快速原型的HH与不同的模型和想法。这是我们开发MatHH的主要动机。我们的框架是用Matlab编写的,它允许快速代码开发。由于包括几个COP 会使这篇手稿过于冗长,我们选择专注于车间调度问题(JSSP),一个研究案例。尽管如此,您可以轻松地包含其他COP,我们计划在未来的版本中添加其中的一些。总之,我们可以把这项工作的贡献概括为:一个基于Matlab的开发超智能的框架在框架内开发基于规则的选择超启发式模型,由统一的Parti- cle Swarm优化算法提供支持该框架内的作业车间调度问题(JSSP)域的实现。通过使用MatHH,读者可以轻松地创建、训练和使用超并行算法(请参阅第3节以获取详细示例)。此外,人们可以快速测试使用不同功能集的效果,而无需从头开始此外,人们可以很容易地添加一组不同的HH模型,并在相同的条件下比较它们。或者,也可以轻松地测试添加组件的效果,例如特征转换或更复杂的求解器。因此,通过MatHH,我们通过促进不同场景下的测试来加速对HH的研究让我们考虑一个JSSP的简单例子。到目前为止,我们的框架包括四个求解器。其中两个基于其他两个考虑的是每项作业中待处理活动的数量。在这两种情况下,我们都考虑最大值和最小值。因此,物流LPT和SPT分别侧重于首先安排完成时间最长和最短的活动。con-magnitude、constituency MPA和LPA的目标活动中有最多和最少的待定活动。 从这个意义上说,人们可能对分析仅使用一个子集或使用给定组合(例如,、LPT和MPA)。当然,用户可以自由添加更多的技巧并测试其效果。即便如此,我们的目标并不是让MatHH成为一个优于现有选项的框架(至少现在不是),而是提供一个基于Matlab的替代方案,允许快速原型化超并行。因此,重要的是要披露我们的软件目前的缺点。在目前的版本中,主要问题涉及到问题域和HH模型。然而,我们希望随着时间的推移,通过利用社区构建的模型和问题域集合来缓解这一问题尽管如此,我们计划继续在框架上工作,提供我们自己的问题实现,如平衡分区,背包和装箱等。为了方便读者阅读,我们将本文档的其余部分组织如下:在第2节中,我们将概述我们提出的软件。在第3节中,我们描述了一些关于它的用法的例子。···Jorge M.Cruz-Duarte,José C.Ortiz-Bayliss和Ivan Amaya软件X 18(2022)1010473Fig. 1. MatHH架构概述。虚线表示一个未实现的模块,该模块用于参考用户如何使我们的软件适合其需求与JSP相关的块是为了说明如何实现问题域而显示的2. 软件描述如上所述,我们提供了MatHH的概述。我们首先展示组件的一般分布,然后继续列出主要功能。2.1. 软件构架图 1总结了与我们的软件最相关的模块(文件)。必须指出的是,我们选择了在Matlab中对所有内容进行去重化,并遵循面向对象的编程方法,因为我们的主要目标是提供一个用于超高速原型的工具。此外,请注意,我们将MatHH分为两种模块:提供核心功能的模块和支持或扩展这些功能的模块让我们从核心内容开始。这里我们有一个父类selectionHH,它主要是作为一个公共点构建的,用于支持不同的超启发式(HH)模型。因此,它包含了几个模型所共有的基本属性的定义,比如那些基于规则或序列的模型。比如说,它包含一个属性,用于标识当前对象的选择类型HH,我们称之为hhType。同样,它提供了不同模型的通用方法,例如初始化模型(initializeModel)和求解单个输入的方法。站姿(solveInstance)或一组站姿(solveInstanceSet)。接下来是一个子类,它将选择HH具体化。在这种情况下,我们选择了基于规则的选择HH,例如[12,35]中使用的那些。这表示基于第1节中提到的一组用于选择物流的规则的HH。 那么, ruleBasedSelectionHH重载 几 方法自选择HH。例如,initializeModel方法生成一个随机值矩阵除了最后一列该矩阵表示每个规则特征值。其余的值提供有关与每个规则关联的操作的ID的信息类似地,此类包括专用于此选择模型的方法例如,assignFeatures方法允许定义要在选择模型中使用的特征子集。此外,getRule方法标识HH在求解过程的当前步骤中必须使用的规则目前,我们只实现了这种HH模型。此外,我们的软件还支持开发具有不同型号的附加为此,用户必须详细说明所需类的定义,重载selectionHH中提供的方法。 如图所示。 1、一个人可以发展一个seqBasedSelectionHH模块,它使用基于而不是规则[13,36],这也是在第1节中提到。我们实际上正在研究这样一种模型,我们计划在MatHH的未来版本中提供它。做请注意,我们提出的框架可以适合不同类型的HH,我们的目标是最终合并过多的模型。作为核心功能的最后一个元素,我们提供了示例。此文件包含一个脚本,其中包含第3节中的示例。我们这样做是为了向用户提供一种快速的动手方法来使用MatHH。现在让我们转向扩展功能。我们有这组文件中有两种类型:与问题域相关的文件为了简洁起见,我们省略了后者。对于前者,我们为车间作业调度问题(JSSP)提供了文件作为参考。静态类JSSP提供了关于问题域的一般信息,比如语法和特性集。关于前者,我们的框架目前包括四个求解器:LPT,SPT,MPA和LPA。前两种方法分别关注于安排完成时间最长和最短的活动另外两个考虑每个作业上的挂起活动的数量,因此,分别针对挂起活动数量最多和最少的活动。当然,用户可以自由地添加更多内容。 在功能方面,我们选择包括五个功能的基础上的工作Mirshekarian等人。[37 ]第37段。这些特征出现在经过作者的彻底修改,所以他们不像描述者那样直截了当。因此,我们使用与作者使用的ID相关联的代码重命名它们 在他们的工作中。这些功能的完整描述可以在在[38]中。与JavaScript一样,用户可以自由地在框架中实现其他功能。这个类还包含帮助器方法,例如使用启发式和克隆问题实例的方法。然后,我们有一组文件,以递增的方式对JSSP进行建模基本的构建块是JSSPActivity类,它包含对单个Activity(也称为操作)进 行 建 模 所 需 的 属 性 和 方 法 。 这 个 类 支 持 JSSPJob 和JSSPMachine的开发。正如它们的名字所示,它们指的是呈现JSSP实例的作业和机器。我们可以将每个作业建模为操作数组,尽管它仍然需要特定的属性和方法。类似地,每台机器将包含一组操作,这些操作随着我们解决实例而增加,因此它也需要自己的方法和属性集。下面的文件是对问题实例的解决方案进行建模的文件,即时间表。因此,JSSPSchedule从一个空的解决方案开始,并包括用于调度活动的方法,以及用于绘制解决方案(部分或完整)的方法,以及用于获得时间表长度的方法,即,makespan。最后,类JSSPInstance是最广泛的一个。此类中的对象包含有关初始问题实例的原始数据和有关问题当前状态的信息instance.我们将这些信息作为具有最新问题实例数据的属性(pendingData)和通过JSSPSchedule对象的部分解决方案提供。Jorge M.Cruz-Duarte,José C.Ortiz-Bayliss和Ivan Amaya软件X 18(2022)1010474\2.2. 软件功能我们提出的软件提供了几个功能。尽管如此,对这份手稿来说,记录所有这些可能是多余的。因此,我们在MatHH的源文件中提供了此类文档。我们的软件提供的最相关的功能是:基于面向对象的方法对车间作业调度问题进行了建模,包括四个特征和五个特征。创建随机和用户定义的基于规则的选择超随机(参见第3.2节)。将训练实例定义为一个独立的属性,以便可以毫不费力地加载和使用现有的数据集(参见第3.3节)。使用故障和用户定义的参数训练基于规则的选择超推理(参见第3.4节)。存储训练过程中的历史适应度值,以便于可视化(参见第3.4节)。使用当前的超启发式模型(随机、用户定义或训练)来解决给定的一组实例(见3.5节)。使用模型求解一组实例时的历史性能数据存储,例如特征值和部分解(参见第3.5节)。主要的功能围绕着基于规则的选择超推理。从这个意义上说,它涵盖了所有方面。MatHH通过模型的定义,直到训练模型的使用,并存储相关的性能数据以进行后验比较。尽管如此,它还包括解决方案可视化和全功能组合优化问题的开发请注意,为了避免过度扩展此手稿,并且因为它是初始版本,我们只实现了JSSP。尽管如此,我们计划随着时间的推移,包括更多的人。此外,我们选择将我们的软件托管在公共存储库中,寻求促进其他开发人员的贡献与他们各自的问题域和HH模型的集成愿这也是对读者的一个呼吁,为MatHH提交他们的想法和贡献。3. 说明性实例为了说明和呈现事实信息,我们在MatHH存储库的源文件中提供了以下示例。通过这种方式,感兴趣的读者可以直接将示例部署到Matlab中。这些例子展示了我们软件的基本我们把它们放在一起,这样人们就有了一个经过充分训练的超启发式算法,可以用来解决作业车间调度问题的新实例集。3.1. 第一步在做任何事情之前,我们通过清除Matlab的工作区和命令窗口来确保一切都是原始的123然后,我们应该通过将它们添加到搜索路径来加载支持扩展功能的包。例如,当为Job Shop调度问题创建超启发式时,我们需要问题模型和通用实用程序。为了简单起见,我们提供了一个稳定版本的JSSP-Matlab-OOP 和 Utils 包 ( 分 别 github.com/iamaya2/JSSP-Matlab-OOP和github.com/iamaya2/Utils如果用户保留所提供的文件位置,则可以通过以下命令实现此过程:12清单2:加载扩展支持。请注意,我们在整个文档中使用Windows路径分隔符3.2. 基本超启发式对象现在,我们可以继续创建超启发式对象。所以,我们需要决定创建什么样的超启发式。鉴于框架的现状,我们可以选择基于规则的超启发式选择。因此,我们需要一些基本参数的实施,即。,规则的数量和要解决的问题。第一个是标量值,第二个是与问题域相关的唯一字符串。例如,要为JSSP创建具有四个规则的超启发式,我们需要:12scheduling“;%S正在为预处理数据库排序清单3:超启发式参数。现在,我们继续创建一个基本的超启发式对象:1清单4:使用随机模型的超启发式创建。这个过程根据请求的规则数量和问题域可用的特征数量,使用随机选择器对模型进行尽管如此,也可以通过提供规则矩阵来固定选择器,例如12345清单5:设置固定模型。类似地,我们可以重新启动模型到一组新的随机值,例如。,以定义不同数量的特征或解算器:123清单1:序列。清单6:超启发式重新初始化。addpath(genpath(添加JSSP功能addpath(genpath(nbRulees=4;%Numberor rr r uleesforthemodeltargetPro blem=“jobshoptestHH=ruleBaseddSelectionHH(nbrules,测试方 法);%初始化存储方法清除率%清除率工作空间closeall%Closeallfigureclc%ClearCommandWindwuserModel=[0. 20. 40. 61;%User-definedrulematix0.1 0.3 0.9 3;0.8 0.7 0.2 1;0.5 0.5 0.5 2];是的。value=userModel;%Setsheuser-definedmodel·nbFeatures=3;该模式的Features%nb S o l v e r s = 4; %N e r o s o l v e r s t h将可用是的。i初始化 模型(nbRules,nbFeatures,nbSolvers);%Genera nnmo del······Jorge M.Cruz-Duarte,José C.Ortiz-Bayliss和Ivan Amaya软件X 18(2022)10104753.3. 将实例分配给模型我们提出的框架可以嵌入实例集内的超启发式对象寻求,以促进训练过程,提高可追溯性。 为简单起见,下面的示例考虑Base-Risk包(github.com/iamaya2/BaseInstances)中已经可用的实例。因此,我们可以通过从属于JSSP的文件夹E02和E011234567清单7:加载提供的实例。然后,我们只需要将超启发式对象指向用于训练的实例集例如,我们可以分配第一组实例:1清单8:训练实例赋值。3.4. 训练超启发式模型培训是一个相对复杂的过程,可能会出现几种变体。一个主要的原因是过多的培训方法和事实,这是习惯设置一个更多参数我们提供了一个简单的培训ap-proach,使事情更容易为用户。我们将此过程基于统一粒子群优化(UPSO)算法,该算法由Parsopolous和Vrahatis [39]提出。请记住,UPSO是Eberhart和Kennedy提出的经典方法的变体[40,41]。支持UPSO的想法是,它将一组搜索代理分布到子组中,称为邻域。这些代理人explore不同的解决方案,即。,他们测试不同的超启发式模型,在那里他们解决训练实例。利用这一信息,每个代理移动到一个新位置,固定的方程,并取决于它所属的邻域。经过一些迭代,他们找到了一个最佳解决方案,这代表了一个精致的超启发式。在这里,一个精致的选择器。我们可以使用带有单个参数的训练过程来表示停止标准。目前,MatHH只支持criterion=1,这表明它必须训练固定的迭代次数。因此,要使用默认参数进行训练,可以使用用途:12清单9:使用默认参数进行训练。训练过程完成后,它返回三个元素:位置、健身和细节。第一个是包含整个超启发式模型的向量,即选择器的规则集。第二个元素提供优化器找到的最佳适应值,即在UPSO。最后一个元素是一个结构,包含有关训练过程的附加信息,也可以对其进行自定义。为此,用户必须以固定顺序提供参数,如我们现在所示(默认值用作参考):12345678910清单10:使用用户定义的参数进行训练。MatHH 还 将 训 练 输 出 分别存储在 training-Solution 、trainingPerformance和trainingStats属性中。 你可以使用它,例如。,以绘制跨元启发式迭代的性能演变 要做到这一点,可以可视化细节结构中可用的原始数据:1清单11: 原始数据可视化。相反地,一可以使用剧情健身进化方法,它做一些后处理的图像(图。( 2):1清单12: 健身进化可视化。3.5. 使用训练模型可以将训练的模型用于不同的动作,例如求解一组新的实例。我们可以使用solveInstanceSet方法轻松实现这一点:1清单13: 一组外部实例的解决方案。请 记 住 , 此 方 法 在 求 解 之 前 克 隆 每 个 实 例 。 这 样 ,MatHH保留了trainInstances2的原始状态。它将已求解的实例作为solvedIn- stances返回。为了允许后验分析,当求解一组实例时,超启发式对象将性能数据存储在performanceData属性中。以这种方式,例如,可以在求解第二实例时显示初始特征值,如图所示。instanceDataset='. . \中找到。.\BaseInstances\JobShopScheduling\files\mat\Instances\E02\InstanceDataset.我是一个tload(instanceDataset);trainInstances1=num2cel ll(所有Instances);%存储过滤器,以便将过滤器设置为一个小规模instanceDataset='. . \中找到。.\BaseInstances\JobShopScheduling\files\mat\Instances\E01\InstanceDataset.我是一个tload(instanceDataset);traintantances2=num2cell(所有tanss);%Storesese c ce s es s e l l a se s e s是的。trainingInstans=trainInstans1;%一个简单的过滤器,用于过滤hyper- 启发式对象cri terion=1;%Cri teriorafixedner的迭代是的。测试(关键字);%测试使用的是已删除的数据文件和已删除的关键字maxIter=100;%Maximumerofiteratine人口规模=20;%微粒数(微粒)selfConf=2. 1;%Self-confideeconstant(UPS操作参数)globalConf=2. 1;%Glo balconfideconstant(UPS运营商)unifyFactorr=0。5;不合格率(UPS操作参数)visualMode=false;%FlagforrplotingfitnssevolutiontestHH2=ruleeBasedSelectionHH(nbrulees,测 试产品);%CreeatehenHHtrainingInstans=trainInstans1;%向HH发送初始值[位置,文件,数据]=ttHH2。train(criterion,maxIter,populationsize,selfConf,globalConf,unifyFactorr,visualMode);%Trainswithcusom零件和存储器都是用于制造的solvedInstances=testHH2. solveInstanceSett(trainInstances2);figurre,plot(dettails. 请在Evolut ion.如果没有,. (raw)testHH 2. plotFitnesEvolutionJorge M.Cruz-Duarte,José C.Ortiz-Bayliss和Ivan Amaya软件X 18(2022)1010476图二、在 整个训练过程中,使用plotFitnessEvolution方法进行性能进化的示例。123清单14:访问历史性能数据以显示给定点和实例的特性值或者,可以通过键入以下内容来绘制第三个实例的最终解,如图3(a)12清单15:访问历史性能数据以显示实例的最终解决方案。类似地,模型存储关于部分解的信息所以,如果我们想在做出第四个决定之前绘制第三个例子的解,图。3(b),我们可以用途:123清单16:部分解决方案图。最后,MatHH提供了为模型中的每个规则绘制影响区域的简化视图的功能它通过绘制两个规则在其归一化范围内的效果来实现这一点。 因此, 为了简单起见, 它忽略了其 余的功能。plotZones方法提供此功能,并包括四个可选参数:测试点、感兴趣的特征、用于使用欧几里得距离的标志以及用于绘制规则位置的标志。因此,可以使用以下命令生成图41234567清单17:从两组不同特性的角度来看,请记住,这些影响区是本例中选择的HH模型的一个特定因此,它可能不适用于其他模型(例如基于序列的HH)。即便如此,我们认为简要解释这些图所表明的内容很重要。图4显示了该HH将根据给定问题实例的当前特征值的值做出的决策的模式为了提供简化的信息,我们将这些图限制在两个用户定义的维度上。菲格4(a)显示了仅考虑默认特征时的行为。这里,启发式2(蓝色菱形标记)将在大部分特征空间中使用。如果我们考虑一组不同的特征,如图4(b)所示,景观发生了变化,在地图2和3(分别为蓝色菱形和粉红色星形标记)之间有更多的平衡。尽管如此,请记住,这并不意味着大多数决定都发生在这种情况下,尽管可能存在相关性。尽管我们考虑了归一化特征,但对于某些问题实例,实际特征值可能会被限制在较小的空间内,因此更倾向于使用一些特征,如我们在下一个示例中所示。3.6. 比较两个简单的超现实主义现在,让我们看看如何使用MatHH来对超启发式模型进行简单的比较,以达到研究目的。这种比较试图确定当使用不同的特征子集和不同数量的规则时模型如何变化。所以,我们将比较两种超对称性。第一种方法应使用三个规则和两个特征。第二个将使用四个规则和三个特征。可用的物流将在这两种情况下是相同的,因为我们只对看到特征的效果和规则的数量感兴趣。由于我们已经解释了基本功能,我们将重点介绍整个过程。因此,我们必须从加载所需功能的启动序列开始:12345678清单18:启动序列。现在,我们可以开始创建我们的超现实主义。为此,为了简单起见,我们将使用不同的方法来定义参数(除非另有定义,否则使用默认值)。所以,对于第一个超启发式:12345清单19:第一个超启发式算法(HH1)点=0:0.01:1;选择性阈值=1:2;SeletedFe atures2=3:4;useEuclid=true;%UseEuclidean距离doRules=true;%Plotrules与hzones一致testHH2. plotZones(位置、使用、选择、删除、删除)testHH2. plotZones(点,使用Euclid,选择Fe atures2,执行Rules)CLC明确关闭所有addpath(genpath(添加JSSP功能addpath(genpath(instanceDataset='. . 我... \BaseInstances\JobShopScheduling\files\mat\Instances\E02\InstanceDataset.我是一个tload(instanceDataset);traintan t ances1=num2cell l(allIntances);%Firstat atatasetaselaraytargetProblem=“jobshopscheduringlingg“;nbRules=3;SeletedFe atures=3:4;propsHH=struct(HH1 =ruleBasedSeelectionHHselectedInstance=3;testHH 2. perforrmanceData{selectedInstanc e}{end}。溶液plot()selectedStep=4;selectedInstance=3;testHH 2. performanceData{selectedInstance}{selectedStep}。溶液plot()selectedStep=1;selectedInstance=二、testHH 2. performanceData{selectedSte p}.featureValuesJorge M.Cruz-Duarte,José C.Ortiz-Bayliss和Ivan Amaya软件X 18(2022)1010477nbRules=4;SeletedFe atures=3:5;propsHH=struct(s点已提取的数据已被使用距离做Rules=0:0.01:1;=1:2;=true;%UseEuclidean=true;%Plotrulesalong我的天HH1. plotZones(位置、使用、选择、删除、删除)HH2. plotZones(位置、使用、选择、删除、删除)图三. 两种不同状态下溶液的说明性示例。见图4。不同规则子集影响的说明性示例。对于第二个超启发式:1234清单20:第二个超启发式(HH2)的定义现在,我们可以继续训练两个超启发式。保持151617清单21:使用相同参数的在这一点上,我们可以继续比较它们。由于这是一个基本的例子,我们将分析训练集上的行为。然而,请记住,正式的研究需要对每个超启发式模型进行多次重复,为了比较公平,我们将在两种情况下使用相同的训练参数:1234567891011121314性能测试集。让我们集中在两个方面进行比较首先,让我们分析两种模型的影响区域:123456清单22:两个模型的影响区的生成这将生成两个图,如图22所示。 5场演出。注意第二超启发式算法看起来更复杂这是预期的,因为规则数量增加尽管如此,还要注意,%概率:HH1. train(trainingMeth od,trainingParams);HH2. train(training Method,trainingParams);%Istanceassinment:HH1. trainingInstances=trainInstances1;HH2.trainingInstances=trainInstances1;百分比:trainingMethod=人口Size=30;selfConf=2。1个单位;globalConf=2.1;unifyFactor=0。5;visualMode=false;trainingParams=struct(populationSizeunifyFactor',uni f yFactor,Jorge M.Cruz-Duarte,José C.Ortiz-Bayliss和Ivan Amaya软件X 18(2022)1010478图五、示 例 中 考 虑 的 两 种 超 重 力 的影响区 域 和训练模型。第一个模型在邻近位置具有两个规则,其目标是相同的启发式。此外,在这两种情况下,第三种启发法覆盖了特征范围的重要部分但是,这并不意味着这适用于所有问题实例,因为实际特征值取决于实例性质及其与给定求解器的交互为此,让我们从第二个角度来分析模型由于框架会跟踪上一次求解的实例集,因此我们可以要求每个超启发式算法再次求解训练集,以强制执行适当的性能数据。之后,我们可以简单地绘制求解实例时求解器使用的分布以及求解每个实例后实现的makespan值的分布:12345678清单23:生成性能图我们总结了图1和图2中的结果图。6和图7在第一个超启发式的情况下,图6(a)揭示了第三个启发式比第四个更常用,尽管后者覆盖了特征域的更大区域这表明,对于此数据集,实例倾向于保留较小的特征值。同样,图。6(b)揭示了第二种启发式很少使用,即使它覆盖了特征域的重要部分。这可能是由于实例很少为这些特征取中间值,或者第三个特征的重要影响。尽管如此,Fig。7显示具有额外规则和特征的模型为训练数据集中的实例产生较低的完工时间值。4. 影响MatHH的主要优点是它允许对超抗原进行快速因此,它通过消除对每一个新的超并行计算研究从头开始的需要来促进代码的可重用性。它还可以作为一个套件,在不同的HH模型之间进行公平的比较,因为只有几个元素必须由用户编码。从这个意义上说,MatHH还允许可扩展性,因为每个新用户都可以贡献新的模型和问题域。特别是,在可以通过MatHH解决的各种研究问题中,我们可以提到:1. 可用启发式算法池的大小如何影响超启发式算法的性能?2. 特征集的大小如何影响基于规则的选择超推理的性能?3. 不同的特征转换对超启发式性能有什么影响?4. 什么样的选择超启发式模型对每个组合优化问题表现最好?5. 如何将选择超并行算法扩展为更通用的求解器?在第一种情况下,人们可能会对分析包含良好的整体启发式的HH与不包含它的HH的性能感兴趣。换句话说,人们可能会分析具有不同求解器的类似大小的池的效果。这一点很重要,因为一个好的整体求解器在少数情况下可能会表现不佳因此,如果一个人学会如何正确地组合剩余的求解器,甚至有可能超越这样的求解器。一个解决者类似地,可以将具有大求解器池的HH与具有小求解器池的HH进行比较。原因是,即使较大的池允许更大的灵活性,它们也代表更具有挑战性的优化问题,因为启发式组合的数量呈指数级增长。如果两个求解器执行得太相似,则它们可能会向优化过程添加不必要的噪声,再次使该过程更加困难。因此,为这个游泳池的大小找到一个适当的平衡剩下的问题也带来了类
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 京瓷TASKalfa系列维修手册:安全与操作指南
- 小波变换在视频压缩中的应用
- Microsoft OfficeXP详解:WordXP、ExcelXP和PowerPointXP
- 雀巢在线媒介投放策划:门户网站与广告效果分析
- 用友NC-V56供应链功能升级详解(84页)
- 计算机病毒与防御策略探索
- 企业网NAT技术实践:2022年部署互联网出口策略
- 软件测试面试必备:概念、原则与常见问题解析
- 2022年Windows IIS服务器内外网配置详解与Serv-U FTP服务器安装
- 中国联通:企业级ICT转型与创新实践
- C#图形图像编程深入解析:GDI+与多媒体应用
- Xilinx AXI Interconnect v2.1用户指南
- DIY编程电缆全攻略:接口类型与自制指南
- 电脑维护与硬盘数据恢复指南
- 计算机网络技术专业剖析:人才培养与改革
- 量化多因子指数增强策略:微观视角的实证分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功