1. Trang chủ
  2. » Giáo Dục - Đào Tạo

QUY HOẠCH RỜI RẠC - CHƯƠNG 3 pps

24 297 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 589,99 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bùi Thế Tâm III.1 Quy hoạch rời rạc Chương 3 THUẬT TOÁN GOMORY THỨ NHẤT Trong chương này sẽ trình bày thuật toán Gomory thứ nhất và chứng minh sự hội tụ của nó... Vấn đề này nói chung

Trang 1

Bùi Thế Tâm III.1 Quy hoạch rời rạc

Chương 3

THUẬT TOÁN GOMORY THỨ NHẤT

Trong chương này sẽ trình bày thuật toán Gomory thứ nhất và chứng minh sự hội

tụ của nó

1.1. Việc giải bài toán quy hoạch tuyến tính nguyên (L C có dẫn tới việc giải N, )

một bài toán quy hoạch tuyến tính ( , )A C không ?

Định lý 1 Giả sử L là một đa diện lồi, L là tập các điểm nguyên của nó, N

( N)

RV L là bao lồi tuyến tính của tập các điểm nguyên L Khi đó: N

1) RV L( N)là một đa diện nguyên (các đỉnh đều là nguyên)

2) R N =L N (1)

3) Tập R các phương án tựa của đa diện R chứa trong * R N:

R* ⊆R N (2)

Chứng minh

1) Chứng minh R là một đa diện nguyên ? Vì L là một đa diện lồi nênL là tập N

hữu hạn ⇒RV L( N) là tổ hợp lồi tuyến tính của một tập hữu hạn Vì vậy, R là

một đa diện , đồng thời

Trang 2

Bùi Thế Tâm III.2 Quy hoạch rời rạc

U =R =V L( N) (9)

Chứng minh Từ (8) trực tiếp suy ra

RU (10) ( vì R V L= ( N)=V U( N)⊆ ) U

Trang 3

Bùi Thế Tâm III.3 Quy hoạch rời rạc

BÀI TOÁN(L C N, ) BÀI TOÁN( , )L C BÀI TOÁN RV L C( N, )

Max=5 Max=7 Max=5

Tối ưu là 2 điểm Tối ưu là một đoạn Tối ưu là đoạn

Do đó xuất hiện vấn đề: cho một đa diện lồi L , tìm bao lồi ( V L N)các điểm nguyên của

nó? Vấn đề này nói chung cũng khó như chính việc giải bài toán quy hoạch tuyến tính nguyên

1.5. Khi xây dựng (V L N)ta đã không sử dụng thông tin về hàm mục tiêu CX

của bài toán quy hoạch tuyến tính nguyên Vậy có nên tìm một bài toán quy hoạch tuyến tính ( , )A C theo bài toán ( L C sao cho thoả mãn 3 điều kiện: N, )

1) CX L C = ( N, ) CX A C (các trị tối ưu trùng nhau) (12) ( , )

Trang 4

Bùi Thế Tâm III.4 Quy hoạch rời rạc

2) A N =L N ( tập các điểm nguyên bằng nhau ) (11) 3) Tất cả các phương án tựa tối ưu của bài toán quy hoạch tuyến tính ( , )A C đều

thoả mãn điều kiện nguyên:

A cA* ⊆A N (14) (tong đó A là tập hợp các phương án tối ưu của bài toán (A,C); c A là tập hợp các đỉnh *

của đa diện lồi A)

Nói chung, việc xây dựng đa diện lồi A thoả mãn (12) – (14) cũng rất phức tạp và

chưa có thuật toán hữu hiệu

1.6 Khái niệm lát cắt đúng

Giả sử bài toán (L C là bài toán quy hoạch nguyên nào đó và phương án tựa tối N, )

ưu của bài toán quy hoạch tuyến tính tương ứng ( , )X L C không thoả mãn điều kiện

gọi là lát cắt đúng nếu thoả mãn 2 điều kiện:

- Điều kiện cắt: ( , )X L C không thoả mãn (15), tức là aX L C( , )> β

- Điều kiện đúng: nếu X là phương án của ( L C thì X thoả mãn (15) , tức là N, )

L N ⊂{X aXβ}

Nói cách khác, ràng buộc thêm không cắt đi một phương án nguyên nào của bài toán (L C N, )

Trang 5

Bùi Thế Tâm III.5 Quy hoạch rời rạc

1.7 Tư tưởng phương pháp cắt của Danzig

1 Việc giải (L C là một quá trình gồm nhiều bước: N, )

a) Ở bước thứr giải bài toán bài toán quy hoạch tuyến tính phụ ( , )L C , r r = 0, 1,

Do đó, nếu phương án tối ưu ( , )X L C của bài toán( , ) r L C thoả mãn điều kiện r

nguyên thì nó cũng là phương án tối ưu X L( 0N, )C của bài toán xuất phát (L0N, )C và

quá trình kết thúc

c) Nếu ( , )X L C không thoả mãn điều kiện nguyên thì ( , ) r X L C không phải là r

phương án của bài toán (L r+1, )C , tức là ( , )X L C rL r+1

2 Chuyển từ bước r sang bước r + , tức là chuyển từ bài toán ( , )1 L C sang r

2 THUẬT TOÁN GOMORY THỨ NHẤT

Thuật toán Gomory lần đầu tiên thực hiện phương pháp cắt để giải bài toán quy hoạch tuyến tính nguyên mà đối với nó việc xây dựng lát cắt đúng được tiến hành một cách thuật toán, việc chứng minh tính hữu hạn của thuật toán cũng dễ dàng hơn

2.1 Xét bài toán quy hoạch tuyến tính nguyên hoàn toàn

Trang 6

Bùi Thế Tâm III.6 Quy hoạch rời rạc

Maxx =0

1

n

j j j

Giả sử ( , )X L C là phương án tựa tối ưu của bài toán ( , ) L C , từ đó ta có thể biểu diễn

các biến qua các biến phi cơ sở :

Vì −{x i0}> -1 ; x j≥ 0 và { }xij ∈[0,1) nên 1− <z i < , tức là 0 z không nguyên i

Điều này mâu thuẫn với chứng minh câu a), do đó z i≥ 0

Chú ý, nếu x0 được đảm bảo tính nguyên (chẳng hạn mọi c đều là nguyên) thì j

Định lý 3 cũng đúng với i = 0

Trang 7

Bùi Thế Tâm III.7 Quy hoạch rời rạc

Hệ quả 2 Giả sử X L C( , ) không thoả mãn điều kiện nguyên (19), như vậy đối

với i nào đó (1≤ i ≤ n) x i0 không nguyên Khi đó các hệ thức (21) và (23) xác định một lát cắt đúng

2.2 Trong lược đồ phương pháp cắt ở trên, vì bài toán ( , )L C có thể có nhiều lời r

giải nên ( , )X L C không duy nhất Gomory giải bài toán ( , ) r L C thay cho bài r

toán( , )L C , do đó phương án l - tối ưu ( , ) r X L C là tựa và xác định duy nhất, các tính r toán trên tiến hành nhờ l - phương pháp

2.3. Trong phương pháp cắt vấn đề quan trọng là việc tăng số lượng ràng buộc Gomory đặt kích thước hạn chế cho bảng đơn hình mở rộng bằng số (n+2) x (k+1) Các ràng buộc a X rβ r chỉ là phương pháp để cắt phương án tối ưu không nguyên ( , )r

X L C và chuyển từ bài toán ( , ) L C sang bài toán r (L r+1, )C Chú ý rằng biến

= −



 ≥



Tư tưởng của Gomory như sau:

- Ngay sau khi x n r+ +1đưa ra khỏi cơ sở dòng tương ứng xoá khỏi bảng đơn hình mở rộng

- Nếu trong qúa trình tính toán tiếp theo x n r+ +1 lại đưa vào cơ sở thì dòng tương ứng trong bảng đơn hình không được khôi phục và x n r+ +1không tham gia vào các tính toán tiếp theo Như vậy ở bước lặp bất kỳ của tính toán, bảng đơn hình bao gồm (k+1) cột như bảng đơn hình xuất phát, số lượng các dòng không vượt quá n+2 Suy ra cỡ của bảng không vượt quá (n+2) x (k+1)

2.4 Nếu bài toán ( , )L C không có lời giải vì hàm mục tiêu x0 =CX không bị

chặn trên khúc lồi L thì thuật toán Gomory thứ nhất không áp dụng được

Thuật toán Gomory cũng không áp dụng được trong trường hợp bài toán ( , )L C có lời giải nhưng l - bài toán ( , ) L C không có lời giải Điều đó dường như là tập hợp các

phương án tối ưu của bài toán( , )L C khác trống nhưng không bị chặn

Trang 8

Bùi Thế Tâm III.8 Quy hoạch rời rạc

Về sau ta sẽ giả thiết :

1) x0 ≡CX bị chặn trên trên L

2) Nếu tập hợp các phương án tối ưu của ( , )L C khác trống

thì nó phải bị chặn, tức là nếu bài toán( , )L C giải được thì bài toán ( , ) L C cũng giải

được

2.5 Thuật toán Gomory thứ nhất

Bước lặp ban đầu

Giải bài toán ( , )L C ≡( , )L C nhờ 0 l- phương pháp, nếu nó không giải được thì

bài toán (L C cũng không giải được N0, )

Nếu bài toán( , )L C giải được và 0 X L C thoả mãn điều kiện nguyên thì ( , )0

0

( , )

X L C là phương án tối ưu của bài toán nguyên ban đầu (L C Nếu không thoả N0, )

mãn điều kiện nguyên thì chuyển sang bước r = 0

Chọn dòng đầu tiên ứng với thành phần không nguyên:

k = min{i i ∈{1 n x}, io r không nguyên}

và xây dựng lát cắt đúng:

1 0 kj1

1

0 nguyên

Trang 9

Bùi Thế Tâm III.9 Quy hoạch rời rạc

Viết dòng thứ nhất của (24) vào cuối bảng đơn hình T Ta được bảng đơn hình r

không chấp nhận được (chỉ vớix n r+ +1) và l- chuẩn Dùng l-phương pháp đối với bảng này, đồng thời sau khi đưa khỏi cơ sở x n r+ +1 thì dòng tương ứng n+ + bị r 1xoá, sau khi đưa vào cơ sở x l(l ≥ + ) thì dòng tương ứng không được khôi phục r 1Nếu cuối cùng ta nhận được bảng đơn hình ứng với bài toán quy hoạch tuyến tính không giải được thì bài toán (L0N, )C cũng không giải được

Nếu ta nhận được bảng T r+1chấp nhận được và l - chuẩn thì kiểm tra tính nguyên

của X L( r+1, )C Nếu X L( r+1, )C thoả mãn điều kiện nguyên thì nó đồng thời là phương án tối ưu của bài toán (L0N, )C , nếu không thoả mãn thì chuyển sang bước

r+1

Giả sử tập các phương án tối ưu của bài toán ( , )L C là bị chặn 0

Định lý 4 Giả sử có các điều kiện sau:

1) Tính nguyên của hàm mục tiêu x0 ≡CX được đảm bảo và x được xét khi 0

chọn dòng xây dựng lát cắt đúng

2) Một trong các khẳng định sau là đúng:

i) Hàm mục tiêu x bị chặn dưới trên 0 L 0

ii) Bài toán (L C có ít nhất một phương án N0, ) X '

Khi đó thuật toán Gomory thứ nhất kết thúc sau một số hữu hạn bước lặp lớn Trước khi chứng minh định lý ta cần chứng minh ba bổ đề Giả sử ( , )r

X L CX r ≡( , , ,x x0r 1r x n r) Kí hiệu X là giả phương án ứng với bảng r T nhận r

được từ bảng T sau khi loại khỏi cơ sở r x n r+ +1 và xoá dòng tương ứng

Bổ đề 1. Ta có: X r >X rX r+1

Bất đẳng thức đầu tiên suy ra từ công thức biến đổi bảng đơn hình và tính l -

chuẩn của bảng đơn hình (cột đầu tiên của T r được tính theo công thức

− có số đầu tiên khác 0 là dương) Bất đẳng thức thứ hai là do cột

0 giảm khi dùng phương pháp đơn hình đối ngẫu từ vựng

Trang 10

Bùi Thế Tâm III.10 Quy hoạch rời rạc

x =x với i <k = h R( l r) (h là chỉ số đầu tiên r

x i r+1 =x i r; rr0;0≤ ≤i i0− (27) 1

x r i0ν +1 <x i r0ν,(ν = 1,2, ) (28)

Từ Bổ đề 1 và (27) ta có

x i r0+1 ≤x r i r0, ≥r0 (29)

Trang 11

Bùi Thế Tâm III.11 Quy hoạch rời rạc

Từ (28), (29) và bổ đề 2 suy ra tồn tại số r' >r0 và các số nguyên z0 và z0+1 sao cho:

1≥

x , x2 ≥ 0, x3 ≥ 0

3 2

4 8 2 x x x

x = − − +

3 2 1

5 9 x 4 x x

x = − − − (32)

3 2 1

6 3 x 2 x 2 x

x = + + −

3 2 1

7 6 3 x x x

x = − + +

0 ,

, ,

xx8 ≥ 0 và viết vào phía dưới bảng 1

Bảng đơn hình xuất phát sau khi thêm ràng buộc phụ:

Trang 12

Bùi Thế Tâm III.12 Quy hoạch rời rạc

tuyến tính cho đến tối ưu ta được các bảng 3, bảng 4, bảng 5, bảng 6

Trang 13

Bùi Thế Tâm III.13 Quy hoạch rời rạc

Tám dòng đầu của bảng 6 là bảng đơn hình l- chuẩn và chấp nhận được

Do x0 lẻ nên từ dòng 0 sinh lát cắt ở dòng x9 theo công thức (24) và ta được bảng 6

Trang 14

Bùi Thế Tâm III.14 Quy hoạch rời rạc

Thực hiện một bước của thuật toán đơn hình đối ngẫu từ vựng ta được bảng đơn hình l- chuẩn và chấp nhận được Biến x1 lẻ nên từ dòng x1 sinh ra lát cắt ở dòng x10

Trang 15

Bùi Thế Tâm III.15 Quy hoạch rời rạc

x

i j m

j ij

b x

a

=1

, i = 1 , , p 0

j

x và nguyên , j = 1 , 2 , , m các b[i] có thể dương và âm, phương án xuất phát có thể không đối ngẫu chấp nhận được Nếu bài toán giải có ràng buộc đẳng thức dạng: i i

m

j ij

b x

max )

j

j x c x

m j

x

xj = ( − 1 )( − j) = 1 , 2 , ,

, , 2 , 1 )

)(

(

1

p i

x a b

j ij i

Trang 16

Bùi Thế Tâm III.16 Quy hoạch rời rạc

.

, ,

2 , 1 0 j m p xj ≥ = +

j x nguyên j = 1 , 2 , , m + p •Trong chương trình sử dụng các biến và mảng sau: - m: số biến chính, n: số biến chính và biến bù của bài toán (n=m+p), gz là một số dương đủ lớn và thường lấy bằng max { aij, bi, cj} - x0 =0 nếu có kể x0 nguyên và bằng 1 nếu x0 không cần nguyên - ss = 1 nếu bảng đơn hình s ban đầu là l- chuẩn và chấp nhận được , = 2 nếu bảng là l- chuẩn và không chấp nhận được, =3 nếu bảng không là l - chuẩn - Mảng s gồm n + 2 dòng và m+1 cột lúc đầu ghi dữ liệu của bài toán sau đó lưu bảng đơn hình ở mỗi bước Dòng n+1 để chứa ràng buộc phụ - s[0][0] hàm mục tiêu, cột 0 là cột phương án, dòng 0 là các ước lượng - cs : các biến ở bên trái bảng đơn hình, nc : các biến phi cơ sở •Cách nhập dữ liệu Dữ liệu ban đầu của bài toán được ghi trong một tệp văn bản, gồm có : - n, m, gz, x0, ss - Mảng s dữ liệu ban đầu bố trí dạng ở dưới và được ghi vào tệp dữ liệu theo từng dòng : - Tiếp đến là mảng cs: nhập các số từ 0, 1, 2,…, n - Cuối cùng là mảng nc: nhập các số từ 1, 2,…, m •Với dữ liệu bài toán (31) thì tệp dữ liệu VDG1.sli, có dạng: -x1 -x2 –xm 0 -c1 -c2 –cm x0 x1 x2 # xm 0 0 # 0 -1 0 0

0 -1 0

# # % #

0 0 -1

xm+1 # xn b1 # bp -a11 - a1m # # # -ap1 .-apm

Trang 17

Bùi Thế Tâm III.17 Quy hoạch rời rạc

t= (unsigned long far *)MK_FP(0,0X46C); t1=*t;

printf("\nCo in trung gian hay khong 1/0 ? ");

scanf("%d%*c",&tg);

// Nhap du lieu

printf("\nVao ten tep so lieu : "); gets(s1);

Trang 18

Bùi Thế Tâm III.18 Quy hoạch rời rạc

printf("\nBang 1, so lieu ban dau");

if (tg==1) fprintf(f2,"\nBang 1, so lieu ban dau");

printf("\nBang 1, so lieu ban dau them rang buoc phu");

if (tg==1) fprintf(f2,"\nBang 1, so lieu ban dau them rang buoc phu");

inbang(1);

l=n+1; // dong quay la dong cuoi cung

// Xac dinh cot quay

cmin=1;

for (j=2;j<=m;j++)

Trang 19

Bùi Thế Tâm III.19 Quy hoạch rời rạc

{ for (i=0; i<=n;i++)

{ if (s[i][cmin] > s[i][j]) {cmin=j; break;}

if (s[i][cmin] < s[i][j]) break;

}

}

printf("\nDong quay= %d, Cot quay= %d, Phan tu quay= %13.5lf", l,cmin,s[l][cmin]);

if (tg==1) { fprintf(f2,"\nDong quay= %d, Cot quay = %d, Phan tu quay= %13.5lf", l,cmin,s[l][cmin]);

}

biendoi(); sb++;

printf("\nBang %d, l- chuan dau tien",sb);

if (tg==1) fprintf(f2,"\nBang %d, l- chuan dau tien",sb);

inbang(0);

L1: kgd2= dhdoingau();

if (kgd2==1) {

printf("\nBai toan phu khong giai duoc, STOP");

if (tg==1) fprintf(f2,"\nBai toan phu khong giai duoc, STOP");

getch(); getch(); return;

}

lc=n+1;

// Tim xong bang l- chuan + chap nhan duoc, sang Buoc lap lon

Lap1: blap = blap+1;

printf("\n -");

printf("\n\nBUOC LAP LON THU %d: ",blap);

if (tg==1)

{ fprintf(f2,"\n -");

fprintf(f2,"\n\nBUOC LAP LON THU %d: ",blap);}

// Kiem tra loi giai toi uu bai toan phu co nguyen khong

le=-1;

for (i=x0; i<=n; i++)

if (ktnguyen(s[i][0])==0) {le = i; break; }

printf("\nThanh phan le thuoc dong = %d",le);

if (tg==1) fprintf(f2,"\nThanh phan le thuoc dong = %d",le);

if (le==-1) {

printf("\nPHUONG AN TOI UU QHTT NGUYEN: ");

if (tg==1) fprintf(f2,"\nPHUONG AN TOI UU QHTT NGUYEN: ");

for (i=0; i<=n;i++)

Trang 20

Bùi Thế Tâm III.20 Quy hoạch rời rạc

printf("\nx[%2d] = %13.5lf",cs[i],s[i][0]);

printf("\nSo luong lat cat: %d lat cat",blap-1);

printf("\nSo bang don hinh da lap : %d bang",sb);

if (tg==1){ for (i=0; i<=n;i++)

fprintf(f2,"\nx[%2d] = %13.5lf",cs[i],s[i][0]);

fprintf(f2,"\nSo luong lat cat: %d lat cat",blap-1);

fprintf(f2,"\nSo bang don hinh da lap : %d bang",sb);

}

t= (unsigned long far *)MK_FP(0,0X46C);

t2=*t;

printf("\nThoi gian chay chuong trinh: %ld giay", (long int)((t2-t1)/18.21));

if (tg==1) fprintf(f2,"\nThoi gian chay chuong trinh: %ld giay",

else s[n+1][j]= -(s[le][j]- floor(s[le][j])); }

printf("\nBang %d, sau khi them lat cat",sb);

if (tg==1) fprintf(f2,"\nBang %d, sau khi them lat cat",sb);

fprintf(f2,"\nCot quay = %d, Phan tu quay = %13.5lf",cmin,s[l][cmin]);

// Bien doi bang don hinh

biendoi(); sb++;

printf("\nBang %d, bang dau tien bai toan phu",sb);

if (tg==1) fprintf(f2,"\nBang %d, bang dau tien bai toan phu",sb);

Ngày đăng: 22/07/2014, 06:20

HÌNH ẢNH LIÊN QUAN

Bảng đơn hình xuất phát  sau khi thêm ràng buộc phụ: - QUY HOẠCH RỜI RẠC - CHƯƠNG 3 pps
ng đơn hình xuất phát sau khi thêm ràng buộc phụ: (Trang 11)
Tuyến tính cho đến tối ưu ta được các bảng 3, bảng 4, bảng 5, bảng 6. - QUY HOẠCH RỜI RẠC - CHƯƠNG 3 pps
uy ến tính cho đến tối ưu ta được các bảng 3, bảng 4, bảng 5, bảng 6 (Trang 12)

TỪ KHÓA LIÊN QUAN

w