使用R中的人口比率和最小/最大标准将值分配到区域

我有以下数据:

require("data.table")
dt1 <- data.table(ZONE = c("A34","G345","H62","D563","T63","P983","S24","J54","W953","L97","V56","R99"), POPULATION = c(40,110,80,70,90,90,130,140,80,30,80,50), MIN = c(1,0,0,1,0,1,0,1,1,0,1,1), MAX = c(10,9,2,11,12,8,5,3,2,0,8,8))

我想向按人口加权的这些区域分配50个帽子(假设是帽子)。但是,这些区域中的某些区域至少需要戴一顶帽子,而其他区域只能容纳很少的帽子或根本没有帽子。

有没有一种方法可以根据总体数量分配50顶帽子(尽可能精确地按比例分配),但要考虑最小和最大标准,并在某个区域不再接收任何帽子/帽子时再将帽子分配给其他区域?