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

CÁC MÔ HÌNH VÀ PHẦN MỀM TỐI ƯU - CHƯƠNG 3 doc

12 323 0
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 12
Dung lượng 332,03 KB

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

Nội dung

Các phương pháp giải bài toán tối ưu toàn cục phi tuyến đơn mục tiêu được phân ra thành hai lớp: phương pháp tất định và phương pháp ngẫu nhiên deterministic and stochastic methods.. Một

Trang 1

Chương III

BÀI TOÁN QUY HOẠCH PHI TUYẾN

1 PHƯƠNG PHÁP RST2ANU GIẢI BÀI TOÁN TỐI ƯU

PHI TUYẾN TOÀN CỤC HỖN HỢP NGUYÊN

1.1 Đặt vấn đề

Dạng chính tắc của bài toán tối ưu một mục tiêu được biểu diễn như sau:

Min (Max) f(X) , X = (x 1 , x 2 , …, x n ) R n , với các điều kiện ràng buộc

(i) g j (X) ≤ 0, j = 1, 2, …, k, (ii) g j (X) = 0, j = k+1, k+2, …, m

Trong các bài toán thực tế có thể bổ sung thêm các ràng buộc

(iii) a i ≤ x i ≤ b i , i = 1, 2, …, n

Trong trường hợp hàm mục tiêu f(X) hay có ít nhất một trong các hàm ràng buộc

gj(X), j = 1, 2, …, m, là hàm phi tuyến, chúng ta có bài toán tối ưu phi tuyến Khi tất cả các toạ độ xi đều bắt buộc nhận các giá trị nguyên, i = 1, 2, …, n, thì ta có bài toán tối

ưu nguyên Còn nếu chỉ có một số toạ độ (nhưng không phải tất cả các toạ độ) bắt buộc nhận giá trị nguyên thì ta có bài toán tối ưu hỗn hợp nguyên

Ký hiệu D là miền các phương án (miền ràng buộc) cho bởi các ràng buộc (i),

(ii) và / hoặc (iii) thì bài toán tối ưu trên đây có thể viết gọn hơn như sau: f(X) Min (Max) với X D

Lúc này, đối với bài toán cực tiểu hoá, X* ∈ D được gọi là phương án tối ưu toàn cục nếu ∀ X∈D ta luôn có: f(X*)≤ f(X) Trong trường hợp f(X*) ≤ f(X) chỉ đúng với

∀X∈D trong một lân cận nào đó của X* thì X* được gọi là phương án tối ưu địa phương Một cách tương tự, ta có thể định nghĩa khái niệm phương án tối ưu toàn cục / địa phương cho bài toán cực đại hoá Nếu chúng ta chỉ quan tâm tới việc tìm kiếm

phương án tối ưu toàn cục thì ta có bài toán tối ưu toàn cục

Các phương pháp giải bài toán tối ưu toàn cục phi tuyến đơn mục tiêu được

phân ra thành hai lớp: phương pháp tất định và phương pháp ngẫu nhiên (deterministic and stochastic methods) Phương pháp tất định sử dụng các tính chất giải tích của hàm mục tiêu và các hàm ràng buộc Một số dạng bài toán tối ưu toàn cục với những tính chất giải tích nhất định của hàm mục tiêu và các hàm ràng buộc có thể giải được bằng các phương pháp tất định thích hợp, chẳng hạn như phương pháp quy hoạch toàn phương, quy hoạch tách, quy hoạch lồi, quy hoạch d.c… Trong các trường hợp đó phương án tối ưu toàn cục có thể tìm được sau một số hữu hạn bước tính toán với độ chính xác chọn trước

Tuy nhiên, đối với nhiều lớp bài toán tối ưu toàn cục phương pháp tất định tỏ ra không có hiệu quả Trong khi đó, các phương pháp ngẫu nhiên như: phương pháp đa

khởi tạo (multistart), mô phỏng tôi (simulated annealing), thuật giải di truyền (genetic

Trang 2

algorithm)… có thể áp dụng để giải các bài toán tối ưu toàn cục dạng bất kỳ, không đòi hỏi các tính chất đặc biệt của hàm mục tiêu hay các hàm ràng buộc Các phương pháp ngẫu nhiên đặc biệt tỏ ra có hiệu quả đối với các bài toán tối ưu phi tuyến nguyên và hỗn hợp nguyên Tuy nhiên, các phương pháp này thường chỉ cho phương án “gần” tối

ưu khá tốt sau một số hữu hạn bước mà không kiểm soát được độ chính xác của phương

án tìm được

Như vậy, hiện tại có nhiều phương pháp tối ưu toàn cục được đề xuất Tuy nhiên chưa có một phương pháp nào tỏ ra hữu hiệu cho mọi bài toán tối ưu, đặc biệt là các bài toán tối ưu với biến nguyên hay hỗn hợp nguyên Hơn nữa, các phương pháp tối ưu cần phải được lập trình để đóng gói thành các phần mềm thân thiện đối với người sử dụng Đây là một đòi hỏi rất thực tế của các kĩ sư, các nhà khoa học, các doanh nghiệp trong nhiều lĩnh vực công nghiệp cũng như nông nghiệp Trong bài báo này, chúng tôi trình bày một phần mềm tính toán khoa học (RST2ANU) có thể đáp ứng được phần nào các đòi hỏi nêu trên đối với người sử dụng để giải các bài toán tối ưu phi tuyến toàn cục với các biến liên tục, nguyên hoặc hỗn hợp nguyên Phần mềm này được xây dựng dựa trên phương pháp tìm kiếm ngẫu nhiên có kiểm soát (cùng tên gọi RST2ANU) do Mohan và Nguyễn Hải Thanh đề xuất (Xem “A controlled random search technique incorporating the simulated annealing concept for solving integer and mixed integer global

optimization problems”, Computational Optimization and Applications, Vol 14, pp

103-132, 1999) Đây là một phương pháp tối ưu đã được chạy kiểm thử trên hàng trăm bài toán mẫu và nhiều bài toán thực tế với độ tin cậy rất cao và tốc độ tính toán chấp nhận được

1.2 Thuật giải tìm kiếm ngẫu nhiên có kiểm soát RST2ANU

Thuật giải RST2ANU là thuật giải lặp, bao gồm hai pha, pha địa phương và pha toàn cục

Trong pha toàn cục, một số lượng thích hợp đủ lớn các phương án chấp nhận

được được phát sinh ra một cách ngẫu nhiên và lưu trữ trong mảng có tên A Đánh dấu hai điểm có giá trị hàm mục tiêu lớn nhất và nhỏ nhất tương ứng là M và L

Trong pha địa phương, các phương án được xử lý nhằm thu được giá trị ước lượng tốt hơn của hàm mục tiêu Trong pha này, thuật giải xác định X* là điểm được nội suy bậc hai dựa trên phương án L và hai phương án khác được chọn ngẫu nhiên trong mảng A Nếu như X* chấp nhận được thì với f(X*) ≤ f(M), M sẽ được thay thế

bởi X* trong mảng A, còn với f(X*)>f(M) M sẽ được thay thế bởi X* với xác suất p= exp(-β(f(X*)-f(M))/(f(X*)-f(L))) , trong đó β >0 là tham số được lựa chọn thích hợp

Nếu X* không phải là phương án chấp nhận được, bỏ qua X* và chọn hai phương án khác trong A một cách ngẫu nhiên rồi cùng với L tiếp tục sinh ra phương án mới Quá trình cứ thế tiếp diễn như vậy cho tới khi tập hợp các phương án trong A sẽ có xu hướng

co cụm lại xung quanh một phương án tối ưu toàn cục

Lưu đồ thuật giải RST2AN được thể hiện trên hình minh hoạ, trong đó:

• n, f(X), g(j), ai , b i , … là các đầu vào

Trang 3

A = RandomNSolution (N) phát sinh N phương án ngẫu nhiên chấp nhận được, đồng thời tính giá trị của hàm mục tiêu và trả về kết quả cho mảng A Như vậy, mảng A chứa luôn cả giá trị hàm mục tiêu tương ứng với từng phương án

Lưu đồ thuật giải RST2ANU

Arrange(A) sắp xếp mảng A theo thứ tự tăng dần của hàm mục tiêu

r = random(0,1) p=exp(-beta(f(X*)-f(M))/(f(X*)-f(L))) N

Trang 4

Max(A), Min(A) trả về phương án có giá trị hàm mục tiêu lớn nhất và nhỏ nhất trong A

Clustered(A, eps1, eps2) cho biết mảng A đã hội tụ theo hàm mục tiêu hay chưa

• Nếu (f(M) – f(L))/FM) < eps1 thì mảng A hội tụ, ngược lại chưa hội tụ, với FM = f(M) nếu f(M) > eps2, ngược lại FM = 1

NewSolution() trả về một phương án mới được suy ra từ 3 điểm: L và hai điểm được chọn ngẫu nhiên khác trong mảng A theo phương pháp nội suy

Feas(X) nhận giá trị TRUE nếu X chấp nhận được, ngược lại nhận giá trị FALSE

Random(0,1) trả về giá trị ngẫu nhiên nằm trong khoảng (0,1)

Replace(A, M, X*) thay thế M trong A bởi X* kèm theo cả giá trị hàm mục tiêu sao cho không cần phải sắp xếp lại mảng A mà vẫn đảm bảo các điểm được sắp xếp theo thứ tự giá trị hàm mục tiêu tăng dần

Kết thúc 1: Số lần tìm kiếm liên tiếp mà không cải thiện được giá trị hàm mục tiêu vượt quá số lần cho phép Thuật giải dừng với giá trị tốt nhất của hàm mục tiêu tìm được là FL tương ứng với phương án L

Kết thúc 2: Phương án tối ưu toàn cục đã đạt được là L với giá trị hàm mục tiêu là FL

Kết thúc 3: Số lần nội suy liên tiếp mà không tìm được phương án thay thế M trong A vượt quá số lần cho phép Thuật giải dừng với giá trị tốt nhất của hàm mục tiêu tìm được là FL tương ứng với phương án L

Kết thúc 4: Số lần lặp vượt quá số lần cho phép Thuật giải dừng với giá trị tốt nhất của hàm mục tiêu tìm được là FL tương ứng với phương án L

1.3 Một số nhận xét về phiên bản nâng cấp của phần mềm

Phần mềm tính toán khoa học RST2ANU đã được thiết kế và xây dựng có thể sử dụng để giải quyết nhiều mô hình tối ưu phát sinh trong lĩnh vực nông nghiệp, hỗ trợ cho giảng dạy và nghiên cứu khoa học nông nghiệp cũng như trong các lĩnh vực khác

Phần mềm này đã được nâng cấp có tính thân thiện với người sử dụng và tránh được sao chép, có thể được phổ cập có bản quyền một cách rộng rãi Việc tạo ra các giao diện thân thiện cho phép dễ dàng nhập các hàm mục tiêu và ràng buộc của nhiều dạng bài toán tối ưu phi tuyến là một vấn đề khá phức tạp đã được giải quyết thành công trong phần mềm này

Trong tình hình hiện tại, khi các phần mềm tối ưu phi tuyến không có sẵn trên thị trường trong và ngoài nước, phần mềm RST2ANU nên được triển khai sử dụng để giải quyết các bài toán tối ưu trong các lĩnh vực khác nhau, bao gồm cả các bài toán nguyên và hỗn hợp nguyên Các nghiên cứu cần tiếp tục được triển khai và được hỗ trợ

Trang 5

về mặt tài chính để tích hợp RST2ANU vào các gói phần mềm trong điều khiển tự động hóa hay trong các hệ hỗ trợ ra quyết định

2 MỘT SỐ VÍ DỤ ÁP DỤNG RST2ANU

2.1 Bài 1: Bài toán xác định tham số sàng phân loại

Sau đây là cách viết chương trình con tính giá trị hàm mục tiêu và kiểm tra tính khả thi của phương án đã được phát sinh khi thực hiện chương trình máy tính RST2ANU

float f()

{ float fv, g;

g=

0.05*cos(0+3.1417/18)+0.3*cos(x[0])+0.15*cos(x[1])+0.5*cos(x[2])-0.365;

g=1000*g*g;

fv=g;

g= 0.05*sin(0+3.1417/18)+0.3*sin(x[0])+0.15*sin(x[1])+0.5*sin(x[2])-0.635; g=1000*g*g;

fv=fv+g;

g=0.05*cos(0+3.1417/18)+0.3*cos(x[0])+1.075*cos(x[1]-3.1417/8)+0.4*cos(x[3])-1.365;

g=1000*g*g;

fv=fv+g;

g=0.05*sin(0+3.1417/18)+0.3*sin(x[0])+1.075*sin(x[1]-3.1417/8)+0.4*sin(x[3])-0.635;

g=1000*g*g;

fv=fv+g;

return(fv);

}

int feas()

{int flag=1;

return(1);

}

File vào v1.in

1 4 0 4 0.000001 0.000001

10000 2000 0 2000

0 0 1 0 0 0 0

0 1 2 3

0 3.1417 0 3.1417 0 3.1417 0 3.1417

123 234 345 456 567

Trang 6

3 3 0.01

0 0

File ra v1.out

PROBLEM No 1

**crs2.c

n=4,nc=0,nint=4,epsilon=0.000001,eps1=0.000001,iterlast=10000 ifailast=2000,imlast=0,islast=2000,iprint=0,id=0,imp=1,ipat=0 noninteger variables are:

x[0] x[1] x[2] x[3]

guess=0,nguess=0,lppatt=0

lower and upper bounds of coordinates:

xmin[0]=0.000000,xmax[0]=3.141700

xmin[1]=0.000000,xmax[1]=3.141700

xmin[2]=0.000000,xmax[2]=3.141700

xmin[3]=0.000000,xmax[3]=3.141700

itnlast=3,istnlast=3,eps2=0.010000

***CRS

SOLUTION FOR NLPP by type 1 as usually

**case 1 na=50

seed[0]=*, s*,f=0.000000,fm=0.000001,iter=763,ifun=1664,t1=0

*, s*,f=0.000000,fm=0.000001,iter=1069,ifun=1619,t1=0

*, s*,f=0.000000,fm=0.000001,iter=1026,ifun=1557,t1=0

*,f*,f=4.300038,fm=4.300157,iter=1941,ifun=25813,t1=0

t*, f= 0.000000,iter2=4799 ifun2=30653,t2=0

fopt=0.000000

0.198735,0.550661,1.784750,1.670850,

seed[1]=*,f*,f=4.300035,fm=4.300137,iter=1891,ifun=32299,t1=0

*,f*,f=4.300043,fm=4.300156,iter=1705,ifun=31407,t1=0

*,f*,f=4.300050,fm=4.300186,iter=967,ifun=21132,t1=1

*, s*,f=0.000000,fm=0.000001,iter=938,ifun=1481,t1=0

t*, f= 0.000000,iter2=5501 ifun2=20783,t2=1

fopt=0.000000

0.198752,0.550653,1.784751,1.670846,

seed[2]=*,f*,f=4.300051,fm=4.300158,iter=1168,ifun=-27879,t1=0

*, s*,f=0.000000,fm=0.000001,iter=933,ifun=1398,t1=0

*,f*,f=4.300040,fm=4.300148,iter=1295,ifun=-32336,t1=0

*, s*,f=0.000000,fm=0.000001,iter=1063,ifun=1643,t1=0

t*, f= 0.000000,iter2=4459 ifun2=8362,t2=0

fopt=0.000000

0.198742,0.550658,1.784749,1.670847,

seed[3]=*, s*,f=0.000000,fm=0.000001,iter=943,ifun=1430,t1=0

Trang 7

*, s*,f=0.000000,fm=0.000001,iter=868,ifun=1345,t1=0

*, s*,f=0.000000,fm=0.000001,iter=1048,ifun=1634,t1=0

*,f*,f=4.300054,fm=4.300150,iter=2354,ifun=-30714,t1=0

t*, f= 0.000000,iter2=5213 ifun2=-26305,t2=0

fopt=0.000000

0.198741,0.550658,1.784751,1.670850,

seed[4]=*, s*,f=0.000000,fm=0.000001,iter=1216,ifun=1905,t1=0

*, s*,f=0.000000,fm=0.000001,iter=1191,ifun=1859,t1=0

*,f*,f=4.300034,fm=4.300148,iter=1659,ifun=27170,t1=0

*, s*,f=0.000000,fm=0.000001,iter=801,ifun=1234,t1=0

t*, f= 0.000000,iter2=4867 ifun2=32168,t2=0

fopt=0.000000

0.198742,0.550658,1.784751,1.670848,

***b1=1196,b2=1883,***

***a1=4967,a2=25,***

2.2 Bài 2: Bài toán xác định cơ cấu đầu tư chăn nuôi cá

float f()

{ float fv;

fv=19.375*pow(x[0],0.236)*pow(x[1],0.104)*pow(x[2],0.096)*pow(x[3],0.056);

fv=fv*pow(x[4],0.056)*exp(0.168*x[5])*exp(0.066*x[6]);

return(fv);

}

int feas()

{ int flag=1;

float g;

g=x[0]+x[1]+x[2]+x[3]+x[4];

if(g>50)

{ flag=0;

goto LAST;

}

g=x[5]+x[6];

if(g>1)

{ flag=0;

goto LAST;

}

LAST:

if(flag==0) {return(0);}

Trang 8

else {return(1);}

File vào CUONG1.IN

1 7 2 5 0.001 0.001

10000 2000 0 2000

0 0 0 0 0 0 0

0 1 2 3 4

0 50 0 50 0 50 0 50 0 50

0 1 0 1

123 234 345 456 567

0 0 0.01

0 0

File ra CUONG1.OUT

PROBLEM No 1

**crs2.c

n=7,nc=2,nint=5,epsilon=0.001000,eps1=0.001000,iterlast=10000 ifailast=2000,imlast=0,islast=2000,iprint=0,id=0,imp=0,ipat=0

noninteger variables are:

x[0] x[1] x[2] x[3] x[4]

guess=0,nguess=0,lppatt=0

lower and upper bounds of coordinates:

xmin[0]=0.000000,xmax[0]=50.000000

xmin[1]=0.000000,xmax[1]=50.000000

xmin[2]=0.000000,xmax[2]=50.000000

xmin[3]=0.000000,xmax[3]=50.000000

xmin[4]=0.000000,xmax[4]=50.000000

xmin[5]=0.000000,xmax[5]=1.000000

xmin[6]=0.000000,xmax[6]=1.000000

itnlast=0,istnlast=0,eps2=0.010000

***CRS

***

SOLUTION FOR NLPP by type 1 as usually

**case 1 na=16

seed[0]=0*, s*,f=-88.334068,fm=-88.248016,iter=81,ifun=15061,t1=0 t*, f= -88.334068,iter2=81 ifun2=15061,t2=0

fopt=-88.334068

20.970308,9.272722,9.084186,5.446885,5.225899,1.000000,0.000000, seed[1]=0*, s*,f=-88.360970,fm=-88.274643,iter=688,ifun=15912,t1=0 t*, f= -88.360970,iter2=688 ifun2=15912,t2=0

fopt=-88.360970

21.514578,9.515970,8.769965,5.103930,5.095558,1.000000,0.000000, seed[2]=0*, s*,f=-88.360855,fm=-88.272774,iter=588,ifun=14737,t1=1 t*, f= -88.360855,iter2=588 ifun2=14737,t2=1

fopt=-88.360855

Trang 9

21.570715,9.461304,8.736217,5.097508,5.134254,1.000000,0.000000,

seed[3]=0*, s*,f=-88.359039,fm=-88.270882,iter=691,ifun=17550,t1=0

t*, f= -88.359039,iter2=691 ifun2=17550,t2=0

fopt=-88.359039

21.375309,9.651163,8.772411,5.121580,5.079536,1.000000,0.000000,

seed[4]=0*, s*,f=-88.360451,fm=-88.273888,iter=691,ifun=16477,t1=0

t*, f= -88.360451,iter2=691 ifun2=16477,t2=0

fopt=-88.360451

21.518408,9.449259,8.761295,5.180042,5.090996,1.000000,0.000000,

***t3=0/1***

***b1=547,b2=2840,***

***a1=547,a2=2840,***

3 TÍCH HỢP RST2ANU VỚI MATLAB

Trong Matlab không có lệnh nhảy vô điều kiện goto Để xử lí vấn đề này cần lập trình theo từng khối tuần tự, kết hợp với cách sử dụng các lời gọi hàm thông qua các file chương trình, khối lệnh khác nhau

Chương trình RST2ANU gồm nhiều file, mỗi file có thể là một chương trình con, cũng có thể là một khối lệnh Chương trình hoàn chỉnh được chứa trong thư mục RST2ANU, file CRS là file chính và cũng là lệnh gọi chương trình từ Matlab

Nhập / lưu bài toán và các dữ kiện

Chạy chương trình bằng cách dùng lệnh crs từ dòng lệnh của Matlab Khi chạy

sẽ thấy xuất hiện:

1 Enter the problem

2 Load problem from file

3 Exit

Your choice:

Nhập dữ liệu cho bài toán có thể nhập từ file dữ liệu có sẵn (chọn 2), hoặc có thể nhập lần lượt các tham số đầu vào (chọn 1), nếu chọn 3 là thoát khỏi chương trình

3.1 Nhập từ bàn phím

Ví dụ Xét bài toán tối ưu phi tuyến toàn cục hỗn hợp nguyên

z = x10,6 + x20,6 + x30,4 + 2x4 + 5x5 − 4x3 – x6, → Min với các ràng buộc:

x2 − 3x1 − 3x4 = 0; x3 − 2x2 − 2x5 = 0;

4x4 – x6 = 0; x1 + 2x4 ≤ 4;

x2 + x5 ≤ 4; x3 + x6 ≤ 6;

x1 ≤ 3; x2 ≤ 4; x3 ≤ 4; x4 ≤ 1; x5 ≤ 2; x6 ≤ 6;

x1, x2, x3, x4, x5, x6 ≥ 0; x4, x5, x6 là các biến nguyên

Your choice: 1

Trang 10

Sau đó lần lượt xuất hiện các dòng nhắc nhập dữ liệu đầu vào, ta lần lượt nhập như sau:

+++++ THE PROBLEM +++++

Number of variables (N):6

Array to describe integer variables:[0 0 0 1 1 1]

Goal function f(x)=(X(1)^0.6)+(X(2)^0.6)+(X(3)^0.4)+2*X(4)+5*X(5)-4*X(3)-X(6)

Feasible conditions: (Leave blank for none)

1 X(1)=(X(2)-3*X(4))/3

2 X(3)=2*(X(2)+X(5))

3 X(6)=4*X(4)

4 X(2)-3*X(1)-3*X(4)==0

5 X(3)-2*X(2)-2*X(5)==0

6 4*X(4)-X(6)==0

7 X(1)+2*X(4)<=4

8 X(2)+X(5)<=4

9 X(3)+X(6)<=6

10

Number of feasible conditions entered: 9

Array to describe min values of X: [0 0 0 0 0 0]

Array to describe max values of X: [3 4 4 1 2 6]

+++++ CONDITIONS FOR ALGORITHM +++++

Limit Random Trying to find one feasible solution to (1000): 1000

Number of solutions in array A (20): 30

Limit Number of Interactive to(1000): 1000

Limit Number of Consecutive searches to (500): 200

Limit Number of Improve Failures to (500): 200

Epsilon 1 (1e-6): 1e-006

Epsilon 2(1e-1): 0.1

Beta (1): 1

Enter file name to save this problem (*.mat, leave blank for unsave):demo_01.mat

Kết quả nhận được như sau:

===== Here is the result =====

Stop with number of failure on improve goal value exceed

X* = 0.6667 2.0000 4.0000 0 0 0

f(X*) = -11.9591 ± 1.1959e-005

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w