Készítette: Mátyás István agrár mérnöktanár szakos hallgató, A TÖBBCÉLÚ PROGRAMOZÁS Készítette: Mátyás István agrár mérnöktanár szakos hallgató, IV. évfolyam
A vállalati problémák során gyakran több cél merülhet fel egyidejűleg A vállalati problémák során gyakran több cél merülhet fel egyidejűleg. Ilyenkor több célfüggvény meghatározása szükséges. Most azt az esetet vizsgáljuk, amikor a célok mindegyike lineális függvénnyel kifejezhető, valamint célfüggvények maximalizálása a feladat.
Definíció: Az A x < b, x > 0 ------------------------------- f1(x)=c* max 1 f2(x)=c* max 2 …………………………… fk(x)=c* max k feladatot többcélú programozási feladatnak nevezzük.
1. A szekvenciális optimalizálás módszere Ennél a feladatnál az egyes célfüggvények fontosságuk szerint sorba rendezhetők. Tehát az első célfüggvény a legfontosabb, a második a kevésbé fontos stb.. 1. Példa: egy húsüzem öt különböző terméket állít elő. A korlátozó feltételek a következők:
x1,x2,x3,x4,x5 > 0 ---------------------------------- ------------------------------- --- A feladathoz tartozó vektorok komponensei a következők: 1.ÁRBEVÉTEL (ezer forintban, egy egységre vonatkoztatva): [5;5;6;4;5]* 2.ELŐÁLLÍTÁSI KTG. (ezer forintban, egy egységre vonatkoztatva): [3;3;4;2;3]* 3. SZÁLLÍTÁSI KTG.( Ft./ km):[1/2;1/2;1;1/3;1/2]*
A feladatban olyan termelési programot keresünk, mely a legnagyobb árbevételt biztosítja alacsony termelési- és szállítási költség mellett. Az első célfüggvény a következő: f1(x)=5x1+5x2+6x3+4x4+5x5 max. a második: f2(x)=3x1+3x2+4x3+2x4+3x5 min. a harmadik: f3(x)=1/2x1+1/2x2+x3+1/3x4+1/2x5 min.
A feladat megoldása:
A B3 táblában látható maximális árbevétel mellett az előállítási ktg A B3 táblában látható maximális árbevétel mellett az előállítási ktg., valamint a szállítási ktg. szempontjából létezik alternatív optimum, vagyis tudunk találni olyan megoldást is, ami a másik kettő szempontjából jobb megoldást hozna,(ha tovább generálnánk, látható lenne, hogy mindhárom célfüggvény szempontjából nem létezik optimális megoldás). Ritkán fordul elő az az eset amikor is k db. célfüggvényhez létezik olyan x0 , amelynél mindegyik célfüggvény optimális. Definíció: Ha x0 minden célfüggvénynek optimum helye, akkor x0 -t a feladat abszolút optimumának nevezzük.
2. A többcélúság helyettesítése, ill. közelítése egy célfüggvénnyel Két eset létezik: 1. A súlyozásos módszer: az egyes célfüggvényekhez súlyokat rendelünk fontosságuk szerint. Ekkor az L halmazon a g(x)=t1c *x+t2c *x+… +tkc *x 1 2 k függvény maximumát keressük. Ez gazdasági szempontból is fontos: pl. a termékeinket külföldi és belföldi piacon is értékesítjük, ilyenkor a ti súlyoknak a devizaárfolyamokat tekintjük, vagy a különböző termékeinket valamilyen szempontból preferáljuk( fő és melléktermékek) és ehhez igazítjuk az árat és az eladás elsőbbségét, vagy a gyártott termékeinket a gyártásfolyamat során pl. minőségi stb.
vagy a gyártott terméket a gyártásfolyamat során pl vagy a gyártott terméket a gyártásfolyamat során pl. minőségi szempontból csoportosítjuk, ezért bizonyos összetevőkből többet vagy kevesebbet adunk hozzá, attól függően, hogy a piac milyen minőséget kíván stb. A súlyok megválasztása szubjektív. Valamint a célfüggvények dimenziója és nagyságrendje különböző lehet. Ezért ennél a módszernél az alábbi célfüggvényt szokták választani: k g(x)=Σ ti i =1 ahol mi , Mi az fi(x)=ci*x függvény minimuma, ill. maximuma a lehetséges megoldások halmazán. c*x -mi i Mi -mi
Ekkor a c* -mi i Mi -mi transzformált célfüggvények dimenzió nélküliek és értékük [0,1] intervallumba esnek. 2. A korlátok módszere: az fi célfüggvényekre az első kivételével valamilyen di alsó korlátot adunk meg. Az x > 0 ---------------------------------- A x < b c* x > d2 2 …………………………… ck* x > dk f1(x)= c1T x max LP feladatot oldjuk meg.
3. A többcélúság általánosabb vizsgálata Ha a célfüggvények mindegyike egyaránt fontos, előfordulhat, hogy a lehetséges megoldások L halmazának két pontja közül melyiket nevezzük hatékonyabbnak. Célszerű az x1Є L programot hatékonyabbnak tekinteni az x2Є L programnál, ha fj (x1) > fj (x2) (j =1,…,k) és van olyan j, hogy fj (x1)= fj (x2), vagyis x1 egyik célfüggvény szempontjából sem rosszabb x2- nél. Definíció: Az xeЄ L pontoz a feladat efficiens pontjának nevezzük, ha nincsen olyan xЄ L (x=xe), amelyre fj(xe) < fj(x), j =1,…, k és valamely j-re fj (xe) = fj (x).
---------------------------------- A x < b c* x > c*x e 1 1 Tétel: ha az x >0 ---------------------------------- A x < b c* x > c*x e 1 1 …………………………… c k* x > c*x e k ……………………………………………..… g(x)=(c *+c *+… +c *)x max 1 2 k LP feladat megoldható és max g(x)=g(xe ), akkor az xe pont efficiens.
-x1+x2 < 3 x1+x2< 8 0 < x1 < 6 0 < x2 < 4 2. Feladat: -x1+x2 < 3 x1+x2< 8 0 < x1 < 6 0 < x2 < 4 ------------------------------- --- f1(x)=5x1-2x2 max. f2(x)=-x1+4x2 max.
A feladat efficiens pontjainak halmazát a következő grafikon szemlélteti. Ezen pontok halmaza nem konvex (ha két efficiens pont által meghatározott szakasz belső pontjai között van legalább van egy efficiens pont, akkor a szakasz minden pontja efficiens) Elvileg valamennyi efficiens pont meghatározható. Nekünk elég a tételben alapján előállítható véges sok efficiens pont meghatározásának ismerete.
---------------------------------- A x < b c* x > c*x e 1 1 Először az x1Є L lehetséges megoldást keressük meg, majd megoldjuk a x >0 ---------------------------------- A x < b c* x > c*x e 1 1 …………………………… c k* x > c*x e k ……………………………………………..… g(x)=(c *+c *+… +c *)x max LP feladatot 1 2 k .Két eset lehetséges: 1. g(x2) > g(x1), akkor x1 pont nem efficiens,ekkor az eljárást x2 megoldással meg kell ismételni. 2. g(x2) = g(x1), akkor x1 pont efficiens,akkor az eljárás befejezhető. Ez az eljárás véges számú lépésben ér véget.
---------------------------------- -x1+x2 < 3 x1+x2 < 8 Feladat: a) x1=[3;4]* b) x1=[0;3]* a 2. számú feladatnak efficiens pontjai-e. a) x1,x2, > 0 ---------------------------------- -x1+x2 < 3 x1+x2 < 8 x1+x2 < 6 x2 < 4 5 x1-2x2 > 7 -x1+4x2 > 30 ------------------------------- g(x)= 4x1+2x2 max
Ebből x2=[3;4]*= x1. Mivel max g(x)=g(x2)=g( x1) =20, ezért az x1=[3;4]* pont efficiens. b)c* x1= - 6, c* x1 =12 és g(x1) = 6 1 2 .
Ebből x2=[4;4]*. Mivel max g(x)=g(x2)=24>g(x1)=6, így az x1=[0;3]*pont nem efficiens, ezért a B2 táblából kiolvasható x2=[4;4]*ponttal megismételjük. c* x2= 12, c* x2 =12 és g(x2) =24 1 2 Ebből
Ebből x3=[4;4]*=x2. Most már max g(x)=g(x2)=24, ezért x2=[4;4]*pont efficiens.