我正在处理涉及销售代表和销售地区(使用其(潜在)销售得分)的分配问题。在此示例代码中,我试图优化将3个代表分配给2个地区。目标函数是最大化max的总和。所有销售代表的分数。
约束是:一个代表只能分配给一个地区,一个地区可以有多个代表,每个地区对分数总和的最低要求和最高要求。我无法对每个地区执行最低和最高要求,即,每个地区的所有指定代表的得分总和应在一定范围内。我提供的虚拟值可能不会在此处导致最佳解决方案,但此处的设计是否正确?有什么建议么?
R代码
nx <-3 # of sales reps
lps.mod <- make.lp(2, 2*nx) #3 columns for values, 3 columns for binary
将销售得分分配为系数
x <- c(0.83,0.75)
set.column(lps.mod, 2, x)
y <- c(0.77,0.81)
set.column(lps.mod, 1, y)
z <- c(0.57,0.88)
set.column(lps.mod, 3, z)
print(lps.mod)
set.objfn(lps.mod, c(0.81,0.83,0.88, 0, 0, 0)) #Max of each column
lp.control(lps.mod,sense="max")
set.type(lps.mod, columns=c(4:6), "binary")
添加地区级别的最小和最大限制以及一个代表->仅一个地区限制
set.constr.type(lps.mod, rep("<=", 2), constraints = 1:2)
set.constr.value(lps.mod, rhs = c(1,1.7), lhs = c(0,0.5), constraints = 1:2)
for (i in seq(1,nx)) add.constraint(lps.mod, xt=c(1,1),
type="<=",
rhs = 1, lhs=0,
indices=c(i, nx+i))
print(lps.mod)
system.time((solve(lps.mod)))
get.objective(lps.mod)