Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 基于年龄和国籍的房间分类算法_Algorithm_Sorting - Fatal编程技术网

Algorithm 基于年龄和国籍的房间分类算法

Algorithm 基于年龄和国籍的房间分类算法,algorithm,sorting,Algorithm,Sorting,我正在为我工作的英语学校做一个项目。我没有报酬,只是一种改进/自动化工作流程的爱好 这是一所寄宿学校,我正在研究自动化的一个方面是我们为学生分配空间的方式,虽然我不想要一个全面的解决方案,但我希望有人能给我指出正确的方向……建议你可能的方法,或者建议算法等 基本上在学校里,我们有一大堆不同的房间,从单人房到8人的宿舍。我们有很多来自世界各地的不同国籍的人,我们总是努力确保每个房间都有不同国籍的人。如果有一个以上的国籍,我们会尽力平衡他们。年龄也很重要,我们总是把年龄相近的学生放在一起,同时仍在尝

我正在为我工作的英语学校做一个项目。我没有报酬,只是一种改进/自动化工作流程的爱好

这是一所寄宿学校,我正在研究自动化的一个方面是我们为学生分配空间的方式,虽然我不想要一个全面的解决方案,但我希望有人能给我指出正确的方向……建议你可能的方法,或者建议算法等

基本上在学校里,我们有一大堆不同的房间,从单人房到8人的宿舍。我们有很多来自世界各地的不同国籍的人,我们总是努力确保每个房间都有不同国籍的人。如果有一个以上的国籍,我们会尽力平衡他们。年龄也很重要,我们总是把年龄相近的学生放在一起,同时仍在尝试混合国籍,让学生在他们之间分享两年多的时间是不寻常的

我想更一般地说,我感兴趣的是如何根据两个参数对给定的一组学生进行排序,以获得一个最佳结果,并附加一些规则

我希望我已经清楚地解释了我想要达到的目标…听起来很简单,但我一直在尝试用一种简单的方式思考如何做到这一点,即按国籍排序,然后按年龄排序,但这并不能减少它,我知道一定有更好的方法来实现这一点。当我在excel工作表上“手工”操作时,感觉非常直观


感谢所有提供帮助/建议的人。

我会分析每个学生,并根据他们的年龄和国籍创建一个“个性”向量。然后我会对向量进行排序,排序后可能会对结果进行一点置乱,以鼓励多样性

首先,您可能会发现这很有趣:。不幸的是,它没有回答你的问题

试试看

使用遗传算法有三个主要标准:

  • 能够将解决方案表示为可变数组。我们可以有一个整数数组,这样a[i]就是第i个学生的房间

  • 国家的突变应该产生可预测的结果。在我们的情况下,这是正确的。可以预见,改变阵列将使学生在房间之间来回走动

  • 易于编写快速适应度函数。编写O(n)适应度函数应该不会太难


这是一个有趣的问题。我将尝试用这种方法编写一些代码,看看会发生什么。

这是一个有趣的问题,但不容易回答。不知何故,这与分舱和装箱或下料问题有关。您可能还需要寻找拓扑排序。你可以找一个商业逻辑平台,让你定义这样的规则。

怎么样,你认为一个房间是一种排斥它已经拥有的国籍的学生的东西,并吸引接近它已经拥有的年龄的学生。年龄越接近平均年龄,它就越吸引人,房间里的X族男性越多,就越排斥X族男性

然后,对于每一个新加入的学生,你会反复浏览每个房间,看看哪个房间更吸引他们。我想如果房间是空的,你可以将所有力设置为0。此外,您将有两个常数,它们将两个“力”相乘,因此您可以根据相同年龄的重要性和不同国籍的重要性对其进行校准。

一般主题是“在优化某些数量的同时,根据约束将x分配给y”属于运筹学或更具体地说。通常的方法是正式指定问题,并使用通用优化解算器,如中列出的一种

试一试,使用现有解算器的形式化规范语言非常容易学习,您可能会在不调试复杂算法的情况下获得最佳解决方案。

公式作为一般优化问题
将约束和参数形式化将非常有用。让我们假设这是一个很好的总结,但听起来像是家庭作业。这不是一个真正的编程问题——我不知道如何让你相信这不是家庭作业,但不管它值多少钱,我可以向你保证这不是。我是全职工作,没有学习,因此“总结”。为什么这很重要?它是关于算法设计的,而算法是编程的重要组成部分。你需要更多的规则来找到合适的配置。你想先把小房间填满吗?还是大的?你们允许部分客满的房间吗?你对此有处罚吗?性别重要吗?等等,这个问题需要更多的变量,但我想把它减少到我遇到问题的主要部分。例如,性别很重要,但很容易处理,因为我们不允许混合性别。允许有部分人住的房间吗?是的,但只有在学生人数不足的情况下,也就是说,如果我们有4间4人的房间,13名学生,那么一些房间可能有2间或3间。谢谢您的回复。我会调查的。我会查找Drool只是出于兴趣,但对于它的价值,我感兴趣的是滚动我自己的,特别是在目标C中。
|Grade(a) - Grade(b)| <= 2 (1)
max over all arrangements {{ Sum over all rooms S of DiversityScore(S) }}
    where we have DiversityScore(S) = # of Different Nationalities in the Room