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

计算科学 算法 数据分析
2021-12-10 21:46:14

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

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

2个回答

您的问题似乎不是,““代理”的总和必须为每个单一需求提供完全离散的能量部分或不提供任何东西......”,对吗?或者你不理解我。所以我会尝试更好地描述我的问题,也是因为我找到了解决方案。

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

我正在使用 gams 软件,所以我用 gams 风格描述它:设置代理、t 任务参数成本(t)、值(t)参数资源(a)

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

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 和 1 来说都是 0。这个taskcost_bin_constraint目标将是:

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

我想知道,但这可行,并在约束下为我提供了更好的解决方案,以完成或不完成任务。

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

有一种确定性退火算法可以解决一对一分配问题或等效的二元矩阵划分问题。

然而,除了使用整数 [0, 1] 值之外,还可以使用小数值(因此算法保持不变),甚至可以将其扩展为处理多个分配(通过添加一个内部循环,本质上矩阵变成了一个超维数组或张量)

论文在这里: http ://www.researchgate.net/publication/2382666_Pairwise_Data_Clustering_by_Deterministic_Annealing/file/d912f50c75945d835b.pdf