Bài báo này trình bày ứng dụng của phần mềm Matlab để giải quyết một số bài toán tối ưu trong kinh tế.. Từ khóa: tối ưu trong kinh tế, ứng dụng Matlab, bài toán tối ưu,...[r]
Trang 1ỨNG DỤNG PHẦN MỀM MATLAB
ĐỂ GIẢI MỘT SỐ MÔ HÌNH TOÁN TRONG KINH TẾ
Nguyễn Quỳnh Hoa * , Phạm Thị Linh, Trần Thị Mai
Trường Đại học Kinh tế & Quản trị kinh doanh – ĐH Thái Nguyên
TÓM TẮT
Trong thực tế hiện nay hầu hết các bài toán trong sản xuất, kinh doanh hàng hóa là các bài toán tối
ưu Đã có rất nhiều phương pháp để giải các bài toán tối ưu này nhưng việc ứng dụng các phần mềm để giải các bài toán tối ưu hứa hẹn nhiều triển vọng Bài báo này trình bày ứng dụng của phần mềm Matlab để giải quyết một số bài toán tối ưu trong kinh tế
Từ khóa: tối ưu trong kinh tế, ứng dụng Matlab, bài toán tối ưu,
ĐẶT VẤN ĐỀ*
MatLab là một phần mềm nổi tiếng của công
ty MathWorks, là một công cụ có tính ứng
dụng cao trong tính toán được cộng đồng hàn
lâm trên thế giới chấp nhận rộng rãi như một
công cụ phục vụ cho giảng dạy, nghiên cứu
toán học và phát triển các ứng dụng kỹ thuật
Hiện nay đã có rất nhiều đầu sách về Matlab
dành cho giáo viên, sinh viên và các nhà
chuyên môn Ở Việt nam, Matlab cũng đã
được đưa vào giảng dạy cho sinh viên, học
viên cao học hoặc giới thiệu tại một số khoa,
trường đại học Các ứng dụng tiêu biểu của
Matlab bao gồm: hỗ trợ toán học và tính toán;
phát triển thuật toán; mô hình, mô phỏng;
phân tích, khảo sát và hiển thị số liệu; đồ họa
khoa học và kỹ thuật; phát triển ứng dụng với
giao diện đồ họa
Ngày nay trong quá trình phân tích kinh tế,
chúng ta phải sử dụng rất nhiều kiến thức về
toán học như: phân tích số liệu và thống kê,
tìm cực trị của hàm một biến hoặc nhiều biến,
giải bài toán tối ưu một hay nhiều mục tiêu,
tìm nghiệm của phương trình, tính gần đúng
tích phân, giải phương trình vi phân… Với ưu
thế về tính toán số trị Matlab rất thích hợp
cho việc ứng dụng để giải một số mô hình
toán trong kinh tế Việc sử dụng Matlab để
lập trình các thuật toán có cái lợi là đơn giản
và dễ dàng vẽ các đồ thị để hiển thị kết quả
Đặc biệt, trong Matlab đã được cài đặt sẵn rất
nhiều các hàm tính toán toán học
*
Tel: 0977 615828, Email: hoakhcb@gmail.com
TỔNG QUAN VỀ PHẦN MỀM MATLAB Tên của phần mềm MATLAB là viết tắt của thuật ngữ “MATrix LABoratory”, được Cleve Moler phát minh vào cuối thập niên 1970, và sau đó là chủ nhiệm khoa máy tính tại Đại học New Mexico Năm 2004 MATLAB 7 phát hành, có khả năng chính xác đơn và kiểu nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm, và có môi trường phân tích số liệu tương tác Đến tháng 12 năm 2008, phiên bản 7.7 được phát hành với SP3 cải thiện Simulink cùng với hơn 75 sản phẩm khác
Một số đặc trưng chính của MATLAB:
- MATLAB là ngôn ngữ thông dịch
- Các hàm trong MATLAB cơ bản (không kể các thư viện chuyên dụng được gọi là các ToolBox) được chia làm 2 loại: hàm trong và hàm ngoài Các hàm trong là các hàm được cài đặt sẵn (built-ins) tức là tồn tại dưới dạng
mã nhị phân nên ta không thể xem được mã nguồn của chúng, thí dụ các hàm sin, sqrt, log, clear, clc, Đây là các hàm hay được sử dụng hoặc các hàm đòi hỏi nhiều thời gian xử
lý Các hàm ngoài là các hàm tồn tại dưới dạng mã nguồn mà người dùng có thể tham khảo hoặc chỉnh sửa, bổ sung khi cần thiết, thí dụ log10, ode23, fzero,
- Phần tử dữ liệu chính của MATLAB là các
ma trận (mảng) mà kích thước của chúng không cần khai báo trước như trong các ngôn ngữ lập trình khác Tuy nhiên, để tăng tốc độ
xử lý cần báo trước cho MATLAB biết kích thước tối đa của mảng để phân bổ bộ nhớ
Trang 2bằng một lệnh gán, chẳng hạn A(20,30)=0
Các khả năng chính của MATLAB cơ bản:
- Thực hiện các tính toán toán học bao gồm:
ma trận và đại số tuyến tính, đa thức và nội
suy, phân tích số liệu và thống kê, tìm cực
trị của hàm một biến hoặc nhiều biến, tìm
nghiệm của phương trình, tính gần đúng tích
phân, giải phương trình vi phân…
- Đồ họa 2 chiều và 3 chiều
Xây dựng giao diện người dùng
Chương trình
Một chương trình MATLAB thường được
soạn trong các M-file (các file có đuôi m)
Để chạy các dòng lệnh trong file xyz.m
nào đó, ta vào cửa sổ làm việc và gõ xyz rồi
Enter Lưu ý: lúc này đường dẫn tới thư
mục chứa file xyz.m (và các file liên quan)
phải được khai báo trong Current
Directory của MATLAB Khi mới khởi
động, thư mục này mặc định là Work trong
chỗ cài đặt Matlab (thường là
C:\MATLAB7\work)
Dòng lệnh
- Các dòng lệnh trong MATLAB được thực
hiện tiếp nối nhau Mỗi dòng lệnh thông
thường có thể có dấu “;” ở cuối hoặc không
Nếu dòng lệnh không có dấu “;” ở cuối thì
kết quả sẽ được xuất ra Trong trường hợp
không muốn nhìn các kết quả trung gian mà
chỉ muốn xem kết quả cuối cùng, ta sử dụng
dấu “;” cho các dòng lệnh mà ta không muốn
xem kết quả
- Nếu muốn loại bỏ một dòng lệnh khi chạy
chương trình, ta có thể để dấu % ở đầu dòng
lệnh Thông thường dấu % được sử dụng
để ghi các chú thích (chỉ dùng cho người
đọc, máy không thực thi)
Hàm số
- Hàm số xyz được viết trên file xyz.m, có cú
pháp kiểu như:
function a=xyz(b,c) % day la ham xyz
Trong đó b, c là các dữ liệu nhập vào, a là giá
trị trả về (trong chương trình sẽ có ít nhất
một lệnh gán, chẳng hạn a = b + c;)
- Để xem công dụng của một hàm số xyz (là
hàm có sẵn trong thư viện hoặc do ta tự định
nghĩa), ta vào cửa sổ làm việc và gõ help
xyz rồi Enter Ta sẽ được xem các chú thích
trong file xyz.m
Biến số
- Các biến được ký hiệu bằng một ký tự hoặc
1 chuỗi ký tự MATLAB phân biệt chữ thường và chữ hoa
- Các biến thông thường được định nghĩa trong 1 file được gọi là biến địa phương
(local variable) MATLAB cũng cho phép sử dụng một số biến toàn cục (global variable) Biến toàn cục xx phải được khai báo là
global xx, trong tất cả các file mà xx xuất
hiện, có một file định nghĩa xx, chẳng hạn gán xx=3
- Biến i và j được mặc định là số ảo đơn vị (i^2=-1) Tuy nhiên, nếu ta dùng lệnh gán i=3 thì biến i sẽ mang giá trị 3
MỘT SỐ MÔ HÌNH TOÁN TRONG KINH TẾ
Mô hình tối ưu một biến không ràng buộc
Xét hàm số một biến y = f(x) với
x D R D được gọi là miền xác định của hàm số
- Điểm x D được gọi là điểm cực đại địa phương của hàm số, nếu với
(U là lân cận của x) thì luôn
có f x f x
- Điểm x D được gọi là điểm cực đại toàn cục của hàm số nếu với x D
luôn có f x f x Tương tự, có thể định nghĩa khái niệm cực tiểu địa phương và cực tiểu toàn cục Các điểm cực tiểu hay cực đại được gọi chung là điểm cực trị
Mô hình tối ưu nhiều biến không ràng buộc
Xét hàm số n biến f : DR nR D được gọi là miền xác định của hàm số
- Điểm x D được gọi là điểm cực đại địa phương của hàm số, nếu với
(U là lân cận của x) thì luôn
có f x f x
Trang 3- Điểm x D được gọi là điểm cực
đại toàn cục của hàm số nếu với x D
luôn có f x f x
Tương tự, có thể định nghĩa khái niệm cực
tiểu địa phương và cực tiểu toàn cục Các
điểm cực đại hay cực tiểu được gọi chung là
điểm cực trị
Dễ thấy, mọi điểm cực đại (cực tiểu) toàn cục
cũng là điểm cực đại (cực tiểu) địa phương,
trong khi đó điều ngược lại không nhất thiết
luôn xảy ra
Mô hình tối ưu n biến và một phương
trình ràng buộc
Phương pháp nhân tử Lagrange
Xét bài toán z f x 1, ,x nMax Min( ) với
ràng buộc g x 1, ,x nc
Ta có hàm Lagrange L f c g
(được gọi là nhân tử Lagrange)
Điều kiện cần
1
0
n x x L L L (*)
Giả sử 0 0 0 1, , n, 0 x x x là nghiệm của (*) Khi đó x0 được gọi là điểm dừng của hàm Lagrange Điều kiện đủ Giả sử x0 được gọi là điểm dừng của hàm Lagrange Ta tính các đạo hàm riêng cấp 2 của hàm Lagrange tại điểm x0 Đặt 2 0 0 0 1, ,
i n ij i i j g L g x x L x x x x Ta có ma trận H 1 1 11 1 1 0
n n n n nn g g g L L H g L L Gọi Hk là định thức con chính cấp k+1 của ma trận H Khi đó: +) Nếu 1k H k 0 k 2,n thì hàm 1, , n z f x x với ràng buộc g x 1, ,x nc đạt giá trị cực đại tại điểm 0 0 1, , n x x +) Nếu H k 0 k 2,n thì hàm 1, , n zf x x với ràng buộcg x 1, ,x nc đạt giá trị cực tiểu tại điểm 0 0 1, , n x x Mô hình tối ưu n biến và m phương trình ràng buộc Phương pháp nhân tử Lagrange Xét bài toán z f x 1, ,x nMax Min( ) với các ràng buộc 1 1 1 2 1 2 1 , ,
, ,
, ,
n n m n m g x x b g x x b g x x b Ta có hàm Lagrange 1 1 1 m m m L f b g b g Trong đó, 1, , m được gọi là các nhân tử Lagrange Điều kiện cần Hệ phương trình sau có nghiệm 0 1, 0 1, k i L k m L i n x Giả sử 0 0 0 0 0 1, , ,n 1, , m x x x là nghiệm của (*) Khi đó x0 được gọi là điểm dừng của hàm Lagrange Điều kiện đủ Giả sử x0 được gọi là điểm dừng của hàm Lagrange Ta tính các đạo hàm riêng các đạo hàm riêng 2 0 0 0 1, ,
k ki n ij i i j g L g x x L x x x x Ta có ma trận H 11 1 1 11 1 11 1 1 0 0
0 0
n
n
H
g
1
g mn L n L nn
Trang 4Gọi Hk là định thức con chính cấp k+1 của ma
trận H
Khi đó:
+)Nếu 1k H k 0 k m 1,n thì hàm
1, , n
z f x x với ràng buộc
1
, ,
, ,
, ,
n
n
đạt giá trị cực đại tại điểm 0 0
1, , n
+) Nếu 1m H k0 k m 1,n thì hàm
1, , n
z f x x với ràng buộc
1
, ,
, ,
, ,
n
n
g x x b
g x x b
g x x b
đạt giá trị cực tiểu tại điểm 0 0
1, , n
x x
Mô hình tối ưu có điều kiện với ràng buộc
là bất phương trình
Xét bài toán: Chọn (x, y) để hàm số
,
z f x y đạt cực đại (cực tiểu) với ràng
buộc g x y , b g x y , b
Để giải bài toán này, trước hết ta thay ràng
buộc đã cho bởi ràng buộc g x y , b
Bằng phương pháp nhân tử Lagrange ta tìm
được điểm dừng của hàm Lagrange là
0 0 0
, ,
Khi đó:
Đối với bài toán cực đại hóa hàm
,
z f x y với ràng buộc g x y , b
+) Nếu 0
0
thì điều kiện áp đặt thực sự là
ràng buộc và phương án chọn tối ưu là
0 0
,
x y
+) Nếu 0
0
thì điều kiện áp đặt không phải là ràng buộc thực Trong trường hợp này
ta bỏ ràng buộc và quay trở về giải bài toán cực trị tự do
Đối với bài toán cực đại hóa hàm
,
z f x y với ràng buộc g x y , b +) Nếu 00 thì điều kiện áp đặt thực sự là ràng buộc và phương án chọn tối ưu là
0 0
,
x y
+) Nếu 0 0 thì điều kiện áp đặt không phải là ràng buộc thực Trong trường hợp này
ta bỏ ràng buộc và quay trở về giải bài toán cực trị tự do
Đối với bài toán cực tiểu hóa hàm
,
z f x y với ràng buộc g x y , b
+) Nếu 00 thì điều kiện áp đặt thực sự là ràng buộc và phương án chọn tối ưu là
0 0 ,
+) Nếu 0 0 thì điều kiện áp đặt không phải là ràng buộc thực Trong trường hợp này
ta bỏ ràng buộc và quay trở về giải bài toán cực trị tự do
Đối với bài toán cực tiểu hóa hàm
,
z f x y với ràng buộc g x y , b +) Nếu 00 thì điều kiện áp đặt thực sự là ràng buộc và phương án chọn tối ưu là
x y0, 0 +) Nếu 0 0 thì điều kiện áp đặt không phải là ràng buộc thực Trong trường hợp này
ta bỏ ràng buộc và quay trở về giải bài toán cực trị tự do
ỨNG DỤNG PHẦN MỀM MATLAB ĐỂ GIẢI MỘT SỐ MÔ HÌNH TOÁN TRONG KINH TẾ
Trong giới hạn bài báo này, chúng tôi sẽ xét mô hình bài toán sản xuất, kinh doanh hàng hóa
Bài toán: Xét mô hình cân bằng thị trường
độc quyền với hai mặt hàng cho bởi các phương trình sau: Q1= 40 – 2P1 + P2; Q2= 15 + P1 – P2 Trong đó, Q1và Q2 là các mức cầu
về hai mặt hàng với các giá P1, P2 tương ứng
Trang 5Cho biết hàm chi phí là C = Q1
2
+ Q1Q2+ Q2
2
và hàm doanh thu là
R = 55Q1 + 70Q2 – 2Q1Q2 – Q1
2 – 2Q2 2
Hãy tìm các mức cân bằng về cầu và về giá cả
Q1, Q2, P1, P2 để lợi nhuận đạt giá trị lớn
nhất Biết hàm lợi nhuận là
Chương trình viết trên Matlab giải bài
toán tối ưu trên
function g=ham2bien(x1,x2)
g=55*x1+70*x2-3*x1*x2-2*x1*x1-3*x2*x2;
popsize=50;
generation=1000;
bits=20;
vlb=0;
vub=8;
Pc=1;
Pm=0.01;
newgen=genbin(bits,popsize);
fittol=0;
for i=1:popsize fit(i)=0;end
for n=1:generation
for i=1:popsize
x1=decode(newgen(i,1:bits/2),vlb,vub,bits/2);
x2=decode(newgen(i,bits/2+1:bits),vlb,vub,bi
ts/2);
fit(i)=ham2bien(x1,x2);
fittol=fittol+fit(i);
end
norm_fit = fit/sum(fit);
selected = rand(size(fit));
sum_fit = 0;
for i=1:length(fit),
sum_fit = sum_fit + norm_fit(i);
index = find(selected<sum_fit);
selected(index) = i*ones(size(index));
end
newgen = newgen(selected,:);
[junk,mating] = sort(rand(size(newgen,1),1));
newgen = newgen(mating,:);
lchrom = size(newgen,2);
ceil(rand(size(newgen,1)/2,1)*(lchrom-1));
sites = sites.*(rand(size(sites))<Pc);
for i = 1:length(sites);
newgen([2*i-1 2*i],:) = [newgen([2*i-1 2*i],1:sites(i))
newgen([2*i 2*i-1],sites(i)+1:lchrom)]; end
[pop bitlength]=size(newgen);
for i=1:popsize for j=1:bits
if rand<=Pm
if newgen(i,j)==1 newgen(i,j)=0;
else newgen(i,j)=1;
end end end end end max=0;
%tim gen co do thich nghi nhat a=newgen;
for i=1:popsize x1=decode(newgen(i,1:bits/2),vlb,vub,bits/2); x2=decode(newgen(i,bits/2+1:bits),vlb,vub,bi ts/2);
fit(i)=ham2bien(x1,x2);
if fit(i)>max max=fit(i);chiso=i;end end
giatrilon=max;
b=chiso;
x1=decode(a(chiso,1:bits/2),vlb,vub,bits/2); fprintf('Gia tri lon nhat dat tai x1= %d\n', x1); x2=decode(a(chiso,bits/2+1:bits),vlb,vub,bits/ 2);
fprintf('Gia tri lon nhat dat tai x2= %d\n', x2); r=ham2bien(x1,x2);
fprintf('Gia tri lon nhat dat tai %d\n', r);
Kết quả chạy chương trình trên Matlab
Gia tri lon nhat dat tai x1= 8 Gia tri lon nhat dat tai x2= 7.593353e+000 Gia tri lon nhat dat tai 4.883172e+002 KẾT LUẬN
Trong bài báo này tôi đã hệ thống lại được những kiến thức cơ bản về MATLAB và lập trình trong MATLAB; đưa ra được một số mô hình tối ưu ứng dụng trong kinh tế và ứng dụng của Matlab để giải quyết bài toán tối ưu Hướng nghiên cứu ứng dụng của Matlab để giải các mô hình toán trong kinh tế vẫn còn
Trang 6rất nhiều vấn đề để nghiên cứu, ví dụ như ứng
dụng Matlab để giải quyết những mô hình
toán trong kinh tế liên quan đến kiến thức về
đạo hàm, phương trình vi phân, phương trình
sai phân,
TÀI LIỆU THAM KHẢO
1 Michael W Klein, Mathematical methods for
economics, Addison– Wesley Higher Education
Group, 2002
2 Hoàng Đình Tuấn, Lí thuyết mô hình toán kinh
tế (dành cho sinh viên ngành toán kinh tế và toán tài chính), Nxb Khoa học và Kĩ thuật, 2003
3 Nguyễn Hải Thanh, Toán ứng dụng, Nxb Đại
học Sư phạm Hà Nội, 2005
4 Nguyễn Phùng Quang, Matlab & Simulink dành cho kỹ sư điều khiển tự động, Nxb Khoa học và
Kĩ thuật, 2006
5 Tô Cẩm Tú, Một số phương pháp tối ưu hóa
trong kinh tế, Nxb Khoa học và Kĩ thuật, 1997
SUMMARY
MATLAB SORFWARE APPLICATIONS TO DEAL
WITH SOME MATHERMATICAL MODELS IN ECONOMICS
Nguyen Quynh Hoa * , Pham Thi Linh, Tran Thi Mai
College of Economics and Business Administration - TNU
In current situation, most of the calculations in manufacturing and trading goods and services are optimal calculations There have been many waysfor dealing these kinds of optimal calculations but the applications of algorithm calculating development can be considered the promise for further prospects This article presents a new way for dealing with multi-purpose optimal calculations that is using GA-Genetic Algorithm
Key words: maximizes, Genetic Algorithm, encoded real number
*
Tel: 0977 615828, Email: hoakhcb@gmail.com