Download miễn phí Báo cáo Project - Optimizer





Mục Lục
I.Tổng quan về chương trình 2
1. Mục đích của chương trình: 2
2. Giới thiệu chung về Optimizer và thuật toán sử dụng 2
3. Giới thiệu chung về chương trình 2
II. Các khối chức năng cụ thể của chương trình 4
1.Khối nhập dữ liệu đầu vào 5
2. Khối tạo ma trận bit rate 6
3. Khối tạo ma trận công suất 8
4. Khối tạo ma trận kết nối 10
5. Khối tạo 3 ma trận thể hiện kết nối 12
6. Khối tìm đường cho kết nối 20
7. Khối sắp xếp đường đi 28
8.Khối kiểm tra đường đi 30
9. Khối cập nhật dung lượng hệ thống 32
10.Khối tạo cây 33
11. Khối in kết quả: 47
 
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

suất từng chuyển mạch tích hợp
Hàng 3 thể hiện công suất từng chuyển mạch top of rack
Vì số core ,chuyển mạch tích hợp,top of rack là không như nhau nên ta tạo ma trận với số cột lớn nhất là n.Do đó với những phần tử dư ra trong từng hàng ta mặc định bằng 0.
Ví dụ: Hệ thống có 2 chuyển mạch lõi với công suất 180 và 185 W, 4 chuyển mạch tích hợp với công suất 150,152,151,154 W, 6 chuyển mạch top of rack với công suất 123, 125,122,127,124,128 W. Ta sẽ có ma trận công suất:
180
185
0
0
0
0
150
152
151
154
0
0
123
125
122
127
124
128
3.3 Giải thuật
Tạo ma trận (3,n) với tất cả các phần tử bằng 0
Hàng 1 nhập giá trị công suất của core bằng hàm random
Hàng 2 nhập giá trị công suất của chuyển mạch tích hợp bằng hàm random
Hàng 3 nhập giá trị công suất của top of rack bằng hàm random
Với các giá trị công suất min ,max được nhập qua các tham số mi1,ma1,mi2,ma2,mi3,ma3
3.4 Thực hiện
#Hàm tạo ma trận công suất
def tao_mtcs(h,m,n,mi1,ma1,mi2,ma2,mi3,ma3):
# số core : h, số top of rack :m, số top of switch :n
#mi1, ma1, mi2, ma2, mi3, ma3 lần lượt là công suất min, max của core, top of rack, top #of switch
a=taomt(3,n)
#tạo ma trận 3 hàng n cột
for i in range(h):
a[0]=random.randint(mi1,ma1)
#tạo hàng công suất của core lấy giá trị random trong đoạn [mi1,ma1]
for i in range(m):
a[1]=random.randint(mi2,ma2)
#tạo hàng công suất của core lấy giá trị random trong đoạn [mi2,ma2]
for i in range(n):
a[2]=random.randint(mi3,ma3)
#tạo hàng công suất của core lấy giá trị random trong đoạn [mi3,ma3]
return a
4. Khối tạo ma trận kết nối
4.1 Ý nghĩa
Ma trận kết nối thể hiện thông tin đầy đủ về tất cả các yêu cầu, bao gồm:
Server nguồn
Server đích
Dung lượng yêu cầu
4.2 Định dạng ma trận
Ma trận bao gồm l hàng l cột với l là số server. Các hàng tượng trưng cho server phát. Các cột tượng trưng cho server thu.Tại vị trí [j] trong ma trận:
Nếu giá trị của ma trận khác 0 : tồn tại yêu cầu từ server i đến server j với dung lượng là giá trị của ma trận tại vị trí [j]
Nếu giá trị của ma trận bằng 0: Không tồn tại yêu cầu từ server i đến server j
4.3 Giải thuật
Trước khi chúng ta tạo ma trận kết nối chúng ta đã có ma trận bitrate thể hiện bitrate của các server phát do đó chúng ta phải tạo ma trận kết nối tương ứng với ma trận bitratr e này. Cách thức thực hiện:
Khởi tạo ma trận kết nối l hàng l cột tất cả bằng 0
Duyệt ma trận bitrate
Nếu có yêu cầu(giá trị ma trận bitrate khác 0) tại vị trí i
Random một số bất kì j (khác i) làm server thu
Gán giá trị của ma trận kết nối tại vị trí [j] là giá trị bitrate tương ứng
4.4 Thực hiện
def tao_mtketnoi(bit,l):
#Đầu vào:
#bit: ma trận bitrate
#l: số server
k=0#k : số bất kì làm server đích
kq=taomt(l,l)#Khởi tạo ma trận l hàng l cột
for i in range(l):
if bit[0]!=0:#Nếu tồn tại yêu cầu
k=i#Đầu tiên gán k=i
while(k==i):#Kiểm tra k có bằng i hay ko
k=random.randint(0,l-1)#Nếu có random ra 1 số bất kì từ 0=>l-1.Sau đó quay lên kiểm tra xem k có khác i hay ko. Nếu vẫn khác thì lặp lại đến khi k khác i
kq[k]=bit[0]#Gán giá trị
return kq
5. Khối tạo 3 ma trận thể hiện kết nối
5.1 Ý nghĩa
Ta nhận thấy rằng trong topology biểu diễn hệ thống không phải 2 chuyển mạch bất kì nào cũng nối với nhau, do đó chúng ta cần có những ma trận thể hiện sự kết nối giữa các tầng chuyển với nhau để khi tiến hành Optimizer chúng ta biết được những chuyển mạch nào có thể nối được với nhau và những chuyển mạch nào không nối với nhau.
5.2 Định dạng ma trận
Trong Topology hệ thống chúng ta thấy rõ hệ thống bao gồm các tầng theo thứ tự từ trên xuống:
Chuyển mạch lõi
Chuyển mạch tích hợp
Chuyển mạch top of rack
Server
Do đó chúng ta phải thể hiện các kết nối :
Chuyển mạch lõi-chuyển mạch tích hơp
Chuyển mạch tích hợp-chuyển mạch top of rack
Chuyển mạch top of rack-Server
Do đó chúng ta sẽ xây dựng 3 ma trận thể hiện cho 3 kết nối phải thể hiện. Mỗi tầng có định dạng như sau:
Ma trận thể hiện kêt nối giữa tầng i và tầng j . Trong đó tầng i nằm phía trên tầng j. Tầng i có a chuyển mạch, mỗi chuyển mạch ở tầng i nối với b chuyển mạch ở tầng j.Ta sẽ có ma trận a hàng b+1 cột trong đó:
Cột đầu tiên của mỗi hàng biểu diễn số thứ tự của chuyển mạch ở tầng i
Các cột từ thứ 2 đến hết của mỗi hàng thể hiện số thứ tự của chuyển mạch ở tầng j có kết nối với i.
Ví dụ: Ta có sơ đồ kết nối giữa 2 tầng như sau:
Ta thấy tâng i ( phía trên) có 3 chuyển mạch. Tầng j ( phía dưới) có 6 chuyển mạch.Mỗi chuyển mạch ở tầng i có 4 chuyển mạch ở tầng j nối vào nó. Chuyển mạch thứ 1,2,3, 4 của tầng j nối với chuyển mạch 1 của tầng i. Chuyển mạch 1,2,3,4 của tầng j nối với chuyển mạch 2 của tầng i. Chuyển mạch 3,4,5,6 của tầng j nối với chuyển mạch 3 của tầng i.Từ đó ta có ma trận :
1
1
2
3
4
2
1
2
3
4
3
3
4
5
6
5.3 Giải thuật và thực hiện
5.3.1 Ma trận thể hiện kết nối giữa tầng chuyển mạch lõi-chuyển mạch tích hợp
a ) Giải thuật
Ở lớp kết nối này mỗi chuyển mạch lõi đều nối với tất cả các chuyển mạch tích hơp.
Ví dụ: ta có 2 chuyển mạch lõi và 4 chuyển mạch tích hợp ta sẽ có sơ đồ kết nối:
Do đó ta có giải thuật:
b) Thực hiện
def tao_core(m,h):
#Đầu vào:
#m: số chuyển mạch tích hợp
#h: số chuyển mạch lõi
i=0
j=0
a=taomt(h,m+1)#Tạo ma trận h hàng m+1 cột
for i in range(h):
a[0]=i+1#Gán cột đầu tiên mỗi hàng là số thứ tự của chuyển mạch tầng core
for i in range(h):
for j in range(1,m+1,1):
a[j]=j#Gán các cột còn lại là các chuyển mạch tích hợp nối đến core
return a
5.3.2 Ma trận thể hiện kết nối giữa tầng chuyển mạch tích hợp-chuyển mạch top of rack
a. Giải thuật
Ở tầng này mỗi chuyển mạch ở tầng i(tầng tích hợp) nối với f chuyển mạch ở tầng j(tầng top of rack).f được nhập từ bàn phím.Ta thực hiện như sau:
Tạo 1 ma trận m hàng f+1 cột
Gán cột đầu tiên của mỗi hàng là số thứ tự của chuyển mạch ở tầng chuyển mạch tích hợp
Gán các cột còn lại là số thứ tự của chuyển mạch ở tầng top of rack nối với chuyển mạch ở tầng tích hợp nằm ở cột đầu tiên của hàng đó.Ta sẽ thực hiện gán như sau:
Tính d=n/m(n: số chuyển mạch top of rack, m: số chuyển mạch tích hợp)
Ta thấy trên hình chuyển mạch tích hợp thứ 1,2....3 sẽ được gán với f(f=3) chuyển mạch ở tầng dưới bắt đầu từ chuyển mạch 1,3,5 .Nếu đặt x là số thứ tự chuyển mạch ở tầng trên ( tầng i) thì ta có vị trí đầu tiên được gán của một chuyển mạch ở tầng i là:(x-1)*d+1
Chuyển mạch thứ 4(chuyển mạch cuối) sẽ được gán với f chuyển mạch bắt đầu từ vị trí cuối cùng đếm ngược lại
b. Thực hiện
def tao_tichhop(n,m,f):
#Đầu vào:
#n: số chuyển mạch top of rack
#m: số chuyển mạch tích hợp
#f: Số chuyển mạch top of rack nối với 1 chuyển mạch tích hợp
i=0
j=0
d=n/m#Tính d
a=taomt(m,f+1)#Tạo ma trận m hàng f+1 cột
for i in range(m):
a[0]=i+1#Gán hàng đầu tiên là số thứ tự của chuyển mạch ở tầng tích hợp
for i in range(m-1):#Với các chuyển mạch ở vị trí 1...m-1
for j in range(1,f+1,1):#Mỗi chuyển mạch được gán với f chuyển mạch ở tầng dưới
a[j]=i*d+j#Gán các chuyển mạch bắt đầu từ vị trí i*d+1 đến i*d+f cho chuyển mạch th
 

Các chủ đề có liên quan khác

Top