首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPLEX优化-在一台机器上规划产品序列

CPLEX优化-在一台机器上规划产品序列
EN

Stack Overflow用户
提问于 2016-08-17 07:21:21
回答 1查看 173关注 0票数 0

这就是我的问题。比方说,我有10种产品要打包。所有10种产品的包装都在同一条生产线/机器上完成。

不同的产品有不同的设置时间。例如,从产品1到产品2的设置时间(您必须调整高度,并做一个小清理)是30分钟。从产品2到产品1(只需调整高度,无需清理),安装时间为15分钟。从产品1到产品3,需要5分钟,等等。

我正在尝试最小化设置时间。

我该如何解决这个问题呢?我的实际问题有100个不同的产品(所以是一个100 x 100的矩阵)

这真的很类似于旅行商问题。不同之处在于,您完全不必离开产品1(或TSP中的城市A),也不需要在结束时返回到产品1。

这是我过去用过的TSP代码。我可以修改它来解决我的问题吗?或者有没有其他方法可以做到这一点?

谢谢!

代码语言:javascript
复制
// ***********************
// Parameters
// ***********************

int     N       = ...;

range   V  = 1..N;

// arcs

tuple       arc        {int v_dep; int v_arr;}
setof(arc) A     = {<i,j> | i,j in V: i != j};

// Matrix Setup Time

float         D[V][V] = ...;

// ***********************
// Decision variable
// ***********************


// x [<i,j>]= 1 if node j follows i

dvar boolean x[A];

// flow conversion

dvar float+ y[A];


// ***********************
// Objective
// ***********************

// Minimize setup times

minimize sum (<i,j> in A) D[i][j]*x[<i,j>];




subject to {


 forall (v in V)

   sum (a in A: a.v_arr == v) x[a] == 1;


 forall (v in V)

   sum (a in A: a.v_dep == v) x[a] == 1;



 forall (v in V:v != 1)

 sum (a in A: a.v_arr == v) y[a]-sum (a in A: a.v_dep == v) y[a] == 1;


  sum (a in A: a.v_arr == 1) y[a]-sum (a in A: a.v_dep == 1) y[a] == -(N-1);

 forall (a in A)

 y[a] <= N*x[a];

 };
EN

回答 1

Stack Overflow用户

发布于 2016-08-30 23:49:09

如果我很好地理解你的问题,你可以通过创建一个“产品0”来将它简化为TSP,从产品0到产品i的成本为0,从产品1到产品0的成本为0。

那么你的打包问题就变成了一个以"Product 0“开始并以它结束的TSP。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38985918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档