多对多广义分配问题的算法


20

我似乎找不到关于可用于解决多对多广义分配问题(GAP)的算法的文献,即不仅可以将更多任务分配给一个代理,而且可以将多个代理分配给多个代理的模型。分配给一项任务(Pentico在一篇论文中讨论了一对一和一对多AP)。我几乎不了解分配问题,但是在研究过程中遇到了这样的问题,并且想了解更多有关如何解决它们的知识。这样的多对多GAP是否有可能被冠以另一个名称,或者是否有其他原因可以找到很少的文献?

Pentico,D. 作业问题:黄金周年调查欧洲运筹学杂志(2007); 176(2):774-793。


1
嗨,GerritJan。欢迎来到Scicomp!:)您是否熟悉广义分配问题的拉格朗日启发式方法?sciencedirect.com/science/article/pii/S0898122110002609irma-international.org/viewtitle/58969crcnetbase.com/doi/abs/10.1201/9781420010749.ch48
保罗

1
在我看来,至少在线性分配成本的情况下,可以通过将一个任务视为多个子任务来模拟将任务的一部分分配给多个代理的情况。没有更多细节,很难知道您的问题比广义的分配问题更“笼统”。该Wikipeida文章有一些很好的阐述,并联系到一对夫妇的话题引用。
Hardmath 2012年

谢谢@Paul。我会仔细研究这些文件,尽管对于我那些未经训练的人来说,它们似乎很复杂。再说一次,我怀疑问题很复杂,我可能不得不做一些简化。难点是,我的问题基本上是在网络中分配能量的问题:供需节点需要使用它们之间的(加权)连接以最佳方式进行匹配,同时以最少的使用量满足所有需求。当然,可以使用其他约束,例如连接上的最大容量等
。– Gerrit

1
@GerritJan:这是一个np难题,因此将需要一个近似方案。如果您需要一个很好的近似值,则您的算法可能会有些复杂。
保罗

2
@GerritJan:这意味着只能通过检查所有可能的配置来保证确切的“最佳”解决方案。这些可能的解决方案随着时间的流逝(至少)成指数增长,从而使得即使相对较小的尺寸问题也几乎不可能在合理的时间内准确解决。
保罗

Answers:


1

您的问题似乎不是,“每个代理的总和必须完全提供离散的能量,或者根本不提供任何能量……”,对吗?否则你不了解我。因此,我会尝试更好地描述我的问题,这也是因为我找到了解决方案。

在我的问题中,我有一组座席,每个座席都有一定资源的预算,他们可以分担任务的成本,应该分“执行”一次(或不执行一次)(多对多分配,而无需“执行”每个任务)。这意味着:任务x的代理商部分解决方案的总和应小于或等于任务x的成本。目的是找到代理商可以支付的最具价值的任务集。

我正在使用gams软件,因此我以gams样式进行描述:设置代理,t任务参数cost(t),value(t)参数resources(a)

正变量y(a,t)(非整数),是任务t目标成本的代理商a的一部分:

maxvalue =e= sum((a,t), value(t) * y(a,t) / cost(t) );
agentresource_max_constraint(a).. sum(t, y(a,t)) =l= resources(a);
taskcost_max_constraint.. sum(a, y(a,t)) =l= cost(t);

如我所写,我有一个解决方案,但不知道如何分离部分任务解决方案。但是现在我发现我可以用

二进制变量 z(t)

taskcost_bin_constraint z(t) =e= sum(a, y(a,t)) / cost(t);

sum(a, y(a,t)) / cost(t)等式中的公式是介于0和1之间的值,并且受此约束,z对于所有小于1的值,其值为0;对于1的值,其值为1。该taskcost_bin_constraint目标为:

maxvalue =e= sum(t, value(t) * z(t));

我在想,但是这样做可以在约束下为我提供更好的解决方案,以完成或不完成任务。

也许您也可以添加这样的约束?精确满足需求的约束,用值介于0和1之间的表达式表示。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.