装配线调度问题
2014-08-05 13:49
344 查看
参考:http://www.cnblogs.com/submarine/archive/2011/06/11/2078636.html
装配一辆汽车,有两条装配线分别有n个装配点,每条装配线在进出所花时间为e[i],x[i] (i=0,1),每个装配点所需时间a[i][j](i=0,1;j=1,2,...,n),从一条装配线i的第j个装配点到另一条装配线的第j+1个装配点所需时间t[i][j](i=0,1;j=1,2,...,n-1).
View Code
装配一辆汽车,有两条装配线分别有n个装配点,每条装配线在进出所花时间为e[i],x[i] (i=0,1),每个装配点所需时间a[i][j](i=0,1;j=1,2,...,n),从一条装配线i的第j个装配点到另一条装配线的第j+1个装配点所需时间t[i][j](i=0,1;j=1,2,...,n-1).
# define MAX n; int way[3][MAX + 1]; void FindWay(int e[3], int a[3][MAX + 1], int t[3][MAX + 1], int x[3], int sum[3][MAX + 1]) { int i, j, k; sum[1][1] = e[1] + a[1][1]; sum[2][1] = e[2] + a[2][1]; for (i = 2; i <= MAX; i++) { //line 1 if (sum[1][i - 1] + a[1][i] > sum[2][i - 1] + t[2][i - 1] + a[1][i]) { sum[1][i] = sum[2][i - 1] + t[2][i - 1] + a[1][i]; way[1][i] = 2;//way[1][i]记录station[1][i]的前一个station所属的line } else { sum[1][i] = sum[1][i - 1] + a[1][i]; way[1][i] = 1; } //line 2 if (sum[2][i - 1] + a[2][i] > sum[1][i - 1] + t[1][i - 1] + a[2][i]) { sum[2][i] = sum[1][i - 1] + t[1][i - 1] + a[2][i]; way[2][i] = 1; } else { sum[2][i] = sum[2][i - 1] + a[2][i]; way[2][i] = 2; } } if (sum[1][MAX] + x[1] > sum[2][MAX] + x[2]) { cout << "mintime:" << sum[2][MAX] + x[2] << endl; PrintWay(2); } else { cout << "mintime:" << sum[1][MAX] + x[1] << endl; PrintWay(1); } } void PrintWay(int exitline)//反序输出 { int i; cout << "line:" << exitline << "-->" << "station:" << MAX << endl; for (i = MAX; i >=2 ; i--) { cout << "line:" << way[exitline][i] << "-->" << "station:" << i - 1 << endl; exitline = way[exitline][i]; } }
View Code
相关文章推荐
- 动态规划--装配线调度问题
- 流水线调度最优问题(装配线调度问题)动态规划 O(n)时间(线性时间)C++实现
- 装配线调度问题のBrute Force解法~~~~
- 装配线调度问题 算法导论动态规划P194
- 算法导论15.1 装配线调度问题
- 动态规划--装配线调度问题
- 动态规划之装配线调度问题
- 动态规划——装配线调度问题
- 【算法导论】动态规划--装配线调度问题
- 装配线调度问题的算法解析和验证
- 算法导论-装配线调度问题
- 动态规划——装配线调度问题
- 动态规划——装配线调度问题
- 算法导论15.1节 装配线调度问题
- 算法导论 第15章 动态规划 装配线调度问题
- 装配线调度问题
- 动态规划 - 装配线调度问题
- 装配线调度问题(算法导论+动态规划)
- 动态规划--装配线调度问题
- 《算法设计》第15章-动态规划—装配线调度问题