You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Build as optimization, not decision.Value = Min<u64>. Objective: Minimize total weight of tardy tasks Σ wᵢ·Uᵢ.
Do not add a bound/threshold field — let the solver find the optimum directly. See #765.
Motivation
SEQUENCING TO MINIMIZE TARDY TASK WEIGHT (P187) from Garey & Johnson, A5 SS3. A single-machine scheduling problem: given n tasks with processing times, weights, and deadlines, find a schedule that minimizes the total weight of tardy tasks (those finishing after their deadline). This is the weighted generalization of Moore's tardy-tasks problem and is NP-hard by reduction from PARTITION (Karp, 1972). When all tasks share a common deadline, the problem reduces to the KNAPSACK problem. It admits a pseudo-polynomial-time algorithm (Lawler & Moore, 1969) and is thus only weakly NP-hard. No precedence constraints appear in this formulation.
Direct ILP: SequencingToMinimizeTardyTaskWeight → ILP
Definition
Name:SequencingToMinimizeTardyTaskWeight Reference: Garey & Johnson, Computers and Intractability, A5 SS3
Mathematical definition:
INSTANCE: Set T of n tasks, for each task t ∈ T a processing time l(t) ∈ Z⁺, a weight w(t) ∈ Z⁺, and a deadline d(t) ∈ Z⁺.
OBJECTIVE: Find a one-processor schedule σ (a permutation of T) that minimizes
Σ_{t ∈ T : σ(t) + l(t) > d(t)} w(t)
where σ(t) is the start time of task t. A task t is tardy if it finishes after its deadline: σ(t) + l(t) > d(t).
The corresponding decision problem (GJ SS3) asks whether a schedule exists with total tardy weight ≤ K for a given bound K ∈ Z⁺.
Variables
Count: n = |T|. The configuration is a permutation of the n tasks (a scheduling order).
Per-variable domain: n (each position in the schedule selects a task index 0..n−1)
Meaning: config[i] = j means task j is scheduled in position i. The schedule is processed left-to-right: the start time of the task in position i equals the sum of processing times of tasks in positions 0..i−1. A configuration is valid if it is a permutation (each task appears exactly once). The evaluate function computes the total weight of tardy tasks.
dims() returns [n; n] (permutation encoding).
Note: Not all configurations in the search space are valid permutations. The evaluate() function returns Min(u64::MAX) for invalid (non-permutation) configurations. The brute-force solver searches all n^n configurations but only n! are valid permutations.
Schema (data type)
Type name:SequencingToMinimizeTardyTaskWeight Variants: none (no type parameters)
Field
Type
Description
Getter
lengths
Vec<u64>
Processing time l(t) for each task t
num_tasks() → self.lengths.len()
weights
Vec<u64>
Weight w(t) for each task t
deadlines
Vec<u64>
Deadline d(t) for each task t
Problem type: Optimization (minimization) Value type:Min<u64>
Complexity
Decision complexity: NP-complete (Karp, 1972; transformation from PARTITION). Weakly NP-hard.
Best known exact algorithm: Pseudo-polynomial dynamic programming by Lawler & Moore (1969) in O(n · P) time, where n = |T| and P = Σ l(t) is the total processing time. For the unweighted case (all w(t) = 1), Moore's algorithm gives an O(n log n) greedy solution. For the weighted case with "agreeable" weights (w(t) < w(t') implies l(t) ≥ l(t')), Lawler (1976) gives a polynomial algorithm.
Complexity string for declare_variants!:"factorial(num_tasks)" (brute-force over all permutations; the pseudo-polynomial DP depends on numeric values, not combinatorial size)
Parameterized complexity: W[1]-hard parameterized by the number of tardy tasks (Heeger & Hermelin, 2024, ESA 2024), ruling out FPT algorithms under standard assumptions.
References:
[Karp, 1972] R. M. Karp, "Reducibility among combinatorial problems", 1972.
[Lawler & Moore, 1969] E. L. Lawler and J. M. Moore, "A functional equation and its application to resource allocation and sequencing problems", Management Science, 16(1), 1969.
[Lawler, 1976] E. L. Lawler, "Sequencing to minimize the weighted number of tardy jobs", RAIRO, 1976.
[Heeger & Hermelin, 2024] K. Heeger and D. Hermelin, "Minimizing tardy processing time on a single machine in near-linear time", ESA 2024. arXiv:2401.01740.
Extra Remark
Full book text:
INSTANCE: Set T of tasks, for each task t in T a length l(t) in Z+, a weight w(t) in Z+, and a deadline d(t) in Z+, and a positive integer K.
QUESTION: Is there a one-processor schedule sigma for T such that the sum of w(t), taken over all t in T for which sigma(t) + l(t) > d(t), does not exceed K?
Reference: [Karp, 1972]. Transformation from PARTITION.
Comment: Can be solved in pseudo-polynomial time (time polynomial in |T| and sum l(t)) [Lawler and Moore, 1969]. Can be solved in polynomial time if weights are "agreeable" (i.e., w(t) < w(t') implies l(t) >= l(t')) [Lawler, 1976c].
Note: The original GJ formulation is a decision problem with bound K. This issue reformulates it as an optimization problem (minimize total tardy weight). The decision version is recovered by checking whether the optimal value ≤ K.
How to solve
It can be solved by (existing) bruteforce. Enumerate all n! permutations; for each compute start times and total tardy weight; return the minimum.
It can be solved by reducing to integer programming. Binary ILP with ordering variables x_{ij} (task i in position j), start time variables, tardiness indicators U_t, minimize Σ w_t · U_t.
Other: Lawler-Moore pseudo-polynomial DP in O(n · Σ l(t)) time.
Important
Build as optimization, not decision.
Value = Min<u64>.Objective: Minimize total weight of tardy tasks Σ wᵢ·Uᵢ.
Do not add a
bound/thresholdfield — let the solver find the optimum directly. See #765.Motivation
SEQUENCING TO MINIMIZE TARDY TASK WEIGHT (P187) from Garey & Johnson, A5 SS3. A single-machine scheduling problem: given n tasks with processing times, weights, and deadlines, find a schedule that minimizes the total weight of tardy tasks (those finishing after their deadline). This is the weighted generalization of Moore's tardy-tasks problem and is NP-hard by reduction from PARTITION (Karp, 1972). When all tasks share a common deadline, the problem reduces to the KNAPSACK problem. It admits a pseudo-polynomial-time algorithm (Lawler & Moore, 1969) and is thus only weakly NP-hard. No precedence constraints appear in this formulation.
Associated rules:
Definition
Name:
SequencingToMinimizeTardyTaskWeightReference: Garey & Johnson, Computers and Intractability, A5 SS3
Mathematical definition:
INSTANCE: Set T of n tasks, for each task t ∈ T a processing time l(t) ∈ Z⁺, a weight w(t) ∈ Z⁺, and a deadline d(t) ∈ Z⁺.
OBJECTIVE: Find a one-processor schedule σ (a permutation of T) that minimizes
Σ_{t ∈ T : σ(t) + l(t) > d(t)} w(t)
where σ(t) is the start time of task t. A task t is tardy if it finishes after its deadline: σ(t) + l(t) > d(t).
The corresponding decision problem (GJ SS3) asks whether a schedule exists with total tardy weight ≤ K for a given bound K ∈ Z⁺.
Variables
dims()returns[n; n](permutation encoding).Note: Not all configurations in the search space are valid permutations. The
evaluate()function returnsMin(u64::MAX)for invalid (non-permutation) configurations. The brute-force solver searches all n^n configurations but only n! are valid permutations.Schema (data type)
Type name:
SequencingToMinimizeTardyTaskWeightVariants: none (no type parameters)
lengthsVec<u64>num_tasks()→self.lengths.len()weightsVec<u64>deadlinesVec<u64>Problem type: Optimization (minimization)
Value type:
Min<u64>Complexity
declare_variants!:"factorial(num_tasks)"(brute-force over all permutations; the pseudo-polynomial DP depends on numeric values, not combinatorial size)Extra Remark
Full book text:
INSTANCE: Set T of tasks, for each task t in T a length l(t) in Z+, a weight w(t) in Z+, and a deadline d(t) in Z+, and a positive integer K.
QUESTION: Is there a one-processor schedule sigma for T such that the sum of w(t), taken over all t in T for which sigma(t) + l(t) > d(t), does not exceed K?
Reference: [Karp, 1972]. Transformation from PARTITION.
Comment: Can be solved in pseudo-polynomial time (time polynomial in |T| and sum l(t)) [Lawler and Moore, 1969]. Can be solved in polynomial time if weights are "agreeable" (i.e., w(t) < w(t') implies l(t) >= l(t')) [Lawler, 1976c].
Note: The original GJ formulation is a decision problem with bound K. This issue reformulates it as an optimization problem (minimize total tardy weight). The decision version is recovered by checking whether the optimal value ≤ K.
How to solve
Example Instance
Input:
T = {t₁, t₂, t₃, t₄, t₅} (n = 5 tasks)
Lengths: l(t₁) = 3, l(t₂) = 2, l(t₃) = 4, l(t₄) = 1, l(t₅) = 2
Weights: w(t₁) = 5, w(t₂) = 3, w(t₃) = 7, w(t₄) = 2, w(t₅) = 4
Deadlines: d(t₁) = 6, d(t₂) = 4, d(t₃) = 10, d(t₄) = 2, d(t₅) = 8
Total processing time = 3 + 2 + 4 + 1 + 2 = 12.
Optimal schedule:
σ: t₄, t₁, t₅, t₃, t₂
Total tardy weight = 3. Only t₂ (weight 3) is tardy.
Suboptimal feasible solutions (confirming optimality):
Expected outcome: Min(3)
Reduction Rule Crossref