Lựa chọn mơ hình phát triển hệ thống 25

Một phần của tài liệu Thuật toán nhánh cận trên môi trường song song (Trang 25 - 33)

Phân lp thut tốn nhánh cn song song

Cĩ ba cách tiếp cận chính trong việc thiết kế thuật tốn nhánh cận song song.

- Song song loại 1 : Tiến hành song song hĩa các hoạt động trên bài tốn con, ví dụ như tính cận song song trên bài tốn con. Cách tiếp cận này khơng ảnh hưởng tới cấu trúc chung của thuật tốn nhánh cận.

- Song song loại 2 : Xây dựng cây nhánh cận một cách song song bằng việc thực hiện các hoạt động trên các bài tốn con một cách đồng thời. Vì thế nĩ cĩ thể ảnh hưởng tới việc thiết kế thuật tốn.

- Song song loại 3 : Một vài cây nhánh cận được xây dựng một cách song song. Các cây được đặc thù bởi các hoạt động khác nhau (phân nhánh, tính cận, kiểm tra ước lượng hay lựa chọn), và thơng tin sinh ra khi xây dựng một cây cĩ thể được sử dụng cho việc xây dựng cây khác.

Dưới đây ta trình bày cách tiếp cận song song loại 2 để thiết kế thuật tốn nhánh cận song song.

La chn mơ hình phát trin thut tốn

Cĩ hai hệ thống tính tốn song song chủ yếu là bộ nhớ dùng chung và bộ nhớ phân tán. Chúng tơi lựa chọn hệ thống bộ nhớ phân tánđể tiến hành thiết kế thuật tốn vì một số lý do sau :

- Lý do đầu tiên xuất phát từ thực tếđĩ là cĩ thể tiến hành các thuật tốn song song trên mạng nối kết ethernet đơn giản bằng kỹ thuật chuyển thơng báo. Đây là một cách kinh tếđể cĩ một hệ thống song song.

- Thứ hai đĩ là số lượng bộ xử lý trong các hệ thống bộ nhớ dùng chung là giới hạn.

Các mơ hình phân biệt với nhau bởi cách quản lý và điều phối tập các bài tốn con nằm trong cơ sở dữ liệu chính của thuật tốn. Mơ hình đầu tiên cĩ cơ sở dữ liệu tập trung. Nghĩa là máy chủ sẽ lưu trữ tập các bài tốn con và điều phối chúng tới các máy thợ rỗi. Mơ hình cĩ ưu điểm dễ xây dựng, dễ quản lý nhưng khối lượng cơng việc cũng như khơng gian bộ nhớ trên máy chủ là tương đối lớn đồng thời lưu lượng truyền thơng trên mạng cũng lớn. Mơ hình thứ hai cĩ cơ sở dữ liệu phân tán, nghĩa là các bài tốn con lúc này sẽ được lưu một cách cục bộ tại các máy thợ và sẽ được chuyển giao một cách trực tiếp giữa các máy thợ dưới sự điều phối của máy chủ. Với mơ hình này ngồi chiến lược lựa chọn nút để khai thác khơng gian lời giải một cách cĩ hiệu quả, hệ thống cịn phải thực hiện các chiến lược để cân bằng cơng việc giữa các máy thợ sao cho khơng xảy ra tình trạng cĩ máy thợ phải thực hiện quá nhiều cơng việc trong khi các máy khác rỗi.

Chương 3 : S DNG THUT TỐN NHÁNH CN ĐỂ GII QUYT BÀI TỐN TSP

Trong chương này chúng tơi đưa ra các kết quả thực nghiệm nhằm đánh giá hiệu suất của mơ hình thuật tốn nhánh cận song song đề xuất ở trên. Thuật tốn tuần tựđược lựa chọn để so sánh cĩ cùng cách tính cận, phân nhánh và lựa chọn bài tốn con như trong mơ hình thuật tốn song song.

* Bài tốn TSP (Bài tốn người du lch) 3.1. Gii thiu bài tốn

Bài tốn người du lịch(TSP) là bài tốn tiêu biểu trong việc sử dụng thuật tốn nhánh cận song song. Bài tốn được phát biểu như sau:

Một người du lịch cĩ trong tay bản đồ gồm n thành phố và chi phí đi lại giữa chúng, các con đường này đều là đường 1 chiều(nghĩa là chi phi từ A đến B sẽ khác khoảng cách từ B đến A). người du lịch muốn làm một hành trình đi qua tất cả các thành phố với điều kiện mỗi thành phố chỉ đi qua một lần, rồi quay trở về thành phố xuất phát. Bài tốn đặt ra là tìm đường đi cho người du lịch sao cho tổng chi phí là nhỏ nhất.

3.2. Định nghĩa bài tốn

Cho n thành phố và một ma trận chi phí của các đường đi. Hãy tìm đường đi sao cho tổng chi phí là nhỏ nhất đảm bảo điều kiện của bài tốn

• Xây dựng cơng thức :

Hành trình : T π1 → T π2 → …… → T πn Chi phí : f(π) = c π1, π2 + c π2, π3 + …. + c πn, π1 Π : tập tất cả các hốn vị

=> min {f(π) : π ∈Π }

• Dữ liệu vào cho trong file TSP.DAT, trong đĩ: - Dịng đầu: Chứa N là số lượng các thành phố

- Tiếp theo : Ma trận c(n*n) trong đĩ c(i,j)= chi phí đi lại từ thành phố i đến thành phố j

Mỗi giá trị chi phí khác nhau được ghi cách nhau một dấu cách trắng

• Kết qủa: Ghi trực tiếp lên file TSP.DAT, trong đĩ:

- Dịng đầu ghi tổng chi phí mà người đĩ đi hết bằng cách tốt nhất - Dịng tiếp theo đưa ra phươg án tối ưu nhất qua các thành phố

3.3. S dng thut tốn nhánh cn để gii bài tốn TSP

Để đi tìm lời giải chính xác cho bài tốn TSP khơng cịn cách nào khác ngồi việc chúng ta phải duyệt tất cả các lời giải cĩ thể, tuy nhiên số lượng này là quá lớn (= n!), trong đĩ rất lãng phí các lời giải khơng cần thiết. Cách tiếp cận hiệu quả nhất từ trước tới nay trong chiến lược này đĩ chính là thuật tốn nhánh cận(cĩ thể cắt các nhánh ở các lời giải khơng cần thiết) * Tính cn và phân nhánh - Tính cận: Cốđịnh thành phố 1 • Tìm cực tiểu của hàm : f(x2, x3, . . , xn) = c[1,x2] + c[x2,x3] + ... + c[xn,1] => min x2, x3, . . , xn là hốn vị của các số 2, 3, …, n

• Giả sử cĩ phương án bộ phận (u1,u2, …, uk)

– Chi phí phải trả là : σ = c[1,u2] + c[u2,u3] + ... + c[uk-1, uk]

– Cận dưới là : g (u1,u2, …, uk) = σ + (n-k+1)*cmin (adsbygoogle = window.adsbygoogle || []).push({});

- Thuật tốn phân nhánh dựa vào thuật tốn liệt kê các hốn vị của n phần tử{1, 2, ....,

n}. Nghĩa là nếu bài tốn con của ta cĩ lời giải bộ phận là c1, c2, ...., ci. Thì các bài tốn con sinh ra cĩ lời giải bộ phận (c1, c2, ...., ci-1+1), ..., (c1, c2, ...., n k + i).

* Các lớp xây dựng cho bài tốn TSP

Như chúng ta đã biết, bài tốn yêu cầu tìm giải pháp tốt nhất cho người du lịch sao cho chi đi qua mỗi thành phố một lần và tổng chi phí quãng đường là nhỏ nhất. Dưới đây là khai báo lớp Problem cho bài tốn TSP:

• Lớp Problem lưu giữ số lượng thành phố và ma trận giá trị giữa các thành phố

class Problem { private:

Number N; // S lượng thành ph trong bài tốn Matrix c; // Ma trn giá tr gia các đỉnh public:

Problem (); ...

};

• Lớp bài tốn con diễn tả một bài tốn bộ phận. Một bài tốn con được xác định bởi các dữ liệu sau : đỉnh đầu iV, đỉnh cuối eV của lời giải bộ phận, và cận dưới costứng với lời giải bộ phận sol .

private:

unsigned iV, /// đỉnh đầu tiên eV, /// đỉnh kết thúc trong hành trình cost; /// gía tr tht

Tset visitedSet; /// các thành phốđến thăm Solution sol; /// giá tr tt nht hin thơi

public:

SubProblem ();

... };

Lớp bài tốn con phải cung cấp các hàm chính sau :

- InitSubProblem(pbm) : sinh ra bài tốn con ban đầu vi iV = 0;

eV = 0; cost = 0;

- Các hàm tính cn dưới (LowerBound), tính cn trên (UpperBound), phân nhánh(Branch). • Lớp Solution lưu giữ lời giải hiện tại Class Solution() { ……. }

* Trên mơi trường tuần tự

Khi thực thi trên mơi trường tuần tự người dùng chỉ cần gọi phương thức run() của lớp Solver_Seq: void Solver_Seq::run() { if (dir == Minimize) { minimizing(); } else { maximizing(); } }

* Trên mơi trường song song

Tương tự, khi đĩ phương thức run() của lớp Solver_Lan sẽ được gọi:

void Solver_Lan::run() {

minimizing(); }

3.4. Chương trình thc thi

Đầu vào của chương trình là tệp tsp.dat lưu số đỉnh, trọng số khoảng cách giữa các đỉnh.

TÀI LIU THAM KHO (adsbygoogle = window.adsbygoogle || []).push({});

[1]. Nguyễn Đức Nghĩa, Nguyễn Tơ Thành. Tốn ri rc. Nhà xuất bản Giáo dục, 1999. [2]. Nguyễn Đức Nghĩa. Ti ưu hĩa (Quy hoch tuyến tính và ri rc). Nhà xuất bản Giáo

dục, 1999.

[3]. Nguyễn Đức Nghĩa. Tính tốn song song. Bài giảng 2003.

[4]. Nguyễn Thanh Thủy, Lê Đăng Hưng, Tạ Tuấn Anh, Nguyễn Hữu Đức. Lp trình hướng đối tượng vi C++. Nhà xuất bản khoa học kỹ thuật, 1999.

[5]. Nguyễn Lê Anh, Phạm Thế Long. X lý song song. Bài giảng 2005.

[6]. Alberto CESELLI. Two exact algorithms for the capacitated p-median problem. Quarterly Journal of the Belgian, French and Italian Operations Research Societies. 2003

[7]. Alberto Ceselli. Branch-and-price algorithms for partitioning problems. Ph.D. Thesis, 2005

[8]. Alberto CESELLI, Giovanni RIGHINI. Algoritmi Branch & Bound e Branch & Price per il problema delle p-mediane con capacità. 2001

[9]. Alan Edelman. Applied Parallel Computing. MIT 2004. [10]. Alan Edelman. Parallel Scientific Computing. MIT 2002.

Một phần của tài liệu Thuật toán nhánh cận trên môi trường song song (Trang 25 - 33)