基于性别、分组与年龄限制的夏令营宿舍分配编程方案求助
夏令营宿舍分配编程解决方案求助
我正在做一个个人项目,想通过编程解决夏令营手动分配宿舍的繁琐工作,不确定这里是否适合提问,若有更合适的方向也欢迎告知。
数据集
Python版本:
import pandas as pd data = { "ID": [1, 2, 3, 4, 5, 6, 7], "NAME": ["male_1", "male_2", "male_3", "male_4", "female_1", "female_2", "female_3"], "M_F": ["M", "M", "M", "M", "F", "F", "F"], "AGE": [9, 5, 8, 6, 10, 11, 9], "GROUP": ["1,2,3", "1,2,3", "1,2,3", pd.NA, "5,6", "5,6", pd.NA] } df = pd.DataFrame(data)
R版本:
df <- data.frame( ID = c(1, 2, 3, 4, 5, 6, 7), NAME = c("male_1", "male_2", "male_3", "male_4", "female_1", "female_2", "female_3"), M_F = c("M", "M", "M", "M", "F", "F", "F"), AGE = c(9, 5, 8, 6, 10, 11, 9), GROUP = c("1,2,3", "1,2,3", "1,2,3", NA, "5,6", "5,6", NA), stringsAsFactors = FALSE )
数据集示例:
| ID | NAME | M_F | AGE | GROUP |
|---|---|---|---|---|
| 1 | male_1 | M | 9 | 1,2,3 |
| 2 | male_2 | M | 5 | 1,2,3 |
| 3 | male_3 | M | 8 | 1,2,3 |
| 4 | male_4 | M | 6 | NA |
| 5 | female_1 | F | 10 | 5,6 |
| 6 | female_2 | F | 11 | 5,6 |
| 7 | female_3 | F | 9 | NA |
| ... | ... | ... | ... | ... |
数据集共约100人,部分人员有指定分组(最多7人一组),部分无分组(GROUP为NA)。
宿舍规格
- 4间3人宿舍
- 13间4人宿舍
- 4间7人宿舍
- 4间8人宿舍
总容纳量为124人(43 +134 +47 +48),存在剩余空间。
分配规则
- 男女必须分住不同宿舍;
- 需保留原有分组,GROUP为NA的人员可与任意组同住任意宿舍;
- 单宿舍内最年长者与最年幼者的年龄差不超过4岁。
我正在用R处理该问题,也略懂Python,恳请提供解决方案或思路。
内容的提问来源于stack exchange,提问作者David Kundrat
相关产品推荐
相关产品推荐

