Genetic algorithms

Document Sample
Genetic algorithms Powered By Docstoc
					       Optimalizace řezání profilů pomocí genetického algoritmu

Popis problému
     Program Konstrukční kusovník, jehož optimalizační část je v tomto článku popisována, byl
vytvořen firmou VÍTKOVICE CAD/CAM Systémy, spol. s r.o. pro podporu práce konstruktéra.
Umožňuje mu vypsat seznam materiálu potřebného k výrobě vyvíjeného výrobku a zároveň ho uložit
do podnikového informačního systému (Integrovaný Informační Systém - IIS Oracle Aplikace), tj.
založit všechny položky a uložit strukturu. Kusovník vzniká principiálně v konstrukci a pak je využíván
například technologickými útvary, které do kusovníku doplňují další specifické údaje.
     Kusovník může být strukturovaný, tj. díl, který je použit jako položka, může mít svůj vlastní
kusovník. Kusovník je uložen v době, kdy se vytváří, v lokální databází každé divize (POOLu). Po
ukončení práce na kusovníku může konstruktér kusovník přenést do IIS a tím ho uvolnit pro navazující
útvary. Současně se kusovník také vymaže z POOLu. Pro dodatečné opravy lze kusovník znovu
naimportovat z IIS zpět do POOLu.
     Pro lepší orientaci jsou jednotlivé kusovníky organizované do projektu, který představuje určitý
finální výrobek nebo zakázku. Kusovníky jsou v rámci projektu identifikované pomoci čísla výkresu.
Pomocí projektu a čísla výkresu lze proto najít každý kusovník v lokální databázi. V IIS se lze
orientovat buď podle atributu položky nebo čísla položky a popisu. Systém dokáže spočítat nejen
celkovou hmotnost výrobku, ale také hmotnost některých plechů, trubek týčí a profilu.
     Konstrukce zpravidla obsahují tyče, trubky a válcované profily různých délek. Délky těchto dílů
jsou přizpůsobené dané konstrukci a neodpovídají délkám, ve kterých se daný profil dodává na trh.
Konkrétní délky dílů je nutno z původních délek nařezat. Konstrukční kusovník dokáže vygenerovat
seznam materiálu za celou konstrukci a toto lze použít jako podklad k objednání materiálu. Výstupní
seznam materiálů by však byl neuspořádaný a kdyby se měly tyče řezat dle tohoto seznamu, vznikal
by velký odpad. Protože se tyče dodávají od výrobců jako polotovar v několika délkách, je složité určit,
z jaké tyče se mají kousky nařezat. Z těchto důvodů kusovník obsahuje dále popsanou optimalizaci
posloupnosti řezání materiálu. Jejím použitím lze snížit náklady na výrobu určitého výrobku. Kusovník
umožňuje navíc sloučit několik projektů a tím ještě více snížit náklady na výrobu.

Teoretická východiska
    Optimalizace řezání je řešena jednou z metod teorie umělé inteligence, pomocí genetických
algoritmů. Genetické algoritmy patří do třídy evolučních algoritmů, které mimo ně zahrnují také
evoluční programování, evoluční strategie a genetické programování. Jsou to vyhledávací algoritmy
založené na mechanismu přirozeného výběru a principech genetiky. Jejich velkou výhodou je
poměrná jednoduchost. Ideovým vzorem pro genetické algoritmy byly principy vývoje, které se
uplatňují v přírodě. Zde existují populace jednotlivých živočišných druhů, složených z jedinců různých
vlastností. Tyto vlastnosti jsou prvotně zakódovány v jejich genech, které tvoří větší celky,
chromozómy. Při křížení vznikají noví jedinci, kteří mají zpravidla náhodně část genů od jednoho
rodiče a část genů od rodiče druhého. Přitom ve zvlášť vyjímečném případě může dojít k náhodné
změně některého genu v chromozómu, tzv. mutaci, která může být pro další vývoj druhu příznivá nebo
ne.
    Podle svých vlastností má každý z potomků větší nebo menší schopnost obstát v přirozeném
výběru a vytvořit další generaci. Proces výběru se stále opakuje a v jeho průběhu se stále zlepšují
genetické vlastnosti daného druhu. Tak probíhala celá evoluce v přírodě.
    V teorii umělé inteligence je genetický algoritmus proces postupného vylepšování populace
opakovanou aplikací genetických operátorů, který vede k evoluci takových jedinců, kteří lépe vyhovují
stanoveným podmínkám než jedinci, ze kterých vznikli. Proces konverguje k situaci, kdy je populace
tvořena jen těmi nejlepšími jedinci. Hlavním principem je kopírování a vyměňování řetězců -
chromozómů. Chromozóm má pevnou délku, jednotlivé pozice tvoří geny. Geny nabývají často
hodnotu 0 nebo 1, ale obecně mohou mít libovolnou hodnotu. Množina chromozómů tvoří populaci.
Každý chromozóm v populaci má definovánu hodnotící funkci, nazývanou fitness funkce, která
charakterizuje vhodnost chromozómu. V praxi se genetické systémy využívají k vyhledávání optimální
topologie, v technologii a výrobě a v průmyslové automatizaci a jako alternativní metody učení
neuronových sítí.
    Genetický algoritmus definuje operátory křížení, mutaci a reprodukci.
    Operátor křížení znamená vytváření nových jedinců podle následujícího pravidla: Z populace
vybereme náhodné páry a náhodně zvolíme pozici k. Do prvního potomka zkopírujeme geny 1 až k
prvního rodiče a geny k + 1 až n druhého rodiče, kde n je počet genů, a do druhého potomka
kopírujeme geny opačně. Při aplikaci operátoru mutace vybereme s malou pravděpodobností náhodný
gen v náhodném chromozómu a změníme jeho hodnotu z 0 na 1 nebo naopak.
     Operátor reprodukce kopíruje chromozómy do nové populace. Chromozómy s vyšší fitness
hodnotou jsou do nové populace kopírovány s vyšší pravděpodobností. Pravděpodobnost kopírování
je dána vzorcem pi = fi /  f, kde
          pi = pravděpodobnost reprodukce i-tého chromozómu
          fi = hodnota fitness funkce i-tého chromozómu
           f = součet všech hodnot fitness funkce v populaci.
     Někdy se používá tzv. elitářský mechanismus: Určité procento nejlepších jedinců je do nové
generace reprodukováno vždy.
     Genetické algoritmy se často používají k řešení problémů optimalizace. Protože prostor všech
možných parametrů je pro prohledávání příliš velký, užívá se stochastická metoda pro nalezení
přibližného řešení. Gradientní metody reprezentují hledání lokálního minima nebo maxima pomocí
jednoho zpřesňujícího se řešení. Genetické algoritmy představují jiný přístup, který používá populaci
prozatimních řešení, jež paralelně procházejí parametrický prostor a navzájem se ovlivňují a modifikují
pomocí genetických operátorů. Tím se dosahuje toho, že populace jedinců najde správné řešení
rychleji, než kdyby se prohledával prostor izolovaně.
     Základní rozdíly mezi genetickým algoritmem a klasickou optimalizací formuloval D. E. Goldberg:
     - genetický algoritmus pracuje s řetězcem zakódovaných hodnot parametrů, ne s parametry
       samotnými
     - genetický algoritmus prohledává prostor parametrů vycházejíc z populace počátečních bodů, ne
       z jednoho bodu
     - genetický algoritmus využívá pouze informace poskytované účelovou funkcí, ne derivace nebo
       další doplňující znalosti
     - genetický algoritmus používá pravděpodobnostní mechanismus hledání.

    Genetické algoritmy se dají s úspěchem použít všude tam, kde je nutno intuitivně nalézt nejlepší
z mnoha alternativ, přičemž neexistuje algoritmus nalezení takové alternativy. Musí však existovat
algoritmus hodnocení každé alternativy tak, aby se nejlepší z nich dala nalézt v průběhu evolučního
procesu. Optimalizace řezání profilů, která je součástí kusovníku, vychází z výše uvedených obecných
principů.

Optimalizace řezání profilů
     Popisovaná část systému Konstrukčního kusovníku provádí optimalizaci dělení tyčového materiálu
tak, aby se ušetřilo co nejvíce výchozího polotovaru a snížily náklady na výrobu. Pro nalezení
optimálního řešení využívá výše popsanou metodu evoluce pomocí genetických algoritmů.
     Cílem optimalizace je minimalizovat počet použitých tyčí a dále maximalizovat zbytek z poslední
tyče. Protože tyče ze skladu nemají zpravidla stejnou cenu jako tyče objednané, přepočítává se jejich
hodnota zadaným koeficientem (skladovým faktorem), který určí uživatel. Použití stanovených
(zpravidla krátkých) tyčí můžeme dokonce zvýhodnit, pokud zadáme skladový faktor záporný (to
vlastně znamená odečtení nákladů na další skladování).
     Vývoj systému probíhal v etapách s cílem dosáhnout pokud možno co nejlepší odezvy.
S přihlédnutím ke specifickým podmínkám dané úlohy a požadavkům na rychlou odezvu bylo nutno
přistoupit k některým modifikacím standardního genetického algoritmu.
     V první verzi bylo genem číslo definující pořadí určitého kousku, který se měl vytvořit v postupu
dělení, chromozómem předpis postupu dělení pro všechny kousky a populací různé varianty řezání
charakterizované jednotlivými předpisy. Takto definovaný genetický algoritmus vedl sice k žádoucím
výsledkům, avšak až po příliš dlouhém výpočtu.
     V současnosti je genem předpis pro dělení jednoho profilu a chromozomem seznam předpisů pro
nařezání všech požadovaných kousků. Populace opět představuje různé varianty řezání. (obr. 1). Na
tuto populaci se aplikují genetické operátory: Operátor mutace je definován standardně jako náhodná
změna předpisu, rovněž reprodukce je prováděna tak, že se do další generace vybírají chromozómy
s nejlepší fitness funkcí. Operace křížení není definována a je nahrazena specifickým operátorem
expanze, při jehož použití rozšiřují nejlepší předpisy svůj počet na úkor horších. Tím byl výpočet
výrazně zrychlen, pro zkoumané úlohy proti předchozí verzi asi patnáctinásobně. Dalšího průměrně
čtyřnásobného zrychlení výpočtu bylo dosaženo zohledněním násobnosti kousků stejné délky v rámci
profilu.
     Kritérium optimalizace se pro každou variantu vypočítá takto:
     - podle požadavku uživatele se nalezne nejkratší / nejdelší tyč z objednávaných tyčí, pokud jsou
     všechny tyče ze skladu, nalezne se nejkratší / nejdelší tyč ze skladu
     - nalezená tyč se přesune na poslední místo v rozpisu řezání
     - sečtou se všechny délky použitých tyčí, jak objednávaných, tak ze skladu, násobených jejich
     počtem, v případě tyčí ze skladu se každá tyč násobí skladovým faktorem a zaokrouhlí se na celé
     číslo.
    - odečte se zbytek z poslední objednané tyče a pokud neexistuje, z poslední tyče ze skladu.
    Ze záporné hodnoty takto vypočtených nákladů se odvodí fitness funkce.
    Optimalizaci je možno provést buď v programu napsaném v C++ pomocí volání funkcí příslušné
knihovny (seqLib.lib ve Windows NT, seqLib.a v UNIXu) nebo použitím volitelné funkce kusovníku. Při
použití knihovny se vytvoří pro každou úlohu optimalizace instance třídy realizující genetický
algoritmus (seqOpt) a zadají se parametry určující funkci algoritmu. Program může pracovat s více
instancemi této třídy zároveň. Pro každou instanci se zadají parametry jednotlivých tyčí a kousků,
které se z nich mají nařezat. U tyčí se zadává délka, počet tyčí, které jsou k dispozici na skladě a
koeficient snížení nákladů při využití skladových zásob. U každého kousku se zadá délka a počet.
Systém navrhne optimální pořadí, v jakém mají být tyče řezány.




                 Obr. 1: Příklad zadaných údajů a náhodně vytvořené populace

    Algoritmus probíhá v jednotlivých krocích a po každém kroku vrací objednaný materiál, materiál
použitý ze skladu a hodnotu výše popsaného kritéria. Cílem optimalizačního algoritmu je toto kritérium
minimalizovat. Uživatel může výpočet ukončit v okamžiku, kdy výsledky optimalizace odpovídají jeho
požadavkům.
    Činnost systému ovlivňuje uživatel podle potřeby zadáním volitelných parametrů takto:
    - větší velikost populace zvyšuje pravděpodobnost nalezení nejlepšího výsledku, ale zpomaluje
    odezvu
    - větší počet mutací zvyšuje nestabilitu systému ale může zrychlit nalezení optimálního výsledku
     - větší počet expanzí úspěšných předpisů řezání zvyšuje stabilitu systému ale může zpomalit
     nalezení optimálního výsledku
     Popsaná knihovna realizující genetický algoritmus byla také integrována do Konstrukčního
kusovníku. Výchozí data - informace o požadovaných délkách jednotlivých profilů (položky) – jsou
v základní verzi zpracovávána přímo v prostředí tohoto systému. Pokud má uživatel data ve svém
specifickém tvaru, lze vytvořit rozhraní pro import těchto dat do kusovníku. Z několika takových
souborů lze opět vytvořit strukturovaný kusovník.
     Dále jsou v systému k dispozici informace o výchozích polotovarech - typy a rozměry profilů,
dodávané délky. Pro každý jednotlivý profil mohou být definovány základní délky, ve kterých jsou
profily dodávány. Podobný tvar informací je udržován v tzv. skladu zbytků, kam mohou být předávány
údaje o zbytcích tyčí, ze kterých už byly odděleny požadované délky. V tomto případě se uchovává
v systému konkrétní délka každé tyče.
     Uživatel může určit, pro které položky se má optimalizace provádět. Výpočet probíhá jako
iterativní postup, kdy se řešení přibližuje optimálnímu výsledku - minimálnímu odpadu. Je možno
zvolit, zda se do řešení jako výchozí materiál zahrnou pouze polotovary (kde není omezen počet
definovaných délek tyčí), nebo se pracuje pouze se skladem zbytků a nebo s oběmi datovými
základnami. O stavu iterativního průběhu výpočtu je uživatel informován v dialogovém okně.
Výsledkem optimalizace je seznam použitých tyčí (výchozí materiál) a ke každé tyči seznam
jednotlivých položek s jejich délkami a délka zbytku po rozřezání.
     Pokud bude technolog chtít sloučit několik kusovníků pro přípravu výroby, zadá vrcholovou
položku těchto kusovníků. V editačním řádku si potom může upravit i počet jednotlivých kusovníku,
pokud by se jeden výrobek vyráběl ve více kusech.

Optimalizace řezání plošného materiálu
     V současné době se programuje model optimalizace dělení plošného materiálu tak, aby se ušetřilo
co nejvíce výchozího polotovaru a snížily náklady na výrobu. Využívají se obdobné teoretické
poznatky jako v předchozím modelu, navíc je zpracována oblast geometrie rovinných objektů a
v této souvislosti modifikovány některé částí původního modelu.
     Obdobně jako v předchozím případě zajišťuje komunikaci uživatele se systémem optimalizace
dělení plošného materiálu třída plOpt. Pro každou instanci se zadají rozměry zdrojových tabulí,
souřadnice již vyřezaných částí a souřadnice součástí, které se mají vyřezat a provede se inicializace
algoritmu pro danou instanci. Výsledkem je optimální umístění jednotlivých součástí do zadaných
ploch. V této verzi programu se zdrojová plocha předpokládá ve tvaru obdélníku, výřezy jsou konvexní
mnohoúhelníky, součásti jsou sjednocení konvexních mnohoúhelníků. Plánováno je rozšíření
o kruhové úseče.

Závěr
    V současné době je k dispozici rutinní verze modelu optimalizace tyčového materiálu jednak ve
formě knihovny v jazyku C++ na systémech Windows NT a UNIX, jednak jako volitelná součást
kusovníku. Byla otestována na rozsáhlém vzorku provozních dat s dobrými výsledky pokud se týká
úspory materiálu i odezvy systému.
    Systém pro optimalizaci řezání profilů integrovaný v kusovníku prokázal při testování na
provozních datech následující užitečné vlastnosti:
    – efektivní rozdělení materiálu ve tvaru tyčí na potřebné délky
    – minimalizace odpadu
    – možnost kombinace různých délek polotovaru
    – ovládání postupu optimalizace uživatelem
    – možnost využití zbytků materiálu po dělení
    – možnost integrace s Informačním systémem podniku jak na straně vstupů, tak na straně výstupů
    – široké možnosti úprav dle požadavků uživatelů (různé formáty vstupů a výstupů, strukturovaná
    data)
    – přehledný výstup ve formě seznamu použitých tyčí (výchozí materiál), seznamu jednotlivých
    položek s jejich délkami a délky zbytku po rozřezání ke každé tyči.

    Systém optimalizace plošného materiálu je ve vývoji, probíhá programování softwarových modulů
a provádějí se první zkoušky s cílem nalézt algoritmus s co nejrychlejší odezvou.
Příklad
    Výsledky optimalizace dokumentuje následující řešení praktické úlohy:
    Měli jsme nařezat tyče dle tabulky (délky jsou uvedeny v mm) :

Délka     4460     6500     6800      3800    4200      5000   3200     7000    7200     4000     5200
Ks          51        4        2        10       8         9      2        8       3        4        2

    Na skladě se vyskytoval tento materiál:

Délka                   5900           6400           6950           12000       13000           14000
Ks                         1              1              2              20           8              12

   Od dodavatele bylo možno objednat tyče v délce 14 000,13 000 a 12 0000 mm. Při řezu se ztrací
1 mm materiálu. Měli jsme navrhnout co nejoptimálnější způsob rozdělení.

    Při použití uvedeného optimalizačního systému byl ze skladu vyzvednut materál dle tabulky:

Délka                  12000          13000          14000            6950        6400            5900
Ks                        20              8             10               2           1               1

a po uložení zbytků do skladu byl stav skladu takový:

Délka     77     137      197   277     338     449      538   738     1038    1199      2099    14000
Ks        13       4        3     3       3       2        8     2        2       1         1        2

    Na tomto příkladu je vidět, že optimalizací vzniká úspora materiálu. Na výrobek potřebujeme
celkem 494,06 m tyče, které se nařežou z 510,2 m. Nevyužitá část činí 16,14 m (tj asi 3,16 %). Pokud
by se skladovaly pouze tyče delší než 1 m, šlo by z tohoto odpadu asi 5,374 m zpátky do skladu pro
další použití.
    Optimalizační systém umožňuje řešit i několik podobných úloh najednou. Součásti výstupu je
řezný plán a seznam materiálu, který se musí ještě objednat od výrobce.

RNDr. Jaroslav Teda, Ph.D., Mgr. Jiří Chamrád
VÍTKOVICE ITS a.s., Ruská 60, Ostrava 6

				
DOCUMENT INFO