我正在尝试使用爬山算法来解决背包问题的修改版本,但是找不到很好的评估功能。在此版本的背包问题中,解决方案中所有对象的权重之和必须等于(不是<=)背包的容量,并且其成本之和必须最大化。
我尝试了几种评估功能,但没有一个起作用:
__abs(sum_of_weights_in_solution - knapsack's capacity)__
。显然,它不起作用,因为此表达式未考虑对象的成本,但至少它提供了一种解决背包问题的方法__abs(sum_of_weights_in_solution - knapsack's capacity) - sum_of_costs_in_solution__
。这是更好的方法,但即使在具有10个对象的背包上进行10 ^ 6次迭代后,它仍然不一定总能找到最佳解决方案,而且我认为这是因为我无法真正处理对象权重之和为>超过背包的容量