szakdolgozat - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. az...

54
SZAKDOLGOZAT Operációkutatási feladatokat megoldó, oktatást támogató program készítése Készítette: Kucsma Roland Gazdaságinformatikus Bsc. Témavezető: Dr. Házy Attila egyetemi docens Miskolci Egyetem 2017

Upload: lynhi

Post on 23-Aug-2019

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

SZAKDOLGOZAT Operációkutatási feladatokat megoldó,

oktatást támogató program készítése

Készítette: Kucsma Roland

Gazdaságinformatikus Bsc.

Témavezető: Dr. Házy Attila egyetemi docens

Miskolci Egyetem

2017

Page 2: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

2

Tartalomjegyzék

1. Bevezetés .......................................................................................................................... 4

2. Az Operációkutatás ....................................................................................................... 6

2.1 Az operációkutatás fogalma .................................................................................................6

2.2 Történeti áttekintés, kialakulása .......................................................................................... 6

2.3 Az optimalizálási modellek ..................................................................................................9

3. Lineáris programozás................................................................................................... 11

3.1 Története ............................................................................................................................11

3.2 Az LP feladatok ekvivalens alakjai ....................................................................................11

3.3 Az LP feladat geometriai és algebrai háttere .....................................................................12

3.4 Az LP feladat gazdasági háttere .........................................................................................13

3.5 Megoldása egy termelésprogramozási feladatra ................................................................15

4. Szimplex-módszer: ....................................................................................................... 16

4.1 A név eredete ......................................................................................................................16

4.2 Szimplex módszer felépítése ..............................................................................................16

4.3 Szimplex-módszer menete .................................................................................................17

4.4 Bland-szabály .....................................................................................................................18

4.5 A szimplex módszer tulajdonságai .....................................................................................18

5. Érzékenységvizsgálat .................................................................................................... 19

5.1 Érzékenységvizsgálat célja a szimplex-módszerrel .............................................................19

5.2 Célja .....................................................................................................................................20

5.3 Feltétele ................................................................................................................................21

5.4 Jobb oldal változása .............................................................................................................20

5.5 Esetei ....................................................................................................................................21

Page 3: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

3

6. A Gomory vágás............................................................................................................ 22

6.1 Az eljárás lényege ..............................................................................................................22

7. Nemlineáris programozás ............................................................................................ 23

7.1 A lineáris programozásnak alapvető feltétele ....................................................................23

7.2 Kialakulása .........................................................................................................................23

7.3 Feladatok osztályozása .......................................................................................................24

8. A programról ................................................................................................................ 25

8.1 C# Története .......................................................................................................................25

8.2 C# Jellemzői .......................................................................................................................26

8.3 A szimplex-módszert megoldó program ............................................................................ 28

8.3.1 A program használata és programkódjai .............................................................. 28

Összefoglaló ....................................................................................................................... 50

Summary ........................................................................................................................... 51

Adathordozó használata .................................................................................................. 52

Irodalomjegyzék ............................................................................................................... 53

Köszönetnyilvánítás .......................................................................................................... 54

Page 4: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

4

1. Bevezetés

Az Operációkutatás I. című tantárgy kapcsán rengeteg különböző eddig még nem

feldolgozott algebrai feladattal találkozhattunk, amely során több matematikai probléma

merült fel, és ezeknek a megoldásának módszereit vizsgáltuk. Ezeknek az alapvető típusa a

feladatok szélsőértékének keresésével foglalkozik. A függvények jellegéből kifolyólag

többek között lineáris, egész értékű és nemlineáris optimalizálást különböztetünk meg. A

nemlineáris optimalizálás kiemelkedő közülük, amely a múltszázadban alakult ki és

nagyobb méretű problémák megoldására terjed ki.

A szakdolgozatom két fő részből fog összetevődni: az egyik az Operációkutatás, az

Optimalizálás elméleti háttere, fogalmak, definíciók; a második rész egy Operációkutatás

egyik fő ága, a szimplex módszer megoldására készítek és mutatok be egy programot C#

nyelven Microsoft Visual Studio fejlesztőkörnyezetben.

Azért választottam ezt a témát, mivel véleményem szerint nagyon fontos a mai

világban az optimalizálás, maga a matematika, a lineáris algebra egy programozó,

informatikus képzésben. Úgy gondolom, hogy a szakmai tudáshoz létfontosságú logika

kifejlesztését megkönnyíti, így egyszerűbben tanulhatóak a különböző programozási

nyelvek. Motivált az is, hogy viszonylag nagyszámú szakirodalom van a témával

kapcsolatban, aminek segítségével sikerült mélyebben körüljárnom az Operációkutatás,

mint tudományterület témakörét.

Véleményem az, hogy egy megfelelő oktatási program nem csak az oktató feladatát,

munkakörének a fejlődését segíti elő, hanem a diákok is önállóan feltudnak készülni, mivel

a program segítségével letudják ellenőrizni a házi feladataikat, hogy megfelelően

oldották-e meg, illetve ha mégsem, abban az esetben kitudják javítani magukat az aktuális

zárthelyi dolgozat, illetve vizsga előtt.

Page 5: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

5

Tehát biztatom a diákokat is arra, hogy bátran használjanak online matematikai

programokat, hiszen ez az online tanulás, oktatás azért fejlődik ilyen nagy lépésekben,

hogy a diákok minél nagyobb tudással és minél egyszerűbb módon tudják leküzdeni az

oktatásban ért akadályokat.

Page 6: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

6

2. Az Operációkutatás

2.1 Az operációkutatás fogalma

Az alkalmazott matematika azon ága, amely eljárások és bizonyos folyamatok

optimalizálásával foglalkozik. A feladatok célja, hogy az életből vett problémákat

matematikai modellekkel oldjuk meg, ezekre léteznek számtalan gyakorlati megoldó

programcsomagok. A feladatok megoldásában segítségül vehetjük a gráfelméletet és a

mátrixszámítást is.

Az optimalizálást legjobban így lehetne megfogalmazni: Olyan tudományosan

kialakított módszer, amely a gazdasági optimum problémák megoldásához, a döntések

előkészítéséhez általában valamilyen szélsőérték feladatokat alkalmaznak. Jellemző

eszközei a nemlineáris és a lineáris programozási modellek, hálótervezés és a

készletgazdálkodási modellek.

2.2 Történeti áttekintés, kialakulása

A tudományág a II. világháborúban alakult ki, amikor is hadműveleti, stratégiai,

tevékenységek megoldására alkalmazták, mint kiderült később eredményesen. A

szövetségesek vezérkarai alakítottak ki először olyan különböző szakemberekből álló

kutatócsoportot, akiknek az volt a legfontosabb feladata, hogy javaslatokat dolgozzanak ki,

különböző tudományos eszközök segítségével az eltérő hadműveleti döntések

megalapozásához. Az elnevezés is innen ered: az operáció szó alapjelentése: hadművelet,

katonai művelet.

Felmerültek olyan feladatok, amelyek nagyobb méretű hajókonvojok összeállítása,

aminél olyan problémák alakultak ki, mint például az, hogy melyik tengeri útvonalon

Page 7: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

7

érdemes hadianyagokat, katonákat szállítani. Ezen felül több tényezőt is számításba kellett

venni, például: a szállítmány beérkezését az ellenség megakarja majd akadályozni,

nagyobb hajókonvoj esetén nagyobb védőerőt képviselhet az ellenséggel szemben, kisebb

hajókonvoj gyorsabban teszi meg ugyanazt a távolságot. Ezek tevékenységeknek a

legfontosabb tanulsága az, hogy az ismeretlen tényezők nagy száma, a problémák

összetettsége, és az egymásra közvetlenül ható tényezők bonyolult összefüggései miatt a

csoportos tevékenységeknek nagy jelentősége van, amelyek megközelítése a matematikai

eszközökkel egyszerűbben kiküszöbölhető a problémák helyreállítása is.

1938-ban a brit légierő alkalmazta egy radarfigyelő rendszer kiépítésére. A második

világháborúban az USA, Nagy-Britannia és Szovjetunió által alapított ’Operational

Research Sections’-ben többet között a hajók számának optimalizálása, ezen belül a hajó

konvojok védőkíséretének méretének nagysága vagy a szőnyegbombázás sűrűségének

értéke és kiterjedésének nagysága volt a legfontosabb nézőpont.

A háború befejeződését követően a hadiipar céljára kifejlesztett eljárások a gazdaság

helyreállítására, a közgazdasági tevékenységek megbízhatóbbá tételére kezdték

alkalmazni, az operáció kutatás más területek mellett áttevődött a közgazdasági

alkalmazások kialakítására. Természetesen a matematikai eljárások közgazdasági

alkalmazásának is régi múltra tekint vissza. A közgazdasági tevékenységnek a

matematikában való alkalmazása iránti érdeklődés a XVIII. században alakult ki. A lineáris

programozás modelljét legegyszerűbb példákkal megtalálhatjuk Francois Quesnay

közgazdasági táblázataiban, ezeket a feljegyzéseket Marx Károly német filozófus is

zseniálisnak tekintette.

A XIX. században kiemelkedő közgazdásznak számító N. G. Csernisevszkij, akinek

közgazdasági tanulmányait már Lenin és Marx is már nagyra értékelte a politikai

feladatoknak a megoldásánál, amelynek fontos elve volt az, hogy megmérhetőek és

megszámlálhatóak legyenek, illetve csak azokat mérés és számolás útján legyenek

Page 8: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

8

elfogadhatóak. Marx is nagy figyelemmel tekintett a közgazdasági jelentésekre, illetve a

matematikai elemzéseknek. Ebből az okból született meg a ’Matematikai füzetei’ az

újratermelési sémák ismertetésére, Lenin ezt fejlesztette tovább, amelyben nagy

jelentőséggel bírt a jelenségek matematikai leírása és elemzése.

1928-ban a magyar származású, manapság mindenki által ismert Neumann János,

aki továbbfejlesztette az Emil Borel munkáját a ’Minimax’ tételében, amivel megalapozta a

lineáris egyenlőtlenségek elméletének matematikai alapját. Később több műve megjelent

még például Morganstern O.-val közösen a ’Theory of Games and Economic Behaviour’

1944-ben. Ezt követően a tudomány sok területén vezető szerepet játszott, különösen nagy

hatással volt az elektronikus számítástechnika fejlődésében és az atomenergiában. 1945-

ben az USA-ban megkezdték az elektronikus számítógépeknek a gyártását is, amelyet

George W. Bush készített el Neumann János közreműködésével.

A közgazdaságtan fejlődése a XX. században a megnövekedett rendelkezésre álló

információk mennyisége és a minőségének a javulása lehetővé tette, hogy az elméleti

modellekről áttérjenek az empirikus modellekre. A tudományok fejlődése nagyobb

differenciálódáshoz, több új tudományág kialakulásához vezetett. Nem vette át a vezetés

szerepét az operációkutatás csupán segíti a vezetői döntések megalapozását, ami szoros

kapcsolatban van a döntéselmélettel, egyes esetekben el sem lehet határolni a statisztika és

a tudomány egyes területeitől.

Az Angol Operációkutatási Társaság az Operációkutatás témakörét így fogalmazta

meg: Úgynevezett egzakt gondolkodásmódot jelent, ami a döntések megalapozásával

foglalkozik, ezáltal az optimális döntések előkészítését szolgálja. Az operációkutatás,

optimalizálás a döntéssel nem egyenlő, a vezetéssel sem, hanem a lehető legmegfelelőbb

döntés, az optimális eszköze a célszerű vezetésnek, ami során matematikai, tudományos

módszereket használja fel, amiatt hogy a döntési alternatívák lehető legjobbak legyenek.

Page 9: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

9

Az operációkutatás - lényeges tulajdonságai:

- Az operáció, operációkutatás fogalma alatt általában valamilyen célirányos

operációt, tevékenységet, műveletet értünk.

- Olyan tudományosan kialakított gyakorlati tevékenységet tekinthetünk, amely

célja a döntések előkészítésének megalapozása.

- Az operációkutatás vizsgálatát tudományosan szemléltetett és módszerekkel

végzik, nagy szerepe van a vizsgálataiban a matematikai és a modellezési

eljárásoknak, és az optimumot számító módszereknek.

Az operációkutatás - jellegzetességei:

- tudományosan kialakított módszer használata,

- modern matematikai módszerek alkalmazása,

- az optimális megoldás kialakítására irányuló törekvés,

- egyszerűsíteni a döntés-előkészítését,

- kialakítani a team-munkát,

- nagyfokú alkalmazhatósága a számítástechnikán belül.

2.3 Az optimalizálási modellek

Korábban már többször említettem az úgynevezett operáció-kutatási modelleket, de

először tisztáznunk kell azt, hogy mi is az a modell? Az operációkutatási feladatok

lényeges munkafázisa a modellezés. Legrövidebben úgy fogalmazhatnánk meg, hogy a

rendszer modelljének megalkotására irányuló jellegzetes közelítési módja. Az ember által

megalkotott leegyszerűsített kép a valóságról. Tartalmazza az objektum alkotórészeit,

kapcsolatait, tulajdonságait.

Page 10: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

10

A modellek a következő lépésekre oszthatóak:

- megfogalmazni a problémát,

- kiválasztani a matematikai módszereket és modelleket,

- meghatározni a modell paramétereit (változók, konstansok),

- számszerű felírása a modellnek,

- a modell megoldásának vizsgálata,

- a megoldás gyakorlati megvalósítása,

- korrekciók végrehajtása.

A matematikai modellek előnyei a verbális leírással szemben:

- a problémát tömören írja le,

- ok-okozati összefüggések könnyebben áttekinthetők,

- összes kapcsolatot ugyanazon időben lehet kezelni,

- láthatóvá válik az, hogy az elemzéshez milyen további adatok szükségesek,

- módosítás egyszerűbb,

- a számítógépes programcsomagok számára lehetővé teszi a közvetlen

használatot.

Page 11: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

11

3. Lineáris programozás

3.1 Története

A lineáris algebra egyik ágának tekinthető a lineáris programozás, amely 1940 után

az elektronikus számítástechnikával együtt fejlődött ki. Fontos a közgazdaságtanban,

illetve a matematikusok számára is. Az elmélet megalkotóinak Neumann János és George

Dantzig-ot tekintjük.

A lineáris optimalizálás problémájának azt állítjuk, hogy a lineáris függvény

szélsőértékének mennyiségét kell meghatározni, abban az esetben, ha a lineáris

egyenlőtlenség lép fel mellékfeltételként, és csak nem negatív értékei jönnek számba a

keresett mennyiségek esetében. A gazdaságban, a haditudományban, az iparban

előfordulhatnak olyan problémák, amelyek kifejezhetőek optimalizálási feladatként. Ha

egy lineáris optimalizálási feladat csak két ismeretlent tartalmaz, akkor megoldható

grafikusan is. Ezek kiszámítására több eljárás ismert. A legelterjedtebb a szimplex

módszer, amely George Dantzig fedezett fel.

3.2 Az LP feladatok ekvivalens alakjai

Az LP feladatoknál két alakot különböztetünk meg: standard és a kanotikus alak.

Az LP feladatot standard alakúnak nevezzük, ha a feltételrendszere csak ≤ relációt

tartalmaz, a változók értékei csak nemnegatívak lehetnek, és a célfüggvénynek a

maximumát keressük. Minden LP feladatot standard alakra lehet hozni, mivel ha a

célfüggvény maximumát keressük, akkor ehelyett kereshetjük a célfüggvény maximumát a

(−1) -szeresének, mivel −𝑧 helye megegyezik a 𝑧 minimumhelyével, azaz ellentétes

előjelűek az optimális célfüggvény értékek.

Page 12: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

12

Egy LP feladat akkor kanotikus alakú, ha a feltételrendszere csak = relációt

tartalmazhat, csak nemnegatív értékeket vehetnek fel a változók, maximumot keressük a

célfüggvénynek. A standard és kanotikus alak között különbség csak a feltételrendszerben

van.

3.3 Az LP feladat geometriai és algebrai háttere

Az 𝑥 lehetséges megoldást akkor tekintjük optimálisnak, ha annál nincs nagyobb –

kisebb minimum feladat esetén – lehetséges megoldása a célfüggvénynek. Nem minden

lineáris programozási feladatnak van optimális megoldása, mivel előfordulhat, hogy nincs

lehetséges megoldása, illetve előfordulhat olyan is, hogy a célfüggvény lehetséges

megoldások halmazán belül olyan értéket vesz fel, ami kiemelkedően magas, tehát

korlátos.

A döntési és a gazdasági problémák optimalizálásnak legjelentősebb részét lineáris

programozással oldhatjuk meg. A módszer lényege matematikai modellt veszünk fel az

adott feladathoz, ebben általában egyenlőtlenségek, egyenlőségek és lineáris formulák

szerepelnek. Majd kiszámoljuk az egyenletrendszerek megoldási algoritmusára kialakított

eljárásokkal az alábbi döntéshez legjobban tartozó változatokat. A megoldáshoz a

gyakorlatban számítógépeket használnak, a végső döntést leggyakrabban további

megfontolásokkal – politikai, gazdasági, stb. – kielemzésével és figyelembe vételével

hozzák meg.

Page 13: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

13

3.4 Az LP feladat gazdasági háttere

Az operációkutatás gazdasági alkalmazása gyakorlatban igen hatékonyan bizonyult,

manapság olyan számítógépes eljárások alakultak ki, amelyek a felhasználótól nem

igényelnek nagyobb matematikai ismereteket, mivel a feladatok megoldásához a

matematikai modellt is a számítógép alakítja ki. Ebben az esetben a felhasználónak csupán

az alapadatokat kell megadni, és az eredmények értelmezése irányul a szakmai tudáshoz.

Mai világban a számítástechnikai alkalmazásoké a jövő akár az informatikában,

gazdaságban és a mindennapi életben is. A számítástechnika alkalmazása

elképzelhetetlennek tűnik anélkül, hogy a tervezésben, szervezésben,

döntésmegalapozásban, irányításban és a gazdasági elemzésben, azaz egy vállalat minden

területén alkalmazunk számítástechnikát. Ipari, gépészeti cégeknél pedig az

operációkutatásé a főszerep.

Az operációkutatás módszeri közül a gazdasági feladatok modellezése az

alkalmazott matematikai programozása leegyszerűsített módon történő bemutatását értjük,

amely analóg módon felfogható az optimalizálási módszerek alkalmazásának, a gazdasági

problémák és az alkalmazott matematikai módszerek sajátosságaival és azok

figyelembevételével.

Feltételezzük, hogy valamely gazdasági vállalat 𝑛-féle különböző tevékenységet

folytat, a tevékenységek jelenthetik a termékek termelését, szolgáltatások ellátását,

beruházási tevékenységet, stb. A tevékenység számunkra ismeretlen, 𝑥1, 𝑥2, … , 𝑥𝑛 -el

jelöljük, ezeket hívjuk a matematikai modellünk változóinak, tehát az 𝑥𝑗 azt

megfeleltethető a 𝑗 -edik tevékenységnek, ahol 𝑗 = 1,2, … , 𝑛 , azaz bármilyen pozitív

egész számot jelenthet a 𝑗 érték. A vállalatok a saját tevékenységüket bizonyos cél miatt

Page 14: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

14

végzi. Különböző célok merülhetnek fel pl.: minél versenyképesebb jövedelem elérése,

export fokozása, import csökkentése stb.

Minél nagyobb jövedelem úgy érhető el, ha a realizálható és a megtermelhető

jövedelem függ a vállalat különböző tevékenységei milyen arányban és milyen szinten

folytatja, azaz ha a realizálható és a megtermelhető jövedelmet, amit 𝑧-vel jelölünk, annak

nagysága a változók függvénye lesz tehát 𝑥𝑗 . Ezt célfüggvénynek vagy hatékonysági

függvénynek nevezzük. Az 𝑥1, 𝑥2, 𝑥3, … , 𝑥𝑛 változók értékeit úgy határozzuk meg, hogy a

célfüggvény azok mellett a legkisebb vagy a legnagyobb legyen, azaz keressük a

célfüggvényünk minimumát vagy maximumát, azaz a szélső értékét.

A különböző tevékenységek különböző erőforrásokat igényelnek. Az erőforrások

könnyebb rendszerezésére a számvitelből már ismert mérleget írjuk elő. A mérlegünk egyik

oldalán szerepelnek az erőforrásokból felmerülő szükségletek (kereslet), másik oldalán

pedig a rendelkezésre álló mennyiségek (kínálat). Az 𝑥𝑗 függvény értéket úgy kell

megválasztanunk, hogy általunk előírt megfelelő reláció legyen a két oldal között és a

mennyiségek pontosan megegyezzenek, nem lehet több sem az egyik oldalon, sem a másik

oldalon. Az 𝑥 értékeknek ki kell elégíteni különböző mellékfeltételeket is, ami azt jelenti,

hogy kisebb egyenlő, nagyobb egyenlő vagy egyenlő lehet a 𝑏𝑥 értékével.

Page 15: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

15

3.5 Megoldása egy termelésprogramozási feladatra

Feltételezzük, hogy van egy gyár, ami 𝑛-féle terméket gyárt. Feltételezzük, hogy

𝑚-féle erőforrás szükséges a termékek gyártásához.

A gyártási folyamat jellemzői:

𝑎𝑖𝑗 – Az 𝑖 -edik erőforrás 𝑗 -edik termék egysége, ami az előállításhoz szükséges

mennyiséget jelenti.

𝑏𝑖 – A rendelkezésre álló mennyiség az optimális időszak alatt az 𝑖-edik erőforrásból.

𝑐𝑖 – A gyártási haszna a 𝑗-edik termék egységének.

A termékösszetételek optimalizálása abból áll, hogy annyit akarunk gyártani az

egyes gyártható termékekből, amennyit lehetővé tesznek a rendelkezésre álló erőforrások,

mialatt a lehetőleg legnagyobb gyártási hasznot szeretnénk elérni. A megfogalmazott

probléma matematikai modelléhez be kell vezetni az 𝑥𝑗 döntési változót:

𝑥𝑗 – a gyártandó mennyiség az optimális időszak alatt a 𝑗-edik termékből.

Ezekben a felsorolásokban az 𝑖 indexű erőforrásegység 1-től 𝑚-ig tart, a 𝑗 pedig 1-től

𝑛-ig.

Page 16: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

16

4. Szimplex módszer

4.1 A név eredete

Az 𝑚 dimenziós térben, ha nézünk egy 𝑚 + 1 pontot, akkor ezek egyike sincs a

többi konvex burkában benne, ezáltal az 𝑚 + 1 pontot konvex burka szerinti definíció egy

szimplexet alkot. Ez egy szakasz egy dimenzióban, háromszög két dimenzióban, tetraéder

három dimenzióban.

4.2 Szimplex módszer felépítése

1. Elkészítjük az induló táblázatot, amely az 𝑢1, 𝑢2, 𝑢3 és 𝑢4 szimbólummal a duális

változókat. A gyakorlati feladatoknál ezek az erőforrások számát fogják jelenteni.

2. A felső sorban az úgynevezett primál változók szerepelnek: 𝑥 vektor elemei.

3. Az alsó sorban a már említett optimális érték, azaz a célfüggvény fog szerepelni:

𝑐𝑇 vektor elemei.

4. A jobb szélső oszlopban pedig a készletvektor értékei fognak szerepelni, amelyet 𝑏-vel

jelöljük.

5. A táblázatot kikell egészítenünk azzal, hogy a célfüggvényünk sorának végére 0-t

teszünk, az elejére −𝑧-t írunk, azt kifejezve, hogy a célfüggvény értéke zérus, illetve a

célfüggvényünk értéke alapján maximumot kapunk.

Page 17: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

17

4.3 Szimplex-módszer menete 1. Ha az LP feladat nem normalizált alakú és nem is kanotikus, akkor ezt át kell írni normál

alakúra. Ezután következik a 2. lépés.

2. Ha van lehetőségünk, keressük meg a lehetséges induló bázismegoldását a feladatnak. Ez

nagyon egyszerűen megtehetjük, mivel ha az eredeti feladatban csak ≤ relációs feltételek

szerepelnek, akkor a jobb oldalon található 𝑏 vektorban minden elemnek nem negatívnak

kell lennie. Ilyenkor bevezetünk az átalakításhoz mesterséges változókat: 𝑥𝑛+1 , ahol

𝑖 = 1,2, … 𝑚 értéket vehet fel, és ezeket használjuk bázisváltóként. Ha manuális előállítás

nem valósul meg az induló lehetséges bázismegoldásnak, akkor az erre legmegfelelőbb

módszert, a kétfázisú szimplex módszert kell használni. Miután az induló lehetséges bázis

megoldást előállítottuk folytatjuk a 3. ponttal.

3. Az aktuális lehetséges bázis megoldáshoz tartozó szimplex táblát elő kell állítani. 3.a Ha

az összes lehetséges nem bázis változóhoz tartozó nem negatív értékű redukált költség,

tehát ha optimális az összes lehetséges aktuális bázismegoldás. Akkor vége. 3.b Ha

található legalább egy nem negatív értékű , akkor ki kell választani a rendelkező nem bázis

megoldásokból egyet, ami a leírtak alapján befejezi ezt az eljárást, vagy áttér a 4. lépésre.

4. A megfelelő vektort és a kiválasztott változót a bázisba be kell vezetni, így előáll az új

lehetséges bázismegoldás, majd visszatér a 3. lépésre.

Ha a 3.a lépésben meg van oldva a feladat, akkor a feladat optimális megoldásának

tekinthető a lehetséges bázis megoldás. Abban az esetben, ha a 3.a pontban egy nulla értékű

is van, akkor feltételezhetjük, hogy több optimális megoldása is van lineáris programozási

feladatnak. Ilyenkor azt állítjuk, hogy alternatív megoldása van a lineáris programozási

feladatnak.

Page 18: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

18

4.4 Bland-szabály

A szimplex-módszer esetén meg kell említeni még a Bland - szabályt, más néven

Legkisebb index szabály. 1977-ben Bland egy olyan szabályt fejlesztett ki a lineáris

programozási feladatokra, ami biztosítja a ciklizálás elkerülését a rendezett indexű

változók használata esetén.

- Ha a bázisba egynél több nem bázis változó is bevezethető, akkor a legkisebb

indexűt választjuk.

- Ha a bázisból egynél több változó került ki, akkor a legkisebb indexűt választjuk.

A szabály alkalmazása esetén nem ciklizálhat a szimplex módszer, emiatt véges

számú iterációs lépést követően véget ér, mivel ha véletlenszerűen választana, akkor nem

találná meg az optimum pontot.

4.5 A szimplex módszer tulajdonságai

- Primál bázisokon lépked;

- Egy oszlopot minden lépésben kicserélünk 𝑏-re;

- A primál célfüggvény értéke folyamatosan nő, azaz nem csökkenhet;

- Egy optimális bázismegoldáshoz véges sok lépésben jutunk el.

Page 19: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

19

5. Érzékenységvizsgálat

5.1 Érzékenységvizsgálat kapcsolata a szimplex-módszerrel

Érzékenység vizsgálaton azt értjük, hogy milyen hatással lesz a szimplex módszer

által létrehozott feladat az optimális megoldásra az, ha a feladatunk paramétereit különböző

lehetséges értékeket vehet fel.

A gyakorlati példák alapján, amelyeket a programozási részben megoldottam azt

tapasztaltam, hogy van néhány olyan paraméter, amelyek számára bármilyen normális

értéket megadhatunk anélkül, hogy az optimális megoldásunknak befolyásolná, viszont

lehetnek olyan paramétereket, amelyek apró változtatása is új optimális megoldást alakít ki.

Az optimális megoldás esetén a változatlanság azt jelenti, hogy a bázisváltozók

megmaradnak, mint bázisváltozók. Ez azt jelenti egy termelésprogramozási feladat

esetében, hogy az eddig még nem gyártott termékeket továbbra se fogjuk gyártani és a már

gyártott termékeket más mennyiségekben gyártjuk, akkor a célfüggvény értéke változhat.

Különösebb problémát vett fel, ha a célfüggvény értéke kisebb lesz. Egy jövőbeni

döntések esetén csupán csak becsült adatokkal tudunk számolni, legtöbbször gyakorlatban

a célfüggvény értékei és a kapacitások változásainak hatását kell vizsgálni. Sok esetben a

paraméterek adatai becsült adat, emiatt az optimális tábla létrehozásához szükségünk van

arra, hogy ezeket feltehetjük, mi lett volna, ha egy-két adatot megváltoztatnánk, akár kis

mértékben is, az erőforrások növekedése megváltoztathatja a termelési szerkezetet, illetve

gazdasági szempontból a piac árainak változása mennyire befolyásolja az optimális

megoldást.

Page 20: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

20

5.2 Célja

Az alapesetből kifolyólag az eltérés a legjobb becsléstől, illetve a különböző

eltérések bekövetkezésének valószínűségének lehetősége milyen hatással van a

termelésmutatók, teljesítménymutatók változása. Az érzékenységvizsgálat során meg kell

vizsgálni a különböző hatásokat, amelyekre a változók a teljesítménymutatókban változást

okozhatnak.

5.3 Feltétele

Hogyan változhat meg a feltétel jobboldala, hogy a táblánk optimális legyen. Az

érzékenység vizsgálat célja egy termelésprogramozási feladatban a maximális árbevétel

elérése, ami gazdaságosabb ebből a termékből, a többi termék rovására többet előállítani.

Felmerül egy olyan probléma, hogy mekkora ár esetén lesz gazdaságos az optimális

termelési program változása és legfeljebb mekkora árváltozás esetén lesz a jelenlegi

termelési program optimális.

5.4 Jobb oldal változása

Két különböző esetet különböztethetünk meg, hogy az optimális táblában

bázisváltozó-e a vizsgálandó kapacitáshoz tartozó kiegészítő változó. Az egyik feltevés,

hogy a változó nem bázisváltozó: tehát melyik 𝑏 értékre marad még optimális a megoldás.

Akkor marad optimális a bázismegoldás, ha teljesül a feltétel a 𝑡2 -re is. A kiegészítő

változó bázisváltozó: ebben az esetben a b változó nincs hatással az 𝑢1, … , 𝑢𝑛 értékekre.

Page 21: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

21

5.5 Esetei

Alapvető célja a modell paramétereinek meghatározása, azon paramétereket között,

amelyek megváltoztatása után sem változik meg az optimális megoldás. Különösen

figyelni kell arra, hogy érzékenységvizsgálat során egyszerre egy értéket lehet változtatni,

mivel ha egynél több érték megváltozik, akkor az érzékenységvizsgálat nem feltétlenül

teljesül, mivel nem tudjuk, hogy melyik érték változása hozta meg a kívánt illetve a

megváltozott eredményt.

Page 22: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

22

6. A Gomory vágás

A Gomory vágás szoros kapcsolatban van az Operációkutatás, a Lineáris

programozás és a Szimplex-módszerrel is, emiatt szeretnék néhány fontos információt

megosztani erről.

6.1 Az eljárás lényege

1. Előállítunk egy optimalizálási megoldást a szimplex táblázatban (ha létezik!). Ha

mégsem létezik, akkor nem létezik egyértékű optimális megoldás se.

2. Az optimális megoldásban a változók értéke egész, akkor a feladat egészértékű

optimumának értékét is megkapjuk.

3. Amennyiben a folytonos optimális megoldásban nem minden változó értéke egész,

akkor a tört értékű bázisváltozónak sorából feltételt készítünk, és az optimális táblázathoz

csatoljuk.

4. Előállítjuk emiatt az új optimális táblázatot a kiegészített táblázatban. Ezután folytatjuk a

2. és a 3. lépéssel.

Page 23: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

23

7. Nemlineáris programozás

Eddig a lineáris programozás részleteit mutattam be, szeretném bemutatni a

nemlineáris programozás sajátosságait is.

7.1 A lineáris programozásnak alapvető feltétele

Az 𝑓(𝑥) célfüggvény, 𝑔(𝑥) kényszerfeltétel lineáris, amelyek sok gyakorlati

példában nem teljesülnek. A közgazdászok úgy gondolják, hogy a nemlinearitás tervezési

feladatok esetén szinte szabály. Példának lehet említeni az ár-keresleti görbét (𝑝(𝑥)),

amelyben a 𝑝(𝑥) az az érték, amelyet az 𝑥 egységből el lehet még adni. Ha a termeléshez

szükséges költség 𝑐 , akkor a 𝑃(𝑥) = 𝑥 × 𝑝(𝑥) − 𝑐 × 𝑥 nem lineáris célfüggvényt adja

meg.

Ha a cél összes termékének a hasznosságfüggvénye megegyezik, akkor az eredendő

célfüggvény a következő:

𝑛

𝑓(𝑥) = ∑ 𝑃𝑗 (𝑥𝑗), 𝑗=1

ahol 𝑗 = 1,2, … , 𝑛 , azaz nem lineáris függvények összege.

7.2 Kialakulása

Sokféle képen jönnek létre a nemlineáris programozási feladatok. Nem ismert

egyetlen közös algoritmus, amely által egzakt megoldást kapnánk, hanem egy-egy

feladatban előforduló speciális feladatok megoldására dolgoztak ki algoritmusokat.

Page 24: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

24

Minden nemlineáris programozási feladatnál feltételezzük, hogy a kényszerfeltételek

megegyeznek a lineáris függvényekkel, így azt is állíthatjuk, hogy ezek a feladatok,

amelyek esetén csak a célfüggvény nemlineáris.

7.3 Feladatok osztályozása

Legfontosabb szempont: A célfüggvény milyen függvény valójában?

Abban az esetben, amikor a célfüggvény lineáris törtfüggvény, akkor beszélünk

hiperbolikus programozásról. Ha a célfüggvényünk másodfokú, akkor kvadratikus a

programozásunk.

Page 25: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

25

8. A programról

8.1 C# Története

A nyelv túl hosszú múlttat nem tud felmutatni, de az elődjének a C++ nyelvet

tekintjük, amelynek szintaktikája és a szerkezeti felépítése megegyezik a C# programozás

nyelvével. A C# nyelv (ejtsd: szí-sárp) a .NET fő programozási nyelve a Visual Basic

mellett. A programnyelv fejlesztése 1999-ben kezdődött meg Anders Hejlsberg vezetése

mellett.

A C# programozási nyelv tisztán objektumorientáltnak nevezhető, emellett típus

biztos, illetve általános felhasználású nyelv. A tervezés kialakításánál a produktivitás

lehető legnagyobb elérését tekintették legfontosabb irányútnak, viszont szerették volna

megtartani a C++ hatékonyságát. Tehát a fejlesztéseket úgy próbálták kialakítani, hogy a jó

a C++ rossz tulajdonságait kijavítsa, viszont a jókat megőrizze.

A nyelv kezdetben plattform független volt (létezett Mac és Linux fordító is), de

napjainkban a Microsoft implementációja biztosítja a legnagyobb hatékonyságot. 2002-ben

jelent meg a Microsoftnak az új fejlesztési környezete, a Visual Studio.NET

programcsomag részeként.

A C#-ot tekintjük a .NET keretrendszer új bázisnyelvének, amelyet ehhez a

keretrendszerhez tervezték, tehát az sem véletlen, hogy a szabvány azonosítójuk egymástól

csak egy értékekkel tér el. A nyelv teljes mértékben komponens orientáltnak tekinthető. A

Visual Basic fejlesztési gyorsaságát és a C# hatékonyságát, ötvözték ebben az eszközben a

fejlesztők és a diákok számára.

Page 26: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

26

8.2 C# Jellemzői

A C# programozási nyelvnek a legfontosabb elemeinek a következőket tekintjük:

- Neumann-elvű, Professzionális. Nagy programok és rendszerprogramok írására

alkalmasnak tekinthető.

- A programok több fordítási egységekből, fájlból, modulokból áll. Minden

fájlnak vagy modulnak a szerkezete azonos.

- Több utasítás is irható egy sorba. A pontosvessző (;) lezáró jele az utasításoknak.

Deklarálni kell minden egyes változót. Függvények és a változók nevében az

ékezetes karaktereket is lehet használni, a betűk esetén a kis- és nagybetű

különböző.

- Parancssorból a keretrendszer fordításának parancsa is meglehetősen egyszerűen

használhatóak.

(pl. css/out:körte.exe körte.cs).

- Összetett utasítások (blokkok) írhatóak az utasítások helyére. Az összetett

utasításokat definiálják kapcsos zárójelek közé írt {} utasításoknak.

- Érték (alaptípusok, struct, value, enum) illetve a referencia típusú (class)

változók.

- Mutatók használata nincs; vektorhasználat emiatt biztonságosnak tekinthető.

- Unboxing, boxing. Az object-et tekintjük minden típus ősének, így például az

egész típust (int) objektumból kicsomagolhatunk (unboxing) illetve

becsomagolhatunk (boxing).

- Nem ágyazhatóak egymásba a függvények definíciói, meghívhatja önmagát

(rekurzió). Tehát nincs blokkstruktúra egy függvénydefiníció esetén. Blokkon

belül dinamikus és statikus élettartamú változókat deklarálhatunk.

Függvény poliformizmus megengedett.

Page 27: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

27

- Output (out) a függvényparaméterek, az érték és referencia a (ref).

- Változó paraméterszámú függvényeket deklarálhatunk, kezdő paraméterek

értékadással járnak.

- Események használata, delegáltak.

- Osztályok egy hierarchikusnak tekinthető névterekben használhatóak. Tehát

mivel minden osztály ilyen, emiatt a „program” Main függvény public static

hozzáférésű. Main függvényt több különböző osztály is tartalmazhat, de ebben

az esetben meg kell említeni fordításkor, hogy mikor melyik legyen az aktuális

induló Main függvény.

(/main:osztálynév)

- Új operátorok: az objektum típusát ellenőrzi az is operátor (y is Hajó), as

operátor pedig a jobb oldali típussá konvertálja a bal oldali operandusunkat

(Hajó 1 = y as Hajó;)

A konverziós operátortól abban tekintünk különbséget, hogy ez nem egy

generált kivétel!

- Léteznek privát konstruktorok (egy példányt sem akarunk), statikus konstruktor

(minden példányunk egy konstruktor előtt hívódik meg, statikus mezők

inicializálására, egy osztálybetöltő hívja meg a futási időben) használata.

- Nem létezik destruktor, ehelyett van a keretrendszerünk szemétgyűjtési

algoritmusa. Dispose metódusa újradefiniálható az osztálynak szükség esetén.

- Interface-ek használata, egyszeres öröklődés.

- Operátorok definiálására több lehetőségünk van, property, indexer definiálása.

- Kivételek megvalósítása.

- Párhuzamos végrehajtású szálaknak a definiálhatósága.

A .NET programozáshoz legmegfelelőbb választás a Microsoft saját fejlesztésű terméke, a

Microsoft Visual Studio. A fizetős változatok mellett természetesen léteznek ingyenes,

úgynevezett Express csomagok is, amely a felhasználó számára teljes kiszolgálást biztosít.

Page 28: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

28

8.3 A szimplex-módszert megoldó program

8.3.1 A program használata és a forráskódok

A program működését a Microsoft Visual Studio Enterprise 2017-es verziójában fogom

bemutatni. Amelyet a következő linken bárki számára elérhető és letölthető:

https://www.visualstudio.com/vs/

A Start gomb megnyomásával indítjuk el a programunkat:

1. ÁBRA: WINDOWSFORMAPLLICATION65 FÁJL ELINDÍTÁSA

Amely ezt követően megmutatja a grafikus felületét a programnak. A grafikus felület

létrehozása a properties segítségével oldottam meg.

Négy különböző dolgot kellett létrehozni a program teljes felépítésének érdekében:

1) címke létrehozása: private System.Windows.Forms.Label label1;

2) szövegdoboz létrehozása: private System.Windows.Forms.TextBox textBox1;

3) gomb létrehozása: private System.Windows.Forms.Button button1;

4) táblázat létrehozása: private System.Windows.Forms.DataGridView dataGridView1;

A programot alkalmazásként is elindíthatjuk a WindowsFormApplication65 mappára

kattintva, ezután szintén erre kattintunk, ezután bin mappára, majd a Debug mappa

következik, itt pedig a .exe kiterjesztésű alkalmazást kell elindítani, a fájl típusa

alkalmazás.

Page 29: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

29

A program kezdőképernyője a következő lesz:

2. ábra: A program grafikus felületének kezdőképernyője

A programot kétféle-módon lehet használni:

Már előre lementett feladatot hívunk a 𝑓𝑒𝑙𝑎𝑑𝑎𝑡. 𝑡𝑥𝑡 fájlból. A CD-n 1-től 5-ig, illetve a

Szakdolgozatomban szereplő 11-es feladat érthető el, a többi feladat esetében előre létre

kell hozni, illetve a feladat megírása során menteni kell az adott feladatot, a későbbi

visszakeresés és a hatékonyabb tanulás érdekében.

A Mentés gomb nagy előny abban az esetben is, ha több példát is át akarunk majd nézni a

későbbiekben.

.

Page 30: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

30

A 𝑓𝑒𝑙𝑎𝑑𝑎𝑡11. 𝑡𝑥𝑡 fájlt használom a program tesztelésére és a működésére:

3. ÁBRA: A FELADAT11.TXT FÁJL BETÖLTÉSE

Fájlból beolvasás programkódja: if (textBox1.Text != null && textBox1.Text != "")

{

String fileName = @"Példaprogramok\feladat" + textBox1.Text + ".txt";

Console.WriteLine(fileName);

try

{

StreamReader streamReader = new StreamReader(fileName);

String meret = streamReader.ReadLine();

String[] meretek = meret.Split(' ');

int sor = Convert.ToInt32(meretek[0]);

int oszlop = Convert.ToInt32(meretek[1]);

textBox2.Text = sor.ToString();

Page 31: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

31

textBox3.Text = oszlop.ToString();

double[,] matrix = new double[sor, oszlop];

for (int i = 0; i < sor; i++)

{

String sorSzoveg = streamReader.ReadLine();

String[] szamok = sorSzoveg.Split(' ');

for (int j = 0; j < oszlop; j++)

{

matrix[i, j] = Convert.ToDouble(szamok[j]);

}

}

AdatokFeltolt(sor, oszlop, matrix);

}

catch (Exception exp)

{

}

}

else

{

MessageBox.Show("Nem sikerült a fájlt beolvasni!");

Console.WriteLine(exp.StackTrace);

AdatokFeltolt(Convert.ToInt32(textBox2.Text),

Convert.ToInt32(textBox3.Text), null);

}

}

A 11-es fájl a sor és oszlop mezőkhöz társítja a már korábban definiált feladat adatait – sor

és az oszlop értékeket - és a Tábla feltöltés gomb megnyomásával pedig feltölti azokat. A

fájlban úgy történik a lementés és a feltöltés, hogy az első sorban a sor és az oszlop

Page 32: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

32

nagyságainak értéke vannak egymástól szóközzel elválasztva, utána pedig a mátrix

sorainak és oszlopainak értékei:

4. ÁBRA: A FELADAT11.TXT JEGYZETTÖMB ELHELYEZKEDÉSE

A másik megoldás a program sor és oszlopvektorainak megadásával saját feladat készítése:

5. ÁBRA: A MÁTRIX FELTÖLTÉSE

Page 33: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

33

Tehát megadtuk a sor(5) és az oszlop(3) értékeit a Tábla feltöltés mezőjére kattintással,

ezután pedig megkapjuk a feltölteni kívánt mátrixunknak, amelyet saját példafeladataink

alapján kitölthetünk a következő kép szerint:

6. ÁBRA: MÁTRIX FELTÖLTÉSE SAJÁT ADATOKKAL

A megadott értékeket a feladatszám megadását követően a Mentés gombra kattintva

lementhetjük és eltárolhatjuk, ha esetleg később is hasznát vehetnénk a feladat ellenőrzése

céljából.

7. ÁBRA: SIKERES MENTÉS KÉPABLAKA!

Page 34: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

34

Sikeres mentés programkódja:

try

{

StreamWriter sw = new StreamWriter(fileName);

sw.WriteLine(sor + " " + oszlop);

for (int i = 0; i < sor; i++)

{

for (int j = 0; j < oszlop; j++)

{

if (j != oszlop - 1)

{

+ " ");

sw.Write(dataGridView1.Rows[i].Cells[j].Value

}

else

{

+ " ");

sw.Write(dataGridView1.Rows[i].Cells[j].Value

}

}

sw.WriteLine();

}

sw.Flush();

sw.Close();

MessageBox.Show("Sikeres mentés!");

}

catch (Exception exp)

{

MessageBox.Show("Nem sikerült a mentés!");

Console.WriteLine(exp.StackTrace);

}

}

}

Page 35: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

35

Ha olyan feladatot akarunk betölteni, amelyet korábban nem mentettünk el, vagy nem

létezik, akkor a következő hibaüzenetet kaphatjuk:

Nem sikerült a fájlt beolvasni!

Ilyen esetekben egy másik fájlt kell választani a program sikeres futásának érdekében!

Tehát az ábrán a 𝑓𝑒𝑙𝑎𝑑𝑎𝑡6. 𝑡𝑥𝑡 fájlt szerettem volna beolvasni. Sor és oszlop értékei

minden esetben 0 lesz ilyen helyzetben mivel nem létezik a fájl, a tábla feltöltés nem is

valósul meg, mivel a mátrix nem létezik, esetleges sor és oszlop megadásával a tábla

feltöltésre kattintva feltölthető a mátrix, ami után a feladatszám mezőbe a 6-os értéket

beleírva, illetve a mentés gombra kattintva lementhető a fájl.

8. ÁBRA: SIKERTELEN FÁJL BEOLVASÁS KÉPABLAKA!

A sikertelen fájl beolvasásának programkódja:

try

{

StreamReader streamReader = new StreamReader(fileName);

String meret = streamReader.ReadLine();

String[] meretek = meret.Split(' ');

Page 36: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

36

int sor = Convert.ToInt32(meretek[0]);

int oszlop = Convert.ToInt32(meretek[1]);

textBox2.Text = sor.ToString();

textBox3.Text = oszlop.ToString();

double[,] matrix = new double[sor, oszlop];

for (int i = 0; i < sor; i++)

{

String sorSzoveg = streamReader.ReadLine();

String[] szamok = sorSzoveg.Split(' ');

for (int j = 0; j < oszlop; j++)

{

matrix[i, j] = Convert.ToDouble(szamok[j]);

}

}

AdatokFeltolt(sor, oszlop, matrix);

}

catch (Exception exp)

{

MessageBox.Show("Nem sikerült a fájlt beolvasni!");

Console.WriteLine(exp.StackTrace);

}

A következő lépés a Szimplex-módszer lépéseinek a módszere, amelynek első lépése az,

hogy ki kell választanunk a helyes pivotelemet.

Page 37: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

37

A pivotelem kiválasztásának sok feltétele van:

1. feltétel:

Nulla értékű elemet nem választhatunk pivotelemnek. Erre a program is figyelmeztet a

következő hibaüzenettel: A pivotelem nem lehet 0!

9. ÁBRA: A PIVOTELEM NEM LEHET 0!

if (pivotElem == 0)

{

MessageBox.Show("A pivotelem nem lehet 0!");

return;

}

2.feltétel:

Az utolsó sorból és az utolsó oszlopból nem választhatunk pivotelemet.

A hibaüzenet oka az, hogy míg az utolsó sor a célfüggvényünk értéke lesz, addig az utolsó

oszlop pedig a 𝑏 értékek lesznek, ami a kapacitás és a készletnek felel meg, emiatt azokat

sem lehet választani!

Page 38: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

38

Ezután következő hibaüzenetet kapjuk: Nem választható pivotelem! Válasszon másikat!

10. ÁBRA: AZ UTOLSÓ SOR ÉS AZ UTOLSÓ OSZLOPBÓL NEM LEHET PIVOTLEMET VÁLASZTANI!

pivotSor = dataGridView1.SelectedCells[0].RowIndex;

pivotOszlop = dataGridView1.SelectedCells[0].ColumnIndex;

Válasszon

if(pivotSor==sor-1 || pivotOszlop==oszlop-1)

{

MessageBox.Show("Nem választható pivotelem!

másikat!");

}

return;

}

double celErtek =

Double.Parse((string)dataGridView1.Rows[sor-1].Cells[pivotOs

zlop].Value);

double pivotElem

=Double.Parse((string)dataGridView1.Rows[pivotSor].Cells[pivotOszlop].Value

);

Page 39: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

39

3.feltétel:

A szűk keresztmetszet feltétele, tehát nevező(𝑏) és a pivotelem értékét el kell osztani és

megkapjuk a hányadost, amelyek közül a legkisebbet kell választanunk. Ennél a feltételnél

a hibaüzenetből kapunk egy kisebb segítséget, hogy honnan kell kiválasztanunk a jó

pivotelemet:

Hibaüzenet: Nem a legszűkebb keresztmetszet egyikét választotta! A 4 sor megfelelő

választás lenne.

11. ÁBRA: SZŰK KERESZTMETSZET VÁLASZTÁSÁNAK LEHETŐSÉGEINEK PROBÁLKOZÁSA if (celErtek>0)

{

Double szamlalo =

Double.Parse((string)dataGridView1.Rows[pivotSor].Cells[oszlop-1].Value);

double hanyados = szamlalo / pivotElem;

double minErtek = hanyados;

Console.WriteLine(hanyados);

Double minIndex = 0;

for (int i=0; i<sor-1; i++)

{

Double nevezo =

Double.Parse((string)dataGridView1.Rows[i].Cells[pivotOszlop].Value);

Page 40: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

40

szamlalo =

Double.Parse((string)dataGridView1.Rows[i].Cells[oszlop - 1].Value);

if(nevezo==0)

{

continue;

}

Double ertek = szamlalo / nevezo;

if(ertek<minErtek)

{

minErtek = ertek;

minIndex = i;

}

Console.WriteLine(ertek + " " + minErtek);

}

if(hanyados==minErtek)

{

}

else

{

választotta! A "

}

} else

{

MessageBox.Show("Nem a legszűkebb keresztmetszet egyikét

+ (minIndex + 1) + " sor megfelelő választás lenne!");

return;

MessageBox.Show("Csak olyan oszlopból választhatunk

pivotelemet, ahol a célfüggvény érték nemnegatív!");

return;

}

Page 41: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

41

Tekintsük az induló táblázatunkat – szűk keresztmetszet vizsgálata:

Mivel 5 > 3, ezért 𝑥2 oszlop értékével érdemes dolgozni, mivel a célfüggvényt minden

egysége 5-el növeli a célfüggvényünk értékét!

48 25 6 𝑚𝑖𝑛 = {

6 ;

3 ;

2 }

Ebből kiderül, hogy a legkisebb értéke a mátrixunknak a 6 2

, azaz a 3. Tehát a 2 lesz a

helyes pivotelem, de a hibaüzenetből: Nem a legszűkebb keresztmetszet egyikét

választotta! A 4 sor megfelelő választás lenne! Így kiderül, hogy a 0 és a 2 közül kell

választanunk, mert a 𝑏 oszlopból nem lehet választani, és korábban kikötöttük, hogy csak

pozitív szám lehet a pivotelem, ebből kiderül, hogy a 2 lesz a helyes megoldás.

12. ÁBRA: A HELYES PIVOTELEM KIVÁLASZTÁSA

Ami által meg is kaptuk az első pivotálás eredményét, illetve előtte láthatjuk az eredeti

mátrixunkat a bázisváltozókkal együtt!

Page 42: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

42

Bázisváltozók létrehozása:

1,–z kiíratása:

for (int i = 0; i < ertek1 - 1; i++)

{

sorBazis[i] = "u" + (i + 1);

}

sorBazis[ertek1 - 1] = "-z";

}

2, x kiíratása:

for (int j = 0; j < ertek2-1; j++)

{

(j + 1);

}

oszlopBazis[j] = "x" +

3, b kiíratása:

oszlopBazis[ertek2 - 1] = "b";

A következő pivottábla kirajzolásának módja:

ujSorKezdet = (sor + sorKoz) * pivotalasSzam + 1;

Console.WriteLine("HOL " + ujSorKezdet);

for (int i = 0; i < sorKoz; i++)

{

dataGridView2.Rows.Add();

}

for (int j = 0; j < oszlop; j++)

{

dataGridView2.Rows[ujSorKezdet - 1].Cells[j +

oszlopEltolas].Value = oszlopBazis[j];

}

Page 43: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

43

Ezt követően ki kell választanunk a következő helyes pivotelemet, a 2 nem helyes

megoldás, de a hibaüzenetből megtudjuk, hogy a 9. sorban található a helyes pivotelem.

Megnézzük a 9. sorban: a 6 és a −3 értékek vannak, ebből kiderül, hogy negatív érték sem

lehet pivotelem, illetve majd később kiderül, hogy a célfüggvény értéke negatív előjelű,

akkor az sem lehet pivotelemnek választani. A helyes választás a : 6.

13. ÁBRA: A 2 TÁBLÁBÓL A 3. TÁBLA LEPIVOTÁLÁSA

Szimplex-módszer algoritmusának lépései programkóddal:

1) sor és oszlop változók cseréje:

String t = oszlopBazis[pivotOszlop];

oszlopBazis[pivotOszlop] = sorBazis[pivotSor];

sorBazis[pivotSor] = t;

2) A pivotelem helyét a reciprokkal elosztjuk (1/pivotelem):

double eredetiPivotelem = elozoMatrix[pivotSor, pivotOszlop];

elozoMatrix[pivotSor, pivotOszlop] = 1 / elozoMatrix[pivotSor, pivotOszlop]

Page 44: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

44

3) Pivotelem sorát elosztjuk a pivotelemmel (pivotelemet nem kell osztani, mivel a 2.

pontban vettük a reciprókát:

double[,] eredetiPivotSor = new double[1, oszlop];

for (int j = 0; j < oszlop; j++)

{

if (j != pivotOszlop)

{

eredetiPivotelem;

}

eredetiPivotSor[0, j] = elozoMatrix[pivotSor, j];

elozoMatrix[pivotSor, j] = elozoMatrix[pivotSor, j] /

}

4) A pivotelem oszlopát elosztjuk a pivotelem (−1) szeresével. Kivéve a pivotelemet

mivel azt már eloszottuk a pivotelem reciprokával (1/pivotelem):

double[,] eredetiPivotOszlop = new double[sor, 1];

for (int i = 0; i < sor; i++)

{

if (i != pivotSor)

{

eredetiPivotOszlop[i, 0] = elozoMatrix[i, pivotOszlop];

elozoMatrix[i, pivotOszlop] = elozoMatrix[i, pivotOszlop] /

(-eredetiPivotelem);

}

}

Page 45: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

45

5) téglalapszabály

Képlete: 𝑑 = 𝑑 − 𝑏𝑐

, ahol 𝑎 ≠ 0 , 𝑏 és 𝑐 a téglalap két csúcsának felel meg. És abban 𝑎

az esetben teljesül ez a feltétel, ha 𝑏 = 0 vagy 𝑐 = 0.

14. ÁBRA: A TÉGLALAPSZABÁLY

A alábbi ábrán a 18-as számra mutatom be a téglalapszabályt:

Ezen az ábrán a 𝑏 = 30, amely 𝑢1 sorban helyezkedik el, 𝑐 = 2, amely az 𝑢2 sorban

helyezkedik el, 𝑑 a keresett mező ebben az esetben 18 , és az 𝑎 = 6, amely az 𝑥1 és az

𝑢1 metszete.

Minden esetben ezt használjuk kivéve amikor a pivotelem sora, illetve oszlopa mivel ott

már elvégeztük a szükséges műveleteket, amelyet az if feltételben ki is kötöttünk:

for (int i = 0; i < sor; i++)

{

for (int j = 0; j < oszlop; j++)

{

if (i != pivotSor && j != pivotOszlop)

{

elozoMatrix[i, j] = elozoMatrix[i, j] -

(eredetiPivotSor[0, j] *

eredetiPivotOszlop[i, 0]) / eredetiPivotelem;

}

}

}

Page 46: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

46

A pivotálást addig kell folytatni, amíg minden feltétel teljesül. Tehát a pivotelem értéke

nem lehet nulla a célfüggvény értéke nem lehet negatív, illetve az utolsó sort (−𝑧) és az

utolsó oszlopot (𝑏) nem használhatjuk:

15. ÁBRA: KÖVETKEZŐ PIVOTELEM KERESÉSE AZ ELSŐ MÁR PIVOTÁLT TÁBLÁNKBÓL

Ami által megkaptuk az optimális megoldást, mivel a következő tábla elemei nem

pivotálható, mivel a célfüggvény értéke (−𝑧) értéke negatív:

16. ÁBRA: MÁSODIK TÁBLÁNK HELYES PIVOTELEMÉNEK KIVÁLASZTÁSA

Page 47: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

47

Megkaptuk a következő táblánkat, megnézzük, hogy tovább pivotálható-e a mátrixunk:

17. ÁBRA: A CÉLFÜGGVÉNY ÉRTÉKE NEM LEHET NEGATÍV

Tehát a táblánk nem pivotálható tovább, mivel mindkét célfüggvény értéke negatív előjelet

tartalmaz és emiatt a célfüggvény értéke nem növekedhet:

18. ÁBRA: AZ OPTIMÁLIS TÁBLA

Page 48: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

48

Így megkaptuk az optimális eredményt:

19. ÁBRA: EREDMÉNYEK TÁBLÁZAT KIMUTATÁSA

Eredmények táblázat kiíratásának módja:

𝑥 értékének kigyűjtése:

for(int i=1; i<oszlop; i++)

{

double ertek = 0;

for(int j=0; j<sor-1; j++)

{

if(sorBazis[j]==("x"+i))

{

ertek = elozoMatrix[j, oszlop - 1];

break;

}

}

dataGridView3.Rows[0].Cells[i - 1].Value = ("x" + i);

dataGridView3.Rows[1].Cells[i - 1].Value = ertek;

}

Page 49: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

49

𝑢 értékének kigyűjtése:

for (int i = 1; i <= sor-1; i++)

{

double ertek = 0;

for (int j = 0; j < sor - 1; j++)

{

if (sorBazis[j] == ("u" + i))

{

ertek = elozoMatrix[j, oszlop - 1];

break;

}

}

dataGridView3.Rows[2].Cells[i - 1].Value = ("u" + i);

dataGridView3.Rows[3].Cells[i - 1].Value = ertek;

}

𝑧 értékének a kigyűjtése:

oszlop-1];

dataGridView3.Rows[4].Cells[0].Value = "z";

dataGridView3.Rows[5].Cells[0].Value = (-1)*elozoMatrix[sor-1,

}

Így megkaptuk az optimális értékeket! A 𝑧 értéket úgy kaptuk meg, hogy a – 𝑧 értékét

megszoroztuk (−1) −el!

Elemzése:

Tehát az 𝑥1 termékből 5 darabot állítunk elő, míg az 𝑥2 termékből pedig 3 darabot. Az

első és a negyedik nyersanyag teljesen elfogy, míg a második nyersanyagból 8 egység, a

harmadik nyersanyagból 16 egység maradt. Ez a termelési program mellett a

maximálisnak tekinthető bevétel (𝑧) 30 egység lett.

Page 50: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

50

Összefoglaló:

Szakdolgozatom célja az Operáció-kutatás egyik ágának a Szimplex - módszernek a

bemutatása és erre egy oktatás segítő program készítése, amely megkönnyíti a szimplex

módszer használatát a diákok számára.

A szakdolgozatom első felében az optimalizálás történeti áttekintését és a szükséges

információkat mutatom be, amely során a gyakorlati, matematikai része könnyebben

megérthető, bár ez a terület, inkább gyakorlatorientált mégis szükség van olyan

információkra, amelyek nélkül nem lehetne a gyakorlati részét teljes mértékben elsajátítani.

A második részben az oktatást segítő programot, annak használatát, folyamatait

mutatom be programkódokkal és a programkód általi képekkel, amely programozási

előképzettség nélkül is könnyen használható.

A program készítése során Visual Studio Enterprise 2017-es fejlesztőkörnyezetet

használtam, a program C# nyelven íródott grafikus felülettel. A program lépésről-lépésre

végig vezeti a feladat menetét, a nyomógombok segítségével könnyen használható a

program néhány kattintással.

A Szimplex-módszert bemutató program során lehetőségünk van egy adott fájlból

betölteni egy kész feladatot és annak sajátosságait, megoldását vizsgálni és saját feladat

vizsgálatára is módunk van, amelyet a felhasználó saját adatai során tölthet be. Ezáltal egy

olyan optimális megoldást kapunk, amit a gazdaságban és a termelésben is előszeretettel

használnak, mivel optimális termelés mellett nagyobb haszon érhető el.

Úgy gondolom, hogy a XXI. században az online-tanulásnak nagyon nagy

jelentősége van, már a gyerekek kisgyermek kortól a számítógép világában élnek, és úgy

gondolom, hogy a felesleges időtöltések helyett szükség lenne olyan dolgokat tanulniuk,

amelyekhez később hasznát tudják venni a továbbiakban is.

Page 51: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

51

Summary:

The aim of my thesis is to discuss one of the methods in the field of operations

research, namely the simplex method, and also to create an education support program

which makes the use of the simplex method easier for students.

The first part of my thesis gives a historical review of optimization and offers the

necessary information needed to understand the practical and mathematical parts. Though

this field is rather practical, there are some pieces of information that are needed for the

complete acquisition of the practical part itself.

The second part of the thesis deals with the education support program – which can

be used easily without having any experience or qualification in programming – and its use

and processes, which are illustrated by program codes and pictures.

The program was made using the Visual Studio Enterprise 2017 development

environment and was created in C# programming language with a graphic user interface.

The program leads the user along the task step by step: it can be used easily only with a few

clicks.

The program, which uses the simplex method, allows the user to load a finished task

from a given file and to analyze its characteristics and solution. But it is also possible for the

users to analyze their own task by giving their own data. This gives them an optimal

solution which is often used in economy and production as well, since optimal production

leads to a greater profit.

In my opinion, online learning has a great importance in the 21st century. Children

are surrounded by computers and several kinds of electronic devices from early on, and I

believe that instead of spending their time with useless activities, they should learn things

that they can make use of later in the future.

Page 52: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

52

Adathordozó használata:

Egy CD tarozik a Szakdolgozatomhoz mellékletként.

A CD-n két mappa található:

- Szakdolgozat:

A Szakdolgozat található PDF formátumban: Szakdolgozat.pdf.

- Program:

Itt található a program forráskódjai, illetve a fájl beolvasásához

Szükséges feladatok .txt formátumban.

A program futásához a Microsoft Visual Studio 2017 Enterprise-t javaslom.

Az alkalmazás megtalálható a WindowsFormApplication65 dokumentumban, itt a .csproj

kiterjesztésű fájlt kell elindítani.

A példaprogramok a WindowsFormApplication65 mappán belül a Peldaprogramok

mappában találhatóak.

Page 53: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

53

Irodalomjegyzék: [1] Dr. Tóth József: Operációkutatási ismeretek és mezőgazdasági alkalmazásuk, 1988

Debrecen , Agrártudományi Egyetem Debrecen

[2] Farkas István: Bevezetés a lineáris programozásba, Debreceni Egyetem Gazdaságelemzési

és Statisztikai Tanszék

[3] Ferenczi Zoltán: Operációkutatás, 2006 , Széchenyi István Egyetem

[4] Frank András – Király Tamás: Operációkutatás, 2013, Eötvös Lóránd Természettudományi

Egyetem

[5] Fábos Róbert: Katonai logisztika.

[6] Komáromi Éva: Lineáris programozás, 2002, Budapesti Közgazdaságtudományi és

Államigazgatási Egyetem

[7] Dr. Nagy Tamás: Egészértékű programozás, Miskolci Egyetem, Alkalmazott Matematikai

Tanszék

[8] Dr. Ábrahám István: A lineáris programozás I.

[9] Szántai Tamás: Az operációkutatás matematikai módszerei, 1999, Budapest

[10] Varró Zoltán – Temesi József: Operációkutatás, 2007, AULA Kiadó Kft, Budapesti

Corvinus Egyetem.

[11] Tóth Georgina Nóra: Operációkutatás

[12] Dr. Házy Attila: Nemlineáris optimalizálás, 2011, Kempelen Farkas Hallgatói

Információs Központ

[13] Klaus Neumann : Operations Research

[14] Hamdy A. Taha: Operations Research an introduction

[15] Reiter István: C# programozás lépésről lépésre, 2016, Jedlik Oktatási Stúdió Bt.

[16] Illés Zoltán: Programozás C# nyelven, 2008, Jedlik Oktatási Stúdió Bt.

[17] https://hu.wikipedia.org/wiki/Oper%C3%A1ci%C3%B3kutat%C3%A1s

[18] https://hu.wikipedia.org/wiki/Szimplex_algoritmus

[19] https://hu.wikipedia.org/wiki/Line%C3%A1ris_optimaliz%C3%A1l%C3%A1s

Page 54: SZAKDOLGOZAT - phd.lib.uni-miskolc.huphd.lib.uni-miskolc.hu/document/28322/24015.pdf · 6 2. Az Operációkutatás 2.1 Az operációkutatás fogalma Az alkalmazott matematika azon

54

Köszönetnyilvánítás:

Elsősorban szeretném megköszönni témavezetőmnek, Dr. Házy Attila egyetemi

docensnek a segítséget, nem jöhetett volna létre nélküle ez a szakdolgozat. Ő mutatott rá az

optimalizálás lényegére és a szakdolgozati témát is ő ajánlotta számomra, emellett számos

szakirodalomra hívta fel a figyelmemet. Szeretném még megköszönni Lengyelné dr.

Szilágyi Szilvia tanárnőnek a folyamatos segítségét, ami előre segítette a Szakdolgozatom

megírását. Nem utolsó sorban szeretném megköszönni a családomnak, barátaimnak a

támogatást.