我们在多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)讲解了使用NSGA-II求解两个目标(总价值和总体积)的01背包问题,后台有小伙伴咨询小编说能否出一期三目标优化的教学,今天小编就为大家讲解使用NSGA-II求解三个目标(总价值、总体积和总质量)的01背包问题。
01 | 问题描述
问题描述:
假设存在五类物品,每类物品中又包含四种具体物品,现要求从这五类物品中分别选择一种物品放入背包中,使得背包内物品的总价值最大、总体积最小、总质量最小。(PS:这里将背包的总质量限制去掉)。其中P为每个物品的价值,R为每个物品的体积,C为每个物品质量。
PS:每一列物品代表每一类物品
02 | 算法设计
这里的算法设计部分其实没有多大变化,算法详细的设计过程可参考多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)这篇推文。
主要是有两个不同点。
第一不同点就是删掉第2部分-约束处理,因为这个问题本身是不存在约束限制的。
第二个不同点是适应度函数变为三个目标,第一个目标为物品总价值之和,第二个目标为物品总体积之和,第三个目标为物品总质量之和。
此外,小编这里想重点讲一下支配的含义。
我想各位小伙伴已经理解了支配的含义,不过小编在这里再啰嗦一遍。理想情况下,支配可以简单粗暴地来理解为一个解的所有目标值都好于另一个解的所有目标值。但是这只是理想情况,严谨的来说支配的含义是至少在某一个目标值上,一个解优于另外一个解,然后在其它目标值上,这个解要不次于另一个解。
03 | 实验结果
我们一共找到48个Pareto最优解,并已在坐标系中画出。
其中每个个体如下图左侧所示。
各位小伙伴如有编写代码的需求,欢迎添加小编QQ:934569572(添加好友时请注明昵称-学校),小编提供有偿编写代码服务。