Unbounded vs Infeasible LP (Fix Checklist): How to Tell the Difference, What It Means, and What to Fix First
“Infeasible” means no solution satisfies all constraints. “Unbounded” means feasible solutions exist, but the objective can improve forever. This page gives a practical diagnostic flow, worked examples, and a checklist of the most common modeling fixes.
Validate your model quickly in the
Linear Programming calculator.
If your model includes = or ≥ constraints and you’re starting simplex by hand,
see Two Phase Simplex Method or Big M Method.
On this page
- Quick takeaway (definitions + fast test)
- Decision tree: unbounded vs infeasible vs optimal
- What solvers can provide: IIS (infeasible) and rays (unbounded)
- Fix checklist (highest ROI modeling checks)
- Questions people ask (PAA)
- Worked examples (fully solved)
- Check your model in the calculator (fast)
- Troubleshooting table (symptom → cause → fix)
- Glossary
Quick takeaway:
Infeasible LP = there is no x that satisfies all constraints.
Unbounded LP = there exists at least one feasible x, but the objective can improve without limit
(maximization: z → +∞; minimization: z → −∞).
Most “unbounded” results are caused by missing realistic variable bounds.
Decision tree: unbounded vs infeasible vs optimal
Fast diagnostic
A clean mental model (works for any LP)
1) Is there any x that satisfies all constraints? - No → Infeasible - Yes → Go to 2) 2) Can the objective improve forever while staying feasible? - Yes → Unbounded - No → Optimal solution exists (finite optimum)
What solvers can provide: IIS (infeasible) and rays (unbounded)
Intermediate (practical)
Infeasibility certificate: IIS / conflicting set of constraints
Many solvers can return an IIS (Irreducible Infeasible Subsystem): a minimal set of constraints that are already inconsistent. That’s your best debugging starting point: find which business rules contradict each other.
Even without an IIS tool, you can often find a contradiction by grouping constraints by variable and comparing implied upper vs lower bounds.
Intermediate (practical)
Unboundedness certificate: improving direction (“ray”)
Unbounded means there is an improving direction d such that:
Feasible: A(x + t d) ≤ b for all t ≥ 0 Improves: cᵀ(x + t d) → +∞ (max) or → −∞ (min)
In practice, that “ray” often corresponds to a variable that can increase without limit and has a favorable objective coefficient. The fix is usually a missing upper bound or missing limiting constraint. Start with Upper Bounds in Linear Programming.
Fix checklist (highest ROI modeling checks)
Checklist
Start here before you change algorithms
| Check | Why it matters | Most common symptom it fixes |
|---|---|---|
Add realistic variable bounds (0 ≤ x ≤ U) |
Prevents runaway objectives and unrealistic solutions | Unbounded |
Validate inequality directions (≤ vs ≥) |
A single flipped sign can empty the feasible region | Infeasible |
| Check RHS units and scaling (hours vs minutes, dollars vs thousands) | Unit mismatch creates contradictions or extreme ranges | Infeasible or numeric instability |
| Confirm nonnegativity / sign restrictions | Missing x ≥ 0 or wrong “free variable” handling changes feasibility |
Unbounded or incorrect optimum |
| Re-derive constraints from the story (one-by-one) | Catches modeling logic errors (wrong coefficient, wrong constraint) | Infeasible |
| Compute slack/surplus at a “known good” solution | Quickly shows which constraint is violated and by how much | Both |
Questions people ask about unbounded vs infeasible LP (PAA)
People ask
What is the difference between an infeasible LP and an unbounded LP?
Infeasible means no solution satisfies all constraints. Unbounded means there are feasible solutions, but the objective can improve without limit. They are different failure modes: infeasible is “no feasible region,” unbounded is “feasible region exists but objective has no finite best value.”
People ask
Why does my LP become unbounded?
The most common cause is a missing realistic upper bound on a variable that has a favorable objective coefficient. Another cause is missing a limiting constraint (e.g., forgot a capacity constraint). Start with Upper Bounds in Linear Programming.
People ask
Why does my LP become infeasible?
Infeasibility usually comes from contradictory constraints (e.g., a requirement forces x ≥ 10 but another forces x ≤ 5),
sign mistakes (≤ vs ≥), or unit errors. An IIS (if available) points to the smallest conflicting constraint set.
People ask
What does “infeasible or unbounded” mean in solver output?
Some solvers report a combined status during presolve when they can’t yet distinguish the case. Add bounds, check signs, and rerun. You can also simplify: temporarily drop constraints to see when feasibility returns.
People ask
How can I check feasibility without solving the full optimization?
A standard trick is to solve a “feasibility LP” (minimize total constraint violation) or use two-phase logic. If you’re doing simplex by hand, see Two Phase Simplex Method.
People ask
Can an LP be feasible but have no optimal solution?
Yes. If the objective is unbounded over the feasible region, the LP is feasible but has no finite optimum (unbounded). If the feasible region is nonempty and the objective is bounded, then an optimum exists and occurs at a corner point (see Graphical Method for LP for 2 variables).
Worked examples (fully solved)
Worked examples
Expand only the example you need
Each example below is collapsible (collapsed by default) to keep the page scannable while remaining fully indexable. Verify each case in the LP calculator.
Example 1 — Unbounded LP example (maximize; feasible but z → +∞)
LP:
maximize z = x1 + x2
subject to x1 − x2 ≥ 1
x1, x2 ≥ 0
Step 1: Show the LP is feasible
Pick (x1,x2) = (1,0):
x1 − x2 = 1 ≥ 1 ✓ x1, x2 ≥ 0 ✓
Step 2: Exhibit an improving direction (a “ray”)
Let t ≥ 0 and define:
x2 = t x1 = t + 1
Feasibility check:
x1 − x2 = (t+1) − t = 1 ≥ 1 ✓ x1, x2 ≥ 0 ✓
Objective value:
z = x1 + x2 = (t+1) + t = 2t + 1
As t → ∞, z → ∞. Therefore the LP has no finite maximum.
Conclusion: This LP is unbounded. A typical fix is adding realistic upper bounds (Upper Bounds in LP) or adding the missing limiting constraint.
Example 2 — Infeasible LP example (empty feasible region)
LP:
minimize z = x1 + x2
subject to x1 + x2 ≤ 1
x1 + x2 ≥ 3
x1, x2 ≥ 0
Step 1: Combine the constraints
Both constraints are about the same expression x1 + x2:
x1 + x2 ≤ 1 x1 + x2 ≥ 3
No number can be simultaneously ≤ 1 and ≥ 3. So there is no feasible point (x1,x2).
Conclusion: This LP is infeasible. In real models, this usually means contradictory requirements, wrong inequality direction, or unit mismatch.
Example 3 — Feasible & bounded LP example (has a finite optimum)
LP:
maximize z = 3x1 + 2x2
subject to x1 + x2 ≤ 4
x1 + 2x2 ≤ 6
x1, x2 ≥ 0
Step 1: Find corner points (2-variable method)
Candidate corners:
- (0,0)
- (4,0) from
x2=0andx1 + x2 ≤ 4 - (0,3) from
x1=0andx1 + 2x2 ≤ 6 - Intersection of
x1 + x2 = 4andx1 + 2x2 = 6
Step 2: Intersection point
x1 + x2 = 4 x1 + 2x2 = 6 Subtract → x2 = 2 Then x1 = 2 Intersection: (2,2)
Step 3: Evaluate objective
| Corner (x1,x2) | z = 3×1 + 2×2 |
|---|---|
| (0,0) | 0 |
| (4,0) | 12 |
| (0,3) | 6 |
| (2,2) | 10 |
Conclusion: This LP is feasible and bounded, so it has a finite optimum:
(x1,x2)=(4,0) with z*=12.
Check your model in the calculator (fast)
Tooling
Reproduce the status (then fix systematically)
- Enter the objective and constraints in the LP calculator.
- If you see “unbounded,” add reasonable bounds (
x ≤ U) and rerun. - If you see “infeasible,” temporarily relax or remove constraints to locate the contradiction, then restore them carefully.
- If constraints include
=or≥and you’re building a tableau, confirm your conversions using Slack / Surplus / Artificial Variables.
Troubleshooting table (symptom → cause → fix)
Troubleshooting
Use this when you’re stuck
| What you observe | Likely cause | Best next move |
|---|---|---|
| Unbounded (maximize) and a variable has positive objective coefficient | That variable can increase without limit | Add realistic bounds (upper bounds guide) or missing capacity constraint |
| Infeasible after “just one change” | New constraint contradicts existing ones | Compare implied upper/lower bounds; find smallest conflicting set (IIS if available) |
| Solver returns “infeasible or unbounded” | Presolve cannot classify yet | Add bounds, check signs/units, rerun; simplify by temporarily removing constraints |
| Looks bounded by logic, but solver says unbounded | Missing nonnegativity or wrong inequality direction | Confirm x ≥ 0 restrictions and constraint directions; recompute slacks |
| Simplex tableau setup fails / no starting basis | Need artificials for = / ≥ constraints |
Use two-phase simplex or Big‑M |
| Model needs integer decisions (open/close, yes/no) | LP is the wrong model class | Use ILP/MILP and expect branch-and-bound |
Glossary
Glossary
- Feasible: at least one solution satisfies all constraints.
- Infeasible: no solution satisfies all constraints (empty feasible region).
- Unbounded: objective can improve without limit while staying feasible.
- Bounded: objective has a finite best value over the feasible region.
- IIS: irreducible infeasible subsystem (minimal contradictory constraint set).
- Ray / improving direction: direction along which the objective improves forever while remaining feasible.
- Slack/surplus: computed “leftover” or “excess” in a constraint at a solution (see slack/surplus guide).
Disclaimer
This article and the associated calculators are provided for educational and informational purposes only. Optimization outcomes depend on modeling assumptions and input data and may not reflect real-world constraints unless you encode them correctly. This is not legal, financial, operational, or safety advice. For high-stakes decisions, validate results against domain requirements and consult a qualified professional. For details, read our full disclaimer.