discrete optimization (tsz. discrete optimizations)
Discrete optimization (diszkrét optimalizálás) egy olyan optimalizálási ág, ahol a döntési változók csak diszkrét értékeket vehetnek fel – tipikusan egész számokat, bináris értékeket (0/1), vagy véges halmazból származó választásokat. Ez a megközelítés különösen fontos a valós életbeli kombinatorikus problémák megoldásában, ahol a döntések nem lehetnek folytonosak (pl. „igen/nem”, „melyik útvonal”).
ahol:
Típus | Példa |
---|---|
Integer Programming (IP) | Minden változó egész |
Binary Integer Programming (BIP) | Csak 0 vagy 1 lehet |
Mixed Integer Programming (MIP) | Egyes változók folytonosak, mások egész |
Combinatorial optimization | Kombinációk, útvonalak, hozzárendelések |
Constraint Satisfaction Problem (CSP) | Véges értéktartományon, korlátokkal |
Probléma | Leírás |
---|---|
Knapsack problem | Válassz tárgyakat, hogy érték maximális legyen, súly ne lépjen túl |
Travelling Salesman Problem (TSP) | Legrövidebb körút |
Vehicle Routing Problem (VRP) | Járművek útvonalainak tervezése |
Job Scheduling | Feladatok beosztása időre |
Set Cover, SAT | Kombinatorikus logikai/halmaz fedések |
Graph coloring | Minimális szín a szomszédos csúcsok különbözéséhez |
Módszer | Leírás |
---|---|
Branch and Bound | Megoldástér rekurzív bontása, alsó-felső korlátok |
Branch and Cut | Vágóélek + BnB kombinálása |
Dynamic Programming | Kis részproblémák összeépítése |
Integer Linear Programming (ILP) | LP-relaxáció, majd visszakényszerítés egész értékekre |
Constraint Programming (CP) | Korlátok alapján kizárás, propagáció |
Módszer | Alkalmazás |
---|---|
Greedy algoritmusok | Gyors, lokális választás |
Genetikus algoritmusok | Evolúciós megközelítés |
Simulated Annealing | Sztochasztikus, energia alapú keresés |
Ant Colony Optimization | Kölcsönhatáson alapuló keresés |
Tabu Search | Tiltólista az ismétlés elkerülésére |
Particle Swarm Optimization | (kiegészítve bináris változókra is) |
Eszköz / Könyvtár | Típus |
---|---|
CPLEX, Gurobi | IP/MIP solver |
CBC, GLPK | Nyílt forráskódú IP megoldók |
MiniZinc | Constraint programming nyelv |
OR-Tools (Google) | TSP, VRP, CSP, IP megoldások |
Pyomo | Python modellező eszköz |
Z3 Solver | Logikai formulák, SAT/SMT megoldás |
pulp
)from pulp import *
values =
weights =
capacity = 50
x =
prob = LpProblem("Knapsack", LpMaximize)
prob += lpSum(x*values for i in range(len(x)))
prob += lpSum(x*weights for i in range(len(x))) <= capacity
prob.solve()
print("Max value:", value(prob.objective))
print("Selected:", .value() == 1])
✅ Előnyök | ❌ Hátrányok |
---|---|
Valósághű, bináris döntések | NP-teljes problémák gyakoriak |
Gazdag modellezési lehetőség | Méret növekedésével gyorsan bonyolult |
Sok eszköz, solver létezik | Paraméterhangolás bonyolult lehet |
Fogalom | Leírás |
---|---|
Diszkrét optimalizálás | Nem-folytonos, véges értékkészlettel rendelkező optimalizálás |
Típusai | ILP, BIP, CSP, kombinatorikus |
Megoldás | Exakt vagy heurisztikus módszerekkel |
Használat | Ütemezés, útvonaltervezés, hozzárendelés |
Szoftverek | CPLEX, Gurobi, OR-Tools, MiniZinc, Pyomo |