ELTE - OperáciĂłkutatás SzámĂtĂłgĂ©pes MĂłdszerei¶
2025/2026-os tanév II. (tavaszi) félév.
A tárgy cĂ©lja¶
A tárgy cĂ©lja, hogy a hallgatĂłk a fĂ©lĂ©v során megismerkedjenek kĂĽlönfĂ©le optimalizáciĂłs feladatok gyakorlati, számĂtĂłgĂ©pes megoldásának lehetĹ‘sĂ©geivel.
A fĂ©lĂ©v nagy rĂ©szĂ©ben egĂ©szĂ©rtĂ©kű programozási mĂłdszerekkel foglalkozunk: alapvetĹ‘ feladatok (hátizsák feladat, utazóügynök feladat, stb.); alapvetĹ‘ modellezĂ©si technikák; vágás-generálás (utazóügynök feladat, gĂ©pĂĽtemezĂ©s, stb.); oszlop-generálás (ládapakoláso feladat, stb.); Benders-dekompozĂciĂł (párhuzamos gĂ©pes ĂĽtemezĂ©s, stb.), stb. Röviden - pár feladat erejĂ©ig - szĂł lesz mĂ©g korlátozás programozásrĂłl, Ă©s lokális keresĂ©sen alapulĂł heurisztikák is elĹ‘kerĂĽlnek majd.
A gyakorlatokon a feladatok megoldásához a Python programozási nyelvet használjuk.
KövetelmĂ©nyek¶
A hallgatĂłknak a fĂ©lĂ©v során kĂ©t beadandĂł feladatot kell teljesĂteniĂĽk a gyakorlati jegy megszerzĂ©sĂ©hez.
A fĂ©lĂ©v menete¶
Csütörtök 8:30-10:00, D 3.105 (Grafika labor) | Ha valaki a saját laptopján szeretné az órai munkát végezni, nyugodtan hozza magával. Sőt!
[1] 2026.02.05. (Regisztrációs időszak)
[2] 2026.02.12.
Korlátozás programozás: bevezetés.
alldifferent constraint
sendmoremoney.py
sudoku.py
queens.py
[3] 2026.02.19.
Korlátozás programozás: ütemezés és pakolás.
interval variables, non-overlapping constraints
scheduling.py (scheduling_instances.py)
rectangle.py
[4] 2026.02.26.
Egészértékű programozás: bevezetés.
constraint generation
knapsack.py
(packing_instances.py)
sudoku.py
queens.py
[5] 2026.03.05.
Egészértékű programozás: az utazóügynök feladat (TSP) különböző formulációi.
constraint generation, extended formulation, big-M formulation, lifting inequalities
Első beadandó feladat ismertetése.
[6] 2026.03.12.
Egészértékű programozás: vágás-és-szétválasztás az utazóügynök problémára és egy egygépes ütemezési feladatra.
branch-and-cut
tsp_mip.py
(tsp_instances.py)
singlemachine.py (scheduling_instances.py)
[7] 2026.03.19.
EgĂ©szĂ©rtĂ©kű programozás: Benders dekompozĂciĂł egy ĂĽtemezĂ©si feladatra párhuzamos gĂ©pekkel.
Benders decomposition
parallelmachines.py
(scheduling_instances.py)
[8] 2026.03.26.
Egészértékű programozás: oszlopgenerálás a ládapakolási feladatra.
column generation
binpacking.py
(packing_instances.py)
[9] 2026.04.02. (Tavaszi szĂĽnet)
[10] 2026.04.09.
Első beadandó feladat bemutatása.
[11] 2026.04.16.
[12] 2026.04.23.
[13] 2026.04.30.
[14] 2026.05.07. (Eötvös nap)
[15] 2026.05.14.
ElĂ©rhetĹ‘sĂ©g¶
đź“§ marko.horvath (kukac) sztaki (pont) hu
📍 SZTAKI (1111 Budapest, Kende utca 13-17.), K518
📅 Fogadóórák előre egyeztetett időpontban.
Technikai dolgok¶
Visual Studio Code¶
Az órán Visual Studio Code-ban mutatom a példákat, de persze, mindenki használhatja a kedvenc szerkesztőjét.
Python¶
A következő csomagokat fogjuk használni:
Google OR-Tools¶
Korlátozás programozáshoz a CP-SAT-ot, egészértékű programozáshoz a MathOpt csomagot használjuk majd.
python -m pip install ortools
A MathOpt jĂł pár solver-t támogat, de ezek nem mindegyike jön automatikusan a telepĂtĂ©skor. Érdemes ezĂ©rt telepĂteni valamelyiket a következĹ‘k közĂĽl:
-
HiGHS: NyĂlt forráskodĂł megoldĂł (MIP, QP).
-
SCIP: NyĂlt forráskodĂł megoldĂł (MIP, MINLP, CIP).
-
Gurobi: Kereskedelmi megoldĂł, de tudtok diák licence-t igĂ©nyelni hozzá. A 12-es verziĂłt Ă©rdemes telepĂteni, mert a MathOpt annál Ăşjabbat egyelĹ‘re nem támogat.
EgyĂ©b csomagok¶
Matplotlib. Rajzolni.
python -m pip install matplotlib
NetworkX. Gráfokhoz.
python -m pip install networkx