Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaAlajos Boros Megváltozta több, mint 10 éve
1
DTFSZTIR Diszkrét termelési folyamatok számítógépes tervezése
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Alkalmazott Informatikai Tanszék DTFSZTIR Diszkrét termelési folyamatok számítógépes tervezése és irányítása Dr. Kulcsár Gyula egyetemi adjunktus
2
A vállalat rendszerelméleti modellje
3
Iparvállalatok belső szervezeteinek kölcsönkapcsolatai
A továbbiakban a vállalatok közül csak az iparvállalatokkal, ezen belül is mindenekelőtt a gépipari vállalatokkal foglalkozunk. Az iparvállalatnak olyan problémák kombinációival kell megküzdenie, amelyek igen megnehezítik a hatékony működést. Ilyen problémák: • Az iparvállalati tevékenységre (gyártás és szerelés) a viszonylagosan magas költségek jellemzőek. A nyersanyagok, az energia, a termelőberendezések költségei, valamint a kifizetendő bérköltségek egyre magasabbak. Ily módon az optimális működés csak a rendelkezésre álló erőforrásokkal (emberek + eszközök) történő jobb gazdálkodással valósítható meg. • A gyártó- és szerelő típusú vállalatok általában igen bonyolult végtermékeket (pl. szerszámgépek, műszerek, elektronikus berendezések) állítanak elő. A termékek ezenkívül jelentős változtatásnak vannak kitéve a vevői igények vagy a megváltozott technológiai háttér (új technológia) következtében. • Az iparvállalatnál az egyes szervezetek működésük során törvényszerű érdekellentétben vannak egymással (3.2. ábra). Az értékesítést végző szervezet (É) célja, hogy az eladható termékeket mennél nagyobb számban és változatban készletezze, ezáltal biztosítva a vevők magas kiszolgálási szintjét. A gazdasági ügyeket bonyolító szervezet (G) a költségek (anyag, bér, termelés, beruházás, stb.) alacsony szinten való tartására törekszik. A termelési osztályok (T) a gyártás folyamatosságát szeretnék biztosítani, amelyhez a nyersanyagok, a termelő-berendezések, valamint a munkaerő vonatkozásában elégséges tartalékok szavatolását igénylik. A műszaki fejlesztés (MF) szoros kölcsönhatásban áll az előző három területtel és legfőbb célja a gyártmány és a gyártás műszaki paramétereinek állandó fejlesztése. A valóságos helyzet – a vállalat normális működése esetén – az, hogy a 3.2. ábrán feltüntetett szervezeti egységek a vállalatnál dinamikus egyensúlyban vannak egymással a vállalat által meghatározott célok megvalósítása érdekében. Az a tény, hogy a vállalati célok melyik területet részesítik előnyben, az adott időszakban tükrözi a vállalatnak az őt körülvevő környezettel szemben kinyilvánított stratégiáját. Az iparvállalatok egyik legsúlyosabb problémája a bonyolult gyártás és a nehézkes ügyvitel következtében megjelenő, tömeges méretű szétszórt és nehezen hozzáférhető információ, amelyet műszaki és gyártási dokumentációk; különféle kartotékok; kérdőívek és válaszjelentések; műhelybizonylatok; kivételezési (raktár-) jegyzékek, egyéb, a vállalat profiljától is függő, specifikus dokumentumok tartalmaznak. A felsorolt problémákat egy iparvállalat csak akkor küzdheti le, ha a termelésirányítással kapcsolatos feladatait egy olyan – a rendszerelméleti szempontokat is tükröző – komplex és integrált adatfeldolgozó rendszerrel oldja meg, amely felhasználja az alkalmazott matematika (operáció-kutatás), a szervezés- és vezetéselmélet, a technológiai tudomány, valamint az alkalmazott informatika eredményeit.
4
A termelés egyszerűsített elvi modellje
Az ábra egy általános termelési modellt szemléltet. A folyamat a vevők rendeléseitől és az előző évek értékesítési statisztikáitól egészen a rendelésekre való leszállításig vezet. Az általánosított modell egy tervezési és egy kivitelezési fázisra tagozódik.
5
A termelés egyszerűsített elvi modellje
Az ábra egy általános termelési modellt szemléltet. A folyamat a vevők rendeléseitől és az előző évek értékesítési statisztikáitól egészen a rendelésekre való leszállításig vezet. Az általánosított modell egy tervezési és egy kivitelezési fázisra tagozódik.
6
Tervezés (1 fázisa) 1. Termelési főterv elkészítése:
konkrét megrendelések várható értékesítések prognózis-adatai alapján Tételes végtermék-kiszállítási terv végtermékre, tartalék szerelvényekre, szerviz alkatrészekre, amely „hozza” a tervezett vállalati nyereséget, erőforrások (személyek + eszközök) oldaláról reális fedezettel rendelkezik, tükrözi a vállalat hosszú távú műszaki fejlesztési elképzeléseit.
7
Tervezés (2 fázisa) 2. Szükségletszámítás: Anyagszükséglet tervezése
Termelési főterv bruttó anyagszükséglete Raktárkészlet + indított rendelések eredményeként képződő készlet Anyagszükséglet-terv beszerzési tételekre, belső gyártású (szerelésű) tételekre. Kapacitásszükséglet tervezése erőforrás-adatok (szabadkapacitások) műveleti időadatok Durva-program (középtávú ütemterv)
8
Tervezés (3 fázisa) 3. Termelésprogramozás:
durva program alapján rövid időszakra előre megadja az elvégzendő feladatok részletes listáját homogén munkahely vagy egyedi gép bontásban, ez alapján elkészíthetők a részletes gyártási dokumentációk (pl.: művelettervek, műveleti utasítások, szerszámjegyzékek, anyagkivételezési és mozgatási utasítások, alaktrészprogramok, robotprogramok stb.)
9
Kivitelezés (végrehajtás-irányítás)
A tevékenységek a tárgyidőszakban előretartással, Időben, vagy késéssel történnek. Beszerzés: beszerzési rendelés kiadása, nyomonkövetés, beérkeztetés a raktárba. Gyártás (szerelés): gyártási rendelés kiadása, nyomonkövetés, visszajelentések aktualizálása, újraütemezés,…, készre jelentés, kiszállítás.
11
Termeléstervezés és -irányítás
Tágabb értelemben a termelésirányítás a termeléssel kapcsolatos döntési feladatok megfogalmazásával és megoldásával foglalkozik, figyelembe véve a termelés főbb tényezőit és ellenőrizve a döntések végrehajtását.
12
Termeléstervezés és -irányítás
Szűkebb értelemben termelésirányításon termelési feladatok meghatározását és végrehajtásuk megszervezését értjük. A szűkebb értelemben vett termelésirányítás feladatainak csoportosításakor az időhorizont nagysága jelenti a rendező elvet, azaz felülről-lefelé haladva egyre kisebb időhorizontú tevékenységek tervezéséről és/vagy irányításáról van szó.
13
Időhorizontok Átlagos bonyolultságú termékek kis- és közép-sorozatgyártására berendezkedett gépipari vállalat esetében a szokásos időhorizontok: termeléstervezés: 1-3 hónap, termelésütemezés: nap, termelésprogramozás: 8-24 óra. Az időhorizontok relatív nagysága a termékek bonyolultságától és egyéb tulajdonságaitól, a gyártandó darabszámtól és a gyártás rendszerétől függ.
14
A termeléshez kapcsológó folyamatok
Vállalat = rendszer Vállalati működés = folyamat anyagi folyamatok fizikai, kémiai, biológiai, stb. ateriális jellegű állapotváltozások irányított sorozatai mennek végbe vezetési-irányítási-ellenőrzési folyamatok fejlesztési folyamatok üzemszerű termeléshez szükséges folyamatok Rendszerelméleti szempontból a vállalati működés a vállalaton, mint bonyolult rendszeren belül lejátszódó folyamatokon keresztül valósul meg. E folyamatok, amelyek lényegük szerint a rendszerben lejátszódó állapotváltozások időbeli sorozatai, alapvetően két fő csoportra oszthatók: anyagi folyamatok, amelyekben fizikai, kémiai, biológiai, stb. materiális jellegű állapotváltozások irányított sorozatai mennek végbe; vezetési-irányítási-ellenőrzési folyamatok, amelyek az anyagi folyamatok közvetítése útján további két fő tevékenységi kört fognak át, nevezetesen: a fejlesztést, mint önálló szellemi és anyagi folyamatok szintézisét; az üzemszerű termeléshez, az annak lebonyolításához szükséges funkciókhoz kapcsolódó folyamatokat.
15
A nem anyagi folyamatok
tovább bonthatók: a célok kitűzéséhez, a végrehajtás megszervezéséhez és ellenőrzéséhez, valamint magához a végrehajtáshoz (kivitelezéshez, realizáláshoz) kapcsolódó tevékenység-csoportokra.
16
A feladatok megoldásának szakaszai
Tervezés Előkészítés Végrehajtás Ellenőrzés A szakaszok rögzített feladatra értelmezhetők, különböző feladatok különböző stádiumában lehetnek. A szakaszok nem függetlenek egymástól. Ismeretes, hogy a bonyolult rendszerként tekintett vállalat egészének működését –vagyis a vállalaton belül végbemenő főbb tevékenységi folyamatokat – célszerű négy szakaszra felbontani, amelyek a következők: tervezés, előkészítés, végrehajtás, ellenőrzés. Fontos hangsúlyozni, hogy ezek a szakaszok egy-egy tetszőleges, de választás után rögzített feladatra értelmezhetők, ezért amikor egyes feladatok tervezése vagy előkészítése folyik, akkor más feladatok a végrehajtás vagy az ellenőrzés (számbavétel) stádiumában vannak. Ugyanakkor a felsorolt szakaszok nem függetlenek egymástól: a tervezési és előkészítési munkákat befolyásolják azok az új feltételek, körülmények is, amelyek az éppen folyamatban lévő végrehajtás vagy a már lezajlott folyamatok ellenőrzése (számbavétele) során alakulnak ki. A megváltozott feltételek a tervezési és előkészítési munkát jelentős mértékben módosíthatják.
17
A vállalat működésének egyszerűsített szabályozáselméleti modellje
A visszacsatolás elvét – amely szerint a tervezett értéktől való eltérés képezi a folyamat működésének javítását célzó, következő beavatkozás alapját – a termelővállalatok irányítása nem nélkülözheti. A szűkebb (belső) szabályozási kör magában foglalja a termelés ütemezését és a végrehajtás közvetlen számbavételét: gyakran ezt tekintik (szűkebb értelemben) termelésirányításnak. A tágabb értelemben vett, integrált termelésirányítási rendszernek ez a központi magva a mindenkori „élő”, operatív feladatokkal foglalkozik. A szakirodalomban elterjedt egyik felfogás szerint a termelésirányítás a 2.2. ábrán vázolt szabályozási körben az előkészítés- és végrehajtáselemekből álló belső szabályozási kört foglalja magába, tehát a termelés tervezését és az erre alapozott vállalati döntések meghozatalát nem tekinti termelésirányítási feladatnak.
18
Szűkebb értelmezés Visszacsatolás elve:
a tervezett értéktől (állapottól) való eltérés képezi a folyamat működésének javítását célzó, következő beavatkozás alapját A „termelésirányítás” legszűkebb értelemben megfelel a belső szabályozó körnek. A tevékenységek számbavételét, elszámolását és kiértékelését egy, a „múltra irányuló” rendszer végzi és ezzel a 2.2. ábrán jelzett ellenőrzési szakasz feladatait látja el. Az ellenőrzési szakasz szorosan kapcsolódik a termelésirányítási szakasz azon befejező részéhez, amely a tervszerűséget és a készültségi fokot ellenőrzi. Természetesen a két csatlakozó szakasz tartalma szignifikánsan eltér: míg a tervszerűséget az utalások és a tényleges felhasználások azonossága, hasonlósága igazolja, addig az ellenőrzési szakaszban a felhasználások és az eltérések számszerűsítése, csoportosítása és elemzése megy végbe azzal a céllal, hogy a következő időszak döntéselőkészítését segítse. Maga a döntéselőkészítő rendszer egyaránt támaszkodik a múlt elemzéséből visszacsatolt adatokra és a korszerű matematikai módszerekkel kidolgozott előrejelzésekre. A fontosabb döntések meghozatalában az emberi interaktivitás ma még nem nélkülözhető.
19
Szűkebb értelmezés szerinti feladatok
felméri és kijelzi a hiányzó gyártmányszerkezeti, konstrukciós és technológiai alapadatokat; kiszámítja és határidőzi az erőforrás-szükségleteket a termelési feladatok jellegének megfelelő időperiódusok szerint (anyag, gyártóberendezés); termelési ütemtervet (programot) készít „helyben gyártandó” és „beszerzendő” komponensek szerinti bontásban; kooperációs előrejelzést ad a túlterhelés elkerülésére és jelzi a nem megfelelően terhelt munkahelyeket; a várható felhasználás időpontjára anyag- és előre számfejtett munkautalványt állít ki; ellenőrzi a végrehajtás tervszerűségét, készültségi fokát.
20
A termelésirányítás egyszerűsített szabályozáselméleti modellje
21
A piacgazdaság alapvető követelményei
a vevők (megrendelők) igényeinek megfelelő szállítókészséget biztosítsuk, alacsony készletszintekkel dolgozzunk (nyersanyagra, félkész- és késztermékre, pótalkatrészre, stb. egyaránt kiterjedően) és a termelő-berendezések és más homogén munkahelyek kapacitásának megfelelő mértékű kihasználásával valósítsuk meg a termelést. OPTIMUMPROBLÉMA!
22
A Kybernos fejlesztőinek következtetései
A három fő termelési jellemző bármelyike a másik kettő rovására könnyen javítható, ezért a három jellemzőt csak együtt lehet kezelni; Az optimumprobléma logikailag a teljes termelés minden részletét átfogja. Ez azt is jelenti, hogy a termelésirányítás optimálásához a három alapvető termelési jellemző vizsgálata nemcsak szükséges, hanem egyben elégséges feltétel is. A megoldási módszer logikailag a feldolgozóipar összes vállalatára kiterjeszthető.
23
A termelési háromszög modell
(Valójában a rendelés szó mögött tetszőleges véges - sok gyártási és beszerzési rendelés összes lényeges információja áll jól strukturált és aktualizált formában, a szállítókészség, készletszint és a kapacitások kihasználása pedig a mindenkori összes rendelésre vetítve, szintén strukturáltan és aktualizáltan értelmezett).
24
Rendelés külső rendelések (a vevői rendelések), amelyek függetlenek a belső irányítástól és így a beérkezésük révén létrejövő gyártmányszükséglet is független szükséglet, továbbá belső rendelések (a gyártási és beszerzési rendelések), amelyeket a belső irányítás bocsát ki a külső rendelés tárgyát képező gyártmány szerkezeti, ill. technológiai lebontása alapján és így ezek a gyártóegységek előtt szerelvény-, alkatrész-, ill. anyagszükségleteket, vagyis függő-szükségleteket okoznak.
25
A termelési háromszög modell
(Valójában a rendelés szó mögött tetszőleges véges - sok gyártási és beszerzési rendelés összes lényeges információja áll jól strukturált és aktualizált formában, a szállítókészség, készletszint és a kapacitások kihasználása pedig a mindenkori összes rendelésre vetítve, szintén strukturáltan és aktualizáltan értelmezett).
26
A termelésirányítás alapfeladata
Olymódon határozza meg a gyártási és beszerzési rendeléseket az aktuális termelési környezet figyelembevételével, hogy az adott - alkatrészgyártó és szerelő típusú - iparvállalat a szállítókészség, a készletszint és a kapacitások kihasználása szemszögéből az "optimális munkapont" környezetében működjön.
27
Kapacitáskihasználás
A gyártóhelyek, vagyis azon összes üzemek, csoportok, munkahelyek és mozgóegységek időkapacitásának százalékos lekötöttségét jelenti egy adott időszakban, amelyek a munkaadagolás szempontjából önálló egységet képeznek.
28
Szállítókészség Annak az időtartamnak a reciprok értéke (1/nap), amely egy adott rendelés elfogadásának visszaigazolásától a kiszállítás szerződésben rögzített időpontjáig eltelik.
29
Készletszint A gyártási tételek, vagyis a raktárakban, valamint a gyártó és szerelő munkahelyeken lévő összes termék, részegység, alkatrész, nyersdarab és egyéb szükséges anyag mennyiségét jelenti egy adott időpontban. Készletnorma: a termeléshez szükséges egyes anyagi eszközök legkisebb, legnagyobb vagy általános mennyiségének előírása (pl. anyagkészlet, gyártóeszközkészlet, stb.) [Storage standard]. Készlet-időnorma: olyan anyagkészletnorma, amely egy bizonyos anyagból a termelés folyamatosságának biztosítására szükséges anyagkészletet a napi anyagfelhasználás többszöröseként, napokban fejezi ki. [Standard stock]. Törzskészlet (minimális készlet, "vastartalék"): az a készletnagyság, amely alá a készlet a termelés folyamatos ellátásának veszélyeztetése nélkül nem eshet. Ez a készlet hivatott pótolni az utánpótlásban bekövetkezett váratlan fennakadás által okozott kiesést. Készlet-időnormában írják elő. [Minimal stock, base stock]. Folyókészlet: egy adott időpontban meglévő, vagy tervezett készlet és a törzskészlet különbsége abban az esetben, ha a készlet nagyobb a törzskészletnél. A folyókészlet készlet-időnormája a napokban kifejezett utánpótlási idővel azonos, tehát a folyókészlet az utánpótlás beérkezése pillanatában a legnagyobb, majd napról-napra csökken és a következő szállítás időpontja előtt éri el a zérus szintet (törzskészlet). [Current stock].
30
A gyártási helyek általános leírása
A gyártási tétel rendelését az előkészülés (teljesítés) időpontjával kell megadni (ütemezni). Ez azt jelenti, hogy az adott gyártóhelyen a gyártást előf eltételező szükséglet a gyártás átfutási idejével korábban jelenik meg. A rendelés-kibocsátást tehát ez elé kell ütemezni. A rendelés így termelésirányítási döntés következtében jön létre (mennyiség, idő); a szükséglet a rendelés teljesítésének tárgyi feltétele.
31
Raktárakkal kapcsolatos fogalmak
32
Termelési egyenletek Készlet-egyenlet
Az egyenlet a készletek jövőbeni alakulását fejezi ki. kni az n.-edik cikkszámú komponensből felhalmozott készlet a t időpontban kno a mindenkori nyitókészlet Tau a futó időváltozó rn(tau) a pillanatnyi készlet a n.-edik cikszámú komponensből sjn(tau) az rj gyártási rendeléshez tartozó pillanatnyi szükséglet mennyisége az n.-edik cikkszámú komponensből A képlet azt fejezi ki, hogy a mindenkori nyitó készlethez hozzáadjuk a várható beérkezéseket (gyártási és beszerzési rendeléseket) és levonjuk a várható felhasználásokat (szükségleteket). A végtermékre vonatkozó sn szükségleteket a vevők adják meg, A további alkatrész- és anyagszükségletek azonban már a termelésirányítás által kezdeményezett gyártási rendelések függvényei. A gyártás (komponens) szükségletek ezért az sjn azonosítót kapják, ahol a j index a komponensekből összeépített gyártmányra utal.
33
Termelési egyenletek Komponens-szükséglet egyenlet
Egy cikkszámra vonatkozó szükségletek egyaránt származhatnak a vevőtől és belső gyártási rendelésekből. A közvetlenül vevői igényből származó szükségletek e független szükségletek. A belső gyártási rendelésekből származó szükségletek amelyeket a szükségletszámító algoritmus határoz meg, a függő szükségletek.. A szükségletszámító alapösszefüggés a kompomems-szükséglet egyenlet. Ahol rj a j.-edik cikkszámú gyártási rendelés mennyisége sjn az rj gyártási rendeléshez tartozó szükséglet mennyisége az n.-edik cikkszámú komponensből DAR a darabjegyzék-lebontó operátor Az egyenletből egyrészt az olvasható ki, hogy az rj gyártási rendelés teljesítéséhez sjn kompomenes-szükséglet tartozik, másrészt másrészt a rendelés delta ifővel később fog elkészülni, mint ahogyan a szükségleteket felhasználják, vagyis a szükségletnek delta idővel hamarabb rendelkezésre kell állnia, mint t+delta elkészülési időpont. S művelet eredménye egy szükséglet-mátrix, amely a gyártáshoz szükséges komponenseket és azok mennyiségét reprezentálja. Egy rendeléshez (j) több szükségleti tétel is tartozhat (n), ezért beszélhetünk szükséglet mátrixról. A DAR operátor feladata az, hogy a gyártáshoz szükséges komponenesek mennyiségét a memóriában tárolt darabjegyzék alapján meghatározzza. A gyártáshoz azonban a munkahelyeken végrehajtandó műveletekre is szükség van, amelyet a delta gyártási idővel veszünk figyelembe. Ehhez két további egyenlet szükséges.
34
Termelési egyenletek Kapacitás-szükséglet egyenlet
A gyártási műveletek elvégzéséhez homogén kapacitásoknak kell rendelkezésre állniuk. A kapacitás-szükségleteket a MUV operator segítségével határozzuk meg. Ahol gjm az rj gyártási rendeléshez az m-edik gyártási kapacitásból szükséges mennyiséget jelenti. A kapacitások felhasználása a gyártással egyidejű, szinkronizált. Az egyenlet eredménye egy kapacitás szükséglet mártix, amely megmutatja, hogy mely kapacitásból mennyire van szükség a gyártás elvégzéséhez. Egy adott rendeléshez több művelet is tartozhat. Ezek végrehajtási sorrendje általában kötött (precedencia), de előfordulhat sorrendi közömbösség is (invariancia) vagy alternatív sorrendiség is (preferencia).
35
Termelési egyenletek Gyártás-átfutási idő egyenlet
A gyártási rendelés átfutási idejét (delta) a szabad kapacitások határozott integráljával lehet meghatározni. Vesszük az első művelet kapacitásigényét és a műveletet végző munkahely (gyártóberendezés, ember) szabad kapacitását. Addig haladunk előre az időtengelyen, amíg az igénybe vett szabad kapacitás egyenlő nem lesz a szükségessel. Innen indulhat a második művelet, és így tovább. Az eljárás alapja a fenti integrálegyenlet. Ahol Cm az m-edik kapacitásból rendelkezésre álló összes mennyiség (kapacitáskorlát). Szum i-re gmi(tau) az m-edik gyártási kapacitás futó terheléseinek összessége az ugyanezen időintervallumban a kapacitást terhelő egyéb rendelésekre (i nem egyenlő j-vel) Deltajm a j-edik cikkszámú gyártási rendeléshez tartozó m-edik gyártási kapacitás igénybevételének befejezési időpontja. Az összefüggés értelmezése: A (delta) gyártási átfutási idő meghatározásához először az eddigi terhelések összegzésével meg kell határoznunk a szabad kapacitást. Ezt fejezi ki a szögletes zárójelben lévő integrandus. Szabad kapacitás ismeretében műveletenként meghatározzuk az átfutási időt, végül ezeket összeadva kapjuk a teljes gyártási sorozat átfutási idejét. A keresett változó minden műveletnél az integrál felső határát kijelölő deltajm.
36
Termelési egyenletek Szállítási határidő egyenlet
A szállítókészség fogalmának ismeretében a szállítási határidők meghatározása az előző egyenletek megoldásaira építhető. Nyilvánvalóan csak akkor lehet kiszállítani valamilyen terméket, ha az már beérkezett a késztermék-raktárba. A megoldást tömören a fenti operátorral érzékeltetjük: Ahol: tn jelenti az n-edik cikkszámra vonatkozó sn független szükséglet (vevőigény) kielégítésének idejét. rn az n-edik cikkszámú gyártási rendelés, ri az n-edik cikkszámú tétel hierarchikusan alárendelt komponens-rendelései Több szintű gyártmány esetében az összefüggés a következőt jelenti: Először is meg kell határozni a hiányzó anyag, illetve komponens-szükségleteket. Ennek kielégítésére megfelelő rendeléseket kell feladni. Az anyagrendeklések beérkezési ideje fogja meghatározni a hiányzó alkatrészek gyártásának indítását. Az alkatrészek gyártásának befejezése határozza meg a nagyobb egységek, majd szerelvények esetében a gyártás, illetve szerelés indításának idejét. Végül a a készgyártmány (végtermék) gyártási sorozatának befejezési ideje (raktárra vétele) fogja kielégíteni azt a készlet-egyenletet, amely a termék szállítási határidejét adja. A HAT operátor ezt az algoritmust szimbolizálja.
37
Megoldásjavító szabályzókör
38
A Kybernos egyszerűsített modellje
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.