Unbounded vs Infeasible LP (Fix Checklist)

Last updated: Sources Methodology

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: 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)
Why confusion happens: some solvers report combined statuses like “infeasible or unbounded” during early presolve. A reliable approach is: add bounds, check constraint directions, then re-run. The worked examples below show what each status looks like.

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
If you’re converting constraints for simplex and you suspect conversion errors, review Slack / Surplus / Artificial Variables.

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=0 and x1 + x2 ≤ 4
  • (0,3) from x1=0 and x1 + 2x2 ≤ 6
  • Intersection of x1 + x2 = 4 and x1 + 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.

If your solver claims “unbounded” on a model that looks like this (clearly bounded by constraints + nonnegativity), it usually indicates a sign error, missing nonnegativity, or a constraint entered incorrectly.

Check your model in the calculator (fast)

Tooling

Reproduce the status (then fix systematically)

  1. Enter the objective and constraints in the LP calculator.
  2. If you see “unbounded,” add reasonable bounds (x ≤ U) and rerun.
  3. If you see “infeasible,” temporarily relax or remove constraints to locate the contradiction, then restore them carefully.
  4. 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.

Sources
  1. Math Stack Exchange – Both primal and dual are infeasible/unbounded
  2. Google OR-Tools — Linear Programming documentation
  3. COIN-OR CLP — LP solver documentation (status handling and simplex basics)
  4. GNU GLPK — LP/MIP solver documentation
  5. SCIP Documentation — Linear optimization and solver statuses