深兰交大AI算法 五期
解的表示与评价
在算法设计之前,还得设计一下解的表示方式(已报名深兰ai算法 底部评)。在背包问题中,所要做的决策是拿或者不拿某个物品,那么这一行为在计算机中如何表示比较好呢?
因为该问题的决策只有两种状态,所以我们可以用0表示不拿,1表示拿。N个物品我们就可以用一个N维的数组x进行表示,当:
\[\left\{ \begin{aligned} x[i] & = 0 & 不拿物品i \\ x[i] & = 1 & 拿物品i \end{aligned} \right. \]
此外,我们还得用个变量表示目标值,由于约束的存在,我们还得标识该解是否满足所有约束了……等等,那么就把这堆东西集成到一个class里面吧:
class kp_solution():
def __init__(self):
self.decision = [] # 决策变量
self.total_value = 0 # decision决策对应的目标值
self.feasible = False # decision决策是否满足所有约束
现在解已经用计算机语言表示出来了,如何去评价一个解已经十分明了了:根据问题的参数,计算决策获得的价值,以及判断该决策是否可行。