我有以下问题:
我有6种不同的操作模式,我计算了每小时的成本。(我将此信息保存在一个矩阵中,该矩阵有6列,与小时数一样多的行。如果操作模式不可行,我会将成本设置为无穷大。)每次想要更改操作模式时,都会产生额外的成本,这取决于您从哪种操作模式切换到哪种操作模式。
现在我想计算最优时间表,但我还不知道如何计算/实现它。我正在使用Matlab和matlab优化工具箱。
我已经走这么远了。解x必须在{1,..6}^n中,目标函数为:
其中B是包含切换操作模式的成本的矩阵。
提前感谢!
发布于 2016-05-04 01:04:45
这类调度模型可以表示为混合整数规划(Mixed Integer Programming)模型,并可以用混合整数规划求解(如MatLab中的intlinprog )。对于更大的问题,我们只能期望好的解决方案,而不是最优的解决方案,通常使用元启发式(如通用算法)。
让我试一试吧。我认为我们不能只使用最便宜的模型并使用所有6个小时,而是我们需要运行所有6个不同的模式,每个模式一个周期。我们唯一可以改变的就是排序。即,我们有一个纯粹的排序问题。(我希望这是对您问题的正确解读)。我们可以简化你的函数

通过观察,我们可以去掉与A(k)有关的所有项。我们做所有的模式,所以这是恒定的。这是一个事实的结果,即唯一变化的是事情完成的顺序。
我尝试了一个快速的MIP公式,它似乎起作用了:

通常有许多可能的配方,这只是其中之一。我的随机转换成本为c(i,j)的结果如下:

将这个线性模型转换为Matlabs intlinprog的输入应该不是很困难。模型中缺少的是,某些模式在某些时期是不允许的。对于这些情况,我们可以通过要求x(i,t)=0来解决这个问题。
https://stackoverflow.com/questions/36999880
复制相似问题