Búvárrobot optimalizálási feladat (Python)
A projekt célja egy búvárrobot útvonalának optimalizálása volt egy 3D térben. A robot korlátozott idő és sebesség mellett mozog, és célja az összegyűjtött gyöngyök értékének maximalizálása, miközben vissza kell térnie a kiindulási pontra.
A feladat lényegi eleme: optimalizálási probléma megoldása heurisztikus módszerrel.
Fontosabb függvények és szerepük
1️⃣ tavolsag() – Két pont közti euklideszi távolság
def tavolsag(x, y, z, i):
return math.sqrt(
(x - gx)**2 +
(y - gy)**2 +
(z - gz)**2
)
Ez a függvény számolja ki a robot és egy gyöngy közötti 3D távolságot. Erre azért volt szükség, mert az optimalizálás alapja az érték és a megtett út aránya.
2️⃣ arany() – Érték / Távolság arány
def arany(x, y, z, i):
return gyongy_ertek / tavolsag(...)
Ez a függvény meghatározza, hogy egy gyöngy mennyire "éri meg" a robot aktuális pozíciójához képest. Minél nagyobb az érték és minél kisebb a távolság, annál jobb döntés azt választani.
👉 Ez a greedy stratégia alapja.
3️⃣ origo_robot() – Visszatérési távolság
def origo_robot(x,y,z):
return sqrt(x² + y² + z²)
Ez biztosítja, hogy a robot mindig vissza tudjon térni a kiindulási pontra. Ez a feltétel akadályozza meg, hogy a robot túl messzire menjen és "beragadjon".
Döntési mechanizmus
- Kiszámolja minden gyöngy arányát
- Kiválasztja a legjobb arányút
- Ellenőrzi az időkorlátot
- Ha nem fér bele → visszalép
- Ha belefér → hozzáadja az útvonalhoz
Ez egy heurisztikus optimalizálás, nem garantált globális optimum, de hatékony és gyors megoldás.
Pygame megjelenítés
A program grafikus felületen is megjeleníti a robot mozgását.
- 🔵 Kék háttér → medence
- 🟡 Sárga pontok → gyöngyök
- 🔴 Piros kör → robot
Nehézségek és tanulságok
- 3D távolságszámítás implementálása
- Időkorlát matematikai kezelése
- Visszalépési logika megvalósítása
- Grafikus koordináta átskálázás
- Animáció időzítése
A projekt fejlesztette az:
✔ algoritmikus gondolkodást
✔ optimalizálási szemléletet
✔ strukturált kódírást
✔ grafikus programozási ismereteket