C# ordered combinations algorithm

mar*_*ine 6 c# math permutation data-structures

我正在尝试开发ac#应用程序,它将生成所有可能的排列列表,在限制和成本范围内.例如,我有80个工作列表.每个作业都有一个值(1-5)(通常为3),每个工程师都有一个限制,他们可以做多少,通常值为20.

目前我已经开始生成所有可能组合的列表(n!/(k!*(nk)!其中n是作业总数,k是2).每个作业之间的链接应该加权每个工作之间的距离.

从这里开始,我想选择一个初始启动工作并生成所有可能的工作组合列表(从开始工作)到20的限制,然后按重量总和进行排序.最低权重路线将赢得并分配给工程师.我的问题是我不知道如何处理这个 - 什么数据结构最好?

通常有大约6-8名工程师(取决于工作量),我计划一次一个地路由每个工程师 - 一旦将路线分配给另一个工程师,这些工作将从列表中删除并选择新的启动工作生成一组新的组合.这听起来像是一种可接受的方法吗?

欢迎任何帮助.

小智 2

我会尝试模拟退火,这是一种通过根据系统能量随机测试配置来找到全局最优值的算法。

http://en.wikipedia.org/wiki/Simulated_annealing

检查文章中的伪代码。