组合OP(多维背包)的求解算法

时间:2015-01-03 12:54:04

标签: algorithm optimization combinatorics knapsack-problem

我为优化问题创建了以下数学抽象。

O - Order
C - customer
P - Producer
S - Productionslot(related to producer)

pc - Productioncost per slot
tc - Transportcost for an order produceded in a specific slot
a - Productamount per order
ca - Slotcapacity
e - Endtime of a slot
dt - Latest order arrival time
tt - Transporttime

Decisionvariables:
x - Produce in a specific slot
y - Produce an order in an specific slot

必须最小化以下成本函数:

formula

意味着每个订单必须在一个生产槽中处理。取决于连接到此插槽的生产商及其与客户的距离。运输成本出现。如果在一个槽中产生至少一个订单,则会产生某种固定的生产成本。应尽量减少这笔费用的总和。

以下条件适用:

formula

formula

formula

formula

这种优化必须每天重复,使用不同的订单集(o和a会有所不同)。 每个制片人将有4到5个他生产的插槽。生产商的数量是20.订单是约100个。

最后一个条件可用于提前减少问题。含义将所有y设置为0,无法到达到达时间,因为到达时间是在生产时间加上运输时间之前。

据我所知,这个问题及其大小不容易使用,只需迭代所有可行的解决方案。即使您使用条件2强烈减少“y”的组合,我将留下大约(5 * 20)^ 200个解决方案来检查(将每个订单分配给每个槽并检查关于休息的所有订单关联组合条件履行和成本函数值)。

如果我做一些数学运算,我可以将问题形成为非常接近于多维背包问题。 例如。   - 将目标函数乘以-1得出最大问题。   - 在两个条件下拆分条件2以获得不太相等的条件(乘以大于-1的条件)   - 将条件3中的容量项移到左侧

但这些操作导致部分负系数。文献中发现的接近MDK的算法通常假设它们是正定的,这是一个问题吗? 有人有一个很好的分支和方法来捕捉问题吗?或者我是否必须使用文献中经常提到的I Metaheuristic,并且有人使用特定的方法来解决类似的问题,然后告诉我他/她的经历?

在某种情况下,是否还有其他一些moddeling技巧可以降低问题的复杂性。

0 个答案:

没有答案