Conectați-vă la orice ERP

REST API-ul deschis al SkyPlanner se conectează la sisteme ERP, MES și operaționale, inclusiv ERP-uri interne. Construiți integrarea pe cont propriu sau lăsați echipa noastră să vă ajute.

Funcționează și independent — o integrare ERP este opțională, nu obligatorie.

Discutați un proiect de integrare

Se conectează cu sisteme ERP și MES precum

Resurse

Job Shop Scheduling: definiție, exemplu și metode

Înțelegeți job shop scheduling printr-un exemplu cu două comenzi, comparați metodele și vedeți cum SkyPlanner recalculează lucrul pe mașini comune.

Jussi Mäntylä Specialist în planificarea producției, SkyPlanner Actualizat October 4, 2026 18 min de citit
Two batches follow opposite routes between shared milling and drilling workstations
În acest articol
  1. Ce stabilește job shop scheduling
  2. Job shop, producție în flux, job shop flexibil și producție la comandă
  3. Un exemplu de job shop scheduling: comenzile A și B cu fluxuri încrucișate
  4. Unde apare job shop scheduling în SkyPlanner
  5. Datele de intrare care fac utilizabil un program job shop
  6. Conectați datele comenzilor la modelul de programare
  7. Metode de programare și obiectivul pe care îl servesc
  8. Ce se schimbă atunci când B este urgent sau o mașină este indisponibilă?
  9. Ce să verificați înainte de a renunța la foaia de calcul
  10. Întrebări frecvente
  11. Ce este programarea job shop?
  12. Care este diferența dintre programarea job shop și programarea cu flux liniar, în care toate lucrările urmează aceeași succesiune de mașini?

Acasă » Resurse » Job Shop Scheduling: definiție, exemplu și metode

Timp estimat de citire: 15 minute

Job shop scheduling atribuie ore de început și resurse comune comenzilor ale căror operații urmează fluxuri tehnologice diferite, stabilite. Păstrează ordinea etapelor de proces ale fiecărei comenzi și împiedică operațiile concurente să folosească aceeași resursă în același timp. Rezultatul le arată echipelor de producție ce poate rula în continuare și ce trebuie să aștepte.

Concluzii principale

Un program job shop leagă fluxul tehnologic al fiecărei comenzi de disponibilitatea comună a centrelor de lucru, nu doar de poziția ei într-o listă de comenzi.

Mașini diferite pot procesa comenzi diferite în paralel, în timp ce fiecare comandă trebuie să respecte secvența propriilor operații.

Timpul total cel mai scurt de finalizare și termenul unui client urgent pot necesita programe diferite.

În SkyPlanner, etapele de lucru ordonate și centrele de lucru eligibile alcătuiesc modelul fluxului tehnologic; Arcturus, motorul de programare al SkyPlanner, recalculează lucrările programate, iar Gantt le afișează.

Verificați plasarea comenzilor și datele fluxului tehnologic înainte de a folosi Reschedule all: acesta reoptimizează comenzile aflate deja pe Gantt.

Ce stabilește job shop scheduling

Într-un atelier de prelucrare mecanică, o comandă poate necesita frezare urmată de găurire, în timp ce alta necesită găurire înainte de frezare. Ambele comenzi concurează pentru aceleași mașini, dar următoarea mașină utilizabilă diferă. Sortarea comenzilor după data livrării nu îi spune încă operatorului de la freză ce operație poate începe.

Un program rezolvă trei decizii legate între ele: ce operație este pregătită, ce resursă o poate procesa și când poate rula. Pregătirea depinde de operațiile anterioare și de intrările de producție. Disponibilitatea resursei depinde de celelalte lucrări deja alocate acelei resurse. Prin urmare, modificarea unei alocări poate afecta mai multe comenzi, mai departe pe fluxurile lor tehnologice.

Job shop scheduling este o problemă particulară în cadrul programării producției. Programarea producției acoperă și situații cu fluxuri mai simple sau mai repetitive. Distincția job shop contează deoarece o singură secvență de comenzi la nivelul întregii fabrici nu poate descrie complet secvența la nivel de operație pe fiecare centru de lucru.

Job shop, producție în flux, job shop flexibil și producție la comandă

ConceptCe descrieÎntrebare practică
Job shopComenzile urmează propriile secvențe de operații stabilite, pe resurse comuneCum pot fluxuri tehnologice diferite să folosească aceleași mașini fără conflicte?
Producție în fluxComenzile urmează aceeași secvență de mașiniÎn ce ordine ar trebui să treacă comenzile prin acest flux comun?
Job shop flexibilO operație poate folosi una dintre mai multe mașini eligibileCe mașină eligibilă și ce oră de început ar trebui să primească fiecare operație?
Producție la comandăO comandă a clientului declanșează producțiaCând ar trebui lansată producția pentru o anumită comandă?

Modelul clasic job shop atribuie fiecărei operații o mașină specificată. Programarea job shop flexibilă adaugă selecția mașinii la problema stabilirii momentelor de execuție. Producția la comandă descrie declanșatorul producției, deci o fabrică poate fi atât de tip producție la comandă, cât și organizată ca job shop.

Documentația Google OR-Tools arată clar cele două constrângeri fundamentale: o operație urmează după predecesoarea sa, iar o mașină execută o singură operație la un moment dat. În hala de producție, calendarele de lucru, materialele și oamenii adaugă condiții suplimentare acestui model de bază.

Un exemplu de job shop scheduling: comenzile A și B cu fluxuri încrucișate

Numerele următoare sunt ilustrații ipotetice. Două centre de lucru, frezare M și găurire D, sunt disponibile de la momentul 0. Fiecare execută o singură operație la un moment dat. Pentru claritate, acest exemplu nu include timp de reglaj, pauze de calendar, lipsă de materiale sau operator comun, iar fiecare operație rulează neîntrerupt.

Conflictul este simplu: A și B au nevoie de aceleași mașini în ordine opusă, deci B trebuie să aștepte frezarea chiar dacă găurirea este liberă.

ComandăPrima operațieA doua operațieTimp total de procesare
AFrezare M: 2 unități de timpGăurire D: 1 unitate de timp3 unități de timp
BGăurire D: 1 unitate de timpFrezare M: 1 unitate de timp2 unități de timp

Dacă planificatorul termină întreaga comandă A înainte de a începe B, A folosește frezarea de la 0 la 2 și găurirea de la 2 la 3. Apoi B folosește găurirea de la 3 la 4 și frezarea de la 4 la 5. Comenzile se termină la momentul 5, deși găurirea era disponibilă în timpul operației inițiale de frezare a lui A.

Dacă se permite suprapunerea fluxurilor, rezultă acest program fezabil:

Centru de lucruTimp 0 până la 1Timp 1 până la 2Timp 2 până la 3
Frezare MA, prima parteA, a doua parteB
Găurire DBInactivA

Acum toate lucrările se termină la momentul 3. Aceasta este durata totală minimă (makespan) pentru modelul ilustrat: frezarea trebuie să proceseze 3 unități de timp de lucru pe o singură mașină, deci niciun program fezabil nu se poate termina mai devreme. B termină găurirea la momentul 1, dar nu poate începe frezarea până când A eliberează M la momentul 2. Intervalul de inactivitate al găuririi nu înseamnă că planificatorul a uitat o operație: A este încă în frezare, iar B a folosit deja găurirea.

Timpul total de procesare este de 5 unități, dar este distribuit pe două mașini. Această sumă nu reprezintă timpul scurs până la finalizarea lucrărilor în fabrică. Invers, plasarea ambelor comenzi la momentul 0 într-o foaie de calcul, fără verificarea operațiilor individuale, ar ascunde concurența lor ulterioară pentru frezare.

Timpul până la finalizarea ultimei comenzi se numește makespan. Este o măsură utilă atunci când obiectivul este terminarea rapidă a întregului set de lucrări. Nu arată dacă comanda unui anumit client se termină suficient de devreme. Această distincție devine importantă atunci când B are un termen urgent.

Unde apare job shop scheduling în SkyPlanner

În SkyPlanner, fluxurile comenzilor A și B devin etape de lucru ordonate, cu centre de lucru eligibile: A necesită frezare, apoi găurire, iar B necesită găurire, apoi frezare. Configurați în modelul de producție centrele de lucru, schimburile, operatorii, prioritățile și materialele și furnizați fluxurile și duratele comenzilor. Motorul de programare respectă secvența definită a etapelor de lucru și selectează cel mai bun centru de lucru eligibil disponibil pentru fiecare pas. Software-ul de programare a producției de la SkyPlanner programează automat lucrările de producție discretă, ținând cont de disponibilitatea materialelor, de schimburi, de priorități și de datele de livrare. Planificatorii decid, AI-ul se supune prin priorități prestabilite.

După ce A și B sunt plasate pe Gantt, Reschedule all, butonul de recalculare al SkyPlanner, cunoscut și ca King Button, declanșează recalcularea de către Arcturus a lucrărilor programate; Gantt afișează alocările și secvența rezultate. Reschedule all nu mută comenzile din fila Neprogramate în program. Stabiliți plasarea inițială a comenzilor înainte de a evalua reprogramarea. Pentru a explora fluxul de lucru, încercați SkyPlanner cu date demo sau folosiți Getting Started asistat de AI în SkyPlanner Assistant; programați o demonstrație pentru a discuta despre propriile fluxuri tehnologice și priorități.

Datele de intrare care fac utilizabil un program job shop

Un algoritm poate secvenția modelul de producție pe care îl primește. Prima sarcină a planificatorului este să facă acest model să reflecte realitatea din atelier. Pentru A și B, începeți cu fluxurile tehnologice, apoi verificați disponibilitatea și informațiile despre comenzi care vor influența programul.

Date de verificatCe trebuie stabilitDiagnostic A și B
Ordinea proceselorSecvența operațiilor reflectă dependențele reale de fabricațieA necesită frezare înainte de găurire; B necesită invers
DurateFiecare operație activă are o durată pozitivă și credibilăDurata de frezare a lui A nu poate rămâne necompletată atunci când se estimează data finalizării sale
Eligibilitatea centrelor de lucruFiecare etapă de lucru are cel puțin un centru de lucru eligibilEtapa de frezare a lui B necesită un centru de lucru capabil să execute acea operație
Disponibilitatea de lucruTurele și disponibilitatea resurselor corespund timpului de producție executabilM trebuie să fie efectiv disponibil în intervalul alocat lui A
OperatoriModelul de producție reflectă disponibilitatea relevantă a operatorilorNu se poate presupune că A și B rulează independent dacă aceeași persoană este necesară pentru ambele
MaterialeDisponibilitatea materialelor necesare este reprezentată în modelB poate să nu înceapă găurirea chiar dacă D este liber
Priorități și date de livrarePreferința comercială urmărită și data promisă sunt înregistrateDacă B este urgent, această preferință trebuie să fie vizibilă înainte de recalculare

În SkyPlanner, o comandă nu poate fi programată dacă vreo etapă de lucru are zero centre de lucru eligibile. Dacă etapa de frezare a lui B nu are niciun centru de lucru eligibil, recalcularea repetată a programului nu va remedia fluxul tehnologic lipsă. Verificați mai întâi eligibilitatea acelei etape. Verificați și dacă B rămâne Unscheduled, ceea ce este o problemă distinctă față de reordonarea lucrărilor deja programate.

Getting Started creează centre de lucru, produse și fluxuri. Fluxurile leagă pașii de proces ordonați, duratele și fluxul tehnologic pe centrele de lucru. Un produs fabricat pregătit pentru flux are nevoie de durate pozitive și de flux tehnologic pentru operațiile sale active. Validați aceste elemente de bază înainte de a folosi Gantt-ul rezultat pentru a evalua calitatea programării.

Apoi, verificați programarea cu capacitate finită: lucrările alocate au nevoie de capacitate disponibilă. O mașină înregistrată ca disponibilă pe toată durata zilei va da o imagine diferită față de una disponibilă doar într-o anumită tură. Dacă un operator este partajat, programul paralel ilustrativ pentru A și B necesită și această verificare suplimentară a capacității.

Conectați datele comenzilor la modelul de programare

Sistemele ERP și MES existente oferă un context de date pentru comenzi, produse și producție. SkyPlanner se integrează cu orice sistem ERP sau MES prin REST API-ul său deschis. Folosiți calea de integrare pentru a stabili cum vor ajunge datele de producție relevante la motorul de programare și care sistem le întreține.

Pentru A și B, stabiliți de unde provin fluxurile lor tehnologice, duratele, informațiile despre materiale și datele de livrare. Dacă o dată de livrare se schimbă în ERP, dar modelul de planificare o păstrează pe cea anterioară, planificatorul evaluează de fapt o altă problemă de producție. Responsabilitatea pentru date și actualizările consecvente trebuie incluse în evaluarea programării, alături de rezultatul vizual.

Metode de programare și obiectivul pe care îl servesc

Metodele de programare diferă prin cât din problemă iau în considerare. O metodă locală de dispecerizare alege următoarea operație pregătită pe baza unui criteriu. Un model de optimizare matematică ia în considerare constrângeri și un obiectiv specificate. Un program automat de programare a producției leagă calculele de programare de modelul de producție întreținut al fabricii.

AbordarePunct de pornire utilCompromis de analizat
Primul venit, primul servitPăstrează ordinea sosirii ușor de înțelesO operație lungă de la început poate întârzia lucrări urgente ulterioare
Cel mai apropiat termen de livrareAcordă atenție termenelor care se apropieO comandă urgentă poate încă să aștepte după un predecesor sau după o resursă indisponibilă
Cel mai scurt timp de procesareAvansează operațiile scurte care sunt pregătiteLucrările mai lungi pot aștepta chiar și atunci când angajamentul față de client contează
Raportul criticCompară timpul rămas până la termen cu timpul de procesare rămasRaportul necesită estimări actualizate ale lucrărilor rămase
Marja de timp (slack)Compară timpul rămas până la termen minus timpul de procesare rămasO marjă mică semnalează urgența, dar nu elimină conflictele de resurse
Optimizare matematicăExplorează un obiectiv definit, precum makespan-ulRăspunsul depinde de constrângerile și de obiectivul incluse în model
Programarea automată a producțieiRecalculează alocările pe baza fluxurilor tehnologice, a disponibilității și a priorităților menținute la ziDatele de intrare incorecte tot produc o imagine incorectă a producției

Cel mai scurt timp de procesare (SPT) oferă o garanție specifică în modelul de bază cu o singură mașină: atunci când comenzile independente sunt disponibile simultan, timpii de procesare sunt cunoscuți, iar lucrul se desfășoară neîntrerupt, fără timpi de reglaj dependenți de secvență, SPT minimizează timpul mediu de parcurgere și stocul mediu de producție în curs de execuție. Această garanție nu se extinde automat la un job shop cu fluxuri tehnologice care se intersectează. Notele de curs despre programarea job shop ale Universității din Washington explică rezultatul pentru o singură mașină și rolul SPT în reducerea stocului de producție în curs de execuție.

În exemplul cu A și B, alegerea operației scurte de găurire a lui B în primul rând este doar o parte a deciziei. A poate ocupa încă frezarea când B ajunge la ea. Planificatorul trebuie să privească înainte, spre următoarea resursă partajată, nu să judece secvența doar după momentul în care se termină prima operație.

Pentru un volum de lucru stabil și simplu, o abordare transparentă de dispecerizare poate fi utilă. Când fluxurile tehnologice se intersectează și schimbările sunt frecvente, planificatorul are nevoie de o modalitate de a evalua în mod repetat efectele din aval.

Înainte de a compara rezultatele, formulați explicit obiectivul. Pe lângă makespan, printre obiective se numără întârzierea (cât de mult se finalizează comenzile după termenele lor) și timpul de parcurgere (timpul de la lansare până la finalizare, inclusiv așteptarea). Încercați să terminați rapid întregul grup, să protejați data promisă clientului pentru B sau să aflați ce promisiune poate fi susținută de capacitatea disponibilă? Comparați programele în raport cu același obiectiv și aceleași date de producție. Un makespan mai bun, singur, nu poate răspunde la toate cele trei întrebări.

Ce se schimbă atunci când B este urgent sau o mașină este indisponibilă?

Presupunem că B are termen la momentul 2 în același exemplu ipotetic. În programul cu suprapunere de mai sus, B se termină la momentul 3. Pentru a respecta termenul mai devreme, planificatorul îi poate da frezarea înaintea lui A:

ComandăPrima operațieA doua operațieFinalizare
BGăurire D: de la 0 la 1Frezare M: de la 1 la 2Momentul 2
AFrezare M: de la 2 la 4Găurire D: de la 4 la 5Momentul 5

Frezarea așteaptă intenționat de la 0 la 1, pentru a fi disponibilă când B termină găurirea. B respectă termenul ilustrativ, dar întregul set se termină mai târziu. Prin urmare, a ține fiecare mașină ocupată din cel mai devreme moment posibil nu este întotdeauna decizia corectă pentru o comandă urgentă.

Acesta este un compromis de prioritate. Planificatorul alege care angajament contează și verifică efectul asupra lui A. În SkyPlanner, prioritățile prestabilite oferă această direcție programării automate; apoi planificatorul analizează Gantt-ul în raport cu obiectivul de producție și cu resursele disponibile.

Presupunem acum că M devine indisponibil în intervalul de frezare planificat pentru A. Actualizarea disponibilității schimbă opțiunile fezabile atât pentru A, cât și pentru B, chiar dacă niciunul dintre fluxurile tehnologice nu s-a schimbat. Dacă o altă mașină este cu adevărat eligibilă, alegerea mașinii devine relevantă. Dacă nu există niciuna eligibilă, capacitatea de frezare lipsă trebuie rezolvată înainte ca vreuna dintre comenzi să-și poată finaliza fluxul tehnologic.

Resursa limitativă se poate schimba și în funcție de mixul de comenzi. Frezarea limitează suprapunerea din exemplu, dar adăugarea de lucrări cu mult de găurit schimbă încărcarea lui D. Analizați blocajele de producție în contextul volumului de lucru curent. Nu deduceți următorul blocaj doar din mașina cea mai ocupată din programul săptămânii trecute.

Când analizați un program actualizat, urmăriți comanda afectată prin operațiile sale rămase. Pentru B, o finalizare mai devreme a găuririi ajută doar dacă frezarea poate urma. Pentru A, un interval de găurire disponibil ajută doar după încheierea frezării.

Ce să verificați înainte de a renunța la foaia de calcul

O foaie de calcul poate reprezenta ordinea operațiilor, duratele și ocuparea centrelor de lucru pentru A și B. Cu un model mic și stabil, planificatorul poate inspecta direct conflictele. Munca devine mai greu de întreținut atunci când o schimbare presupune reluarea multor operații dependente, a calendarelor de resurse și a priorităților clienților.

Folosiți un scenariu de producție reprezentativ pentru a evalua următorul instrument. Includeți fluxuri tehnologice care se intersectează, ca la A și B, un termen urgent și o schimbare de disponibilitate. Inspectați întâi modelul de date de intrare, apoi programul. O cronologie elegantă nu compensează un flux tehnologic de frezare lipsă sau o tură incorectă.

O secvență utilă de evaluare este:

1. Asociați fiecărei operații predecesorul, durata și centrul de lucru eligibil.

2. Confirmați disponibilitatea materialelor și a resurselor pentru perioada de producție vizată.

3. Confirmați cum sunt programate lucrările noi, separat de recalcularea lucrărilor existente.

4. Stabiliți prioritățile și termenele de livrare care definesc decizia.

5. Verificați în Gantt progresul fiecărei lucrări și încărcarea resurselor comune.

6. Modificați o dată de intrare și analizați consecințele atât pentru comanda urgentă, cât și pentru restul lucrărilor.

Studiul de caz Eskomatic privind prelucrarea mecanică prin contract, publicat pe site, oferă o observație operațională utilă: cozile de lucru gestionate manual erau doar o parte a dificultății. Vizibilitatea limitată asupra materialelor făcea mai greu de anticipat lipsurile. Eskomatic descrie cozi de lucru mai clare în Gantt și o programare automată a încărcării, care sprijină stabilirea termenelor de livrare. În cazul lor, a contat faptul că vedeau împreună lucrările viitoare și condițiile necesare pentru execuția lor.

În propria evaluare, reuniți cele două aspecte: poate echipa să înțeleagă coada de lucru și reprezintă aceasta materialele și capacitatea disponibile în realitate? Pentru A și B, asta înseamnă să puteți explica atât de ce B așteaptă după M, cât și dacă vreuna dintre lucrări poate începe cu materialele și resursele aflate la dispoziție.

Începeți o perioadă de probă SkyPlanner pentru a explora datele demo sau ghidul Getting Started asistat de AI. Programați o demonstrație cu fluxuri tehnologice reprezentative, disponibilitatea centrelor de lucru și o schimbare de prioritate, pentru a vedea cum se aplică procesul de programare în producția dumneavoastră.

Întrebări frecvente

Ce este programarea job shop?

Programarea job shop stabilește când rulează fiecare operație pe o resursă comună, respectând succesiunea operațiilor din fluxul tehnologic al fiecărei lucrări. Provocarea ei specifică este interacțiunea dintre fluxuri tehnologice diferite: în exemplu, B poate termina găurirea și totuși să aștepte frezarea, deoarece A ocupă utilajul. Evaluați încadrarea în timp la nivel de operație, nu doar datele la nivel de comandă.

Care este diferența dintre programarea job shop și programarea cu flux liniar, în care toate lucrările urmează aceeași succesiune de mașini?

Un model cu flux liniar impune lucrărilor aceeași succesiune de mașini. Un model job shop dă fiecărei lucrări propria succesiune specificată. Dacă atât A, cât și B ar necesita frezare urmată de găurire, ar avea un flux tehnologic comun de tip liniar. Fluxurile lor tehnologice opuse din acest articol creează conflictul specific programării job shop la centrul de lucru de frezare.

Ce este programarea flexible job shop?

Programarea flexible job shop permite ca o operație să ruleze pe una dintre mai multe mașini eligibile. Decizia include atât alocarea pe mașină, cât și momentul execuției. Dacă B poate folosi un al doilea centru de lucru de frezare adecvat, apare o opțiune suplimentară de programare. Eligibilitatea trebuie să descrie o mașină care poate efectua efectiv operația, nu pur și simplu una cu timp liber.

Este producția de tip job shop același lucru cu producția la comandă?

Nu. Producția la comandă descrie producția declanșată de comanda unui client, în timp ce job shop descrie munca organizată în jurul unor fluxuri tehnologice diferite de operații și al unor resurse comune. A și B, specifice fiecărui client, ar putea fi lucrări de producție la comandă cu fluxuri tehnologice de tip job shop. O fabrică cu producție la comandă poate folosi și un flux tehnologic comun, deci declanșarea prin comandă nu stabilește topologia de programare.

De ce date are nevoie o programare job shop?

Începeți cu operațiile ordonate, duratele pozitive și centrele de lucru eligibile, apoi adăugați disponibilitatea de lucru, operatorii, materialele, prioritățile și termenele de livrare. În SkyPlanner, o etapă de lucru fără centru de lucru eligibil împiedică programarea lucrării. Dacă B lipsește din Gantt, verificați fluxul tehnologic și plasarea inițială înainte de a evalua rezultatul reprogramării.

Ce metodă de programare job shop ar trebui să folosească un planificator de producție?

Alegeți metoda în funcție de obiectiv și de frecvența schimbărilor. Metodele simple de repartizare pot sprijini decizii stabile; fluxurile tehnologice care interacționează cer atenție la conflictele de resurse din aval. Pentru A și B, programul cu durata totală (makespan) mai scurtă diferă de cel care protejează termenul mai apropiat al lui B. Comparați metodele folosind aceleași date de intrare și aceeași prioritate a clientului.

Poate fi construită o programare job shop în Excel?

Da, o foaie de calcul poate reprezenta fluxurile tehnologice, duratele și ocuparea centrelor de lucru, dar trebuie să verifice succesiunea operațiilor și conflictele de resurse, nu doar suprapunerea datelor comenzilor. Când schimbările afectează în mod repetat operații dependente, evaluați cât de multă reconciliere manuală cere modelul și dacă planificatorul poate explica în mod fiabil alocările actualizate ale resurselor și datele de finalizare.

Programează Reschedule all lucrările din fila Neprogramate?

Nu. Reschedule all recalculează lucrările deja plasate în Gantt; nu plasează lucrările din fila Neprogramate. Pentru A și B, verificați mai întâi plasarea: vedeți ambele lucrări în Gantt? Dacă B rămâne neprogramată, rezolvați mai întâi plasarea ei inițială, înainte de a compara cele două fluxuri tehnologice. Astfel se separă o lucrare lipsă de o problemă de secvențiere, iar planificatorul evaluează munca efectiv inclusă în recalculare.

Jussi Mäntylä

Specialist în planificarea producției, SkyPlanner

Creați un program de producție mai clar cu SkyPlanner

Conectați-vă datele, examinați primul plan și mențineți planificatorii în control asupra fiecărui program care este difuzat.