我有以下问题:
我有6种不同的操作模式,我计算了每小时的成本。 (我将这些信息保存在一个矩阵中,列数为6列,行数与小时数相同。如果无法使用操作模式,我将成本设置为无穷大。)每次要更改操作模式时都会产生额外费用,这取决于您切换操作模式的操作模式。
现在我想计算最佳时间表,但我还不知道如何计算/实现它。我使用Matlab和matlab优化工具箱。
我到目前为止。 解x必须在{1,.. 6} ^ n中,目标函数是:
B是包含切换操作模式成本的矩阵。
提前致谢!
答案 0 :(得分:0)
这些调度模型可以表示为MIP(混合整数规划)模型,可以使用MIP求解器(如MatLab中的intlinprog
)求解。对于较大的问题,我们只希望获得良好的解决方案而不是最佳解决方案,通常会使用元启发式(例如通用算法)。
让我试一试。我假设我们不能只使用最便宜的模型并使用它全部6个小时,而是我们需要运行所有6种不同的模式,每个模式一个周期。我们唯一可以改变的是订购。即我们有一个纯粹的排序问题。 (我希望这是对你的问题的正确解读)。我们可以简化您的功能
通过观察我们可以用A(k)删除所有项。我们做所有模式,所以这是不变的。这是事实的结果,唯一不同的是事情的完成顺序。
我尝试了一种快速的MIP配方,似乎有效:
通常有许多可能的配方,这只是一个。随机转换成本c(i,j)的结果如下:
将此线性模型转换为Matlabs intlinprog
的输入应该不是很困难。模型中缺少的是某些时段不允许某些模式。我们可以通过要求x(i,t)=0
来解决这个问题。