Formularea matematică a problemei de atribuire

Înainte de a rezolva această problemă, este necesar să se elimine dezechilibrul prin adăugarea de lucru fictive sau mașini, în funcție de condițiile inițiale. Prin urmare, fără pierderi de generalitate, putem seta m = n.

Să xij = 0 în cazul în care operarea j-i nu se realizează pe masina i-lea,

xij = 1, eslij-am de lucru se face pe masina i-lea.

Astfel, soluția poate fi scrisă ca o matrice bidimensională X = (xij). O soluție fezabilă este numită alocare. O soluție fezabilă este construită prin selectarea unui element din fiecare rând al matricei X = (xij) și un element din fiecare coloană a matricei. Pentru o valoare dată a lui n sunt n! soluții fezabile.

Acum, problema este formulată după cum urmează:

Formularea matematică a problemei de atribuire

Formularea matematică a problemei de atribuire

restricții primul grup sunt necesare pentru fiecare loc de muncă realizată o singură dată. Limitările al doilea grup se va asigura că toată lumea va fi atribuit un loc de muncă.

Pentru a ilustra problema de atribuire, ia în considerare un tabel cu trei locuri de muncă și trei mașini.

Structura specifică a sarcinii de atribuire vă permite să utilizați o metodă eficientă de rezolvare.

Notă. Soluția optimă nu se va schimba dacă oricare din rândul sau coloana din valorile matricei, pentru a scădea o valoare constantă arbitrară (reducere).

Observația furnizat arată că, dacă se poate construi o nouă matrice cu zerouri și elementele de zero, sau un subset dintre ele corespund soluție acceptabilă, o astfel de soluție va fi optimă:

5 7 9 5 0 2 4 0 2 2

C = 14 10 12 10 4 0 2 4 0 0

15 13 16 13 2 0 3 1 2 0

Deoarece problema de atribuire este un caz special de TK pentru a aborda este posibil să se utilizeze orice algoritm de programare liniară, dar mai eficientă este metoda maghiară (algoritm).

REZUMAT Algoritmul maghiar este că în cij matricea originală obține m = n zerouri independente, t. E. Că în fiecare rând sau coloană trebuie să aibă un singur zero.

Pasul rânduri 1.Reduktsiya și coloane.

Scopul acestei etape este de a obține numărul maxim posibil zero elemente în valorile matricei. În acest scop, toate elementele din fiecare rând se scade elementul minim rând corespunzător, și apoi a tuturor elementelor din fiecare coloană a matricei obținută a fost scăzută elementul minimal al coloanei corespunzătoare. Rezultatul este redus matricea valorilor și a veniturilor pentru a căuta întâlniri.

Pasul 2.Modifikatsiya redus matrice.

Pentru matricea redusă a valorilor:

a) să radieze toate rândurile și coloanele care conțin numărul maxim de zerouri. Mai departe, se deplasează rândurile (de sus în jos) și coloane (de la stânga la dreapta) linii este filtrate, respectiv, și apoi coloanele care conțin elemente de zero.

b) elementul de matrice condensat și rezultând alege minimum:

- Am scade din toate celulele non-șterse;

- Noi adauga la elementul situat la intersecția a două linii.

Pasul Planul 3.Proveryaem pentru optimalitate.

În cazul în care nu este optimă, repetați pasul 2.

1) În cazul în care numărul de linii necesare pentru a șterge elementele zero, egal cu numărul de rânduri (coloane), există o misiune plină.

2) Dacă sarcina inițială este sarcina de a maximiza, toate elementele matricei valorilor să fie multiplicată cu (- 1) și le stiva cu un număr suficient de mare, astfel încât matricea nu conține elemente negative. Apoi, problema trebuie rezolvată ca o problemă de minimizare.

Vom arăta activitatea algoritmului maghiar pe un exemplu de problemă de atribuire cu următoarea matrice de valori:

Ai nevoie să aloce resurse pentru obiecte, astfel încât costul total a fost minimă

Pasul rânduri 1.Reduktsiya și coloane.

Valorile elementelor minime de rândurile 1, 2, 3 și 4 sunt egale cu 2, 4, 11 și, respectiv, 4. Scăzând elementele fiecărui rând care corespunde unei valori minime, obținem matricea următoare:

Valorile elementelor minime de coloanele 1, 2, 3 și 4 sunt 0, 0, 5 și 0, respectiv. Scăzând elementele fiecărei coloane corespunzătoare unei valori minime, obținem matricea următoare:

=

În această matrice în rândul 3 și coloana 1 pentru doi la zero, r. F. necesară pentru a efectua o modificare suplimentară a valorilor reduse ale matricei (planul optim nu este primit).

Pasul 2.Modifikatsiya redus matrice.

Obținem matricea prescurtate a valorilor:

Acest minim se adaugă la elementele matricei reduse confruntă la intersecția radiate de rânduri și coloane (11, 2). Rezultatul este o matrice modificata:

Pasul 3.Proveryaem rezultat planul optim și să facă numiri.

Căutările pentru siruri de caractere, cu un singur zero, și-l nota. Această linie 2. Următoarea linie-4. Remarcăm zero pe această linie, în timp ce restul este zero, eliminându-se în prima coloană. Următoarea linie conține un marcaj de 0-1 acest zero, eliminându-se simultan zero, în coloana 3. Menționăm zero în coloana 4. Toate zerouri sunt independente, adică. E. Se obține un plan optim. Impunerea unei matrice modificată a matricei costului inițial, vom vedea că toate numirile făcute.

Impune o matrice modificată inițială, obținem F (x) = 4 + 9 + 11 + 4 = 28

A: Primul obiectiv de resurse la obiect 3, al doilea - pe al 2-lea obiect, al patrulea - 1-obiect, a treia resursă - al 4-lea obiect. costul destinatie: + 4 + 9 11 + 4 = 28.

NOTA 1: În cazul în care matricea originală nu este pătrată, aveți nevoie să introduceți resurse fictive sau obiecte simulate, matricea a devenit un pătrat.

Astfel, esența metodei maghiar este după cum urmează: Prin adăugarea unui anumit mod de numere ce se găsește în unele coloane și scăzând-le de la anumite numere sunt un sistem de așa-numitele zerouri independente. Un set de zerouri se numește un sistem de zerouri independente, dacă există două (sau mai multe) de la zero nu se află pe aceeași linie (într-un rând sau coloană). Dacă numărul de zerouri independente este n, apoi prin luarea variabilelor Hij corespunzătoare este 1 și toți ceilalți - la 0, obținem planul optim de atribuire.