C#如何将对象添加到具有对象列表的列表中

时间:2014-04-02 07:20:47

标签: c# algorithm

让我试着解释一下 我有两个清单 1.员工对象列表 2.部门对象清单(包含可以在部门工作的员工清单)

我希望能够将员工添加到列表中包含员工列表的部门。

但我收到空错误

int empsize = allemployees.Count;
        int Maxdepartment = 0;



        foreach (employee employeeitem in allemployees)
        {

            Maxdepartment = employeeitem.alloweddepartments.Count;


            for (int i = 0; i < Maxdepartment; i++)
            {
                int index = alldepartments.FindIndex(x => x.Name == employeeitem.alloweddepartments[i].ToString());

                alldepartments[index].earlyshift.Add(employeeitem);








            }

1 个答案:

答案 0 :(得分:0)

这对我来说似乎是一个非常复杂的问题。它肯定是一个有许多约束的优化问题,所以我希望你擅长数学; - )。

我建议你看看Simplex Algorithm,如果你有数学知识如何使用它,它将很好地解决你的问题。单数也有一些变化,也可能效果很好。

还有另外一种方法,您只需使用计算机的电源来解决问题。您可以编写一个对解决方案进行评级的函数,并为您提供某种基准测试。 例如,你可以像每小时那样评估提供和需要的小时差异,小于所需的小时数-2,每小时大于需要的小时数为-1。因此,您可以获得员工分配的分数。

使用此功能,您可以开始将员工随机分配到部门(当然,每个部门的最小/最大员工),然后使用您的功能对此解决方案进行评级。所以你可以找到一个得分很高的解决方案(如果你定义的功能运作良好)

当然,大多数随机分配都是愚蠢的,但是你的计算机会在几秒钟内产生数百万个解决方案,所以很有可能它会在一段时间后生成一个好的解决方案(不要认为时间是一个很大的标准,因为一旦你有一个解决方案它不会经常改变)