1 组合优化问题基本概念
一般是指在一个有限的集合中寻找最优解的一类问题。在多数组合优化问题中,枚举和穷举搜索是不可行的,该问题解的集合是离散的或者可以简化到离散,目的是求解最优解。
常见的组合优化问题有:背包问题、二次分配问题、最小生成树问题、覆盖问题、一维装箱问题和TSP问题等。
问题特点:描述简单,有很强的工程代表性,但求解需要很长的运行时间和很大的存储空间,在计算机上很难实现求解,即“组合爆炸”。
2 背包问题
问题特征:利用充分的空间,得到最高的利润。
现阶段,解决该问题的方法大体上分为三种:二进制表示法、序列表示法、可变长度表示法。
2.1 二进制表示法
一串0、1二进制串,长度为物品的数目。很容易理解,但是会出现不可行解。对于出现的不可行解,有两种解决方法:罚函数和解码方法
罚函数:设置合理的罚函数,只有当物品重量恰好为背包重量的时候才不会受到惩罚,其他情况有不同程度的惩罚。
解码方法:计算决策变量为1的物品(即放进背包的物品)的利润重量比,按照“利润重量比”从高到低排序,然后在满足背包重量要求下放入这些物品,直到超重与不超重的临界。
2.2 序列表示法
一串表示第几个商品的整数串。每个基因位表示某一个物品(相当于是物品编号的一个序列),按照序列往背包里加东西,一直加下去,符合要求的就加进去。比如5个物品,45321
2.3 可变长度表示法
长度是可变的,代表的是放入书包中的所有物品,即物品的数目不是一个确定的数字,序列也不代表放入的先后顺序,只要是放入背包这个序列所代表的东西放进入能使适应度达到最大即可。
2.4 多选择背包问题
有m类物品,每类物品中选出一个放进背包。编码方案:例如,遗传算法解决该问题,基因的位置代表了相应的类别,基因的值代表了相对应类别中哪一个物品。(位置,第几个这个信息也很有用,在JSP问题的解决方案中也有利用到这一信息。充分利用能利用到的信息)
3 TSP问题
每个城市都只走一次,走过来一遍,并且总路径是最小的。
编码方案:
1.直接表示法:城市序号序列
2.随机数法:产生n个(0,1)之间的随机数,相当于每个城市的权重,然后根据随机数从小到大进行排序,排序过后相对应的城市序列即为城市路径序列。
4 总结
组合优化问题
特点:存在有限数量的可行解,并广泛存在于日常生活中(尤其工业设计中)。
最大挑战:如何高效的处理“组合爆炸”的问题。