分支限界法批处理调度问题范本模板Word文档下载推荐.docx
- 文档编号:21243673
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:18
- 大小:122.44KB
分支限界法批处理调度问题范本模板Word文档下载推荐.docx
《分支限界法批处理调度问题范本模板Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《分支限界法批处理调度问题范本模板Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
T〉
7.class
MinHeap
8.{
9.
template<
10.
friend
11.
public:
12.
MinHeap(int
maxheapsize
=
10);
13.
~MinHeap(){delete
[]heap;
}
14.
15.
int
Size()
const{return
currentsize;
16.
T
Max(){if(currentsize)
return
heap[1];
}
17.
18.
MinHeap〈T>
&
Insert(const
T&
x);
19.
MinHeap<
T>
&
DeleteMin(T
&x);
20.
21.
void
Initialize(T
x[],
size,
ArraySize);
22.
Deactivate();
23.
output(T
a[],int
n);
24.
private:
25.
currentsize,
maxsize;
26.
*heap;
27.};
28.
29.template
〈class
30.void
MinHeap〈T〉:
:
a[],int
n)
31.{
32.
for(int
i
1;
<
n;
i++)
33.
cout
〈
a[i]
〈<
”
”;
34.
endl;
35.}
36.
37.template
38.MinHeap<
:
maxheapsize)
39.{
40.
maxsize
maxheapsize;
41.
heap
new
T[maxsize
+
1];
42.
currentsize
0;
43.}
44.
45.template<
46.MinHeap〈T〉&
T〉:
T&
x)
47.{
48.
if(currentsize
==
maxsize)
49.
{
50.
*this;
51.
52.
++currentsize;
53.
while(i
!
1
&&
x
heap[i/2])
54.
{
55.
heap[i]
heap[i/2];
56.
/=
2;
57.
58.
59.
heap[i]
x;
60.
61.}
62.
63.template〈class
64.MinHeap<
DeleteMin(T&
65.{
66.
0)
67.
68.
cout〈<
”Empty
heap!
"
69.
70.
71.
72.
heap[1];
73.
74.
y
heap[currentsize—-];
75.
1,
ci
76.
while(ci
〈=
currentsize)
77.
78.
if(ci
&&
heap[ci]
>
heap[ci
1])
79.
80.
ci++;
81.
82.
83.
if(y
heap[ci])
84.
85.
break;
86.
87.
heap[ci];
88.
ci;
89.
*=
2;
90.
91.
92.
y;
93.
*this;
94.}
95.
96.template〈class
97.void
size,
ArraySize)
98.{
99.
delete
100.
101.
size;
102.
ArraySize;
103.
104.
/
〉=
1;
i—-)
105.
106.
heap[i];
107.
c
2
*
i;
108.
while(c
109.
110.
if(c
heap[c]
heap[c
1])
111.
c++;
112.
heap[c])
113.
break;
114.
2]
heap[c];
115.
116.
117.
heap[c
2]
118.
119.}
120.
121.template<
122.void
Deactivate()
123.{
124.
125.}
2、6d9.cpp
[cpp]
viewplain
copy
1.//批作业调度问题
优先队列分支限界法求解
2.#include
”stdafx。
h"
3.#include
”MinHeap2。
h”
4.#include
〈iostream>
5.using
namespace
std;
6.
Flowshop;
8.class
MinHeapNode
9.{
operator
int()
const
bb;
private:
Init(int);
NewNode(MinHeapNode,int,int,int,int);
s,
//已安排作业数
f1,
//机器1上最后完成时间
f2,
//机器2上最后完成时间
sf2,
//当前机器2上完成时间和
bb,
//当前完成时间和下界
*x;
//当前作业调度
25.};
27.class
Flowshop
28.{
29.
main(void);
30.
public:
31.
BBFlow(void);
Bound(MinHeapNode
E,int
f1,int
f2,bool
**y);
Sort(void);
35.
n,
//作业数
**
M,
//各作业所需的处理时间数组
37.
**b,
//各作业所需的处理时间排序数组
38.
**a,
//数组M和b的对应关系数组
39.
*bestx,
//最优解
bestc;
//最小完成时间和
bool
**y;
//工作数组
42.};
43.
44.template
Type>
45.inline
Swap(Type
&a,
Type
b);
46.
47.int
main()
48.{
n=3,bf;
M1[3][2]={{2,1},{3,1},{2,3}};
**M
int*[n];
**b
int*[n];
**a
**y
bool*[n];
*bestx
int[n];
i=0;
i〈=n;
M[i]
int[2];
61.
b[i]
int[2];
a[i]
int[2];
63.
y[i]
bool[2];
64.
65.
cout<
”各作业所需要的时间处理数组M(i,j)值如下:
”〈<
i=0;
i〈n;
j=0;
j〈2;
j++)
M[i][j]=M1[i][j];
i<
n;
〈"
(”;
j=0;
j〈2;
cout〈〈M[i][j]<
”;
〈”)"
;
cout〈〈endl;
flow;
flow.n
flow。
M
M;
b
b;
flow.a
a;
bestx
bestx;
bestc
1000;
//给初值
BBFlow();
94.
”最优值是:
”<
〈flow。
bestc<
〈endl;
96.
最优调度是:
;
97.
98.
cout〈〈(flow.bestx[i]+1)<
endl;
delete[]
M[i];
delete[]
b[i];
a[i];
y[i];
112.}
114.//最小堆节点初始化
115.void
MinHeapNode:
Init(int
116.{
int[n];
i〈n;
119.
x[i]
i;
121.
122.
s
0;
123.
f1
f2
125.
sf2
126.
bb
127.}
128.
129.//最小堆新节点
130.void
NewNode(MinHeapNode
Ef1,int
Ef2,int
Ebb,int
131.{
132.
int[n];
133.
134.
135.
E.x[i];
136.
137.
Ef1;
138.
Ef2;
139.
E.sf2
f2;
140.
Ebb;
141.
E。
142.}
143.
144.//对各作业在机器1和2上所需时间排序
145.void
Flowshop:
Sort(void)
146.{
147.
*c
int[n];
148.
149.
150.
151.
152.
b[i][j]
M[i][j];
153.
c[i]
154.
155.
156.
n-1;
157.
158.
k=n-1;
k>
k—-)
159.
160.
if(b[k][j]〈b[k—1][j])
161.
162.
Swap(b[k][j],b[k—1][j]);
163.
Swap(c[k],c[k-1]);
164.
165.
166.
167.
168.
169.
170.
a[c[i]][j]
171.
172.
173.
174.
[]c;
175.}
176.
177.//计算完成时间和下界
178.int
Flowshop:
E,int
f2,bool
**y)
179.{
180.
k=0;
k〈n;
k++)
181.
182.
183.
184.
y[k][j]
false;
185.
186.
187.
188.
k=0;
k<
=E.s;
189.
190.
j<
191.
192.
y[a[E。
x[k]][j]][j]
true;
193.
194.
195.
196.
M[E.x[E.s]][0];
197.
((f1>
f2)?
f1:
f2)+M[E.x[E.s]][1];
198.
199.
s1
0,s2
0,k1
n-E。
s,k2
n—E.s,f3
f2;
200.
201.
//计算s1的值
202.
203.
204.
if(!
y[j][0])
205.
206.
k1—-;
207.
if(k1
n-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分支 限界 批处理 调度 问题 范本 模板