我正在尝试开发一个C#应用程序,它将生成所有可能的排列列表,限制在成本范围内。例如,我有一个包含80个工作的列表。每个工作都有一个值(1-5)(通常为3),每个工程师都有一个通常为20的限制。
目前,我已经开始生成所有可能的组合列表(n!/(k!*(n-k)!其中n是总工作数,k是2)。每个工作之间的联系应该带有每个工作之间的距离权重。
从这里开始,我想选择一个初始的起始工作,并生成一个工作的所有可能组合列表(从起始工作开始),直到达到20的限制,然后按权重总和排序。最低权重路线将获胜并分配给工程师。我的问题是我不知道如何处理这个问题 - 什么数据结构最好?
通常有大约6-8名工程师(根据工作量而定),我计划一次路由每个工程师 - 一旦路由被分配给另一位工程师,那些工作将从列表中删除,并选择一个新的起始工作并生成新的组合集。这听起来像一个可接受的方法吗?
欢迎任何帮助。
目前,我已经开始生成所有可能的组合列表(n!/(k!*(n-k)!其中n是总工作数,k是2)。每个工作之间的联系应该带有每个工作之间的距离权重。
从这里开始,我想选择一个初始的起始工作,并生成一个工作的所有可能组合列表(从起始工作开始),直到达到20的限制,然后按权重总和排序。最低权重路线将获胜并分配给工程师。我的问题是我不知道如何处理这个问题 - 什么数据结构最好?
通常有大约6-8名工程师(根据工作量而定),我计划一次路由每个工程师 - 一旦路由被分配给另一位工程师,那些工作将从列表中删除,并选择一个新的起始工作并生成新的组合集。这听起来像一个可接受的方法吗?
欢迎任何帮助。