人工智能方法(COMP2051或AE2AIM)课程1.0版1人工智能方法(COMP2051或AE2AIM)白瑞斌教授2024年春季课件:求解装箱问题的扰动超启发式1.简介装箱是研究最多的组合优化问题之一应用于物流、空间规划、生产、云计算等领域被证明是NP难的,实际困难取决于问题的大小(即。要包装的物品总数)和其他因素,如物品尺寸的分布与箱子大小以及不同物品大小的数量的关系(不同的物品可能具有相同尺寸)。

在本课程中,您将被要求编写一个C/C++/Python程序来解决这个问题使用扰动超启发式方法。除了提交源代码描述你的算法需要书面报告(不超过2000字和6页)(详细要求见第4节)。您的程序和报告都必须完成独自一人。提交的文件必须成功通过抄袭检查,然后才能进行标记。一旦剽窃案件成立应严格执行不当行为政策。本课程获得45%的模块分数。2.箱子包装问题(BPP)给定一组n个项目,每个项目j的大小为aj,BPP的目标是将所有项目打包到最小数量的相同大小的仓而不违反仓的容量(V)。

这个这个问题可以用数学公式表示如下:人工智能方法(COMP2051或AE2AIM)课程1.0版2这个数学公式通常不能用现有的整数规划求解像CPlex、Gurobi、LPSolve这样的解算器,尤其是当项目数量n很大时装箱问题的求解空间具有极大的规模和平台性使得传统的邻域搜索方法非常具有挑战性。为了通过高质量的解决方案始终如一地解决问题,使用了元启发式和超启发式,这是本课程的任务。3.问题实例多年来,各种研究引入了大量的BPP实例。看见https://www.euro-online.org/websites/esicup/data-sets/用于收集不同的垃圾箱包装问题。在本课程中,我们将提供3个实例文件(binpack1.txt,binpack3.txt和binpack11.txt),分别表示易实例、中实例和硬实例。从中选择10个实例来测试和评估您的算法标记。对于每个测试实例,只执行1次运行,其目标值用于标记性能部件(见第5节)。4.实验条件及提交要求您的程序应满足以下要求:
(1) 你必须准确地提交两份文件。第一个文件应该包含所有程序源代码。第二个文件是课业报告。请不要压缩文件。
(2) 您的源代码应该采用一个干净的结构,并得到适当的注释。人工智能方法(COMP2051或AE2AIM)课程1.0版3
(3) 您的报告应包括以下内容:?算法的主要组成部分,包括解决方案编码、适应度函数,低级启发式列表以及有关的注意事项强化和多样化机制。(12分)。?所有问题的算法统计结果(5次运行的平均值、最佳值、最差值)实例,与最佳公布结果相比(即与最佳结果)。请注意,尽管您的报告应包括5次跑步的结果但您的最终提交对于每个实例应该只有一次运行(即。如果使用实验室中的草图代码,请将全局变量NUM_OF_RUNS设置为1在您提交代码之前)。(3分)?对算法的结果和性能进行简短讨论/反思。5.标记)
(4) 以你的学生id命名你的程序文件。例如,如果你的学生编号是2019560,请将程序命名为2019560.c(或2019560.cpp,或2019560.py)。
(5) 您的程序应该在CSLinux服务器或IAMET406中的计算机。因此,请在提交之前进行充分测试。你可以使用以下命令之一(假设您的学生id为2019560,并且您的程序以您的id命名):gcc-std=c99-lm 2019560。c-o 2019560或g++-std=c++11-lm 2019560.cpp-o 2019560对于Python程序,可以跳过这一秒。
(6) 编译后,您的程序应该可以使用以下方法执行命令./2019560-s数据文件-o解决方案文件-t最大时间其中2019560是程序的可执行文件,data_file是其中之一第3节中指定的问题实例文件。max_time是最长时间允许您的算法运行一次。在本课程中,最多30秒是允许的。solution_file是输出最佳解决方案的文件您的算法。格式应如下所示:#的问题实例_id1obj=objective_value abs_gapbin0中的item_indxbin1代 写COMP2051或AE2AIM 人工智能方法中的item_indx… …实例_id2obj=objective_value abs_gapbin0中的item_indx人工智能方法(COMP2051或AE2AIM)课程1.0版4bin1中的item_indx… …问题数据文件“binpack1.txt”的示例解决方案文件可在moodle。对于使用Python提交的文件,编译和运行结合在一起命令如下:python 2019560.py-s数据文件-o解决方案文件-t最大时间(7) 您的算法(solution_file)在
(6)中输出的解决方案文件应为在上使用以下命令成功通过解决方案检查测试CSLI数量:./bpp_checker-s问题文件-c解决方案文件其中problem_file是第3节中的一个问题数据文件。如果您的解决方案文件格式正确,您应该得到一条命令行消息,类似于:“您的总分20个实例中有80个。“如果某些实例的解决方案不可行,您会获取错误消息。解决方案检查器可以从moodle页面下载。它只能在上运行CSLinux。(8) 对于每个问题实例和每次运行,您的算法应该只运行一次应不超过30秒。(9) 请仔细检查程序中的内存管理,并测试您的算法在CSLinux上完全运行(即一次运行多个实例)。在里面过去,一些提交的程序可以运行1-2个实例,但随后崩溃因为内存不足错误。如果发生这种情况,将极大地影响你的分数。(10) 您必须严格遵守与剽窃有关的政策和规定。你是禁止使用最近的人工智能工具,如ChatGPT/GPT-4或其他类似的大型工具语言模型(LLM)。一旦案件成立,将被视为抄袭案件及相关政策和处罚将适用。人工智能方法(COMP2051或AE2AIM)课程1.0版55.标记标准?实验结果的质量(20分)。您的算法将进行测试包含从所提供的实例集合中选择的10个实例的文件。这个通过使用计算绝对间隙来评估算法的性能最佳已知结果使用_ = ? _ _标准标记abs_gap<0新的最佳结果!奖金:额外2分每个新的最佳结果。abs_gap<=0每个实例2个标记0<abs_gap<=1每个实例1.5个标记1<abs_gap<=2每个实例1个标记2<abs_gap<=3每个实例0.5个标记?abs_gap>4或?不可行的解决方案或?无法输出解决方案在规定的时限内0标记?代码的质量,包括功能/方法的组织、命名惯例与评论的清晰简洁(5分)?报告(20分)6.提交截止日期北京时间2024年5月3日下午4点逾期提交文件将受到标准处罚。7.如何提交通过Moodle提交。8.实用提示?与相比,垃圾箱包装的解决方案编码稍微更具挑战性背包程序,因为要使用的箱子数量和每个箱子中要包装的物品都是要优化的决策的一部分。因此人工智能方法(COMP2051或AE2AIM)课程1.0版6用于保存包装信息的数据结构不能通过固定大小的阵列。您可以考虑使用C++STL中的矢量(标准模板库),它要求您将<vector.h>作为头文件。如果你喜欢C型如果没有类,以下数据类型也是可以接受的:结构bin_struct{std::vector<item_struct>packed_items;int cap_left;};结构解决方案_结构{structproblem_struct*prob//维护问题数据的浅层副本浮动目标;int可行性//指出解决方案的可行性std::vector<bin_struct>bins;};通过这种方式,您可以打开/关闭垃圾箱,同时为添加/删除项目通过向量库提供的API函数的特定bin。?箱子包装问题的搜索空间有很多平台,这使得问题对于简单的邻域方法来说极其困难。因此,多个低级别在微扰超启发式方法中提出了启发式。你可以自由选择中描述的任何扰动超启发式方法
WX:codinghelp


hwxy94ty
1 声望0 粉丝