When the user wants to optimize two or more conflicting objectives and reason about Pareto trade-offs — Pareto dominance and efficient sets, exact front generation with weighted-sum and epsilon-constraint scalarizations in Gurobi, NSGA-II mechanics (fast non-dominated sorting, crowding distance, crowded tournament)…
When the user wants to design or tune mutation and perturbation operators — bit-flip, creep, Gaussian, polynomial; swap, insertion, inversion, scramble, segment moves for permutations; destroy-style perturbations; and mutation-strength adaptation. Also use when the user mentions "mutation operator," "bit flip," "swap…
When the user needs a critical, operator-level assessment of metaphor-based metaheuristics — what harmony search, cuckoo search, firefly, grey wolf, whale, or bat algorithms actually compute, and when to just use an established method. Also use when the user mentions "harmony search," "cuckoo search," "firefly…
When the user wants to solve flow problems on a network - max-flow/min-cut, min-cost flow, multicommodity flow, or shortest paths via Dijkstra, Bellman-Ford, and label-correcting methods - using networkx, gurobipy, or specialized algorithms, including when total unimodularity makes LP solutions integral for free. Also…
When the user wants to remove slow Python loops from metaheuristic or optimization code using NumPy — population-level operations, batch fitness evaluation, distance matrices, broadcasting, argsort/argpartition idioms, defaultrng, and memory layout. Also use when the user mentions "vectorize," "numpy broadcasting,"…
When the user wants to solve LPs, MIPs, or CP models without a commercial license — choosing among HiGHS, SCIP, CBC, OR-Tools (CP-SAT and MathOpt), PuLP, Pyomo, and python-mip, comparing licenses, setting realistic performance expectations versus Gurobi, and migrating gurobipy models to an open-source stack. Also use…
When the user wants to organize optimization research code into a reproducible project — separating the src package, scripts, configs, and results; JSON/YAML config systems; factory registration of algorithms and problems; seed discipline; atomic result writing; and light testing. Also use when the user mentions…
When the user wants to tune metaheuristic or solver parameters with Optuna, including search-space definition, TPE sampling, pruning weak configurations early, multi-instance objectives (mean/median over an instance set), and held-out validation against overtuning. Also use when the user mentions "Optuna,"…
When the user wants to record, store, and aggregate computational-experiment results for optimization algorithms with pandas - tidy one-row-per-run tables, run metadata (instance, seed, algorithm, parameters, runtime, objective), atomic CSV/parquet writing, aggregation across instances and seeds, and pivot tables for…
When the user wants to parallelize a metaheuristic or combine several searches — island models with migration, master-slave fitness evaluation, parallel multistart, cooperative search, or algorithm portfolios — with the Python practicalities (multiprocessing, joblib, vectorization-first). Also use when the user…
When the user wants to schedule jobs on one machine or on identical, uniform, or unrelated parallel machines: dispatching rules (SPT, WSPT, EDD, Moore-Hodgson), LPT and list scheduling with worst-case bounds, exact MIP models for makespan and due-date objectives, and LNS for large instances. Also use when the user…
When the user wants to design, implement, or tune particle swarm optimization, covering velocity and position updates, inertia weight, constriction, swarm topologies, and discrete adaptations such as random-key and binary PSO. Also use when the user mentions "particle swarm," "PSO," "inertia weight," "velocity…