GIẢI CÁC BÀI TOÁN TỐI ƯU TRÊN MICROSOFT EXCEL

Một phần của tài liệu Các mô hình và phần mềm tối ưu hóa và ứng dụng trong nông nghiệp (Trang 33 - 37)

Microsoft Excel 2000, 2003 có các công cụ toán học rất mạnh để giải các bài toán tối ưu và thống kê toán học. Excel có thể giải được các loại bài toán tối ưu: BTQHTT tổng quát, các biến có thể có ràng buộc hai phía, ràng buộc cũng có thể viết ở dạng hai phía; bài toán vận tải có hai chỉ số; bài toán quy hoạch nguyên (các biến có điều kiện nguyên hay boolean); bài toán quy hoạch phi tuyến. Số biến của BTQHTT hay nguyên có thể lên tới 200 biến. Excel còn có thể giải các bài toán hồi quy trong thống kê toán học: hồi quy đơn, hồi quy bội, hồi quy mũ.

Dùng Solver ta có thể tìm cực đại hay cực tiểu của một hàm số đặt trong một ô gọi là ô đích. Solver chỉnh sửa một nhóm các ô (gọi là các ô có thể chỉnh sửa) có liên quan trực tiếp hay gián tiếp đến công thức nằm trong ô đích để tạo ra kết quả. Ta có thể thêm vào các ràng buộc để hạn chế các giá trị mà Solver có thể dùng. Đối với BTQHTT Solver dùng phương pháp đơn hình, đối với quy hoạch phi tuyến Solver dùng phương pháp tụt gradient để tìm một cực trị địa phương.

3.1. Giải BTQHTT

Xét bài toán quy hoạch c1x1 + c2 x2 + …+ cnxn = f(x) → max / min a11x1 + a12 x2 + … + a1nxn Q b1

a21x1 + a22 x2 + " + a2nxn Q b2 …

am1x1 + am2 x2 + … + amnxn Q bm

Trong đó Q là một trong các phép toán quan hệ ≥ , ≤ hoặc = , thứ tự các phép toán quan hệ trong các ràng buộc là tuỳ ý. Như vậy bài toán trên có thể là BTQHTT thông thường, quy hoạch tuyến tính nguyên hay quy hoạch 0–1. Cách bố trí dữ liệu cho trên bảng tính:

c[1] c[2] . . . c[n] Σ c[j] x[j]

a[1,1] a[1,2] . . . a[1,n] Σ a[1,j] x[j] b[1] a[2,1] a[2,2] . . . a[2,n] Σ a[2,j] x[j] b[2] . . . . . . . . . . . . . . . . . . a[m,1] a[m,2] . . . a[m,n] Σ a[m,j] x[j] b[m]

x[1] x[2] . . . x[n]

Hàng cuối cùng là các giá trị ban đầu của các biến để các công thức của Excel hoạt động, có thể lấy giá trị của tất cả các biến bằng 1.

Xét bài toán: x1 +4x2 + x3 → Min , với các ràng buộc: 2x1 +3x2 +4x3 ≥20 5x1 – x2 +2x3 ≥12 x1 +2x2 – x3 ≤ 2 x1 +4x2 –2x3 ≤1 x1, x2, x3 ≥ 0

Các bước thực hiện để giải bài toán:

Bước 1. Nhập dữ liệu bài toán vào bảng tính dưới dạng sau:

Phương án ban đầu X = (1, 1, 1), nó có thể không chấp nhận được.

Bước 2. Tính giá trị hàm mục tiêu tại ô E2 bằng công thức =

SUMPRODOCT($B$7 : $D$7, B2 : D2) Hàm Sumproduct cho tích vô hướng của hai dãy ô. Copy công thức từ ô E2 sang dãy các ô E3 : E6 nhằm tính giá trị vế trái của bốn ràng buộc bài toán (1).

Mục Set Target Cell: chọn ô đích (chứa giá trị hàm mục tiêu), có thể nháy vào biểu tượng của Excel bên phải hộp văn bản để xác định ô, trong ví dụ chọn ô E2. Mục Equal To: chọn Max nếu cực đại hàm mục tiêu, chọn Min nếu cực tiểu hàm mục tiêu, chọn Value of và nhập giá trị nếu muốn ô đích bằng một giá trị nhất định, trong ví dụ chọn Min. Mục By Changing cells: chọn các ô chứa các biến của bài toán, ta chọn khối ô B7:D7. Nháy nút Add để nhập tất cả các ràng buộc vào khung Subject to the Constraints (dòng đầu trong khung ứng với ràng buộc không âm trên các biến, dòng thứ hai ứng với hai ràng buộc đầu bài toán (2), dòng cuối ứng với 2 ràng buộc cuối). Khi nháy nút Add, hiện hộp thoại

Hộp văn bản Cell Reference để chọn các ô cần đặt ràng buộc lên chúng, hộp văn bản ở giữa để chọn loại ràng buộc (>= = <= interger, binary), hộp văn bản Constraint để chọn giá trị ràng buộc (có thể là số hay giá trị trong các ô).

Sau khi nhập xong các ràng buộc, nháy vào nút Options, hiện hộp thoại Solver Options, đánh dấu kiểm vào mục Assume Linear Model (khảng định mô hình của ta là tuyến tính).

Bước 4. Trong hộp thoại Solver Parameters nháy vào nút Solve để bắt đầu giải bài toán tối ưu. Giải xong bài toán xuất hiện hộp thoại Solver Results, chọn mục Keep Solver Solution (giữ lại lời giải), nháy OK, kết quả giải bài toán nằm ở các ô B7 : D7. Kết quả ta được phương án tối ưu là X = (0.5 , 0 , 4.75), giá trị cực tiểu hàm mục tiêu là 5.25 ở ô E2.

3.2. Giải bài toán quy hoạch phi tuyến có ràng buộc tuyến tính

Xét bài toán quy hoạch phi tuyến

Min{f(x)| gi (x) = 0, i = 1, 2, …, m, x∈Rn}.

Để giải bài toán quy hoạch phi tuyến bằng Solver ta cần xác định khối ô để chứa các biến (x[1], x[2], . . . , x[n]), một ô chứa giá trị hàm mục tiêu f(x), khối m ô chứa giá trị các hàm gi (x) .

Ví dụ. Giải bài toán quy hoạch toàn phương:

– x1 –2x2 +0,5x12 +0,5x22 →Min 2x1 +3x2 + x3 =6

x1 +4x2 + x4 =5 x1, x2, x3, x4 ≥ 0 Bảng tính để giải bài toán này như sau:

Phương án trong khối ô B2:E2 (phương án ban đầu cho mọi phần tử bằng 0), hàm mục tiêu trong ô F2 xác định bởi công thức = - b2 - 2*c2 + 0.5*b2^2 + 0.5*c2^2. Ô F3 tính theo công thức = sumproduct ($b$2: $e$2, b3 : e3), công thức này chép sang ô F4. Các ràng buộc bài toán B2 : E2 >= 0, và F3:F4 = G3:G4. Khi giải các bài toán quy hoạch phi tuyến ta phải bỏ chọn mục Assume Linear Model trong hộp thoại Solver Options. Kết quả dùng Solver giải bài toán: trị tối ưu -2.0294, phương án tối ưu (0.7647, 1.0588, 1.294, 0).

Tóm lại Solver có thể giải được nhiều bài toán tối ưu, số lượng biến tối đa của bài toán là 200 biến. Tuy nhiên cũng có nhiều bài toán nó không giải được, khi đó nó đưa thường đưa ra các thông báo:

– Solver could not find a feasible solution: bài toán không có lời giải chấp nhận được. Hoặc có thể do các giá trị khởi đầu của những ô chứa biến khác quá xa các giá trị tối ưu, hãy thay đổi các giá trị khởi đầu và giải lại. (adsbygoogle = window.adsbygoogle || []).push({});

– The maximum iteration limit was reached, continue anyway ? số bước lặp đã đến số cực đại. Ta có thể tăng số bước lặp ngầm định nhờ lệnh Tools/ Solver, chọn Options, nhập giá trị mới vào hộp Iterations.

– The maximum time limit was reached, continue anyway ? thời gian chạy vượt quá thời gian tối đa ngầm định. Ta có thể sửa giá trị trong mục Max Time trong gộp thoại Solver Options.

Chú ý, nếu các lệnh Solver và Data Analysis không có trong menu Tools ta phải cài đặt bổ sung từ đĩa CD: dùng lệnh Tools / Add-Ins, hiện hộp thoại, chọn mục Solver Add in và Analysis ToolPak.

3.3. Một số ví dụ khác

Bài 1. Giải BTQHTT nguyên bộ phận: z=5x1 +x2 +x3 +2x4 +3x5 →min –x2 +5x3 –x4 –2x5 ≤ 2 5x1 –x2 +x5 ≥7 x1 +x2 +6x3 +x4 ≥4 xj ≥ 0 j=1, 2, 3, 4, 5 xj = interger, j = 1, 2, 3.

Đáp số: Giá trị tối ưu là 12, phương án tối ưu (2, 2, 0, 0, 0).

Bài 2. Giải BTQHTT 0–1 (bài toán cái túi) sau:

30x1 +19x2 +13x3 +38x4 +20x5 +6x6 +8x7 +19x8 +10x9 +11x10 →max 15x1 +12x2 +9x3 +27x4 +15x5 +5x6 +8x7 +20x8 +12x9 +15x10 →62 xj ∈{0, 1}, j=1, 2,",10

Đáp số: Giá trị tối ưu là 95, phương án tối ưu là ( 1, 1, 0, 1, 0, 0, 1, 0, 0, 0).

Bài 3. Giải bài toán quy hoạch lõm (có thể có nhiều cực tiểu địa phương) –x12 +2x1 –x22 +4x2 –x32 +8x3 –x42 +14x4 –x52 +18x5 –180 →Min –x1 –2x2 +x3 +2x4 +3x5 ≤ 85 –7x1 +9x2 –5x3 +33x4 –11x5 ≤500 2x1 –x2 +2x3 –x4 +2x5 ≤ 150 1.3x1 +x2 +x3 +x4 +x5 ≤ 300 x1 +x2 +x3 +x4 +x5 ≤ 300 x1, x2, x3, x4, x5 ≥0

Đáp số. Với phương án ban đầu X = (50, 50, 50, 50, 50) dùng Solver có phương án tối ưu là X = (0, 190, 0, 0, 110) và trị tối ưu hàm mục tiêu là - 45640.

Một phần của tài liệu Các mô hình và phần mềm tối ưu hóa và ứng dụng trong nông nghiệp (Trang 33 - 37)