在整数规划中,如果所有决策变量xi只限于取0和1两个值,则称它为0—1规划问题。就像是背包问题,它就是一个典型的0—1规划问题。
我觉得背包问题其实在之前刷题的时候还挺难的,但是在运筹学中学习的没有那么深。书上只讲了两种方法:
1.显枚举法
2.隐枚举法
显枚举法又名穷举法,即将每一种情况都代入原式中计算,最后根据结果进行比较,得出最优解。该方法虽然可行,但是随着数据量的增大也会渐渐地不适用。
隐枚举法是在显枚举法上的优化,它能够使在达到最优解之前,只需要检查所有可能的变量组合的一部分即可。因为在判断某种情况是否可行时,会先将此方法代入目标函数进行计算,如果结果大于目前的最优解就进一步进行判断是否可行,可行就将该结果值作为新的最优解;否则就跳过。
具体计算时为了方便记录可以使用以下形式的表格:
另外,课本上给出了隐枚举法的优化方法,优化的地方并不是计算方法,而是表格中x1,x2,x3的排列顺序。书中说如果将x按照目标函数中系数值从小到大排列会更快的计算出目标函数最优值,但我对比了下两种方法,发现其中无论是大于下界的情况出现的次数还是判断是否满足约束的次数都是一样的,应该只是最优值在表格中较早出现了,但是并没有方法能够判断这个值就是最优值😓,感觉优化效果不大。