1. Trang chủ
  2. » Giáo án - Bài giảng

GIỚI THIỆU QuY HOẠCH TUYẾN TÍNH

10 149 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Từ thời cổ đại, khi thực hiện các công việc của mình, loài người đã luôn hướng tới cách làm tốt nhất trong các cách làm có thể được (tìm phương án tối ưu trong các phương án). Khi toán học phát triển, người ta đã mô hình hóa toán học các việc cần làm, nghĩa là biểu thị các mục tiêu cần đạt được, các yêu cầu hay các điều kiện cần thỏa mãn bằng ngôn ngữ toán học để tìm lời giải tối ưu cho nó. Từ đó hình thành nên các bài toán tối ưu. Quy hoạch tuyến tính (QHTT) là lĩnh vực toán học nghiên cứu các bài toán tối ưu với hữu hạn biến, trong đó mục tiêu và các điều kiện cần thỏa mãn được biểu thị bằng các hàm số, các phương trình hay bất phương trình tuyến tính. Lý thuyết Quy hoạch tuyến tính bắt đầu phát triển từ năm 1939 khi nhà toán học người Nga L.V. Kantorovich (Giải thưởng Nobel về Kinh tế năm 1975) đề xuất thuật toán đầu tiên để giải bài toán QHTT trong một loạt các công trình nghiên cứu về kế hoạch hóa sản xuất. Tuy nhiên QHTT chỉ được nhiều người biết đến vào năm 1947, khi G.B. Dantzig công bố thuật toán đơn hình để giải các bài toán QHTT cho quân lực Mỹ. Cũng năm đó Koopmans đã chỉ ra rằng QHTT là công cụ tuyệt vời để phân tích lý thuyết kinh tế cổ điển. Từ năm 1952, người Mỹ đã bắt đầu lập trình, giải các bài toán QHTT trên máy tính. Hiện nay QHTT vẫn được tiếp tục nghiên cứu nhằm tìm ra các thuật toán tốt hơn.

Chương GIỚI THIỆU QuY HOẠCH TUYẾN TÍNH _ Từ thời cổ đại, thực cơng việc mình, lồi người hướng tới cách làm tốt cách làm (tìm phương án tối ưu phương án) Khi toán học phát triển, người ta mơ hình hóa tốn học việc cần làm, nghĩa biểu thị mục tiêu cần đạt được, yêu cầu hay điều kiện cần thỏa mãn ngơn ngữ tốn học để tìm lời giải tối ưu cho Từ hình thành nên tốn tối ưu Quy hoạch tuyến tính (QHTT) lĩnh vực toán học nghiên cứu toán tối ưu với hữu hạn biến, mục tiêu điều kiện cần thỏa mãn biểu thị hàm số, phương trình hay bất phương trình tuyến tính Lý thuyết Quy hoạch tuyến tính bắt đầu phát triển từ năm 1939 nhà toán học người Nga L.V Kantorovich (Giải thưởng Nobel Kinh tế năm 1975) đề xuất thuật toán để giải toán QHTT loạt cơng trình nghiên cứu kế hoạch hóa sản xuất Tuy nhiên QHTT nhiều người biết đến vào năm 1947, G.B Dantzig cơng bố thuật tốn đơn hình để giải tốn QHTT cho qn lực Mỹ Cũng năm Koopmans QHTT công cụ tuyệt vời để phân tích lý thuyết kinh tế cổ điển Từ năm 1952, người Mỹ bắt đầu lập trình, giải tốn QHTT máy tính Hiện QHTT tiếp tục nghiên cứu nhằm tìm thuật tốn tốt 9.1 BÀI TỐN QUY HOẠCH TUYẾN TÍNH Một số ví dụ thực tế dẫn đến tốn Quy hoạch tuyến tính Bài tốn bố trí máy sản xuất Một phân xưởng có hai máy đặc chủng M1, M2 sản xuất hai loại sản phẩm ký hiệu I II Một sản phẩm loại I lãi triệu đồng, sản phẩm loại II lãi 1.6 triệu đồng Muốn sản xuất sản phẩm loại I phải dùng máy M1 máy M2 Muốn sản xuất sản phẩm loại II phải dùng máy M1 máy M2 Một máy dùng để sản xuất đồng thời hai loại sản phẩm Máy M1 làm việc không ngày, máy M2 ngày làm việc không Hãy đặt kế hoạch sản xuất cho tổng số tiền lãi cao Lập mơ hình tốn Gọi xi số sản phẩm loại i sản xuất ngày Số làm việc (mỗi ngày) máy M1 3x1 + x2 máy M2 x1 + x2 Số tiền lãi ngày 2x1 + 1.6x2 (triệu đồng) Ta phải tìm vectơ x = (x1, x2) cho f(x) = 2x1 + 1.6x2 → max thỏa mãn điều kiện 3 x1 + x2 ≤   x1 + x2 ≤ x , x ≥  ☺ Bài toán chế độ dinh dưỡng Người ta cần lượng chất dinh dưỡng A, B, C thức ăn α, β, γ, δ cung cấp Hàm lượng chất dinh dưỡng có đơn vị thức ăn cho sau A B C α : 20 0.5 β : 15 γ: 2 δ : 10 25 Nhu cầu loại dinh dưỡng: chất A không 250g, chất B không 170g, chất C không vượt 30g Giá mua đơn vị thức ăn α, β, γ, δ tương ứng 2, 2.5, 0.8, 1.5 nghìn đồng/g Hãy lập thực đơn cho bữa ăn có giá thành rẻ mà đáp ứng u cầu dinh dưỡng ☺ Lập mơ hình tốn Gọi khối lượng thức ăn α, β, γ, δ cần mua tương ứng x1, x2, x3, x4 Tổng hàm lượng chất dinh dưỡng A bữa ăn 20x1+ 15x2 + 5x3 + 10x4 Tổng hàm lượng chất dinh dưỡng B bữa ăn 5x1+ 8x2 + 2x3 + 25x4 Tổng hàm lượng chất dinh dưỡng C bữa ăn 0.5x1+ 2x3 Giá thành bữa ăn 2x1+ 2.5x2 + 0.8x3 + 1.5x4 Ta phải tìm vectơ x = (x1, x2, x3, x4) cho f(x) = 2x1+ 2.5x2 + 0.8x3 + 1.5x4 → thỏa mãn điều kiện 20 x1 + 15 x2 + x3 + 10 x4 ≥ 250 5 x + x + x + 25 x ≥ 170  ☺  0.5 x1 + x3 ≤ 30  x1 , x2 , x2 , x4 ≥ Bài toán vận tải Biết số lượng hàng có kho Ai (i = 1, 2), yêu cầu cửa hàng Bj bj (j = 1, 2), cước phí vận chuyển đơn vị hàng từ Ai đến Bj tương ứng cij Lập kế hoạch vận chuyển hàng cho cửa hàng nhận đủ hàng tổng cước phí vận chuyển nhỏ Lập mơ hình tốn Gọi x'j số lượng hàng vận chuyển từ A1 đến cửa hàng Bj Gọi x"j số lượng hàng vận chuyển từ A2 đến cửa hàng Bj Tổng lượng hàng chuyển từ A1 đến hai cửa hàng x'1 + x'2 Tổng lượng hàng chuyển từ A2 đến hai cửa hàng x"1 + x"2 Tổng lượng hàng B1 nhận từ hai kho x'1 + x"1 Tổng lượng hàng B2 nhận từ hai kho x'2 + x"2 Tổng cước phí phải trả c11x'1 + c12x'2 + c21x"1 + c22x"2 Ta phải tìm vectơ x = (x'1, x'2, x"1, x"2) cho f(x) = c11x'1 + c12x'2 + c21x"1 + c22x"2 → thỏa mãn điều kiện x'1 + x'2 ≤ a1 x"1 + x"2 ≤ a2 x'1 + x"1 = b1 x'2 + x"2 = b2 x'1, x'2, x"1, x"2 ≥ ☺ Bài tốn Quy hoạch tuyến tính dạng tổng qt Bài tốn QHTT dạng tổng quát là: Tìm vectơ x = (x1, x2, , xn) ∈Rn cho n f(x) = ∑c x i i → (max) i =1 với điều kiện n ∑ aij x j ≥ bi (i = 1, , r )  j =1 n ∑ aij x j ≤ bi (i = r + 1, , s)  j =1 n  a x = b (i = s, , m) ij j i ∑ j =1  ( j = 1, , h) x j ≥  ( j = h, , k ) x j ≤ x j ∈ R ( j = k , , n)  Nếu ký hiệu D tập tất vectơ x thỏa mãn hệ bất phương trình trên, tốn tìm (max) hàm f(x) D Ta gọi D miền thừa nhận Vectơ x* ∈D cho f(x) đạt (max) gọi phương án tối ưu, nghiệm toán Chú ý Bài toán Quy hoạch tuyến tính có nghiệm nhất, vơ nghiệm có vơ số nghiệm Ta gọi a) f(x) hàm mục tiêu b) n ∑ aij x j ≥ bi (i = 1, , r )  j =1 x j ≥ ( j = 1, , h)  n  ( j = h, , k ) điều kiện tất yếu ∑ aij x j ≤ bi (i = r + 1, , s) hệ ràng buộc x j ≤  j =1  ( j = k , , n) x j ∈ R n ∑ aij x j = bi (i = s, , m)  j =1 Dễ thấy 1) f(x*) = min{f(x) | x∈D} ⇔ -f(x*) = max{-f(x) | x∈D} n 2) 3) ∑ aij xi ≥ bi ⇔ ∑ (−a ) x ij j =1 j =1 n n ∑ aij xi ≤ bi ⇔ j =1 ∑a x ij i j =1 i ≤ −bi ∑a x + y = b ; y ≥ ij i i j =1 n 4) n n ≥ bi ⇔ ∑a x ij i − y = bi ; y ≥ j =1 (y gọi biến chênh lệch) 5) Nếu biến xj không bị ràng buộc dấu, thay hiệu hai biến không âm xj = y - z, với y ≥ z ≥ Từ nhận xét thấy toán QHTT đưa dạng sau đây, gọi dạng tắc n f(x) = ∑c x i i → i =1 n ∑ aij x j = bi (i = 1, , m)  j =1 x ≥ ( j = 1, , n)  j tất bi khơng âm Ký hiệu c = (c1, c2, , cn), x = (x1, x2, , xn), b = (b1, b2, , bm), A = (aij)m×n, quy ước x ≥ có nghĩa xj ≥ (j = 1, , n), ta viết tốn QHTT tắc dạng ma trận f(x) = c⋅x →  Ax = b  x ≥ Ví dụ Đưa tốn sau dạng tắc f(x) = -3x1 - 2x2 → max  x1 + x2 ≥   x1 − x2 ≥ −1 x ; x ≥  Ta đưa thêm vào hai biến chênh lệch x3, x4, sau nhân hai vế phương trình thứ hai hệ ràng buộc với (-1), thu dạng tắc sau g(x) = -f(x) = 3x1 + 2x2 →  x1 + x − x3 =  − x1 + x + x = x ; x ≥  9.2 PHƯƠ ƯƠNG PHÁP ĐƠN ƯƠ ĐƠ HÌNH Ta giải tốn bố trí máy sản xuất 9.1 phương pháp hình học Trước hết ta biểu diễn miền thừa nhận D mặt phẳng tọa độ cách vẽ đường thẳng (d1) : 3x1 + x2 = 6, (d2) : x1 + x2 = 4, (d3) : x1 = 0, (d4): x2 = Vì điểm M0(1; 1) có tọa độ thỏa mãn hệ 3 x1 + x2 ≤   x1 + x2 ≤ x , x ≥  nên ta tô đậm nửa mặt phẳng bờ (d1), (d2), (d3), (d4) không chứa điểm M0 Miền không bị tô đậm tứ giác OCIA Cho m tăng dần từ 0, ta thấy đường thẳng có dạng m = 2x1 + 1.6x2 song song với qt tồn miền D Vị trí I(1; 3) điểm chung cuối chúng với D Do f(x) lớn x = (1; 3) (đây phương án tối ưu) Nếu toán này, ta lấy hàm mục tiêu khác, giữ nguyên miền D, cách ta thấy hàm mục tiêu luôn đạt max (min) bốn đỉnh D Người ta mở rộng khái niệm đỉnh cho miền thừa nhận D ⊂ Rn thành khái niệm điểm cực biên Chẳng hạn đỉnh đa diện điểm cực biên Trong toán QHTT, ta gọi điểm cực biên miền thừa nhận phương án cực biên tốn Cũng ví dụ vừa rồi, người ta chứng minh toán QHTT hàm mục tiêu đạt min(max) tập hợp phương án cực biên Xét tốn QHTT tắc: f(x) = c⋅x →  Ax = b  x ≥ với c, x ∈Rn, b∈Rm, A ma trận m×n Ta khơng thể dùng phương pháp hình học để giải toán Dantzig đề xuất thuật tốn, gọi thuật tốn đơn hình (simplex method), sau: Xuất phát từ phương án cực biên v0 Kiểm tra xem v0 có phải phương án tối ưu hay chưa Nếu v0 chưa phải phương án tối ưu tìm cách cải tiến để phương án cực biên khác v1 tốt v0 theo nghĩa f(v1) < f(v0) Quá trình lặp lại nhiều lần tìm thấy phương án cực biên tối ưu x* Để thực thuật toán nói trên, ta cần phải làm rõ ba điều: Cách tìm phương án cực biên xuất phát v0 Làm để biết phương án cực biên cho tối ưu hay chưa, tức cần tìm "dấu hiệu tối ưu" Làm để từ phương án cực biên chưa tối ưu tìm phương án cực biên tốt George Bernard Dantzig (1914 - 2005) a Trường hợp A có ma trận ma trận hốn vị P cỡ m×m Ta chọn phương án cực biên xuất phát v0 sau: Ta chọn biến mà hệ số nằm P làm biến trụ, biến mà hệ số nằm P làm biến tự Gán giá trị cho biến tự giải biến trụ, ta v0 Rõ ràng giá trị vừa tìm biến trụ quét hết thành phần hệ số tự b Ký hiệu J = (α, β, , γ) dãy số số biến trụ mà xα = b1, xβ = b2, , xγ = bm Ký hiệu c' = (cα, cβ, , cγ)∈Rm với cα, cβ, , cγ hệ số xα, xβ, , xγ f(v0) = c⋅v0 = c'⋅b, ∆j = c'⋅aj - cj (j = 1, , n) Người ta dấu hiệu tối ưu "Nếu ∆j ≤ ∀ j = 1, , n, v0 phương án tối ưu" Vì vậy, gọi ∆j ≤ (j = 1, , n) số kiểm tra Để thuận tiện cho tính tốn theo thuật tốn đơn hình, người ta xếp số liệu thành bảng, gọi bảng đơn Biến trụ xα xγ c' cα cγ b b1 bm f (x) x1 x2 xn c1 c2 cn a11 am1 ∆1 a12 am2 ∆2 a1n amn ∆n Tỉ số Nếu phương án cực biên v0 chưa tối ưu, ta xây dựng phương án cực biên v1 tốt cách xây dựng bảng đơn hình sau đây: Chọn số s cho ∆s = max{ ∆1, , ∆n} Trên hàng thứ i cột tỉ số ta điền bi/ais ais > Chọn số r cho br/ars số bé cột tỉ số Gọi ars trụ Thay xr xs, cr cs Chia hàng r ma trận [b A] cho trụ, sau cộng vào hàng lại [b A] bội hàng thứ r cho cột thứ s A trở thành vec tơ es (vectơ thứ s sở tắc Rm) Ta tính f(x) số kiểm tra cách cộng vào hàng cũ (f(x), ∆1, , ∆n) bội hàng thứ r cho ∆s bị khử Nếu tất số kiểm tra khơng dương, v1 phương án tối ưu Còn v1 chưa phải phương án tối ưu, ta lặp lại thủ tục vừa để lập bảng đơn hình thứ ba Ta lặp lại thủ tục tất số kiểm tra khơng dương dừng Khi phương án cuối tối ưu Ví dụ Giải tốn QHTT sau: f(x) = x4 - x5 →  x1 + x − x5 = x − 2x + x =   x + 3x + x =   x j ≥ ( j = 1;5)  Giải Bảng Biến trụ x1 x2 x3 c' 0 b f(x) = Chú thích: Ta đánh dấu trụ dấu "••" Bảng Biến c' b trụ x1 x2 x3 x4 x5 0 -1 0 0 0 0 1 -2 -1 -2 1• 1 2/1 3/1 x1 x2 x3 x4 x5 Tỉ số 0 -1 x1 x5 x3 -1 f(x) = -2 0 -1 -1 0 -3 -2 5• 1 0 Biến trụ c' b x1 x2 x3 x4 x5 0 -1 0 7/5 3/5 -1/5 -4/5 3/5 2/5 1/5 -1/5 0 0 0 Tỉ số 1/5 Bảng x1 x5 x4 -1 28/5 12/5 1/5 f(x) = -11/5 Tỉ số Các số điều kiện không dương, nên ta có phương án tối ưu x* = (28/5; 0; 0; 1/5; 12/5) minf(x) = -11/5 Chú ý Nếu có số kiểm tra ∆k mang dấu dương, cột thứ k ma trận hệ số hệ ràng buộc gồm tồn số khơng dương, tốn vô nghiệm (Khi hàm mục tiêu giảm vô hạn) b Trường hợp A không chứa ma trận ma trận hốn vị P cỡ m×m Ta thêm số biến để tạo tốn có dạng trường hợp a Từ nghiệm toán suy luận nghiệm toán ban đầu Cách làm gọi Phương pháp M vơ lớn (BIG M-Method) Ví dụ Giải tốn quy hoạch tuyến tính sau: f(x) = 3x1 + 2x2 →  x1 + x2 − x3 =  − x1 + x2 + x4 =   x j ≥ ( j = 1;4) Giải Ta thêm biến y (gọi biến giả) để đưa toán g(x,y) = 3x1 + 2x2 + My→  x1 + x2 − x3 + y =  − x1 + x2 + x4 =   x j ≥ ( j = 1;4); y = Ở M số dương lớn Lúc ma trận hệ số hệ ràng buộc chứa ma trận 0 1 P=  , 1 0 nên ta có toán a Bảng Biến trụ c' b x1 x2 x3 x4 y 0 M Tỉ số y x4 M g(x,y) = 4M -1 M-3 1• 2M - -1 -M 1 0 Biến trụ c' b x1 x2 x3 x4 y Tỉ số 0 M 3• -1 3M - -1 -M -2 2-2M 0 Bảng y x2 M 2 g(x,y) = + 2M 2/3 Bảng Biến trụ x1 x2 c' b 2/3 5/3 g(x,y) = 16/3 x1 x2 x3 x4 y 0 M 0 0 -1/3 -1/3 -5/3 -2/3 1/3 -4/3 1/3 1/3 5/3- M Tỉ số Các số điều kiện không dương (do M lớn), nên tốn ta có phương án tối ưu (x*,y) = (2/3; 5/3; 0; 0; 0) ming(x, y) = 16/3 Trong phương án y = 0, nên tốn ban đầu có phương án tối ưu x* = (2/3; 5/3; 0; 0) minf(x) = 16/3 Chú ý Nếu bảng đơn hình cuối biến giả nhận giá trị khác 0, ta kết luận hàm mục tiêu khơng có giá trị nhỏ Ta có cách làm khác sau: Trước hết dùng phép khử biến đổi hệ ràng buộc thành hệ tương đương mà ma trận hệ số chứa ma trận hoán vị  x1 + x − x3 =  x1 + x − x3 = ⇔  3 x − x3 + x = − x1 + x + x = Bài toán cho đưa toán tương đương sau f(x) = 3x1 + 2x2 →  x1 + x − x3 =  3 x − x3 + x =   x j ≥ ( j = 1;4) Ta giải toán theo Thuật tốn Đơn hình Bảng Biến trụ x1 x4 c' b f(x) = 12 x1 x2 x3 x4 0 0 3• -1 -1 -3 Tỉ số 4/2 5/3 Bảng Biến trụ x1 x2 c' b 2/3 5/3 f(x) = 16/3 x1 x2 x3 x4 0 0 -1/3 -1/3 -5/3 -2/3 1/3 -4/3 Tỉ số Các số điều kiện không dương, nên ta có phương án tối ưu x* = (2/3; 5/3; 0; 0) minf(x) = 16/3 NHỮNG Ý CHÍNH TRONG BÀI GIẢNG TUẦN 12 Bài toán QHTT tổng qt Bài tốn QHTT tắc Phương án tối ưu Thuật tốn Đơn hình ... + x'2 ≤ a1 x"1 + x"2 ≤ a2 x'1 + x"1 = b1 x'2 + x"2 = b2 x'1, x'2, x"1, x"2 ≥ ☺ Bài toán Quy hoạch tuyến tính dạng tổng qt Bài tốn QHTT dạng tổng quát là: Tìm vectơ x = (x1, x2, , xn) ∈Rn cho... thừa nhận Vectơ x* ∈D cho f(x) đạt (max) gọi phương án tối ưu, nghiệm tốn Chú ý Bài tốn Quy hoạch tuyến tính có nghiệm nhất, vơ nghiệm có vơ số nghiệm Ta gọi a) f(x) hàm mục tiêu b) n ∑ aij... luận nghiệm toán ban đầu Cách làm gọi Phương pháp M vô lớn (BIG M-Method) Ví dụ Giải tốn quy hoạch tuyến tính sau: f(x) = 3x1 + 2x2 →  x1 + x2 − x3 =  − x1 + x2 + x4 =   x j ≥ ( j = 1;4) Giải

Ngày đăng: 19/04/2019, 10:55

Xem thêm:

TỪ KHÓA LIÊN QUAN

w