Algorithm 多重背包变异

Algorithm 多重背包变异,algorithm,matrix,constraints,knapsack-problem,Algorithm,Matrix,Constraints,Knapsack Problem,我和本科生正在做一些关于多重背包问题的进化算法工作。我已经完成了我的代码,但我正在努力理解测试用例的一个方面。我注意到它们有一个约束(权重或成本)矩阵,而不是列表。为什么?为什么一件物品的价格取决于它放在哪个背包里?我当然可以添加算法来实现这一点,但我不了解它的应用。我找到的每个测试用例都是这种格式。如果您对矩阵或一维约束数据有任何帮助,我们将不胜感激。正如一篇关于旅行推销员的流行文章所说: 旅行推销员问题的流行并非源于数百万想要计算最优路线的推销员 根据你对问题的描述,我认为你是在谈论(第12

我和本科生正在做一些关于多重背包问题的进化算法工作。我已经完成了我的代码,但我正在努力理解测试用例的一个方面。我注意到它们有一个约束(权重或成本)矩阵,而不是列表。为什么?为什么一件物品的价格取决于它放在哪个背包里?我当然可以添加算法来实现这一点,但我不了解它的应用。我找到的每个测试用例都是这种格式。如果您对矩阵或一维约束数据有任何帮助,我们将不胜感激。

正如一篇关于旅行推销员的流行文章所说:

旅行推销员问题的流行并非源于数百万想要计算最优路线的推销员

根据你对问题的描述,我认为你是在谈论(第12页)。P表示价格矩阵,W表示权重矩阵

背包问题当然也是如此。虽然这个故事是关于背包的,但背包可以是任何东西

以调度问题为例。假设你有一家(虚构的)医院,有三名员工:两名医生和一名护士。现在,每天都会列出这些员工必须执行的任务(例如检查患者、填写表格等)。现在,我们可以将每个员工表示为一个背包,因为他们每天工作的时间有限

任务的权重描述了我处理任务j所需的时间量。此外,它还可以用于指定禁止某项任务。例如,在比利时,持有a-certificate的护士不允许给患者注射。您可以通过指定护士处理此类任务需要数年的时间来强制执行此操作,因此该任务的“重量”相对于该行李的容量而言太大

因此:wij描述了我的员工执行任务j所花费的时间,如果该员工无法执行该任务,则将其设置为高于能力

此外,价值是例如执行任务的质量。如果其中一位医生专门研究心脏病,显然他对心脏病患者的诊断会更好。或者,您可以使用处理该任务所需支付给员工的金额的倒数(如果员工按每个任务支付),以最小化成本

因此,pij指定了我将执行任务j的员工的素质,或者,例如,与执行任务j的员工成本成反比

因此,背包的最佳配置将指定员工当天将处理哪些任务,以确保员工的工作不会超出允许范围(或执行未获得许可的任务),并进一步优化服务质量或将运营成本降至最低

因此,如果xij=1,这意味着在最佳情况下,员工i将在当天执行任务j

因此,典型的应用是多个员工/机器/服务器以不同的成本和界限处理任务/问题/请求


@IVlad针对相关问题提出了一些建设性意见:

  • 在分配问题中,一个目标是在二部图中构造一组边,使得没有两条边共享一个节点,并且总权重最大化。人们无法(显然)将MCKP映射到AP,因为权重将放弃员工执行过多任务的情况,因为这是最优的

  • 多目标变量将价格矩阵p转换为张量(或更高),以便您可以考虑不同的评估标准(例如质量和价格),并为这两个目标搜索最佳解决方案


我指的测试数据是people.brunel.ac.uk/~mastjjb/jeb/orlib/files/mknap2.txt。看来这些数据是针对多维背包问题的

这看起来像是:正如你在那篇文章中看到的,有
m
约束:

Maximize 
              z = sum{j = 1 to n: c[j]*x[j]}
Subject to: 
              sum{j = 1 to n: a[i,j]*x[j]} <= b[i]     i = 1, ..., m    
                                                       x[j] in {0,1} 
最大化
z=sum{j=1到n:c[j]*x[j]}
从属于:

求和{j=1到n:a[i,j]*x[j]}你真的是指多重背包问题,还是多维背包问题?请参阅以了解变化。如果你指的是多维背包问题,那么你有一个矩阵,因为每个项目都由多维向量描述,因此项目列表可以看作是一个矩阵。如果你指的是多重背包问题,那么我不确定你指的是什么矩阵。你能链接到数据以这种方式呈现的地方吗?我指的是测试数据。这些数据似乎是针对多维背包问题的。你所描述的听起来像是分配问题或是多目标背包问题。然而,这看起来不像是多背包问题。@IVlad:multi-objective意味着它们评估配置的方式不同。这里唯一的测量值是所有行李总价值的总和。关于分配问题:您忘记了权重也起了作用,它们没有包含在正式定义中。多目标意味着有多个目标,而不是评估配置的不同方法。你应该尽量减少你给医生的工资,最大限度地分配他们在专业范围内的任务,并最大限度地增加所做的工作。对于分配问题,您可以为图形分配成本和容量。好吧,多重背包问题是你有多个相同的背包需要填充。如果我理解正确的话,你的问题不涉及相同的背包。比如看@IVlad:(1)背包可以是相同的——这不会改变问题——你可以简单地放大重量,所以如果容量相同或不同,它是任意的。(2) 基于