Bài toán quy hoạch tuyến tính

Một phần của tài liệu giải hệ phƣơng trình tuyến tính kích thước lớn trên nền tảng grid computing (Trang 60)

Có thể tạm định nghĩa quy hoạch tuyến tính là lĩnh vực toán học nghiên cứu các bài toán tối ưu mà hàm mục tiêu (vấn đề được quan tâm) và các ràng buộc (điều kiện của bài toán) đều là hàm và các phương trình hoặc bất phương trình tuyến tính.

Thuật toán được áp dụng ở đây là thuật toán Newton tổng quát dùng để giải bài toán quy hoạch tuyến tính dạng chuẩn sau đây :

  * min T , n: , 0n x X f c x X x Ax b x       (P)

Mục đích của bài toán: với các aij, bi là biết trước, cần tìm xj (j=0,1….,n) sao cho f là nhỏ nhất.

Bài toán quy hoạch tuyến tính có tính ứng dụng rất cao trong công việc của các nhà tổ chức, thiết kế kĩ thuâ ̣t , quản lí điều hành công việc , ... và ngày càng được ứng dụng rô ̣ng rãi trong nhiều lĩnh vực khác nhau của cuô ̣c sống . Các lớp bài toán quy hoạch tuyến tính thông dụng hiện nay bao gồm bài toán lập kế hoạch, bài toán vận tải, bài toán túi xách, bài toán đóng gói, bài toán lập lịch biểu... Ngoài ra, có rất nhiều bài toán thực tế được mô hình hóa dưới dạng bài toán quy hoạch tuyến tính, ví dụ như các bài toán tìm

56

cấu trúc tối ưu của chuỗi sinh học, các mô hình môi trường thật, các bài toán cơ học hệ thống lớn, v.v.. Với khối lượng thông tin ngày càng tăng, các kích thước của các bài toán ứng dụng thực tế cũng ngày càng tăng, thế nên việc xử dụng các thuật toán truyền thống không đem lại kết quả mong đợi. Chính vì lý do này một thuật toán mới được đề ra cho phép giải các bài toán quy hoạch tuyến tính kích thước lớn (~ 106 biến, ~103 ràng buộc). Thuật toán này đã được thực hiện trên nền tảng tính toán song song sử dụng MPI. Thuật toán ban đầu sử dụng thuật toán gradient liên hợp, sau đó lấy kết quả và sử dụng tiếp thuật toán Newton tổng quát. Có 6 bước làm như sau :

1. Xác định dự đoán ban đầu x0 và p p0,  p0. 2. Tính gradient , ( , , ) ( T ) k k s s k S G p x b A x A p c p          

ở vòng lặp thứ k của phương pháp Newton để giải bài toán tối đa hóa không ràng buộc . Ở đây s là số thứ tự vòng lặp ngoài.

3. Xác định ma trận Hessian tổng quát cho (18)

T

k k

H IAD A ở đây A là ma trận m n , ma trận chéo n n

k

D   được xác định như sau

1 if ( ) 0 ( ) 0 if ( ) 0 T i ii s k k T i k k x A p c D x A p c             Như vậy ma trận m m k H   .

4. Hướng tối đa hóa xấpxỉ pđược tìm như là nghiệm của hệ phương trình tuyến tính

.

k k

Hp GHk là ma trận dương, đối xứng và bán xác định nên chúng ta có thể dùng phương pháp gradient liên hợp có tiền điều kiện để giải phương trình tuyến tính (21). Phần chéo của ma trận Hk được dùng như tiền điều kiện (preconditioner) cho các bước gradient liên hợp.

57

5. Xác định pk1  pk k p, với klà kích thước bước được chọn theo quy tắc Armijo:

max ( , , )

k S pk p xs

   

Trên thực tế tham số k được đặt bằng 1 trong tất cả các thí nghiệm tính toán. 6. Sai khi các vòng lặp trong hội tụ thì gán ppk1, tính xs1(xsA pT c), đặt

0

pp và lặp lại các bước 2-6.

5.2. Cách thức chạy 1 bài toán trên hệ thống Grid đƣợc xây dựng bởi 2 công cụ Globus Toolkit và MPICH

 Đăng nhập với người dùng của globus, cụ thể trong trường hợp này là người dùng thinh (adsbygoogle = window.adsbygoogle || []).push({});

 Tạo một proxy chứng thực cho người dùng Grid-proxy-init

 Biên dịch mã nguồn

MPICH cung cấp các công cụ mpicc để biên dịch các bài toán được viết bằng ngôn ngữ C Ví dụ biên dịch một chương trình viết bằng ngôn ngữ C : program1.c

mpicc –o program program.c

 Tạo file Resource Specification Language (RSL) đặc tả công việc tính toán cho chương trình cần chạy

RSL là một file scripts lưu trữ các thông tin chi tiết về môi trường tính toán cụ thể cho một chương trình : máy tính nào chạy chương trình, số lượng CPU được dùng để tính toán, lượng RAM được sử dụng, thời than thực thi chương trình.

Cấu trúc cơ bản của 1 file RSL dùng để chạy 1 chương trình là như sau :

+ // Bắt đầu file là dấu +

58

( &(resourceManagerContact="b.ar.com") // Host được sử dụng để chạy chương trình

(count=2) // Số lần chạy

(label="subjob 0") // Nhãn của tiến trình phụ

(environment=(GLOBUS_DUROC_SUBJOB_INDEX 0) // Môi trường thực thi của subjob

(LD_LIBRARY_PATH /usr/local/globus-4.2.1/lib/)) // Đường dẫn đến thư viện GT (directory=/home/thinh/) // Thư mục chứa chương trình

(executable=/home/thinh/cpi) // Đường dẫn đến chương trình cần thực thi trên host ) ( &(resourceManagerContact="b1.ar.com") (count=2) (label="subjob 1") (environment=(GLOBUS_DUROC_SUBJOB_INDEX 1) (LD_LIBRARY_PATH /usr/local/globus-4.2.1/lib/)) (directory=/home/thinh/) (executable=/home/thinh/cpi) ) ……

 Sử dụng globusrun để chạy chương trình Globusrun –w –f file.rsl

Globurun sẽ chịu trách nhiệm đọc nội dung file RSL và thực thi chương trình với những đặc tả đã nêu, kết quả chạy được hiển thị trên màn hình máy tính

59

5.3. Kết quả chạy các chƣơng trình và đánh giá kết quả 5.3.1. Kết quả chạy chƣơng trình tính số PI

Số lƣợng máy 1 2 4

Thời gian 0.000083 0.003505 0.009917

Đánh giá : Đây là một bài toán rất nhỏ nên khi chương trình được thực thi, thời gian trao đổi giữa các host với nhau làm cho việc chạy trên nhiều máy mất nhiều hơn rất nhiều so với khi chạy trên 1 máy.

5.3.2. Kết quả chạy chƣơng trình giải hệ phƣơng trình tuyến tính

Ma trận trong hệ phương trình có kích thước 2000x2000

Số lƣợng máy 1 2 4

Thời gian 90.6723 48.6365 27.2324

Đánh giá : Khi kích thước bài toán tăng lên rất nhiều lần ,thời gian thực thi chương trình trên 3 máy đã tốt hơn rõ rệt so với thực thi trên 1 máy. Cụ thể thời gian thực thi trên 4 máy đã giảm gần 3.3 lần so với khi thực thi trên trên 1 máy

60

5.3.3. Kết quả giải bài toán quy hoạch tuyến tính

Kích thước bài toán được triển khai : 5000 biến và 1000 ràng buộc (adsbygoogle = window.adsbygoogle || []).push({});

Số lƣợng máy 1 2 4 Thời gian 232.541 124.578s 69.4445 0 10 20 30 40 50 60 70 80 90 100

1 computer 2 computer 4 computer

61

Trong bài toán này, nền tảng Grid Computing lại một lần nữa thể hiện được những ưu điểm của mình trong việc giải những bài toán kích thước lớn. Nhưng có một vấn đề đó là độ sai số trong kết quả của bài toán.

Có thể quan sát bảng kết quả dưới đây khi thực hiện bài toán quy hoạch tuyến tính để đánh giá. Bảng thể hiện kết quả tính toán khi thực hiện trên số lượng máy khác nhau lần lượt là 1, 2, 4

1 2 4

|Ax-b| 7.59468e+12 4.96612e+12 4.78923e+12

|(A^t u - c)_+| 1.97028e+08 2.76091e+08 2.09592e+08 |c^t x - b^t u| 3.72625e+12 3.6899e+12 6.06735e+12

Lấy kết quả khi thực hiện bài toán trên 1 máy làm chuẩn, từ đó có thể thấy, khi càng có nhiều máy tham gia mạng grid để tính toán, độ chênh lệch càng lớn. Đây cũng là một trong những điểm yếu của tính toán song song, thời gian thực hiện nhanh hơn nhưng

0 50 100 150 200 250

1 computer 2 computer 4 computer

62

đi kèm đó là độ chính xác giảm đi. Muốn giảm thiểu sai số cần phải tạo ra thuật toán song song giải quyết tốt vấn đề này.

5.3.4. Nhận xét chung

Trong quá trình thực thi một chương trình chạy song song, có rất nhiều giao tiếp giữa các máy được xảy ra để có thể đưa đến kết quả cuối cùng, điều đấy có nghĩa là sẽ mất 1 khoảng thời gian nhất định cho những giao tiếp trên. Vì lý do đó, với bài toán có kích thước càng lớn thì hệ thống càng tỏ ra tối ưu hơn vì khi đó thời gian dành cho giao tiếp giữa các máy sẽ nhỏ hơn nhiều so với thời gian thực thi cả bài toán lớn.

Qua đây, có thể thấy, với hệ thống đã được triển khai, công nghệ grid đã tỏ ra hiệu quả thực sự khi cần tính toán các bài toán có kích thước lớn. Càng nhiều máy tham gia, thời gian giải bài toán càng nhanh. Nhưng Grid cũng bộc lộ những khuyết điểm về khả năng sai số khi giải quyết các bài toán này, tuy nhiên đây là vấn đề có thể giải quyết được.

63

Kết luận

Kết thúc khóa luận “giải hệ phương trình tuyến tính kích thước lớn trên nền tảng Grid computing”, những kết quả thu được bao gồm :

1. Lý thuyết

 Khóa luận đã đề cập một cách tổng quan về khái niệm, kiến trúc cũng như lợi ích của một hệ thống Grid trong thực tế.

 Chỉ ra những đặc điểm, kiến trúc của gói phần mềm Globus, một trong những gói phần mềm nổi tiếng để triển khai một hệ thống Grid

 Chỉ ra những kiến thức chung về gói phần mềm MPICH, MPI, những bộ thư viện và công cụ để tạo ra một chương trình song song cũng như thực thi các chương trình đó.

 Cơ chế làm việc kết hợp Globus toolkit và MPICH để chạy một bài toán song song trên một hệ thống Grid

2. Thực hành và kết quả

 Cài đặt và cấu hình Globus Toolkit để xây dựng thành công một hệ thống Grid gồm 3 máy tính khác nhau.

 Cấu hình và cài đặt thành công MPICH để kếp hợp với Globus Toolkit tạo thành một hệ thống Grid thực thi được những bài toán song song được viết bằng ngôn ngữ C kết hợp với MPI.

 Thử nghiệm các bài toán : tính toán số PI, giải hệ phương trình tuyến tính kích cỡ lớn, giải bài toán quy hoạch tuyến tính kích thước lớn và chứng minh được hiệu năng của hệ thống Grid đã xây dựng được khi giải các bài toán lớn.

Khóa luận sẽ đóng góp một phần giúp những người đi sau trong việc tìm hiểu Công nghệ Grid trong việc tính toán các bài toán kích thước lớn tiếp cận một cách nhanh chóng hơn và dễ dàng hơn.Hướng phát triển của khóa luận sẽ là tiến tới triên khai xây dựng hệ thống Grid trong môi trường thật, phục vụ trực tiếp cho các nhu cầu thực tế, cụ thể là một phòng, một đơn vị chuyên tính toán hiệu năng cao.

64 (adsbygoogle = window.adsbygoogle || []).push({});

Tài liệu tham khảo

 Tài liệu tiếng Việt

[1] Nguyễn Mạnh Dũng,Nguyễn Đăng Thành – Đại học khoa học tự nhiên TP.Hồ Chí Minh: Tìm hiểu công nghệ Grid Computing và ứng dụng thử nghiệm trong bài toán quản

trị mạng

 Tài liệu tiếng nước ngoài

[2] Ian Foster ,Carl Kesselman, Steven Tuecke : The Anatomy of the Grid Enabling Scalable Virtual Organizations

[3] Ian Foster : Globus Toolkit Version 4: Software for Service-Oriented Systems www.globus.org

[4] Nicholas T. Karonis, Brian Toonen and Ian Foster : MPICH-G2:A Grid-enabled implementation of the Message Passing Interface

[5] William Gropp and Ewing Lusk : Installation and User’s Guide to MPICH, a

Portable Implementation of MPI Version 1.2.7 The globus2 device for Grids

[6] Ian Foster, Carl Kesselman, Gene Tsudik, Steven Tuecke, : A Security

Architecture for Computational Grids, 5th ACM Conference on Computer and Communication Security, www.globus.org

[7] Y.G. Evtushenko, V.A. Garanzha, A.I. Golikov, H.M. Nguyen : Parallel

Implementation of Generalized Newton Method for Solving Large-Scale LP Problems

[8] Website : http://www.globus.org/toolkit/docs/4.2/4.2.1/ [9] Website : http://www3.niu.edu/mpi/

Một phần của tài liệu giải hệ phƣơng trình tuyến tính kích thước lớn trên nền tảng grid computing (Trang 60)