Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 133 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
133
Dung lượng
3,57 MB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG KHOA HỆ THỐNG THÔNG TIN KINH TẾ NGUYỄN VĂN HUÂN VŨ XUÂN NAM NGUYỄN VĂN GIÁP ĐỖ VĂN ĐẠI BÀI GIẢNG CƠ SỞ LẬP TRÌNH NGÀNH HỆ THỐNG THÔNG TIN QUẢN LÝ THÁI NGUYÊN, NĂM 2012 MỤC LỤC Chương 1: GIỚI THIỆU CƠ SỞ LẬP TRÌNH TRONG KINH TẾ 1.1 Các khái niệm 1.1.1 Ngôn ngữ máy 1.1.2 Ngôn ngữ lập trình 1.1.3 Chương trình 1.2 Sơ lược sở lập trình kinh tế 1.2.1 Khái niệm 1.2.2 Tìm hiểu số toán kinh tế điển hình 1.2.3 Bài toán phục vụ đám đông 11 1.2.4 Bài toán dự trữ 12 Chương 2: CƠ SỞ LẬP TRÌNH NGÔN NGỮ C 15 2.1 Giới thiệu ngôn ngữ C 15 2.1.1 Lịch sử hình thành phát triển ngôn ngữ C 15 2.1.2 Các tính chất đặc trưng ngôn ngữ C 16 2.2 Những khái niệm nguyên lý lập trình 20 2.2.1 Hệ thống ký hiệu từ khoá 20 2.2.2 Khái niệm biến, hằng, biểu thức, câu lệnh 22 2.2.3 Các kiểu liệu 27 2.2.4 Các phép toán 34 2.3 Các cấu trúc điều khiển 37 2.3.1 Lệnh vào/ra 37 2.3.2 Lệnh lựa chọn if 41 2.3.3 Lệnh switch 44 2.3.4 Vòng lặp xác định for (biết trước số lần lặp) 45 2.3.5 Vòng lặp không xác định while 49 2.3.6 Vòng lặp không xác định while 51 2.3.7 Các lệnh rẽ nhánh vô điều kiện 53 2.4 Cấu trúc mảng 56 2.4.1 Khái niệm 56 2.4.2 Truy nhập đến phần tử mảng 57 2.4.3 Xâu kí tự mảng 59 2.5 Con trỏ 64 2.5.1 Khái niệm trỏ 64 2.5.2 Khai báo trỏ 64 2.5.3 Các phép toán trỏ 67 2.5.4 Con trỏ xâu ký tự 68 2.6 Liên hệ trỏ mảng 70 2.6.1 Con trỏ mảng chiều 70 2.6.2 Con trỏ mảng hai chiều 71 2.6.3 Con trỏ mảng nhiều chiều 72 2.6.4 Sử dụng biến trung gian 73 2.6.5 Mảng trỏ 74 2.6.5 Cấp phát động trỏ 76 2.7 Kiểu cấu trúc 83 2.7.1 Khái niệm định nghĩa cấu trúc 83 2.7.2 Khai báo cấu trúc 84 2.7.3 Truy cập phần tử cấu trúc 86 2.7.4 Mảng cấu trúc 87 2.7.5 Con trỏ cấu trúc 90 2.8 Hàm chương trình 92 2.8.1 Giới thiệu 92 2.8.2 Các module chương trình C 93 2.8.3 Thư viện hàm chuẩn 93 2.8.4 Các hàm 95 2.8.5 Các chế truyền tham số 99 2.8.6 Cấp lưu trữ phạm vi hoạt động đối tượng 100 2.8.7 Con trỏ hàm 101 2.8.8 Hàm đệ qui 103 2.9 Các thao tác file văn 105 2.9.1 Mở file văn để cất liệu 106 2.9.2 Đọc file văn có 106 2.9.3 Các thao tác vào/ra file mức thấp 109 2.9.4 Tạo file nhị phân để ghi 110 2.9.5 Đọc file liệu nhị phân 112 2.9.6 Ghi file liệu có cấu trúc (struct) 113 2.9.7 Đọc file liệu cấu trúc 115 2.9.8 Truy nhập trực tiếp file liệu nhị phân 116 2.9.9 So sánh chọn phương án sử dụng 118 Chương 3: LẬP TRÌNH TRONG KINH TẾ 120 3.1 Bài toán lãi suất 120 3.1.1 Phát biểu toán 120 3.1.2 Xây dựng chương trình 120 3.2 Bài toán dự trữ 123 3.2.1 Mô hình quản lý dự trữ Wilson (tiêu thụ đều, bổ sung tức thời) 123 3.2.2 Mô hình dự trữ tiêu thụ đều, bổ sung dần 125 3.3 Bài toán quy hoạch tuyến tính 126 3.4 Bài toán phục vụ công cộng 128 Lời nói đầu Cơ sở lập trình môn học quan trọng sinh viên ngành Hệ thống thông tin quản lý Nhằm giúp em sinh viên lam quen dần với lập trình định hướng vào toán kinh tế, môn học trang bị cho sinh viên kiến thức kỹ lập trình sử dụng công cụ để giải toán kinh tế phổ biến Mặc dù đời phát triển qua nhiều hệ, song ngôn ngữ lập trình C ngôn ngữ phù hợp cho việc thiết kế phát triển chương trình tính từ đơn giản đến phức tạp, từ toán đơn đến tính toán khoa học phức tạp Đặc trưng C tốc độ thực chương trình nhanh, linh hoạt dễ dàng cài đặt sử dụng Với thời lượng chương trình cho phép không nhiều nên giảng tập trung vào vấn đề cở lập trình kinh tế với chương : Chương : Nghiên cứu tổng quan sở lập trình giới thiệu sơ lược số dạng toán kinh tế Chương : Nghiên cứu ngôn ngữ lập trình C từ đến chuyên sâu Chương : Tìm hiểu toán kinh tế phổ biến xây dựng chương trình cho toán dựa việc sử dụng ngôn ngữ lập trình C Đây giảng phục vụ cho sinh viên ngành Hệ thống thông tin quản lý với mục tiêu hướng dẫn sinh viên nắm vững ngôn ngữ lập trình sở cách thức vận dụng để lập trình giải toán kinh tế phổ biến nên mang tính chất đặc thu riêng Tuy nhiên, trình học tập sinh viên tham khảo giáo trình giảng liên quan khác để xây dựng giải toán cách tối ưu Mặc dù tác giả có nhiều cố gắng chắn không tránh khỏi sai sót, phần chưa hoàn chỉnh giảng Chúng mong nhận ý kiến đóng góp bạn đọc để chỉnh sửa, bổ sung giáo trình hoàn chỉnh phục vụ tốt cho công tác giảng dạy, học tập giáo viên sinh viên Thái Nguyên, tháng 02 năm 2012 Bộ môn Thương mại điện tử Chương GIỚI THIỆU CƠ SỞ LẬP TRÌNH TRONG KINH TẾ 1.1 Các khái niệm 1.1.1 Ngôn ngữ máy Ngôn ngữ máy (machine language hay machine code) loại ngôn ngữ lập trình đó, thị biểu diễn số nhị phân Đây ngôn ngữ lập trình hệ Tuy khó đọc khó sử dụng, ngôn ngữ máy ngôn ngữ mà vi xử lí nhận biết thực cách trực tiếp (tức không cần dịch sang ngôn ngữ khác) Lợi điểm chương trình viết ngôn ngữ máy thực thi cách nhanh chóng (nhờ vi xử lí xử lí thị viết ngôn ngữ máy cách trực tiếp), dù vậy, lại không độc lập (platform-independent) – tức đem qua máy có loại vi xử lí khác, chương trình không thực thi được, vi xử lí khác loại có tập lệnh khác 1.1.2 Ngôn ngữ lập trình Ngôn ngữ lập trình (programming language) tập ngôn ngữ máy tính Đây dạng ngôn ngữ chuẩn hóa (đối lập với ngôn ngữ tự nhiên) Nó dùng để miêu tả trình, ngữ cảnh cách chi tiết Định nghĩa (theo [Loud 94], T.3): Ngôn ngữ lập trình hệ thống ký hiệu hóa để miêu tả tính toán (qua máy tính) dạng mà người máy đọc hiểu Theo định nghĩa ngôn ngữ lập trình phải thỏa mãn hai điều kiện là: Nó phải dễ hiểu dễ sử dụng người lập trình, để người dùng giải toán khác Nó phải miêu tả cách đầy đủ rõ ràng tiến trình (process), để chạy máy tính khác Một tập hợp thị biểu thị nhờ ngôn ngữ lập trình để thực thao tác máy tính thông qua chương trình Các tên khác khái niệm không bị lầm lẫn chương trình máy tính hay chương trình điện toán Lưu ý: Khái niệm chương trình (program) viết cho máy vi tính nhằm giải vấn đế thường gọi phần mềm máy tính (Thí dụ chương trình MS Word cách gọi chung chung, xác phần mềm MS Word rõ chương trình ứng dụng.) Chữ lập trình dùng để thao tác người nhằm kiến tạo nên chương trình máy tính thông qua ngôn ngữ lập trình Người ta gọi trình lập trình trình mã hoá thông tin tự nhiên thành ngôn ngữ máy Trong trường hợp xác định chữ lập trình viết "viết mã" (cho chương trình máy tính) Như vậy, theo định nghĩa, ngôn ngữ lập trình chương trình, dùng để tạo nên chương trình khác Một chương trình máy tính viết ngôn ngữ lập trình thị (của riêng ngôn ngữ ấy) góp phần tạo nên chương trình gọi mã nguồn chương trình 1.1.3 Chương trình 1.1.3.1 Khái niệm Chương trình xem dãy phát biểu (các lệnh) thực theo thứ tự định để đạt mục đích Việc lập thành chuỗi lệnh xếp theo trình tự xác định mô tả lớp trình tính toán gọi lập trình 1.1.3.2 Đặc trưng chương trình Một chương trình đánh giá theo ba đặc trưng sau a Tính cấu trúc chương trình: cách viết tổ chức thành phần chương trình bao gồm: + Tính đơn thể: thường chương trình tổ chức thành nhiều đơn thể (chương trình – subroutine hay gọi thủ tục hay hàm) có liên kết với thông qua lời gọi hàm + Chương trình thể thống nhất: liên kết đơn thể chế truyền tham số thủ tục, hàm chương trình + Phong thái lập trình: cách lập trình phải rõ ràng, dễ đọc, ngắn gọn, súc tích quán Chương trình nguồn phải có thích có hướng dẫn để người khác sử dụng cách dễ dàng b Tính chức chương trình: cách chương trình đắn thực công việc đặt mức độ dễ sử dụng chương trình để giải toán tương tự hay thực nhiều máy khác Đó tính chất: + Tính tin cậy: chương trình đắn thực cho kết xác, + Tính phổ dụng: chương trình áp dụng cho lớp nhiều toán tương tự có liên quan, + Tính tương thích: chương trình dịch thực nhiều hệ máy tính khác c Tính hiệu suất chương trình: Một chương trình tốt tương tác với người sử dụng, với nhiều thiết bị khác, quản lý hiệu tài nguyên máy tính (bộ nhớ, thời gian xử lý – xử lý) xử lý tình ngoại lệ chương trình thực Tính hiệu chương trình thể qua: + Thân thiện với người sử dụng: chương trình dễ sử dụng thân thiện với người sử dụng, + Tính hiệu quả: chương trình sử hợp lý tài nguyên máy tính nhớ, xử lý (thời gian thực hiện) thiết bị ngoại vi, v.v + Bố cục sáng, rõ ràng: chương trình tự xử lý trương hợp đặc biệt liệu vào/ra không thích hợp hay vấn đề tràn ô nhớ, v.v Thông thường, máy tính thực nhóm lệnh sơ cấp mà “hiểu” tuân theo lệnh mệt mỏi tin cậy 1.1.3.3 Quá trình phát triển chương trình Quá trình viết thực chương trình truyền thống thực theo qui trình sau: + Sử dụng hệ soạn thảo (editor) turbo C hay turbo pascal để viết chương trình + Dịch gỡ lỗi cú pháp chương trình, + Liên kết với thư viện hay mô đun chương trình khác + Thực kiểm thử chương trình: tìm lỗi ngữ nghĩa lỗi thiết kế chương trình + Xây dựng liệu mẫu chạy kiểm nghiệm kết Quá trình mô tả hình sau toán thực tế soạn thảo chương trình nguồn dịch chương trình mã đích obj có lỗi gỡ lỗi có lỗi có lỗi? hết lỗi chương trình thực exe có lỗi? liên kết hết lỗi chương trình thư viện thực có lỗi toán có lỗi thưc hết lỗi hiện? kết tính toán Hình 1-1 Các bước lập trình 1.2 Sơ lược sở lập trình kinh tế 1.2.1 Khái niệm Cơ sở lập trình kinh tế môn học nghiên cứu vận dụng công cụ lập trình sở công nghệ thông tin vào giải toán kinh tế Môn học trang bị cho sinh viên kiến thức kỹ thuật lập trình sử dụng ngôn ngữ lập trình để giải toán kinh tế như: Bài toán kinh tế, Bài toán tối ưu, toán phục vụ đám đông, Bài toán dự trữ,… Từ máy tính điện tử đời đến nay, việc tính toán người thu kết đáng kinh ngạc Những thành tựu mà máy tính điện tử nói riêng ngành công nghệ thông tin truyền thông nói chung đem lại làm thay đổi diện mạo toàn đời sống kinh tế - xã hội trị tất nước, khu vực toàn giới Nhất ảnh hưởng hoạt động kinh tế Nhiều toán kinh tế thuộc lĩnh vực tính toán phức tạp như: Toán Kinh tế, mô hình tối ưu, lý thuyết hệ thống điều khiển học ứng dụng kinh tế, lý thuyết phục vụ đám đông… trước mày tính đời khó giải chí chưa thể giải với các công cụ lập trình sở C/C++, Pascal, … xây dựng giải toán cách nhanh chóng, xác góp phần to lớn vào phát triển sống kinh tế người Các bước nghiên cứu ứng dụng lập trình sở toán kinh tế bao gồm: a- Xác định vấn đề cần giải quyết, thu thập liệu b- Áp dụng mô hình toán học c- Xây dựng thuật toán để giải toán mô hình hoá ngôn ngữ thuận lợi cho việc lập trình cho máy tính d- Tính toán thử điều chỉnh mô hình cần e- Áp dụng giải toán thực tế 1.2.2 Tìm hiểu số toán kinh tế điển hình 1.2.2.1 Bài toán lãi suất Trong hoạt động kinh tế doanh nghiệp mảng kế toán - tài quan tâm hàng đầu Giả sử doanh nghiệp ABC khoảng thời gian t có khoản tiền nhàn rỗi m đem gửi ngân hàng với lãi suất i%/năm Tính xem khoảng thời gian t doanh nghiệp thu lãi? Ngược lại, doanh nghiệp khoảng thời gian t’ có nhu cầu vốn để đầu tư sản xuất kinh doanh doanh nghiệp vay ngân hàng với số tiền m’ lãi suất i%/năm Tính lãi mà doanh nghiệp phải trả cho ngân hàng? Trên ví dụ cụ thể toán lãi suất mà doanh nghiệp thực kế hoạch sản xuất kinh doanh phải tính toán Tuy nhiên, với dạng vay hay cho vay có tương ứng cách tính lãi khác Các cách tính lãi suất phổ biến là: a Tính lãi đơn Tính lãi đơn cách tính lãi suất mà lãi thu không tính gộp vào gốc cho kỳ tính lãi sau Thông thường cách tính lãi có kỳ hạn trả lãi lãi suất thường cao hình thức tính lãi khác b Tính lãi kép Tính lãi kép cách tính lãi suất mà lãi suất thu kỳ trước tính gộp với gốc để tính lãi tiếp cho kỳ tính lãi sau Tính lãi kép thường có lãi suất thấp lãi đơn 1.2.2.2 Bài toán khấu hao tài sản Khấu hao TSCĐ yếu tố chi phí giá thành sản phẩm doanh nghiệp nên việc lập kế hoạch khấu hao TSCĐ nằm nội dung công tác lập kế hoạch tài doanh nghiệp có ý nghĩa vô quan trọng doanh nghiệp Để hiểu rõ toán khấu hao tài sản, tìm hiểu số khái niệm dạng khấu hao áp dụng phố biến Nguyên giá tài sản cố định hữu hình: toàn chi phí mà doanh nghiệp phải bỏ để có tài sản cố định tính đến thời điểm đưa tài sản vào trạng thái sẵn sàng sử dụng Khấu hao tài sản cố định: việc tính toán phân bổ cách có hệ thống nguyên giá tài sản cố định vào chi phí sản xuất, kinh doanh thời gian sử dụng tài sản cố định Một số dạng khấu hao: - Phương pháp khấu hao tuyến tính cố định Phương pháp khấu hao có ưu điểm việc tính toán đơn giản, tổng mức khấu hao TSCĐ phân bổ đặn năm sử dụng TSCĐ không gây đột biến giá thành sản phẩm hàng năm Nhưng phương pháp có nhược điểm nhiều trường hợp không thu hồi vốn kịp thời không tính hết hao mòn vô hình TSCĐ Trong thực tế, để tính khấu hao cho toàn TSCĐ doanh nghiệp, người ta thường xác định tỷ lệ khấu hao tổng hợp bình quân chung Có nhiều cách xác định tỷ lệ khấu hao tổng hợp bình quân doanh nghiệp cách xác định thông dụng theo phương pháp bình quân gia quyền - Phương pháp khấu hao nhanh Để thu hồi vốn nhanh, người ta áp dụng phương pháp khấu hao nhanh trình tính toán Hai phương pháp khấu hao nhanh thường sử dụng phương pháp khấu hao theo số dư giảm dần phương pháp khấu hao theo tổng số năm, gọi tắt phương pháp khấu hao theo tổng số 1.2.2.1 Bài toán quy hoạch tuyến tính Có thể tạm định nghĩa quy hoạch tuyến tính lĩnh vực toán học nghiên cứu toán tối ưu mà hàm mục tiêu (vấn đề quan tâm) ràng buộc (điều kiện toán) hàm phương trình bất phương trình tuyến tính Hiện nay, với phát triển không ngừng khoa học công nghệ, với lợi ích mức độ ứng dụng dạng toán quy hoạch tuyến tính rộng Sự 10 Mở file tồn cho thao tác ghi đọc mục đích sử dụng cần đọc, nội dung file bị thay đổi không để ý mà chẳng có lưu ý cho người dùng Các thói quen tốt lập trình Luôn chắn trỏ file lời gọi hàm hợp lý Đóng file chương trình không cần đến phải đóng hết tất file trước thật khỏi chương trình Mở file theo chế độ cho phép đọc nội dung file cần giữ nguyên, điều tránh thay đổi nội dung file mong muốn 119 Chương LẬP TRÌNH TRONG KINH TẾ 3.1 Bài toán lãi suất 3.1.1 Phát biểu toán a Bài toán lãi đơn Lãi đơn: Là hình thức tính lãi mà tiền lãi không gộp vốn để tính lãi cho kì sau Bài toán: Đầu tư số tiền V0 với lãi suất r%/năm Kì tính lãi tháng, hình thức tính lãi lãi đơn Hỏi sau n kì lãi số tiền thu bao nhiêu? Vn V0 n r% V0 12 b Bài toán lãi kép Lãi kép: Là hình thức tính lãi mà tiền lãi gộp vốn để tính lãi cho kì sau Bài toán: Đầu tư số tiền V với lãi suất r%/năm Kì tính lãi tháng, hình thức tính lãi lãi kép Hỏi sau n kì lãi số tiền thu bao nhiêu? r% Vn V0 1 12 n 3.1.2 Xây dựng chương trình a Bài toán lãi đơn - Đầu vào: số tiền gửi/số tiền vay (V0); lãi suất gửi/lãi suất vay (r); thời gian gửi/thời gian vay (n) - Đầu ra: Số tiền lãi nhận/phải trả sau khoảng thời gian gửi/vay - Công thức tính: +Tiền lãi thời điểm n: V0*(r/(100*12))*n (n tính theo tháng, lãi suất tính theo năm); V0*(r/100)*n (n tính theo năm, lãi suất tính theo năm) + Tiền gốc lãi thu sau khoảng thời gian (n): Vn =V0(1+n/100)n Chương trình: #include 120 float tinhlai(float thoi_gian_vay so_tien, float lai_suat, int { float a; a=so_tien*(lai_suat/100)*thoi_gian_vay; return(a); } float tongtien(float so_tien, float lai_suat, int thoi_gian_vay) { float a; a=so_tien+so_tien*(lai_suat/100)*thoi_gian_vay; return(a); } void main(){ float a,b,c,d,f,g; int e; printf ("Nhap so tien gui: "); scanf("%f",&a); printf("Lai suat %: "); scanf ("%f",&d); printf("Thoi gian gui: "); scanf ("%d",&e); f=tinhlai(a,d,e); g=tongtien(a,d,e); printf("\nSo tien lai nhan duoc la: %f",f); printf("\nTong so tien nhan duoc: %f",g); } b Bài toán lãi kép - Đầu vào: số tiền gửi/số tiền vay (V0k); lãi suất gửi/lãi suất vay (rk); thời gian gửi/thời gian vay (nk) - Đầu ra: Số tiền lãi nhận/phải trả sau khoảng thời gian gửi/vay 121 - Công thức tính: +Tiền lãi thời điểm n: V0k*(rk/(100*12))n (n tính theo tháng, r tính lãi suất năm); V0k*(rk/(100))n (n tính theo năm, lãi suất tính theo năm) + Tiền gốc lãi thu sau khoảng thời gian (n): Vnk =V0k(1+rk/100)n #include float tinhlai(float thoi_gian_vay) so_tien, float lai_suat, int { float a; a=so_tien*(lai_suat/100)*thoi_gian_vay; return(a); } float tinhl(float thoi_gian_gui) so_tien, { int i=0; float a,tien; a=1+lai_suat/100; while(i> Q (vì K ≤ Q không cần đặt vấn đề dự trữ) Chi phí cho lần đặt hàng A, giá đơn vị hàng C, hệ số chi phí dự trữ I, thời gian đặt hàng T0 Hãy xác định số lần đặt hàng lượng hàng đặt lần cho tổng chi phí tạo dự trữ b Phân tích toán Tương tự mô hình Wilson, ta xem số lượng hàng đặt lần S, số lần đặt hàng n =Q/S Vì Q Z B* lấy (K-Q)(t*-B/Q) đặt hàng làm đầy kho hàng xét c Xây dựng chương trình - Đầu vào : Nhu cầu hàng Q, Thời gian T, Chi phí lần đặt hàng A, Giá hàng C, chi phí trữ I - Đầu : Số lần đặt hàng tối ưu (n) ; Lượng đặt hàng tối ưu cho lần (S) ; Chu kỳ dự trữ (t) - Công thức : s AQ Q IC K ; n *=Q/S *; t*=1/n* ; t n 3.3 Bài toán quy hoạch tuyến tính Trong toán học, quy hoạch tuyến tính (QHTT) (linear programming - LP) toán tối ưu hóa, hàm mục tiêu (objective function) – f(x) điều kiện ràng buộc tuyến tính f(x1,x2,…,xn) = a1x1+a2x2 +….+anxn+b a Phát biểu toán Để hiểu rõ toán xét ví dụ sau: Một xí nghiệp cần sản xuất loại bánh: bánh đậu xanh, bánh thập cẩm bánh dẻo Lượng nguyên liệu đường, đậu cho bánh loại, lượng dự trữ nguyên liệu, tiền lãi cho bánh loại cho bảng sau: Nguyên liệu Bánh đậu xanh Bánh thập cẩm Bánh dẻo Lượng dự trữ Đường Đậu 0,04kg 0,07kg 0,06kg 0kg 0,05kg 0,02kg 500kg 300kg Bột mì Lãi 0,19kg 3000 0,24kg 2000 0,13kg 2500 600kg Hãy lập mô hình toán tìm số lượng loại bánh cần sản xuất cho không bị động nguyên liệu mà lãi đạt cao 126 Để hiểu rõ cách xây dựng tìm phương án cho toán ta tìm hiểu cách giải toán đây: Gọi x1, x2 , x3 số bánh đậu xanh, bánh thập cẩm, bánh dẻo cần phải sản xuất Điều kiện: xj 0 , j =1,2,3 Khi đó: 1) Tiền lãi thu là: f (x) = f (x1 , x2 , x3 ) = 3x1 + 2x2 + 2,5x3 (ngàn) 2) Lượng đường sử dụng là: 0,04x1 + 0,06x2 + 0,05x3 (kg) Để không bị động nguyên liệu thì: 0,04x1 + 0,06x2 + 0,05x3 ≤500 3) Lượng đậu sử dụng là: 0,07x1 + 0,02x3 (kg) Để không bị động nguyên liệu thì: 0,07x1 + 0,02x3 ≤ 300 4) Lượng bột mì sử dụng là: 0,19x1 + 0,24x2 + 0,13x3 (kg) Để không bị động nguyên liệu thì: 0,19x1 + 0,24x2 + 0,13x3 ≤600 Vậy ta có mô hình toán (1) f (x) = f (x1 , x2 , x3 ) = 3x1 + 2x2 + 2,5x3 max (2) 0,04x1 + 0,06x2 + 0,05x3 ≤500 0,07x1 + 0,02x3 ≤ 300 0,19x1 + 0,24x2 + 0,13x3 ≤600 (3) xj 0, j =1,2,3 Ta nói toán quy hoạch tuyến tính ẩn tìm max hàm mục tiêu b Phân tích toán Dựa ví dụ ta có mô hình tổng quát toán sau : - Dạng tổng quát Tìm x = (x1, x2 xi, xn) ∈IRn n Sao cho: f(x) = C x j j → max (min) (1) j 1 Thỏa mãn điều kiện: m a x ij j (≤, = ≥ ) bi ( i=1,m ) (2) j 1 xj≥ (j = 1, n ) (3) - Dạng chuẩn tắc Tìm x = (x1 , , xj , xn) ∈ IRn 127 Sao cho: f(x) = c1x1 + +ci xi + + cn xn → max (7) Thoả mãn a11 x1 + + a1ixi + +a1nxn ≤ b1 a21 x1 + + a2ixi + +a2nxn ≤ b2 -ai1 x1 + + aiixi + +ainxn ≤ bi (8) -am1 x1 + + amixi + +amnxn ≤ bm xi ≤ ( i = 1, n ) (9) - Dạng rút gọn n f(x) = c x → max/min i i i 1 m a ji x j ≤ (>=) bi ( i=1,m ) j 1 xi ≥ ( i = 1, n ) Tính chất hàm mục tiêu (7) dạng bất phương trình hệ ràng buộc (8) xuất phát từ ý nghĩa thực tiễn toán đặt Chẳng hạn toán lập kế hoạch sản xuất để hiệu kinh tế tổng cộng lớn nhất, phải hạn chế chi tiết nguyên liệu sử dụng Ngược lại, toán xác định vốn đầu tư cho sản xuất phải khai thác tối đa trang bị kỹ thuật - công nghệ để cho đạt yêu cầu giá trị sản phẩm làm mà vốn đầu tư c Xây dựng chương trình - Đầu vào: Hệ số hàm mục tiêu CT; Ma trận ràng buộc AT; - Đầu ra: phương án tối ưu: X*= (x1 x2 x3); - Cách tính: Thêm biến phụ; chuyển bất phương trình ràng buộc dạng phương trình: Tính Det(A); Det (A1); Det(A2); Det(A3) Khi đó: x1=Det(A1)/Det(A); x2=Det(A2)/Det(A); x3=Det(A3)/Det(A) 3.4 Bài toán phục vụ công cộng a Mô tả toán - Hệ thống phục vụ công cộng từ chối cổ điển (Elang) Hệ thống phục vụ công cộng có n kênh phục vụ, suất kênh , dòng yêu cầu đến hệ thống dòng poát xông dừng mật 128 độ (qui luật xuất yêu cầu theo thời gian) Thời gian phục vụ yêu cầu kênh tuân theo qui luật số Một yêu cầu đến hệ thống gặp lúc có kênh rỗi nhận phục vụ thoả mãn kênh rỗi Ngược lại tất kênh bận phải khỏi hệ thống Cần xác định tiêu phân tích hệ thống - Hệ thống chờ với độ dài hàng chờ hạn chế thời gian chờ không hạn chế Hệ thống phục vụ công cộng có n kênh phục vụ, suất kênh , dòng yêu cầu đến hệ thống dòng poát xông dừng mật độ (qui luật xuất yêu cầu theo thời gian) Thời gian phục vụ yêu cầu kênh tuân theo qui luật số Một yêu cầu đến hệ thống gặp lúc có kênh rỗi nhận phục vụ thoả mãn kênh rỗi Ngược lại tất kênh bận xếp hàng chờ số yêu cầu chờ bé m Cần xác định tiêu phân tích hệ thống - Hệ thống chờ Hệ thống phục vụ công cộng có n kênh phục vụ, suất kênh , dòng yêu cầu đến hệ thống dòng poát xông dừng mật độ (qui luật xuất yêu cầu theo thời gian) Thời gian phục vụ yêu cầu kênh tuân theo qui luật số Một yêu cầu đến hệ thống gặp lúc có kênh rỗi nhận phục vụ thoả mãn kênh rỗi Ngược lại tất kênh bận xếp hàng chờ Cần xác định tiêu phân tích hệ thống b Phân tích toán Trong trình hoạt động, tác động dòng vào dòng phục vụ, hệ thống phục vụ chuyển từ trạng thái sang trạng thái khác Ta gọi xác suất trình xác suất chuyển trạng thái Nguyên nhân gây chuyển trạng thái tác động dòng vào dòng phục vụ, số yêu cầu số kênh bận hệ thống thay đổi, nghĩa tác động dòng vào λi(t) dòng phục vụ μi(t) thời điểm t, hệ thống biến đổi từ trạng thái sang trạng thái khác Ta thiết lập quan hệ xác suất xuất trạng thái xk(t): Pk(t), với tác nhân gây biến đổi trạng thái Mối quan hệ hiển thị phương trình toán học chứa xác suất Pk(t) cường độ dòng chuyển trạng thái hệ thống 129 Ta đặt = / từ (2) ta có Pk = k P0 ! Thay vào điều kiện chuẩn ta có: k P0 k 0 K ! n n Pk k 0 => P0 = k k 0 ! n Bằng cách nhân tử số mẫu số công thức với e- ta có: e / 0! P0 = n k e ! k 0 Ký hiệu: P(, k) = e k / ! - xác suất đại lượng ngẫu nhiên phân phối poát xông nhận giá trị k k R(, k) = P( , i) - xác suất tích luỹ tương ứng ta có: i P0 = e / 0! P( ,0) n R ( , n) e k ! k 0 Từ đó: Pk = k P( , k ) P0 k! R( , n) (4) Các giá trị P(, k) R(, k) tính bảng phân phối poátxông Các tiêu đánh giá hoạt động hệ thống Đối với hệ thống tiêu đánh giá hệ thống là: (1) Xác suất hệ thống có n kênh rỗi: Pr Pr = P0 = 0 P( ,0) P0 0! R( , n ) Chỉ tiêu cho biết tỷ lệ thời gian hệ thống rỗi hoàn toàn, thời gian rỗi hoàn toàn tồn hệ thống poát xông nói riêng hệ ngẫu nhiên nói chung, dù ta có giảm tối thiểu đến số kênh phục vụ hay tăng tối đa cường độ dòng yêu cầu 130 (2) Xác suất hệ thống có n kênh bận (hay xác suất yêu cầu đến hệ thống bị từ chối Ptc): n P( , n) P0 n! R( , n) Pn = Đây hiệu suất lý thuyết tối đa hệ thống, trường hợp hệ ngẫu nhiên khả thiết kế hệ thống khai thác toàn công suất kỹ thuật kênh (3) Xác suất phục vụ (xác suất yêu cầu đến hệ thống nhận phục vụ) là: Ppv = 1-Ptc = 1-Pn Đó tỷ lệ đối tượng hệ thống tiếp nhận phục vụ hệ thống phục vụ công cộng, số tiêu quan trọng nhất, với tiềm kỹ thuật chọn tiêu làm mục tiêu thiết kế hệ thống Sau số tiêu tính toán mức trung bình, công thức dựa sở tính kỳ vọng toán học đại lượng ngẫu nhiên (4) Số kênh bận trung bình (hay số yêu cầu trung bình có hệ thống): n Nb = n 1 k k P0 P0 k 1 k! k k! n kPk k 0 = (1 Pn ) [1 P( , n) ] Ppv R( , n) (5) Số kênh rỗi trung bình: Nr n Nb (6) Hệ số bận (rỗi): Hb Nb n Hr = - Hb (7) Hiệu chung: F Tuỳ thuộc vào đánh giá lợi ích hay thiệt hại trình phục vụ việc tận dụng công suất hệ thống loại lợi ích khác, người ta lập tiêu tổng hợp đánh giá hiệu chung hệ thống Việc phục vụ yêu cầu mang lại lợi ích Cpv; yêu cầu bị từ chối gây thiệt Cct; kênh rỗi gây lãng phí Ckr; đơn vị thời gian tính tiêu hiệu chung là: 131 F= ppvCpv - N r ckr- pnctc Trên sở tiêu ta chọn hay vài tiêu để tối ưu hoá hệ thống c Xây dựng chương trình - Đầu vào: Số kênh phục vụ; Cường độ dòng vào; Năng suất phục vụ - Đầu ra: Xác suất kênh bận; Xác suất kênh rỗi; Xác suất yêu cầu vào phục vụ; Xác suất yêu cầu vào bị từ chối; Số kênh bận trung bình; Số kênh rỗi trung bình; Số kênh bận trung bình; Hệ số bận; Hệ số rỗi - Công thức xác định: + Xác suất kênh rỗi: P0 = + Xác suất kênh bận: P n = k k 0 ! n n P( , n) P0 n! R( , n) + Xác suất yêu cầu vào phục vụ: Ppv = 1-Ptc = 1-Pn + Xác suất yêu cầu vào bị từ chối: Ptc =1-Ppv + Số kênh bận trung bình: Nb= P pv + Số kênh rỗi trung bình: Nr=n-Nb + Hệ số bận: H b Nb n + Hệ số rỗi: Hr = - Hb - 132 TÀI LIỆU THAM KHẢO [1] Nguyễn Quảng, Nguyễn Thượng Hải, (2007), Giáo trình Toán kinh tế, Học viện Bưu viễn thông [2] Phạm Văn Ất, (2009), Giáo trình kỹ thuật lập trình C nâng cao, NXB Hồng Đức [3] Quách Tuấn Ngọc, (1998), Ngôn ngữ lập trình C, NXB Giáo dục [4] Nguyễn Hữu Tuấn, (1997), Ngôn ngữ lập trình C, Nhà xuất Khoa học kỹ thuật [5] Quách Tuấn Ngọc (2003), Ngôn ngữ lập trình C++, NXB Giáo dục [6] Khoa HTTT Kinh tế - HV Ngân hàng, (2011), Bài giảng Cơ sở lập trình [7] Bình Minh Trí, (2006), Giáo trình lý thuyết tối ưu kinh tế, NXB Khoa học Kỹ thuật 133 ... Các bước lập trình 1.2 Sơ lược sở lập trình kinh tế 1.2.1 Khái niệm Cơ sở lập trình kinh tế môn học nghiên cứu vận dụng công cụ lập trình sở công nghệ thông tin vào giải toán kinh tế Môn học trang... THIỆU CƠ SỞ LẬP TRÌNH TRONG KINH TẾ 1.1 Các khái niệm 1.1.1 Ngôn ngữ máy 1.1.2 Ngôn ngữ lập trình 1.1.3 Chương trình 1.2 Sơ lược sở lập trình kinh. .. THIỆU CƠ SỞ LẬP TRÌNH TRONG KINH TẾ 1.1 Các khái niệm 1.1.1 Ngôn ngữ máy Ngôn ngữ máy (machine language hay machine code) loại ngôn ngữ lập trình đó, thị biểu diễn số nhị phân Đây ngôn ngữ lập trình