数据分析偶尔也会遇到运筹优化问题,例如选址、人员排班等。
运筹优化是一门成熟学科,现在有很多开源的工具,例如optaplanner、Google的or-tools等。R语言提供了一个包ompr,可以方便地建模和求解混合整数规划问题。
ompr提供了一个比较完整、开箱即用的选址解法:The Warehouse Location Problem • ompr (dirkschumacher.github.io)
建模的关键在于明确目标函数和约束条件。
这里x和y都是变量。
y是一个向量,代表所有备选的仓库。yi=1,表示第i个仓库被选中了。
x是一个矩阵,是客户到仓库的映射。xij=1,表示第i个客户由第j个仓库配送。
所有目标函数就是运输成本+固定成本最低。
约束条件:每个客户都由同一个仓库配送且只有一个仓库配送。在实际问题中,我们可能还要再加上一个条件:仓库的数量,例如在一个城市选择一个最优的仓库。
这个选址的模型,需要两个前提条件:客户已知、备选仓库已知。在实际问题中,如果没有调研仓库的位置,可以采用简单粗暴的网格方法寻找最优位置。开源的网