hajibabaie
User76 Claude Code skills for combinatorial optimization and operations research: MILP with Gurobi, metaheuristics, encodings/operators, classic problems, and research tooling
Categories
Indexed Skills (43)
algorithm-benchmarking-statistics
When the user wants to compare optimization algorithms with a sound empirical protocol — instance and seed design, time limits, best/mean/gap reporting, nonparametric hypothesis tests, effect sizes, and the plots that summarize them. Also use when the user mentions "compare algorithms," "statistical test," "Wilcoxon," "Friedman test," "performance profile," "time-to-target," or asks "is my algorithm better" than a baseline. For benchmark instance sets and parsers, see instance-generation-and-benchmarks; for tidy run tables and aggregation, see pandas-experiment-management.
assignment-problems
When the user wants to match agents to tasks at minimum cost - linear assignment via the Hungarian algorithm, LP duality, or linear_sum_assignment; generalized assignment (GAP) via MIP, Lagrangian relaxation, and local search; bottleneck (min-max) assignment. Also use when the user mentions "assignment problem," "Hungarian algorithm," "generalized assignment," "GAP," "linear_sum_assignment," "matching," or when each task needs one agent under capacity limits. For flow formulations, see network-flow-optimization; for interaction costs between assigned pairs, see quadratic-assignment-problem.
benders-decomposition
When the user wants to solve a structured MILP or two-stage stochastic program by Benders decomposition — splitting it into an integer master and LP subproblems, deriving optimality and feasibility cuts from subproblem duals, and implementing either the classic iterative loop or branch-and-Benders-cut with lazy-constraint callbacks in Gurobi. Also use when the user mentions "Benders decomposition," "Benders cuts," "L-shaped method," "feasibility cut," "optimality cut," "master problem," or when fixing a few complicating variables leaves an easy or separable subproblem. For scenario generation and SAA, see stochastic-optimization; for callback mechanics and parameters, see gurobi-advanced-features.
biased-random-key-genetic-algorithm
When the user wants to design, implement, or tune a biased random-key genetic algorithm (BRKGA), where chromosomes are random-key vectors in [0,1), evolution uses elite/mutant partitioning with biased uniform crossover, and a decoder is the only problem-specific component. Also use when the user mentions "BRKGA," "random keys," "random-key encoding," "biased crossover," "decoder," or when genetic operators must never produce infeasible solutions. For decoder design patterns, see decoder-based-representations; for general GA operators and selection, see genetic-algorithms.
bin-packing
When the user wants to pack items into the fewest capacitated bins, compare FFD/BFD heuristics against the L1/L2 lower bounds, or build exact compact MIP and arc-flow models, plus variants with variable bin sizes and item conflicts. Also use when the user mentions "bin packing," "first fit decreasing," "minimize bins," "packing items," "lower bound L2," or when indivisible items must be partitioned into identical capacity-limited containers. For repeated item sizes with large demands and trim loss, see cutting-stock; for the pattern set-covering route, see column-generation.
branch-and-bound
When the user wants to implement a custom branch-and-bound algorithm — designing bounding functions, branching rules, node selection (depth-first vs best-first), dominance rules, and incumbent management — or to decide when custom B&B beats a MIP solver. Also use when the user mentions "custom branch and bound," "bounding function," "branching rule," "node selection," "best-first search," or when the bounding relaxation is combinatorial rather than an LP. For solver-internal B&B and MIP gaps, see integer-programming-techniques; for branch-and-price trees, see column-generation.
column-generation
When the user wants to solve linear or integer programs whose variable set is too large to enumerate, by iterating between a restricted master problem and a reduced-cost pricing problem, up to full branch-and-price. Also use when the user mentions "column generation," "pricing problem," "restricted master problem," "branch-and-price," "Gilmore-Gomory," or when the problem has exponentially many variables such as patterns, routes, or crew schedules. For deriving the master from a compact model, see dantzig-wolfe-decomposition; for labeling algorithms used in pricing, see dynamic-programming.
constraint-handling-techniques
When the user wants to handle constraints inside metaheuristics by choosing among penalty functions (static, dynamic, adaptive), repair operators, feasibility-preserving operators, decoder-based feasibility, stochastic ranking, and Deb's feasibility rules. Also use when the user mentions "constraint handling," "penalty function," "repair operator," "infeasible solutions," "feasibility rules," "adaptive penalty," or when a metaheuristic keeps returning infeasible solutions. For representation choice, see solution-encodings; for feasibility-enforcing decoders, see decoder-based-representations.
cutting-planes-valid-inequalities
When the user wants to strengthen a MIP with cutting planes and valid inequalities — deriving cover, clique, MIR, or Gomory cuts, writing separation routines, and adding them as user cuts or lazy constraints via Gurobi callbacks. Also use when the user mentions "valid inequalities," "cutting planes," "separation problem," "user cuts," "cover inequalities," "subtour elimination," or when a formulation needs exponentially many constraints generated on the fly. For callback mechanics beyond cuts, see gurobi-advanced-features; for formulation tightening, see integer-programming-techniques.
cutting-stock
When the user wants to solve one-dimensional cutting stock problems — cutting demanded item widths from standard stock rolls at minimum roll usage or trim loss — with pattern-based (Gilmore-Gomory) or compact MIP models, column generation with knapsack pricing, and integer rounding. Also use when the user mentions "cutting stock," "trim loss," "cutting patterns," "stock rolls," "pattern generation," "Gilmore-Gomory," or when a covering model has one column per feasible cutting pattern. For the generic restricted-master/pricing machinery, see column-generation; for the unit-demand cousin of this problem, see bin-packing.
dantzig-wolfe-decomposition
When the user wants to reformulate a structured LP or MIP via Dantzig-Wolfe decomposition — detect block-angular structure, build the master with convexity constraints, price columns from independent subproblems, and relate the DW bound to LP and Lagrangian bounds. Also use when the user mentions "Dantzig-Wolfe," "block-angular," "decomposable structure," "convexification," "master problem reformulation," or when a model splits into blocks tied by a few linking constraints. For the pricing loop and branch-and-price, see column-generation; for subgradient dual bounds, see lagrangian-relaxation.
decoder-based-representations
When the user wants to design an indirect encoding where a decoder maps a simple genotype (random keys, priority vectors, rule choices) to a feasible solution, including serial/parallel schedule-generation schemes and feasibility-enforcing decoders. Also use when the user mentions "decoder," "random keys," "indirect encoding," "schedule generation scheme," "priority-based encoding," "genotype-phenotype mapping," or when operators are easier to apply to a vector than to the constrained solution. For direct representation choice, see solution-encodings; for the evolutionary engine around a decoder, see biased-random-key-genetic-algorithm.
differential-evolution
When the user wants to solve continuous or mixed black-box optimization problems with differential evolution, choose among DE strategies (rand/1/bin, best/1/bin, current-to-best), tune F and CR, or adapt DE to permutation problems through random keys. Also use when the user mentions "differential evolution," "DE/rand/1," "mutation factor," "crossover rate CR," "SHADE," "jDE," or when a derivative-free population method is needed over a box-bounded continuous space. For covariance-matrix adaptation and (mu+lambda) selection, see evolution-strategies; for velocity-based swarm search, see particle-swarm-optimization.
dynamic-programming
When the user wants to design and implement dynamic programming for combinatorial optimization — state-space design, Bellman recursions, memoization vs tabulation, solution recovery, and labeling algorithms for resource-constrained shortest paths. Also use when the user mentions "dynamic programming," "Bellman recursion," "state space," "Held-Karp," "labeling algorithm," "memoization," or when the problem decomposes into stages with overlapping subproblems. For pricing loops that call a DP oracle, see column-generation; for tree search driven by DP bounds, see branch-and-bound.
estimation-of-distribution-algorithms
When the user wants to design or implement an estimation of distribution algorithm — UMDA, PBIL, compact GA, tree models, BOA, or permutation EDAs with position-frequency, edge-histogram, or Mallows models — building and sampling probabilistic models over good solutions instead of using crossover. Also use when the user mentions "estimation of distribution," "EDA," "UMDA," "PBIL," "probabilistic model-building," or when variable interactions must be learned rather than hand-coded. For recombination-based search, see genetic-algorithms; for representation and decoder choices, see solution-encodings.
evolution-strategies
When the user wants to design or implement an evolution strategy — (mu+lambda) or (mu,lambda) selection, self-adaptive step sizes, or CMA-ES — for continuous, integer, or mixed-integer search, including tuning another algorithm's parameters. Also use when the user mentions "evolution strategy," "CMA-ES," "self-adaptation," "(mu+lambda)," "step size control," or when a combinatorial problem is attacked through a continuous relaxation such as random keys. For vector-difference search, see differential-evolution; for TPE-based tuning with pruning, see optuna-hyperparameter-tuning.
facility-location-problem
When the user wants to choose facility sites and assign customers to them — UFLP, CFLP, p-median, or p-center — with strong MIP formulations, Benders or Lagrangian solution paths, and greedy, interchange, or VNS heuristics. Also use when the user mentions "facility location," "p-median," "p-center," "open facilities," "location-allocation," "UFLP," "warehouse location," or when fixed opening costs trade off against assignment or transport costs. For optimality-cut decomposition at scale, see benders-decomposition; for demand uncertainty, see stochastic-optimization.
fitness-evaluation-and-caching
When the user wants to speed up objective evaluation in a metaheuristic or local search — profiling, delta/incremental evaluation, memoization with solution hashing, surrogate, vectorized batch, and parallel evaluation. Also use when the user mentions "fitness evaluation," "delta evaluation," "incremental evaluation," "memoization," "expensive objective," or "evaluation bottleneck," or when most runtime goes to recomputing objectives from scratch. For move and neighborhood design, see local-search-and-neighborhoods; for array-level speedups, see numpy-vectorization-for-optimization.
fitness-landscape-analysis
When the user wants to analyze a fitness landscape before or while designing a search algorithm — measuring ruggedness with random-walk autocorrelation and correlation length, fitness-distance correlation, plateaus and neutrality, and sampled local optima networks — and to use those measurements to choose operators and predict problem hardness. Also use when the user mentions "fitness landscape," "ruggedness," "fitness-distance correlation," "autocorrelation," "problem hardness," "big valley," or "neutrality," or when a metaheuristic stagnates for unclear reasons. For move and neighborhood design, see local-search-and-neighborhoods; for turning the diagnosis into a full algorithm design, see metaheuristic-design-principles.
flow-shop-scheduling
When the user wants to model or solve flow-shop scheduling problems - permutation flow-shop makespan computation, the NEH heuristic, MIP models in gurobipy, and iterated greedy as the state-of-the-art metaheuristic, with a makespan-plus-tardiness multi-objective extension. Also use when the user mentions "flow shop," "permutation flow shop," "NEH," "iterated greedy," "Taillard," "makespan minimization," or when every job visits all machines in the same fixed order. For job-specific machine routes, see job-shop-scheduling; for Pareto trade-off analysis, see multi-objective-optimization.
git-for-research-code
When the user wants to version-control optimization research code - small commits per experiment change, tags for paper result snapshots, .gitignore for solver logs, linking result tables to commit hashes, and branch strategy for risky refactors. Also use when the user mentions "git workflow," "version control research," "tag results," "reproducible experiments git," "gitignore solver," or when a paper number must trace to an exact code state. For repository layout, see optimization-project-structure; for tidy result tables, see pandas-experiment-management.
graph-coloring
When the user wants to assign colors (labels, slots, frequencies) to graph vertices so adjacent vertices differ, minimize the number of colors used, or bound the chromatic number with exact or heuristic methods. Also use when the user mentions "graph coloring," "chromatic number," "DSATUR," "tabucol," "Kempe chains," "coloring conflicts," or when items must share scarce resources subject to pairwise conflicts (exam slots, CPU registers, radio frequencies). For full timetabling models with soft constraints, see timetabling-and-rostering; for CP-SAT modeling depth, see constraint-programming.
grasp
When the user wants to implement GRASP — multi-start greedy randomized construction with a restricted candidate list followed by local search — including alpha tuning, reactive GRASP, and path relinking hybrids. Also use when the user mentions "GRASP," "greedy randomized," "restricted candidate list," "RCL," "multi-start," "semi-greedy," or when a good greedy heuristic exists but its deterministic bias must be escaped by randomized restarts. For the improvement phase, see local-search-and-neighborhoods; for elite-set intensification, see scatter-search-path-relinking.
guided-local-search
When the user wants to escape local optima by penalizing solution features and re-optimizing an augmented objective — guided local search (GLS) design, implementation, lambda calibration, penalty decay, and pairing with fast local search. Also use when the user mentions "guided local search," "GLS," "feature penalties," "augmented objective," "penalty decay," "escape local optimum," or OR-Tools' GUIDED_LOCAL_SEARCH routing metaheuristic. For neighborhood and delta-evaluation design, see local-search-and-neighborhoods; for memory-based escape via move attributes, see tabu-search.
gurobi-advanced-features
When the user wants to use Gurobi beyond plain model building — callbacks for lazy constraints, user cuts, heuristic solution injection, and early termination; IIS computation for diagnosing an infeasible model; the solution pool; the multi-objective API; the matrix API (addMVar/addMConstr); MIP starts; and parameter tuning with the built-in tuning tool. Also use when the user mentions "Gurobi callback," "lazy constraints," "IIS," "solution pool," "Gurobi parameters," "infeasible model," or "MIP start." For core model construction, see milp-modeling-gurobi; for cut families and separation theory, see cutting-planes-valid-inequalities.
hyper-heuristics
When the user wants to build a hyper-heuristic — a search method that selects or generates low-level heuristics instead of searching solutions directly — covering selection hyper-heuristics (heuristic selection plus move acceptance), low-level heuristic pool design, learning and reward schemes, and generation hyper-heuristics. Also use when the user mentions "hyper-heuristic," "operator selection," "low-level heuristics," "heuristic selection," "move acceptance," "choice function," or when many candidate operators exist and none dominates across instances. For adaptive destroy/repair weights, see large-neighborhood-search; for choosing the overall search paradigm, see metaheuristic-design-principles.
instance-generation-and-benchmarks
When the user wants to assemble instances for optimization experiments by parsing standard benchmarks (TSPLIB, CVRPLIB/Solomon, OR-Library, MIPLIB, QAPLIB, Taillard), writing seeded generators with controlled hardness, reporting instance features, or building train/test splits for tuning. Also use when the user mentions "benchmark instances," "TSPLIB," "Solomon instances," "OR-Library," "instance generator," "test instances," or when a study needs a defensible test bed. For statistical comparison, see algorithm-benchmarking-statistics; for feasibility checking, see solution-validation-testing.
integer-programming-techniques
When the user wants to diagnose and fix slow MIP solves — branch-and-bound mechanics inside modern solvers, LP relaxation strength, MIP gap interpretation, formulation tightening, symmetry breaking, big-M versus indicator constraints, and presolve effects. Also use when the user mentions "branch and bound," "MIP gap," "LP relaxation," "symmetry breaking," "tighten formulation," "big-M," or when the dual bound stalls while the incumbent stops improving. For building gurobipy models from scratch, see milp-modeling-gurobi; for implementing a custom search tree, see branch-and-bound.
iterated-local-search
When the user wants to design, implement, or tune iterated local search (ILS) — the local-search + perturbation + acceptance loop that is the strongest simple baseline for permutation and routing problems. Also use when the user mentions "iterated local search," "ILS," "perturbation," "kick move," "double-bridge," "iterated greedy," "restart strategy," or when a hill climber keeps returning the same local optimum and needs a principled escape mechanism. For neighborhood and delta-evaluation design, see local-search-and-neighborhoods; for randomized multi-start construction, see grasp.
job-shop-scheduling
When the user wants to model and solve job-shop scheduling problems, sequencing job operations on machines under fixed per-job routes, minimizing makespan or tardiness, via disjunctive MIP, CP-SAT interval models, or critical-path tabu search. Also use when the user mentions "job shop," "disjunctive constraints," "makespan," "operations sequencing," "critical path neighborhood," "shifting bottleneck," or when every job visits machines in its own technological order. For permutation flow shops, see flow-shop-scheduling; for deeper CP-SAT modeling, see constraint-programming.
knapsack-problems
When the user wants to formulate and solve knapsack problems — 0-1, bounded, multiple, multidimensional, or quadratic — using dynamic programming, branch-and-bound, MIP, greedy bounds, or metaheuristics. Also use when the user mentions "knapsack," "0-1 knapsack," "multidimensional knapsack," "subset selection," "capacity constraint," or when a knapsack appears as a pricing or separation subproblem inside a larger algorithm. For Bellman recursions and state design, see dynamic-programming; for pricing loops built on a knapsack solver, see column-generation.
lagrangian-relaxation
When the user wants to compute strong dual bounds for integer programs by dualizing complicating constraints, optimizing the Lagrangian dual with subgradient methods, and recovering feasible solutions with Lagrangian heuristics. Also use when the user mentions "Lagrangian relaxation," "subgradient," "Lagrangian bound," "dualize constraints," "Lagrangian heuristic," or when a MIP would be easy except for a few coupling constraints. For LP duality foundations, see linear-programming-fundamentals; for the column-generation view of the same bound, see dantzig-wolfe-decomposition.
large-neighborhood-search
When the user wants to implement or tune large neighborhood search (LNS) or adaptive LNS (ALNS), covering destroy/repair operator design, adaptive operator weights, acceptance criteria, and noise, for routing, scheduling, and tightly constrained problems. Also use when the user mentions "large neighborhood search," "ALNS," "destroy and repair," "removal operator," "insertion heuristic," "adaptive weights," "ruin and recreate," or when small-move local search stalls because moves are infeasible. For VRP baselines, see vehicle-routing-problem; for exact MIP repair, see matheuristics.
linear-programming-fundamentals
When the user wants to formulate linear programs, solve them with simplex or barrier methods, and interpret the result through duality — shadow prices, reduced costs, sensitivity ranges, degeneracy. Also use when the user mentions "linear programming," "dual values," "shadow price," "sensitivity analysis," "reduced cost," "LP relaxation duals," or when a constraint's economic price is needed to explain or decompose a model. For mixed-integer models, see milp-modeling-gurobi; for LPs whose columns must be priced on demand, see column-generation.
linearization-techniques
When the user wants to turn nonlinear terms — variable products, absolute values, min/max, piecewise-linear functions, logical implications, or fractional objectives — into mixed-integer linear constraints, or needs tight big-M values. Also use when the user mentions "linearize," "big-M," "bilinear," "piecewise linear," "indicator constraint," "product of variables," or "McCormick," or when a quadratic model must run on a MILP solver. For overall MILP construction, see milp-modeling-gurobi; for formulation strength and cuts, see integer-programming-techniques.
local-search-and-neighborhoods
When the user wants to design or implement neighborhood-based local search - choosing moves (swap, insertion, 2-opt, Or-opt, exchange), writing O(1)/O(n) delta evaluation, first vs best improvement, scan order, and move data structures. Also use when the user mentions "local search," "2-opt," "neighborhood," "delta evaluation," "hill climbing," "first improvement," or when a heuristic recomputes the full objective after every move. For accepting worsening moves to escape local optima, see simulated-annealing; for perturbation-and-restart wrappers, see iterated-local-search.
lot-sizing
When the user wants to model and solve dynamic lot-sizing problems, from uncapacitated single-item lot sizing to multi-item capacitated lot sizing (CLSP) with setup times, covering Wagner-Whitin DP, facility-location reformulation, (l,S) valid inequalities, big-bucket vs small-bucket models, and fix-and-optimize. Also use when the user mentions "lot sizing," "Wagner-Whitin," "setup costs," "CLSP," "production planning periods," or a setup-vs-holding cost trade-off over a discrete horizon. For DP recursion design, see dynamic-programming; for MIP-based improvement loops, see matheuristics.
matheuristics
When the user wants to hybridize a MIP solver with heuristic search — fix-and-optimize, relax-and-fix, MIP-based destroy-and-repair (LNS with exact repair), local branching, or solution polishing — including budgeting solver calls inside the loop. Also use when the user mentions "matheuristic," "fix-and-optimize," "relax-and-fix," "local branching," "MIP heuristic hybrid," "proximity search," or when the full MIP stalls while sub-MIPs with most binaries fixed solve in seconds. For heuristic destroy-repair, see large-neighborhood-search; for MIP starts and variable hints, see warm-starts-and-initial-solutions.
memetic-algorithms
When the user wants to build or tune a memetic algorithm - a genetic algorithm hybridized with local search - covering Lamarckian vs Baldwinian learning, local-search frequency and depth budgeting, restart management, and population diversity under strong local search. Also use when the user mentions "memetic algorithm," "hybrid GA," "GA with local search," "Lamarckian," "cultural algorithm," or when a plain GA stalls far from optimality and needs intensification. For the underlying evolutionary loop, see genetic-algorithms; for neighborhood and delta-evaluation design, see local-search-and-neighborhoods.
metaheuristic-design-principles
When the user wants to choose or design a metaheuristic for a combinatorial problem — picking a representation, designing operators, handling constraints, balancing intensification and diversification, and setting stopping criteria and evaluation budgets. Also use when the user mentions "which metaheuristic," "design a heuristic," "intensification," "diversification," "stopping criterion," "metaheuristic framework," or when exact methods cannot scale to the required instance size. For representation choice, see solution-encodings; for move and neighborhood design, see local-search-and-neighborhoods.
milp-modeling-gurobi
When the user wants to build, solve, and debug mixed-integer linear programs in Python with Gurobi — creating variables, writing constraint-builder functions, setting objectives and parameters, handling solver status, and extracting solutions safely. Also use when the user mentions "gurobipy," "build a MIP model," "mixed-integer program," "addVar," "addConstr," "tupledict," or asks why reading .X fails after optimize. For products of variables, big-M choices, and piecewise-linear terms, see linearization-techniques; for callbacks, IIS deep-dives, and solution pools, see gurobi-advanced-features.
mutation-and-perturbation-operators
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 mutation," "inversion mutation," "Gaussian mutation," "perturbation strength," "mutation rate," or when a metaheuristic stagnates and needs calibrated noise. For two-parent recombination, see crossover-operators; for improving-move design, see local-search-and-neighborhoods.
nature-inspired-metaheuristics-overview
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 algorithm," "grey wolf optimizer," "novel metaheuristic," "metaphor-based," or asks whether a newly published nature-inspired algorithm is worth adopting. For designing a method from proven components, see metaheuristic-design-principles; for sound empirical comparison, see algorithm-benchmarking-statistics.
Bio shown is the top-scored skill's repo description as a fallback — real GitHub bios land in a future update.