Phương pháp chỉnh hình mehrotra và các cải tiến

40 5 0
Phương pháp chỉnh hình mehrotra và các cải tiến

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phương pháp chỉnh hình Mehrotra là một phương pháp quan trọng trong lĩnh vực tối ưu tuyến tính, được đặt tên theo tác giả Sanjay Mehrotra. Phương pháp chỉnh hình Mehrotra sử dụng một phương pháp nội điểm để tiếp cận bài toán tối ưu tuyến tính. Nó kết hợp giữa phương pháp điểm nội bộ và phương pháp sự đối ngẫu để đạt được hiệu quả cao trong việc giải quyết bài toán tối ưu. Các bước chính của phương pháp chỉnh hình Mehrotra bao gồm: Khởi tạo: Bắt đầu bằng việc chọn một giải pháp khả thi ban đầu và một giá trị khởi tạo cho biến đối ngẫu. Tính toán giá trị đối ngẫu: Tính toán giá trị đối ngẫu bằng cách sử dụng các biến đối ngẫu và ràng buộc tuyến tính. Cập nhật biến đối ngẫu: Cập nhật các biến đối ngẫu theo công thức được xác định bởi phương pháp chỉnh hình Mehrotra. Tính toán hướng dẫn: Tính toán hướng dẫn di chuyển từ giải pháp hiện tại đến giải pháp tốt hơn. Điều này đòi hỏi tính toán các hệ số để xác định hướng dẫn di chuyển tối ưu. Cập nhật biến chính: Cập nhật các biến chính bằng cách sử dụng hướng dẫn tính toán được tìm thấy. Kiểm tra tiêu chuẩn dừng: Kiểm tra xem giải pháp hiện tại đã đạt được tiêu chuẩn dừng hay chưa. Nếu chưa, quay lại bước 2 và tiếp tục quá trình. Phương pháp chỉnh hình Mehrotra đã được cải tiến để cải thiện hiệu suất và khả năng hội tụ của nó. Một số cải tiến phổ biến bao gồm sử dụng bước khởi tạo thông minh, quy tắc cắt điều chỉnh, cập nhật hướng dẫn cẩn thận và việc xử lý ràng buộc bất đẳng thức chặt chẽ hơn.

KHOA TOÁN TIN HỌC THÁNG 1/2022 BÀI TIỂU LUẬN CUỐI KÌ QHTTNC TỪ THUẬT TỐN CHỈNH SỬA GỐC - ĐỐI NGẪU ĐẾN PHƯƠNG PHÁP CHỈNH MEHROTRA VÀ CÁC CẢI TIẾN THỰC HIỆN BỞI Đỗ Đức Duy TRƯỜNG ĐẠI HỌC KHTN Đại học Quốc Gia Thành phố HCM Đỗ Đức Duy @epsilonoptimization Tài liệu không giống tài liệu khác , viết hồn cảnh đặc biệt Nhiều lúc em muốn buông sức khỏe , sau nghĩ lại lịng tin thầy cơng sức em trải qua suốt kì nên em tiếp tục ! Với em , tài liệu cột mốc để em biết điểm dừng , biết trân trọng sức khỏe vững bước tiến phía trước Cảm ơn thầy ln tin tưởng em ! Copyright © 2022 Đỗ Đức Duy Copying prohibited All rights reserved No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying and recording, or by any information storage or retrieval system, without the prior written permission of the publisher Art No xxxxx ISBN xxx–xx–xxxx–xx–x Edition 0.0 Cover design by Cover Designer Published by Publisher Printed in City Mục lục Tổng quan thuật toán gốc - đối ngẫu chỉnh sửa 1.1 Thuật tốn Primal-Dual Corrector 1.2 Mơ tả thuật tốn 1.3 Một ví dụ thất bại 1.4 Cơ sở lý thuyết ví dụ 1.5 Các tính tốn số 10 1.6 Sự liên quan ví dụ đến thuật toán Mehrotra 11 Thuật toán dự đoán chỉnh sửa Mehrotra 13 2.1 Lịch sử phát triển thuật toán Mehrotra 13 2.2 Cơ sở thuật toán Mehrotra 15 2.3 Thuật toán Mehrotra cải tiến 19 2.4 Phiên sửa đổi thuật toán Mehrotra cải tiến 21 2.5 Sự hội tụ siêu tuyến tính 22 Code Matlab 24 3.1 Trước bắt đầu 24 3.2 Cách sử dụng 24 3.3 Cài đặt 25 3.4 Ví dụ minh họa 26 3.5 Vào toán 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 initialPoint.m mpcSol.m newtonDirection.m setParamOptions.m stepSize.m 26 Literature 33 26 27 30 30 31 Tổng quan thuật toán gốc - đối ngẫu chỉnh sửa 1.1 Thuật tốn Primal-Dual Corrector 1.2 Mơ tả thuật tốn 1.3 Một ví dụ thất bại 1.4 Cơ sở lý thuyết ví dụ 1.5 Các tính tốn số 10 1.6 Sự liên quan ví dụ đến thuật toán Mehrotra 11 Trong mười lăm năm qua, phương pháp điểm (IPM) trở nên thành công lớn việc giải tốn quy hoạch tuyến tính (LP), đặc biệt tốn quy mơ lớn, đồng thời có hội tụ lý thuyết tốt độ phức tạp đa thức Các ví dụ IPM đáng tin cậy lý thuyết thực tế bao gồm phương pháp theo đường dẫn PrimalDual (PD) Kojima với số quy trình tìm kiếm đường dài bước dài (long-step linesearch), công thức không khả thi (an infeasible formulation) thuật toán Phần lớn mã IPM thương mại công khai triển khai biến thể thuật toán thứ hai, thuật toán Mehrotra’s Predictor – Corrector (MPC) , số người số họ sử dụng hiệu chỉnh cấp cao Gondzio Kể từ lần triển khai thử nghiệm tiêu chuẩn toán kiểm tra LP (bộ kiểm tra Netlib), thuật toán MPC tỏ ra, đặc biệt tốn quy mơ lớn, nhanh nhiều so với thuật tốn PD khơng khả thi (infeasible PD algorithm), xét số lần lặp thời gian tính tốn 1.1 Thuật tốn Primal-Dual Corrector 1.1 Thuật toán Primal-Dual Corrector Thuật toán dự toán chỉnh sửa gốc- đối ngẫu ( Primal- Dual Corrector, viết tắt PDC) tính tốn lần lặp lại, hướng bổ sung, hiệu chỉnh, để tăng thêm hướng thuật tốn gốc - đối ngẫu ( kí hiệu PD - Primal Dual) Tuy nhiên, tài liệu này, nhận thấy việc sử dụng chỉnh sửa có tác động xấu đến hiệu suất thuật toán Đặc biệt, có ví dụ thấy thuật tốn PDC khơng hội tụ tới nghiệm tối ưu tốn quy hoạch tuyến tính Nếu điểm xuất phát định chọn cho thuật toán, chứng minh thất bại thuật tốn vấn đề ví dụ xảy xác với kích thước bước chọn Sau , chúng tơi mơ tả phép tính số thể lỗi Trong ví dụ số đầu tiên, thơng số rào cản giảm phần cố định lần lặp lần thứ hai , chọn tự động quy trình sử dụng thuật tốn Mehrotra (MPC) Mặc dù ví dụ chúng tơi trình bày khơng áp dụng cho thuật tốn MPC, nhiên, gây nghi ngờ thuộc tính hội tụ nói chung, điểm tương đồng thuật toán MPC PDC cách tìm kiếm hướng lần lặp xây dựng lần lặp, nguyên nhân gây lỗi thuật toán PDC ví dụ Hình 1.1: Minh họa đường thuật toán dự đoán - điều chỉnh Cấu trúc tài liệu chia sau Phần 1.1 + 1.2 mô tả việc xây dựng thuật tốn PDC Phần 1.3 trình bày ví dụ nêu khơng hội tụ PDC Phần 1.4 đưa lý thuyết hứa phân tích Phần 1.5, chứng số Sự thất bại thuật toán PDC để hội tụ sửa tạo nhiều ảnh hưởng việc xây dựng vòng lặp xác định hướng khơng hiệu lặp lặp lại Sau , mối liên hệ hội tụ thuật toán thuật toán Mehrotra Definition 1.1 (The Primal-Dual Corrector (PDC) algorithm) Chúng xem xét phương pháp điểm gốc - đối ngẫu để giải vấn đề tối ưu hóa tuyến tính (LP) dạng tiêu chuẩn sau: n o (P ) : cT x : Ax = b , x ≥ Chương Tổng quan thuật toán gốc - đối ngẫu chỉnh sửa A ∈ Rmxn , b ∈ Rm c ∈ Rn tốn đối ngẫu : n o (D) : max bT y : AT y + s = c , s ≥ Không tính tổng qt , giả sử (P ) (D) thỏa mãn điều kiện điểm ( Interior Point Condition - IPC) , nghĩa tồn w0 = (x0 , y0 , so ) thỏa Ax0 = b , x0 > , AT y0 + s0 = c , s0 > (1.1) ma trận A có hàng đầy đủ Tùy thuộc vào điều kiện IPC, hệ thống xáo trộn điều kiện tối ưu liên quan đến (P ) ) (D) :    Ax − b    Fµ (w) =  AT y + s = c  = , x > , µ> (1.2)   XSe − µe có nghiệm w (µ) = (x (µ) , y (µ) , s (µ), cho µ > hệ , XS ma trận chéo với phần tử nằm đường chéo tương ứng xi si , i = 1, n e = (1, 1, ) ∈ Rn Khi µ có xu hướng khơng, điểm w (µ) (µ > 0), , hình thành đường trung tâm gốc - đối ngẫu , hội tụ đến giải pháp toán (P ) (D) Lưu ý (1.2) với µ = với x ≥ , s ≥ , xác hệ thống điều kiện tối ưu (P ) (D) có nghiệm trùng với nghiệm (P ) (D) 1.2 Mơ tả thuật tốn Giả sử điểm w0 = (x0 , y0 , so ) thỏa mãn (1.1) có sẵn để làm từ vựng xuất phát thuật toán Thuật toán PDC cố gắng theo đường trung tâm gôc - đối ngẫu gần với giải pháp vấn đề (P ) (D), theo kiểu tương tự IPM theo đường dẫn kép nguyên thủy bước dài Ở lần lặp , wk = (xk , yk , sk ) , k ≥ thuật toán PDC , tham số µ > chọn : µ = σ k µk (1.3) T µk = (xk ) sk /n , σk ∈ (0, 1) llà tham số cố định bắt đầu thuật tốn tính toán lần lặp số thủ tục tự động Sau đó,  hướng Newton dwk = dxk , dy k , dsk tính tốn từ wk từ hệ thống Fµ (w) (1.2) , nghĩa Fµ (w) nghiệm hệ tuyến tính : F ′ µ (wk ) dwk = −Fµ (wk ) với F ′ µ (wk ) ma trận Jacobi   A   AT  Sk Fµ wk    dxk  I   dyk  dzk Xk Hệ (1.4) tương đương với    Axk − b        = −  AT yk + sk − c     Xk Sk e − σk µk e (1.4) (1.5) Tiếp theo , hướng sửa dwk,c = (dxk,c , dy k,c , dsk,c ) tính tốn hệ thống tuyến tính : F ′ µ (wk ) dwk,c = −Fµ (wk + dwk ) (1.6) 1.3 Một ví dụ thất bại Phía bên phải hệ thống (1.6) đại diện cho lỗi đưa vào hệ thống Fµ (w) (1.2) tuyến tính hóa xung quanh wk có biểu thức rõ ràng :     A(xk + dxk ) − b          , Fµ (wk + dwk ) =  AT (y k + dyk ) + (sk + dsk ) − c  =  (1.7)     (Xk + dXk ) (S k + dSk )e − σk µk e dXk dSk e phương trình cuối phụ thuộc vào (1.5) , dXk dSk ma trận chéo với phần tử đường chéo tương ứng dxik , i = 1, n dsik , i = 1, n Từ (1.6), hướng sửa lỗi cố gắng khắc phục lỗi, để định vị lần lặp gần với đường dẫn trung tâm gốc - đối ngẫu Hướng tìm kiếm kết dwk,r = (dxk,r , dyk,r , dsk,r ) thuật toán PDC tổng : dwk,r = dwk + dwk,c , (1.8) bước lặp có dạng :   xk+1 = xk + θpk dxk,r    yk+1 = yk + θdk dyk,r     s k k+1 = sk + θd dsk,r (1.9) θpk ∈ (0, 1] , θdk ∈ (0, 1] bước nhảy ban đầu đối ngẫu cung cấp điều kiện : (1.10) xk+1 > , sk+1 > Các bất đẳng thức chặt (1.10), bất đẳng thức (1.1), với A có thứ hạng hàng đầy đủ, ngụ ý Jacobian F ′ µ (wk ) khả nghịch , , hướng dwk dwk,c định nghĩa tốt , với k ≥ Thuật toán 1.1 Thuật toán PDC ứng dụng cho tốn (P ) (D) tóm tắt sau : Một điểm w0 = (x0 , y0 , so ) địi hỏi thỏa điều kiện (1.1) Cho ϵ > tham số dung sai Tại bước lặp wk = (xk , yk , sk ) , k ≥ thực : Nếu (xk )T sk ≤ ε , dừng lại Cho µk = (xk )T sk n chọn σk ∈ (0, 1) (a) Tính toán hướng dwk = (dxk , dyk , dsk ) t? h? th?ng tuy?n tính (1.4) (b) Tính tốn hướng chỉnh sửa dwk,c = (dxk,c , dyk,c , dsk,c ) t? (1.6) (c) Tính tốn hướng tìm kiếm dwk,r = (dxk,r , dyk,r , dsk,r ) t? (1.8) Chọn bước nhảy θpk ∈ (0, 1] θdk ∈ (0, 1] dọc dxk,r (dyk,r , dsk,r ) tương ứng , cho bước lặp wk+1 = (xk+1 , yk+1 , sk+1 ) định nghĩa (1.9) thỏa (1.10) Cho k = k + Trở lại bước 1.3 Một ví dụ thất bại Một số tính thú vị thuật tốn PDC tiết lộ toán LP :   minx∈R3 x1 + αx2    x2 + x3 =     x = (x , x , x ) ≥ (1.11) Chương Tổng quan thuật toán gốc - đối ngẫu chỉnh sửa phụ thuộc vào tham số dương α Bài tốn đối ngẫu :  max(y,s)∈RxR3 2y      s1 =    y + s2 = α      y + s3 =    s = (s , s , s ) ≥ (1.12) Với α > 0, (1.11) (1.12) có nghiệm w∗ = (x∗ , y ∗ , z∗ ) x∗ = (0, 0, 2), y ∗ = 0, z∗ = (1, α, 0) (1.13) điều kiện điểm (IPM condition) thỏa mãn 1.4 Cơ sở lý thuyết ví dụ Xem xét hành vi số học xác thuật toán PDC áp dụng cho tốn (1.11) (1.12) ,chúng tơi cho thấy rằng, tham số σ k đặt thành giá trị σ ∈ (0, 1) lần lặp, sau tồn bắt đầu điểm w0 cho chuỗi khoảng trống đối ngẫu lần lặp tạo không hội tụ 0, điều ngụ ý phép lặp không hội tụ đến lời giải toán (1.11) (1.12) Theorem 1.1 Hãy để thuật toán PDC áp dụng cho toán (1.11) (1.12), với số α > 0, tham số σ k thỏa mãn: σ k := σ ∈ (0, 1) , k ≥ (1.14) Cho điểm bắt đầu w0 = (x0 , y , s0 ) thuật toán nghiệm chặt chấp nhận toán gốc - đối ngẫu (1.11) (1.12) với : x20 ≥ ξ , s30 ≤ v (1.15) ξ = − σ /2 v = ασ /8 Khi đó, chuỗi lỗ hổng đối ngẫu lần lặp tạo thuật toán giới hạn từ giới hạn sau giữ : (xk )T sk > ξα , k ≥ (1.16) Vì thuật tốn PDC khơng hội tụ nghiệm (1.13) toán (1.11) (1.12) Để chứng minh Định lý 1.1, trước tiên xác định điều kiện lần lặp wk thuật toán PDC mà số thành phần hướng sửa dxk,c dsk,c tốt giá trị dxk dsk , đưa hướng tìm kiếm ngăn cản tiến trình wk , đặc biệt xk , hướng tới tối ưu Theorem 1.2 Xem xét toán (1.11) (1.12) , với α > Cho wk = (xk , y k , sk ) , k ≥ chuỗi lần lặp tạo thuật toán PDC áp dụng cho toán Nếu x2k ≥ ξ k := − 0.5σ k , s3k ≤ v k := 0, 125ασ k (1.17) Chương Code Matlab 3.3 Cài đặt % SETUP % This scrtipt is used to setup the system enviroment for the solver % Necessory paths will be added % % Please run this secript at the root of the folder % % Yiming @ Uinversity of Edinburgh clear ; clc ; folderLocation = pwd; % add paths disp( ’* Add necessary paths ’ ) ; if isunix || ismac addpath(folderLocation); addpath([folderLocation ’/src ’ ]) ; addpath([folderLocation ’/examples’]); elseif ispc addpath(folderLocation); addpath([folderLocation ’\src ’ ]) ; addpath([folderLocation ’\examples’]); else error( ’ Cannot determine your OS.’) end disp( ’ Done.’) % try to save the paths to Matlab reply = input(’* Do you want save the paht? Y/N [Y]:’,’s’) ; if isempty(reply) reply = ’Y’; end if strcmpi(reply, ’y’) flag = savepath; if flag == disp( ’ Cannot save the path Please check if you have admin rights.’) else disp( ’ Path saved successfully ’ ) ; end else disp( ’ Saving path aborted.’) ; end disp( ’Done.’); clear ; 25 26 3.4 Ví dụ minh họa % Test examples clear ; clc ; param_in = []; % Example: random m = 4; n = 6; A = randn(m,n) b = A*rand(n,1) c = A’*rand(m,1) + rand(n,1) param_in.verbose = 0; [ f , x, y, s , N] = mpcSol(A, b, c, param_in); x N % Example: afiro in standard form param_in.verbose = 1; load afiro ; [ f , x, y, s , N] = mpcSol(A, b, c, param_in, Name); % Example: blend in standard form clear ; load blend; param_in.verbose = 2; [ f , x, y, s , N] = mpcSol(A, b, c, param_in, Name); 3.5 Vào toán 3.5.1 initialPoint.m function [x0,y0,s0] = initialPoint (A,b,c) % Function INITIALPOINT % % Syntex: [x0, y0, s0] = initialPoint (A, b, c) % % Get the starting point (x0,y0,s0) for the primal-dual interior point % mehtod, especially for Mehrotra’s predictor- corrector method % % For reference, please refer to "On the Implementation of a Primal-Dual % Interior Point Method" by Sanjay Mehrotra % % Version 0.3 % - 3.4 Ví dụ minh họa Chương Code Matlab % Yiming Yan, University of Edinburgh n = size(A,2); e = ones(n,1); % solution for norm(s) s.t A’*y + s = c y = (A*A’)\(A*c); s = c-A’*y; % solution for norm(x) s.t Ax = b x = A’*((A*A’)\b); % delta_x and delta_s delta_x = max(-1.5*min(x),0); delta_s = max(-1.5*min(s),0); % delta_x_c and delta_s_c pdct = 0.5*(x+delta_x*e)’*(s+delta_s*e); delta_x_c = delta_x+pdct/(sum(s)+n*delta_s); delta_s_c = delta_s+pdct/(sum(x)+n*delta_x); % output x0 = x+delta_x_c*e; s0 = s+delta_s_c*e; y0 = y; 3.5.2 mpcSol.m function [ f , x, y, s , N] = mpcSol(A, b, c, param_in, Name) % Function MPCSOL - augumented system used % Mehrotra’s predictor-corrector interior point algorithm % % Syntax: [ f , x, y, s , N] = mpc(A, b, c) % [ f , x, y, s , N] = mpc(A, b, c, param) % [ f , x, y, s , N] = mpc(A, b, c, [], Name) % [ f , x, y, s , N] = mpc(A, b, c, param, Name) % % Required Input: % (A, b, c) - problem data % % Optional Input % Name - name of the test problems % Default name is testProb % param - struct of parameters % % Output % (x, y, s) - optimal solution % N - total number of iterations % f - optimal value of the objective function % % Version 0.7 % Author: Yiming Yan, University of Edinburgh % 18/12/2013 27 21/02/2012 28 3.5 Vào toán warning(’off ’ ) ; %% Check inputs and set parameters if nargin < || isempty(Name) Name = ’testProb’; end if nargin < || isempty(param_in) [param, options] = setParamOptions; else [param, options] = setParamOptions(param_in); end if nargin < error( ’MPCSOL: Not enough inputs.’); end % Check if A is sparese if ~issparse(A) A = sparse(A); end % Initialization [m,n] = size(A); alphax = 0; alphas = 0; if param.verbose > fprintf ( ’\n======== %s ========\n’, Name); end if param.verbose > fprintf ( ’\n%3s %6s %11s %9s %9s\n’, ’ITER’, ’MU’, ’RESIDUAL’, ’ALPHAX’, ’ALPHAS’); end %% Choose initial point [x, y, s ] = initialPoint (A, b, c) ; bc = 1+max([norm(b),norm(c)]); % Start the loop for iter = 0:param.maxN %% Compute residuals and update mu Rb = A*x-b; Rc = A’*y+s-c; Rxs = x.*s; mu = mean(Rxs); %% Check relative decrease in residual, for purposes of convergence test residual = norm([Rb;Rc;Rxs])/bc; if param.verbose > fprintf ( ’%3d %9.2e %9.2e %9.4g %9.4g\n’, iter , full (mu), full ( residual ) , alphax, alphas); end Chương Code Matlab if residual < param.eps break; end %% - Predictor step % Get affine- scaling direction [dx_aff, dy_aff, ds_aff, L, D, pm] = newtonDirection(Rb, Rc, Rxs, A, m, n, x, s , [], [], [], options.errorCheck); % Get affine- scaling step length [alphax_aff, alphas_aff] = stepSize(x, s , dx_aff, ds_aff, 1); mu_aff = (x+alphax_aff*dx_aff)’*(s+alphas_aff*ds_aff)/n; % Set central parameter sigma = (mu_aff/mu)^3; %% - Corrector step % Set up right hand sides Rxs = Rxs + dx_aff.*ds_aff - sigma*mu*ones(n,1); % Get corrector’s direction [dx_cc, dy_cc, ds_cc, ~, ~, ~] = newtonDirection(Rb, Rc, Rxs, A, m, n, x, s , L, D, pm, options.errorCheck); %% Compute search direction and step dx = dx_aff+dx_cc; dy = dy_aff+dy_cc; ds = ds_aff+ds_cc; [alphax, alphas] = stepSize(x, s , dx, ds, param.theta); %% x= y= s = Update iterates x + alphax*dx; y + alphas*dy; s + alphas*ds; if iter == param.maxN && param.verbose > fprintf ( ’maxN reached!\n’); end end if param.verbose > fprintf ( ’\nDONE! [m,n] = [%d, %d], N = %d\n’,m,n,iter); end %% Output results N = iter; x = full (x); y = full (y); s = full (s) ; f = c’*x; end 29 30 3.5 Vào toán 3.5.3 newtonDirection.m function [dx, dy, ds, L, D, pm] = newtonDirection(Rb, Rc, Rxs, A, m, n, x, s, L, D, pm, errorCheck) % Function NEWTONDIRECTION % % Syntax: % [dx, dy, ds, L, D] = % newtonDirection(Rb, Rc, Rxs, A, m, n, x, y, s , L, D, errorCheck) % % Augmented system is used More stable but less efficient For the % corrector step, we reuse the LDL’ factorization from the predictor step % % Input: % Output: % % Version 0.3 23/02/2012 % Yiming Yan @ University of Edinburgh rhs = sparse([-Rb; -Rc+Rxs./x]); D_2 = -min(1e+16, s./x); B = [sparse(m,m) A; A’ sparse(1:n,1:n,D_2)]; % % % if ldl’ factorization if L and D are not provided, we calc new factorization ; otherwise, reuse them isempty(L) || isempty(D) || isempty(pm) [L,D,pm] = ldl(B,’vector’) ; end sol (pm,:) = L’\(D\(L\(rhs(pm,:)))); dy = sol(1:m); dx = sol(m+1:m+n); ds = -(Rxs+s.*dx)./x; if errorCheck == fprintf ( ’ error = %6.2e’,norm(A’*dy + ds + Rc)+ norm(A*dx + Rb) + norm(s.*dx + x.*ds + Rxs)); fprintf ( ’\t + err_d = %6.2e’,norm(A’*dy + ds + Rc)); fprintf ( ’\t + err_p = %6.2e’,norm(A*dx + Rb)); fprintf ( ’\t + err_gap = %6.2e\n’,norm(s.*dx + x.*ds + Rxs)); end end 3.5.4 setParamOptions.m function [param, options] = setParamOptions(param_in) % SETPARAMOPTIONS % % This script is used to set the default value of parameters that control Chương Code Matlab % % % % % % % % % % % 31 the behavior of the algorithm Input: param_in: optional, user-defined parameters Output: param : struct , parameters options : struct , options Yiming Yan @ University of Edinburgh Version 0.1 Date: 23/02/2012 param = []; options=[]; % Basic paramters - default value param.maxN = 100; % maximum number of iterations allowed param.eps = 1e-08; % tolorence for termination param.theta = 0.9995; % ratio for choosing step sizes param.verbose = 2; % 0, nothing % 1, only optimal information % 2, iterative info if nargin > if isfield (param_in, ’maxN’) param.maxN = param_in.maxN; end if isfield (param_in, ’eps’) param.eps = param_in.eps; end if isfield (param_in, ’verbose’) param.verbose = param_in.verbose; end end % Debuging options options.errorCheck = 0; % directions 0, nothing % 1, check the residuals of Newton’s 3.5.5 stepSize.m function [alphax, alphas] = stepSize(x, s , Dx, Ds, eta) % Function STEPSIZE % % Syntex: [alphax, alphas] = stepSize(x, s , Dx, Ds, eta) % % Get the stepsizes (alphax, alphas) for the primal and dual Newton’s % directions % % Version 0.8 % % Yiming Yan, University of Edinburgh 21/02/2012 32 3.5 Vào toán if nargin < eta = 0.9995; end if nargin < error( ’STEPSIZE: Not enough inputs’) end alphax = -1/min(min(Dx./x),-1); alphax = min(1, eta * alphax); alphas = -1/min(min(Ds./s),-1); alphas = min(1, eta * alphas); %alpha = min(alphax, alphas); end Sau hoàn tất bước , Matlab kết Dưới kết Matlab Command Window : A= 0.5377 1.8339 -2.2588 0.8622 b= 3.5838 3.0569 -1.5381 4.2278 c = -0.0506 0.9026 3.0758 1.0157 1.3656 0.7440 x= 0.5210 0.0000 0.8353 0.0000 0.2792 0.5200 N= 0.3188 -1.3077 -0.4336 0.3426 3.5784 2.7694 -1.3499 3.0349 0.7254 -0.0631 0.7147 -0.2050 -0.1241 1.4897 1.4090 1.4172 0.6715 -1.2075 0.7172 1.6302 Chương Code Matlab ======== AFIRO ======== DONE! [m,n] = [27, 51], N = ======== BLEND ======== ITER MU 5.81e+00 1.78e+00 1.01e+00 2.82e-01 9.11e-02 2.78e-02 1.09e-02 3.56e-03 1.15e-03 9.68e-05 10 5.71e-06 11 3.59e-09 RESIDUAL ALPHAX ALPHAS 3.16e+01 0 7.32e+00 0.3843 0.3296 2.97e+00 0.2978 0.1963 1.34e+00 0.2729 0.4383 4.11e-01 0.3471 0.3727 1.19e-01 0.3558 0.3961 3.53e-02 0.3515 0.3326 1.45e-02 0.2936 0.4272 1.09e-03 0.4639 0.2903 3.37e-05 0.4914 0.4458 1.79e-06 0.4968 0.4672 1.13e-09 0.4978 0.4997 DONE! [m,n] = [74, 114], N = 11 >> 33 Chỉ mục , 10 completeness of the real numbers, 19, 22 Hình ảnh GS Mehrotra, 13 Một so sánh tốc độ hội tụ thuật tốn, 15 Ngun nhân thuật tốn PDC khơng hội tụ, rational Cauchy sequence, Sơ đồ thuật toán Mehrotra, 14 Thuật toán Mehrotra cải tiến, 19 Thuật toán PDC, Tính tốn số thuật tốn PDC, 11 Ví dụ thuật toán Mehrotra, 17 Đường thuật toán Mehrotra, 14 Định lý 1.2, 34 KẾT LUẬN BÀI LUẬN QHTT NÂNG CAO Student Name: Đỗ Đức Duy Date: 3/1/2022 Topic: Phương pháp dự đoán - chỉnh sửa Mehrotra Book Title: Từ thuật toán PDC đến phương pháp chỉnh Mehrotra cải tiến Sơ lược thực : Bài tiểu luận viết thành phần rõ ràng : Phần ( thuật tốn PDC) , sau dùng liên quan hội tụ thuật toán PDC đến với thuật toán Mehrotra ( phần 2) , sau sử dụng điểm yếu hội tụ thuật toán Mehrotra để đưa thuật toán Mehrotra cải tiến , cuối phần ( code Matlab) thuật tốn Mehrotra Những điều tơi đạt : Trong phần nêu nhìn tổng quan thuật tốn gốc - đối ngẫu chỉnh sửa, sở lý thuyết phục vụ cho Đồng thời tơi ví dụ mà cách xây dựng thơng thường không dẫn đến hội tụ thuật tốn , tính tốn số thích hợp để làm bàn đạp đến thuật tốn Mehrotra Trong phần giới thiệu lịch sử phát triển hình thành thuật tốn Mehrotra , sở lý thuyết ( tốc độ hội tụ , độ phức tạp , điểm hội tụ, ) đề xuất cách cải tiến để làm tăng tốc độ hội tụ Trong thuật toán Mehrotra cải tiến tơi so sánh tiêu chí giống để quý độc giả thấy phát triển tư thuật tốn Trong phần tơi có giới thiệu cách code thuật tốn Mehrotra Matlab Ở hướng dẫn chi tiết từ cách cài đặt thuật toán , cách nhập liệu input đầu vào , hiểu liệu đầu output vấn đề liên quan Những điều cố gắng tương lai : Cũng giống thuật toán điểm khác , thân phương pháp gốc - đối ngẫu chỉnh sửa phương pháp Mehrotra có nhiều biến thể Vì tơi chọn biến thể đặc trưng để làm "kim nam" cho suốt luận Do xảy tình trạng ví dụ khơng hội tụ lại hội tụ cho biến thể khác ( dĩ nhiên suy đoán , dù hiếm) , phương pháp cải tiến dựa biến thể đặc trưng nên nhiều lúc chưa có tổng quát Phần code demo , gặp khó khăn tốc độ hội tụ vấn đề thực tế có hàng trăm biến hàng chục ràng buộc Tuy vậy, tiếp tục nghiên cứu để làm cầu "kết nối" biến thể lại với xem xét thuật tốn tơi đề xuất có cho biến thể hay khơng thời gian ngắn Cảm ơn quý độc giả ủng hộ ! TÀI LIỆU THAM KHẢO [1] K.M Anstreicher and R.A Bosch (1995), A new infinity-norm path following algorithm for linear programming, SIAM Journal on Optimization, 5(2), pp 236-246 [2] D.A Bayer and J.C Lagarias (1991), Karmarkar’s linear programming algorithm and Newton’s method, Mathematical Programming, 50, pp 291-330 [3] C Cartis (2005), Some disadvantages of a Mehrotra-tpye primal-dual corrector interior point algorithm for linear programming, http://www.optimization-online.org [4] C.C Gonzaga (1999), Complexity of predictor-corrector algorithms for LCP based on a large neighborhood of the central path, SIAM Journal on Optimization, 10, pp 183-194 [5] P Hung and Y Ye (996), An asymptotically O( √ nL)-iteration path-following linear programming algorithm that uses long steps, SIAM Journal on Optimization, 6, pp 570586 [6] N.K Karmarkar (1984), A new polynomial-time algorithm for linear programming, Combinatorica, 4, pp 373-395 [7] N Megiddo (1989), Pathways to the optimal set in linear programming, In: N Megiddo, editor, Progress in Mathematical Programming: Interior Point and Related Methods, pp 131-158 Springer Verlag, New York Identical version in: Proceedings of the 6th Mathematical Programming Symposium of Japan, Nagoya, Japan, 1986, pp 1-35 [8] S Mehrotra (1992), On the implementation of a (primal-dual) interior point method, SIAM Journal on Optimization, 2, pp 575-601 [9] C Mészáros (1997), Linear and Quadratic Programming Test Problems, http://www.sztaki.hu/∼meszaros/bpmpd [10] S Mizuno M.J Todd, and Y Ye (1993), On adaptive step primal-dual interiorpoint algorithms for linear programming, Mathematics of Operations Research, 18, pp 964981 [11] R.D.C Monteiro, I Adler, and M.G.C Resende (1990), A polynomial-time primaldual affine scaling algorithm for linear and convex quadratic programming and its power series extensions, Mathematics of Operations Research, 15, pp 191-214 [12] J Peng, T Terlaky, and Y.B Zhao (2005), A predictor-corrector algorithm for linear optimization based on a specific self-regular proximity function, To appear in SIAM Journal on Optimization [13] J Ji, F.A Potra, and S Huang (1995), A predictor-corrector method for linear complementarity problems with polynomial complexity and superlinear convergence, Journal of Optimization Theory and Applications , 84(1), pp 187-199 [14] F.A Potra (2002), The Mizuno-Todd-Ye algorithm in a large neiborhood of the central path, European Journal of Operation Researh, 143, pp 257-267 [15] F.A Potra (2004), A superlinearly convergent predictor-corrector method for degenrate LCP in a wide neighborhood of the central path, Mathematical Programming, 100(2), pp 317 - 337 [16] F.A Potra and X Liu (2003), Predictor-corrector methods for sufficient linear complementarity problems in a wide neighborhood of the central path, Technical Report, Department of Mathematics and Statistics, University of Maryland, USA [17] C Roos, T Terlaky, and J.-Ph.Vial (1997) Theory and Algorithms for Linear Optimization: An Interior Point Approach, John Wiley & Sons, Chichester, UK [18] M Salahi and T Terlaky (2004), Adaptive large neighborhood self-regular predictor-corrector IPMs for LO, Technical Report 2004/7, Advanced Optimization Lab Department of Computing and Software, McMaster University, http://www.cas.mcmaster.ca/∼oplab/publication To appear in Journal of Optimization Theory and Applications [19] G Sonnevend (1985), An ”analytic center” for polyhedrons and new classes of global algorithms for linear (smooth, convex) programming, In: A Pr´ekopa, J Szelezs´an, and B Strazicky, editors, System Modeling and Optimization: Proceeding of the 12th IFIP Conference, Budapest, Hungary, September 1985, Volume 84, Lecture Notes in Control and Information Sciences, pp 866-876 Springer Verlag, Berlin, 1986 [20] S.J Wright (1997), Primal-Dual Interior-Point Methods, SIAM, Philadelphia, USA [21] Y Ye and K.M Anstreicher (1993), On quadratic and O( √ nL) convergence of a predictor-corrector algorithm for LCP, Mathematical Programming, 62, pp 537-551 [22] Y Zhang (1999), Solving large-scale linear programs by inteior point methods under the Matlab enviroment, Optimization Methods and Software, 10, pp.1-31 [23] Y Zhang and D Zhang (1995), On the polynomiality of the Mehrotra-type predictorcorrector interior point algorithms, Mathematical Programming, 68(3), pp 303318 [24] X Zhu, J Peng, T Terlaky, and G Zhang (2003) On implementing selfregular proximity based feasible IPMs, Technical Report 2003/2, Advanced Optimization Lab Department of Computing and Software, McMaster University, http://www.cas.mcmaster.ca/∼oplab/publication [25] M Salahi, J Peng, T Terlaky On Mehrotra-Type Predictor-Corrector Algorithms [26] C Cartis, On interior point methods for linear programming, PhD thesis, Department of Applied Mathematics and Theoretical Physics, University of Cambridge, 2004 [27] R.M Freund, S Mizuno, Interior point methods: current status and future directions, in: High Performance Optimization, Appl Optim., vol 33, Kluwer Acad Publ., Dordrecht, 2000, pp 441–466 [28] J Gondzio, Multiple centrality corrections in a primal-dual method for linear programming, Comput Optim Appl (2) (1996) 137–156 [29] C.C Gonzaga, Path-following methods for linear programming, SIAM Rev 34 (2) (1992) [30] M Kojima, N Megiddo, S Mizuno, A primal-dual infeasible-interior-point algorithm for linear programming, Math Programming Ser A 61 (3) (1993) 263–280 [31] M Kojima, S Mizuno, A Yoshise, A primal-dual interior point algorithm for linear programming, in: Progress in Mathematical Programming, Pacific Grove, CA, 1987, Springer, New York, 1989, pp 29–47 [32] I.J Lustig, R.E Marsten, D.F Shanno, On implementing Mehrotra’s predictor– corrector interior-point method for linear programming, SIAM J Optim (3) (1992) 435–449 [33] S Mehrotra, On finding a vertex solution using interior point methods, Linear Algebra Appl 152 (1991) 233–253 [34] S Mehrotra, On the implementation of a primal-dual interior point method, SIAM J Optim (4) (1992) 575–601 [35] J Nocedal, S.J Wright, Numerical Optimization, Springer-Verlag, New York, 1999 [36] F.A Potra, S.J Wright, Interior-point methods, J Comput Appl Math 124 (1–2) (2000) 281–302 [37] R Tapia, Y Zhang, M Saltzman, A Weiser, The Mehrotra predictor–corrector interior-point method as a perturbed composite Newton method, SIAM J Optim (1) (1996) 47–56 [38] S.J Wright, Primal-Dual Interior-Point Methods, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, 1997 [39] Y Zhang, User’s guide to LIPSOL: linear-programming interior point solvers V0.4, Optim Methods Softw 11/12 (1–4) (1999) 385–396 [40] Y Zhang, D.T Zhang, On polynomiality of the Mehrotra-type predictor–corrector interior-point algorithms, Math Programming Ser A 68 (3) (1995) 303–318 [41] Yiming Yan (2022) Mehrotra's Predictor-Corrector Interior Point Method Demo (https://github.com/YimingYAN/mpc), GitHub Retrieved January 2, 2022

Ngày đăng: 12/07/2023, 13:08

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan