(Tiểu luận) báo cáo bài tập lớn môn đại số tuyến tính đề tài ứng dụng của đại số tuyến tính trong qui hoạch tuyến tính với bài toán vận tải

36 6 0
(Tiểu luận) báo cáo bài tập lớn môn đại số tuyến tính đề tài ứng dụng của đại số tuyến tính trong qui hoạch tuyến tính với bài toán vận tải

Đ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

ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA  BÁO CÁO BÀI TẬP LỚN Môn: Đại số tuyến tính Đề tài: ỨNG DỤNG CỦA ĐẠI SỐ TUYẾN TÍNH TRONG QUI HOẠCH TUYẾN TÍNH VỚI BÀI TỐN VẬN TẢI GVHD: Ph.D Đặng Văn Vinh Lớp: L05 STT Mã số SV Họ Tên 2211739 Võ Trung Kiên 2212597 Phạm Thành Phú 2213546 Hà Huy Toại 2213941 Lê Nhật Khánh Việt 2214059 Phạm Lư Vỹ 2214063 Đào Ngọc Đơng Xn Thành Phố Hồ Chí Minh, Tháng 12 – 2022 h MỤC LỤC I BÀI TOÁN VẬN TẢI CÂN BẰNG THU PHÁT .3 Mơ hình tốn .3 Phương án vận chuyển 3 Bảng vận tải II CÁC ĐỊNH NGHĨA VÀ ĐỊNH LÝ, TÍNH CHẤT III CÁC PHƯƠNG PHÁP GIẢI BÀI TOÁN VẬN TẢI Phương pháp cước phí thấp Phương pháp góc Tây - Bắc IV CÁC BƯỚC GIẢI BÀI TOÁN VẬN TẢI CÂN BẰNG THU PHÁT V CODE MATHLAB GIẢI BÀI TOÁN CÂN BẰNG THU PHÁT 11 VI VÍ DỤ CỤ THỂ 34 DANH MỤC TÀI LIỆU THAM KHẢO 36 h ỨNG DỤNG CỦA ĐẠI SỐ TUYẾN TÍNH TRONG QUY HOẠCH TUYẾN TÍNH VỚI BÀI TỐN VẬN TẢI Bài tốn vận tải (transportation problem) toán quan trọng tốn qui hoạch tuyến tính Người ta tổng kết 85% tốn qui hoạch tuyến tính gặp ứng dụng toán vận tải mở rộng Thuật ngữ tốn vận tải thường hiểu toán vận chuyển cho cước phí nhỏ I BÀI TỐN VẬN TẢI CÂN BẰNG THU PHÁT Mơ hình tốn Có m nơi 𝐴1 , 𝐴2 , … 𝐴𝑚 cung cấp một loại hàng hóa với khối lượng tương ứng a1, a2, ,am Hàng cung cấp cho n nơi B1, B2, , Bn với khối lượng tiêu thụ tương ứng b1, b2, ,bn Cước phí chuyên chở đơn vị hàng từ điểm phát Ai đến điểm thu Bj cij Hãy lập phương án vận chuyển cho tổng chi phí vận chuyển nhỏ Phương án vận chuyển Hàm mục tiêu: tổng cước phí vận chuyển nhỏ 𝑚 𝑛 𝑓 = ∑ ∑ 𝑐𝑖𝑗 𝑥𝑖𝑗 → 𝑚𝑖𝑛 𝑖=1 𝑗=1 Các hàm ràng buộc: Phát hết hàng 𝑚 ∑ 𝑥𝑖𝑗 = 𝑎𝑖 (𝑖 = 1, 𝑚) 𝑖=1 Thu đủ hàng 𝑛 ∑ 𝑥𝑖𝑗 = 𝑏𝑗 (𝑗 = 1, 𝑛) 𝑗=1 Ràng buộc biên: 𝑥𝑖𝑗 ≥ ∀ 𝑖, 𝑗 h Cân thu phát Khi tổng số hàng dự trữ m điểm phát (cung) ∑𝑚 𝑖 𝑎𝑖 tổng số nhu cầu n điểm thu (cầu) ∑𝑛𝑗 𝑏𝑗 ta nói cân cung cầu (hay cân thu phát) Bảng vận tải Người ta thường trình bày tốn vận tải dạng bảng sau: 𝑏1 Thu 𝑏2 ⋯ 𝑏𝑛 Phát 𝑎1 𝑐11 𝑐12 𝑐1𝑛 𝑥11 𝑎2 𝑐21 𝑥12 𝑐22 𝑥1𝑛 𝑐2𝑛 𝑥21 𝑥22 𝑥2𝑛 𝑎𝑚 𝑐𝑚1 𝑐𝑚2 𝑐𝑚𝑛 𝑥𝑚1 𝑥𝑚2 𝑥𝑚𝑛 Trong đó: Có n trạm thu hàng khối lượng hàng tiêu thụ tương ứng bn Có m trạm phát hàng khối lượng hàng cung cấp tương ứng am Khối lượng chở từ trạm phát đến trạm thu xij Cước phí chuyên chở đơn vị hàng từ trạm phát đến trạm thu cij Với 𝑖 = 1, 𝑚 𝑣à 𝑗 = 1, 𝑛 II CÁC ĐỊNH NGHĨA VÀ ĐỊNH LÝ, TÍNH CHẤT Định nghĩa ô chọn, ô loại + Ta viết (i ; j) dịng i cột j + Trong bảng vận tải, có xij > gọi chọn, có xij = h gọi ô loại Định nghĩa đường Đường tập hợp ô chọn cho: ● Trên dòng hay cột khơng có q hai chọn ● Hai chọn liên tiếp nằm dịng hay cột Ví dụ Dãy chọn sau tạo thành đường đi: Định nghĩa chu trình Một đường khép kín gọi chu trình Ví dụ Dãy ô chọn sau tạo thành chu trình Tính chất 1: Một bảng vận tải có m dịng, n cột tập chọn khơng chứa chu trình có tối đa m + n - h Tính chất 2: Với phương án có đủ m + n - chọn khơng chứa chu trình, với loại đưa vào phương án tạo thành chu trình chu trình Ví dụ Xét bảng vận tải dịng, cột với phương án có 3+4-1= chọn cho sau: Khi ta thêm ô loại loại kết hợp với số chọn tạo thành chu trình Chẳng hạn, ta thêm loại (1,2) vào phương án kết hợp với ô (3,2); (3,3); (2,3); (2,1); (1;1) tạo thành chu trình h Định lý 1: Một phương án gọi phương án cực biên toán vận tải tập chọn khơng chứa chu trình Định lý 2: Một phương án cực biên có m + n - ô chọn gọi phương án cực biên không suy biến Ngược lại, phương án cực biên có m + n - ô chọn gọi phương án cực biên suy biến Ví dụ Phương án sau phương án cực biên không suy biến Thu 20 Phát 40 70 30 50 20 30 20 10 10 40 40 50 20 h 30 Ví dụ Phương án sau phương án cực biên suy biến: Thu 60 Phát 70 12 40 30 12 100 70 30 11 80 60 11 20 10 20 20 h III CÁC PHƯƠNG PHÁP GIẢI BÀI TOÁN VẬN TẢI Phương pháp cước phí thấp Chọn có cước phí bé Điền vào giá trị lớn Loại bỏ mà trạm phát hàng hết khả cung cấp trạm thu hàng hết nhu cầu Xác định lại có chi phí bé cịn lại tiếp tục làm giống bước hết khả phân phối Trong trình chọn phân phối có nhiều chọn có chi phí nhỏ giống phân phối vào Phương án thu phương pháp phương án cực biên Phương pháp góc Tây - Bắc Ta ưu tiên phân phối lượng hàng nhiều vào góc Tây - Bắc bảng vận tải Khi nếu: Trạm phát hết hàng ta xóa dịng chứa trạm phát Trạm thu nhận đủ hàng ta xóa cột chứa trạm thu Sau lặp lại trình cịn lại Phương án thành lập phương pháp góc Tây - Bắc phương án cực biên IV CÁC BƯỚC GIẢI BÀI TOÁN VẬN TẢI CÂN BẰNG THU PHÁT Bước 1: Kiểm tra cân thu phát 𝑛 • Nếu ∑𝑚 𝑖 𝑎𝑖 = ∑𝑗 𝑏𝑗 tốn cân thu phát → chuyển sang bước 𝑛 • Nếu ∑𝑚 𝑖 𝑎𝑖 ≠ ∑𝑗 𝑏𝑗 tốn khơng cân thu phát → tiếp tục bước Bước 2: Đưa toán cân thu phát h Thêm vào trạm phát/ thu giả có cước phí 𝐶𝑖𝑛+1 = để chuyển toán thành cân  Trường hợp phát > thu → thêm trạm thu giả 𝑏𝑛+1 với lượng hàng = ∑ 𝑝ℎá𝑡 − ∑ 𝑡ℎ𝑢  Trường hợp phát < thu → thêm trạm phát giả 𝑎𝑚+1 với lượng hàng = ∑ 𝑡ℎ𝑢 − ∑ 𝑝ℎá𝑡 Bước 3: Tìm phương án xuất phát Thành lập phương án cực biên ban đầu theo nguyên lý phân bổ tối đa với ô chọn phân bổ phương pháp: góc Tây Bắc, cước phí thấp nhất,… Bước 4: Kiểm tra phương án suy biến hay khơng suy biến • Phương án khơng suy biến phương án có số chọn số trạm phát + số ô trạm thu –1 → chuyển tới bước • Phương án suy biến phương án có số chọn < số trạm phát + số ô trạm thu –1 → tiếp tục bước Bước 5: Đưa phương án không suy biến Bổ sung thêm loại bảng làm ô chọn giả (lượng hàng phân bổ 𝑥𝑖𝑗 = 0) cho đủ (𝑚 + 𝑛 − 1) ô chọn đảm bảo khơng tạo thành chu trình Bước 6: Tính vị 𝑢𝑖 , 𝑣𝑗 • Chọn 𝑢𝑖 = 𝑣𝑗 = (tương ứng với hàng cột mà có nhiều chọn nhất) • Các 𝑢𝑖 𝑣𝑗 lại phải thỏa mãn 𝑢𝑖 + 𝑣𝑗 + 𝑐𝑖𝑗 = Với (i, j) chọn (chỉ tính chọn) Bước 7: Tính ∆𝑖𝑗 loại kết luận ∆𝑖𝑗 = 𝑢𝑖 + 𝑣𝑗 + 𝑐𝑖𝑗 ,∀(i, j)  Kiểm tra dấu hiệu tối ưu phương án: Nếu ∆𝑖𝑗 ≥ → Phương án xét tối ưu → Tính fmin 10 h x33(i,j)=x(i,j); x44(i,j)=x(i,j); end end end %% Construct stepping stone path for searching the improvement index for j=1:n for i=1:m x33(ismall,jsmall)=inf; x44(ismall,jsmall)=inf; end end % Count the number of the basic cell on each row and column for j=1:n countcol1=0; for i=1:m if x33(i,j)>0 countcol1=countcol1+1; end end x33(m+1,j)=countcol1; x44(m+1,j)=countcol1; end for i=1:m countrow1=0; for j=1:n if x33(i,j)>0 countrow1=countrow1+1; end end x33(i,n+1)=countrow1; x44(i,n+1)=countrow1; end % Eliminate the basic variables that has only one on each row iterationloop1=0; for i=1:m 22 h iterationloop1=iterationloop1+1; for i=1:m if x44(i,n+1)==1 ieliminate3=i; for j=1:n if x44(ieliminate3,j)0 jeliminate3=j; x44(ieliminate3,jeliminate3)=0;% Eliminate the basic variable on row x44(ieliminate3,n+1)=x44(ieliminate3,n+1)-1; % decrease the number of the basic variable on row one unit x44(m+1,jeliminate3)=x44(m+1,jeliminate3)-1; % decrease the number of the basic variable on column one unit end end end end %% Eliminate the basic variables that has only one on each column for j=1:n if x44(m+1,j)==1 jeliminate4=j; for i=1:m if x44(i,jeliminate4)0 ieliminate4=i; x44(ieliminate4,jeliminate4)=0;% Eliminate the basic variable on row x44(m+1,jeliminate4)=x44(m+1,jeliminate4)-1; % decrease the number of the basic variable on column one unit x44(ieliminate4,n+1)=x44(ieliminate4,n+1)-1;% decrease the number of the basic variable on row one unit end end end end 23 h %% Control the constructing loop path for j=1:n for i=1:m if (x44(i,n+1)==0 || x44(i,n+1)==2) && (x44(m+1,j)==0 || x44(m+1,j)==2) break end end end end %% Make +/-sign on basic variables in the loop path (x2) %1 Add - sign on basic variable on row(imax) and on basic variable on %column (jmax) for j=1:n if (x44(ismall,j)~=0 && x44(ismall,j)0 && x44(m+1,jneg)==1) ineg=i; end end end end for p=1:n for j=1:n 24 h if (j~=jneg && x44(ineg,j)>0 && x44(ineg,n+1)==2) jneg1=j; x44(ineg,jneg1)=(-1)*x44(ineg,jneg1); x44(ineg,n+1)=1; x44(m+1,jneg1)=1; for i=1:m if (x44(i,jneg1)>0 && x44(m+1,jneg1)==1) ineg1=i; ineg=ineg1; jneg=jneg1; end end end end % Control loop if jneg1==jsmall % return end end % Eliminate column j that has the number of basic variables =2 for j=1:n if x44(m+1,j)==2 for i=1:m if x44(i,j)>0 x44(i,j)=0; end end x44(m+1,j)=0; end end %Eliminate row i that has the number of basic variables =2 for i=1:m if x44(i,n+1)>=2 for j=1:n 25 h if x44(i,j)>0 x44(i,j)=0; end end x44(i,n+1)=0; end end %% Searching the absolute smallest path and add this path to (ismall,jsmall) cell minpath=inf; for j=1:n for i=1:m if x44(i,j)0 && x(i,j)~=inf countstepdegen=countstepdegen+1; end end end sumdemand=zeros(1,n); 27 h for j=1:n demandsum=0; for i=1:m if round(x(i,j))>0 demandsum=demandsum+round(x(i,j)); end end sumdemand(j)=demandsum; end for j=1:n if sumdemand(j)~=round(d(j)) disp('Unbalanced demand'); break end end % Check supply sumsupply=zeros(m,1); for i=1:m supplysum=0; for j=1:n if round(x(i,j))>0 supplysum=supplysum+round(x(i,j)); end end sumsupply(i)=supplysum; end for i=1:m if sumsupply(i)~=round(s(i)) disp('Unbalanced supply'); break end end if countstepdegen >= Check else % How to correct the degeneracy problem 28 h %% How to correct degeneracy matrix numstepdegen=reducetant-countstepdegen; iterationstepDegen=0; for A=1:numstepdegen iterationstepDegen=iterationstepDegen+1; %% Construct the u-v variables %% Construct the u-v variables udual=zeros(m,1); vdual=zeros(1,n); for i=1:m udual(i)=inf; end for j=1:n vdual(j)=inf; end udual(1)=0; for i=1:1 for j=1:n if x(i,j)>0 vdual(j)=c(i,j)-udual(i); end end end for j=1:1 for i=1:m if x(i,j)>0 iu=i; if udual(iu)0 ienter1=i; for j=1:n if j~=jmax if x1(ienter1,j)>0 jenter1=j; end end end end 32 h end end x1(imax,jenter1)=r; x(imax,jenter1)=r; % Add demand and supply for j=1:n d(jenter1)=d(jenter1)+r; end for i=1:m s(imax)=s(imax)+r; end end end %The number of basic variable countopt=0; for j=1:n for i=1:m if x(i,j)>0 countopt=countopt+1; end end end % Convert x matrix xpath=zeros(m,n); for j=1:n for i=1:m if x(i,j)>0 xpath(i,j)=round(x(i,j)); end end end % Total cost Zopt=0; for j=1:n for i=1:m if xpath(i,j)>0 Zopt=Zopt+(xpath(i,j)*c(i,j)); 33 h end end end disp('Ma tran ket qua:'); disp(xpath); disp('Tong chi phi:'); disp(Zopt); end VI VÍ DỤ CỤ THỂ Một cơng ty may mặc có có 235 hàng hóa kho Quận (45 tấn), Quận (90 tấn) Quận (110 tấn) Cần vận chuyển hàng hóa đến cửa hàng Quận 1, Quận 2, Quận 3, Quận số lượng hàng hóa 40, 75, 60, 70 Chi phí vận chuyển cho bảng đây: Cửa hàng Quận Quận Quận Quận Quận 82 73 74 79 Quận 80 75 81 79 Quận 80 77 77 82 Kho Bài toán đặt lập kế hoạch vận chuyển hàng từ kho đến cửa hàng cho lượng hàng kho phải lấy hết, lượng hàng mà cửa hàng yêu cầu phải đáp ứng đầy đủ tổng chi phí vận chuyển thấp 34 h Bài giải Bước 1: Xác định ma trận từ đề • Ma trận chi phí: [82 73 74 79; 80 75 81 79; 80 77 77 82] • Ma trận cung cấp: [45 90 110] • Ma trận nhu cầu: [40 75 60 70] Bước 2: Nhập ma trận vừa tìm vào Command Window  Nhận xét: Qua kết thu từ MATLAB, cho thấy lời giải ban đầu chưa giải chi phí tối ưu sau lần lặp lại tốn cho tổng chi phí thấp cần tìm 35 h DANH MỤC TÀI LIỆU THAM KHẢO 1) Quy hoạch tuyến tính tốn vận tải https://www.youtube.com/watch?v=y_kPBQl7GVU&t=2454s https://www.youtube.com/watch?v=hok-ojKnAKg https://voer.edu.vn/c/bai-toan-van-tai/78021439/a36107d4 2) Code mathlab giải toán cân thu phát https://123docz.net/document/5861265-code-matlab-giai-bai-toan-van-taitransportation.htm 36 h

Ngày đăng: 10/05/2023, 15:19

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

Tài liệu liên quan