Bài toán gán trong lập trình tuyến tính: Giới thiệu và mô hình bài tập

Bài toán chuyển nhượng là một loại bài toán lập trình tuyến tính đặc biệt liên quan đến việc phân bổ các nguồn lực khác nhau cho các hoạt động khác nhau trên cơ sở một. Nó thực hiện theo cách mà chi phí hoặc thời gian tham gia vào quá trình là tối thiểu và lợi nhuận hoặc bán hàng là tối đa. Mặc dù có những vấn đề có thể được giải quyết bằng phương pháp đơn giản hoặc phương pháp vận chuyển, nhưng mô hình gán cho một cách tiếp cận đơn giản hơn cho những vấn đề này.

Trong một nhà máy, một giám sát viên có thể có sáu công nhân có sẵn và sáu công việc để sa thải. Anh ta sẽ phải đưa ra quyết định về công việc nào nên được giao cho công nhân nào. Vấn đề hình thành một đến một cơ sở. Đây là một vấn đề chuyển nhượng.

1. Mô hình bài tập:

Giả sử có n điều kiện và n công việc thì rõ ràng trong trường hợp này, sẽ có n bài tập. Mỗi cơ sở hoặc nói công nhân có thể thực hiện từng công việc, từng công việc một. Nhưng cần có một số thủ tục nhất định theo đó việc chuyển nhượng nên được thực hiện để lợi nhuận được tối đa hóa hoặc chi phí hoặc thời gian được giảm thiểu.

Trong bảng, Co ij được định nghĩa là chi phí khi công việc thứ j được giao cho nhân viên thứ i. Có thể lưu ý ở đây rằng đây là trường hợp đặc biệt của vấn đề vận chuyển khi số lượng hàng bằng số cột.

Công thức toán học:

Bất kỳ giải pháp khả thi cơ bản nào của bài toán Bài tập bao gồm (2n - 1) biến trong đó các biến (n ​​- 1) bằng 0, n là số lượng công việc hoặc số cơ sở. Do sự thoái hóa cao này, nếu chúng ta giải quyết vấn đề bằng phương pháp vận chuyển thông thường, nó sẽ là một công việc phức tạp và tốn thời gian. Do đó, một kỹ thuật riêng biệt được bắt nguồn cho nó. Trước khi đi đến phương pháp tuyệt đối, việc hình thành vấn đề là rất quan trọng.

Giả sử x jj là một biến được định nghĩa là

1 nếu công việc thứ i được giao cho máy hoặc cơ sở thứ j

0 nếu công việc thứ i không được giao cho máy hoặc cơ sở thứ j.

Bây giờ khi vấn đề hình thành từ một đến một cơ sở hoặc một công việc sẽ được chỉ định cho một cơ sở hoặc máy.

Tổng chi phí chuyển nhượng sẽ được đưa ra bởi

Định nghĩa trên có thể được phát triển thành mô hình toán học như sau:

Xác định x ij > 0 (i, j = 1, 2, 3 Giảm n) để

Chịu sự ràng buộc

và x ij là 0 hoặc 1.

Phương pháp giải quyết vấn đề (Kỹ thuật Hungary):

Xem xét chức năng mục tiêu của loại tối thiểu hóa. Các bước sau đây có liên quan đến việc giải quyết vấn đề Chuyển nhượng này,

1. Xác định vị trí phần tử chi phí nhỏ nhất trong mỗi hàng của bảng chi phí nhất định bắt đầu bằng hàng đầu tiên. Bây giờ, phần tử nhỏ nhất này được trừ thành từng phần tử của hàng đó. Vì vậy, chúng ta sẽ nhận được ít nhất một số 0 trong mỗi hàng của bảng mới này.

2. Đã xây dựng bảng (như bước 1), lấy các cột của bảng. Bắt đầu từ cột đầu tiên xác định phần tử chi phí nhỏ nhất trong mỗi cột. Bây giờ trừ phần tử nhỏ nhất này từ mỗi phần tử của cột đó. Đã thực hiện bước 1 và bước 2, chúng tôi sẽ nhận được ít nhất một số 0 trong mỗi cột trong bảng chi phí giảm.

3. Bây giờ, các bài tập được thực hiện cho bảng rút gọn theo cách sau.

(i) Các hàng được kiểm tra liên tiếp, cho đến khi hàng có chính xác một (một) số không được tìm thấy. Việc gán được thực hiện cho số 0 duy nhất này bằng cách đặt ô vuông □ xung quanh nó và trong cột tương ứng, tất cả các số 0 khác được gạch chéo (x) vì chúng sẽ không được sử dụng để thực hiện bất kỳ phép gán nào khác trong cột này. Bước được tiến hành cho mỗi hàng.

(ii) Bước 3 (i) hiện được thực hiện trên các cột như sau: - các cột được kiểm tra liên tiếp cho đến khi tìm thấy một cột có chính xác một số không. Bây giờ, việc gán được thực hiện cho số 0 duy nhất này bằng cách đặt hình vuông xung quanh nó và đồng thời, tất cả các số 0 khác trong các hàng tương ứng được gạch chéo (x) bước được thực hiện cho mỗi cột.

(iii) Bước 3, (i) và 3 (ii) được lặp lại cho đến khi tất cả các số 0 được đánh dấu hoặc gạch bỏ. Bây giờ, nếu số lượng số không được đánh dấu hoặc các bài tập được thực hiện bằng số lượng hàng hoặc cột, giải pháp tối ưu đã đạt được. Sẽ có chính xác một nhiệm vụ duy nhất trong mỗi hoặc cột mà không có bất kỳ sự phân công nào. Trong trường hợp này, chúng ta sẽ chuyển sang bước 4.

4. Ở giai đoạn này, hãy vẽ số dòng tối thiểu (ngang và dọc) cần thiết để bao phủ tất cả các số không trong ma trận thu được ở bước 3, Quy trình sau được áp dụng:

(i) Đánh dấu (

) tất cả các hàng không có bất kỳ sự phân công nào.

(ii) Bây giờ đánh dấu (

) tất cả các cột có số 0 trong các hàng được đánh dấu.

(iii) Bây giờ đánh dấu đánh dấu tất cả các hàng chưa được đánh dấu và có gán trong các cột được đánh dấu.

(iv) Tất cả các bước tức là (4 (i), 4 (ii), 4 (iii) được lặp lại cho đến khi không còn hàng hoặc cột nào có thể được đánh dấu.

(v) Bây giờ vẽ các đường thẳng đi qua tất cả các hàng không được đánh dấu và các cột được đánh dấu. Cũng có thể nhận thấy rằng trong một ma trận nxn, luôn luôn có ít hơn các dòng 'n' sẽ bao gồm tất cả các số không nếu không có giải pháp nào trong số chúng.

5. Trong bước 4, nếu số dòng được vẽ bằng n hoặc số hàng, thì đó là giải pháp tối ưu nếu không, sau đó chuyển sang bước 6.

6. Chọn phần tử nhỏ nhất trong số tất cả các phần tử chưa được khám phá. Bây giờ, phần tử này được trừ khỏi tất cả các phần tử chưa được khám phá và được thêm vào phần tử nằm ở giao điểm của hai dòng. Đây là ma trận cho bài tập mới.

7. Lặp lại quy trình từ bước (3) cho đến khi số lượng bài tập trở thành bằng số lượng hàng hoặc số cột.