Skip to content
Back to skills

LpSolve

ASecurity

R lpSolve package for linear programming. Use for solving linear and integer programming problems.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 4, 2026
data

Security analysis

A100/100

Scanned June 4, 2026

npx -y skills add LeoLin990405/r-analytics-skill --skill lpSolve --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of LpSolve?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for LpSolve
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/leolin990405-lpsolve/badge)](https://www.skillsdirectory.com/skills/leolin990405-lpsolve)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: lpSolve
description: R lpSolve package for linear programming. Use for solving linear and integer programming problems.
---

# lpSolve

Linear and integer programming.

## Linear Programming

```r
library(lpSolve)

# Maximize: 3x + 2y
# Subject to:
#   x + y <= 4
#   2x + y <= 5
#   x, y >= 0

# Objective function coefficients
obj <- c(3, 2)

# Constraint matrix
con <- matrix(c(1, 1,
                2, 1), nrow = 2, byrow = TRUE)

# Constraint directions
dir <- c("<=", "<=")

# Right-hand side
rhs <- c(4, 5)

# Solve
result <- lp("max", obj, con, dir, rhs)

# Results
result$objval      # Optimal value
result$solution    # Optimal solution
result$status      # 0 = success
```

## Integer Programming

```r
# All integer variables
result <- lp("max", obj, con, dir, rhs, all.int = TRUE)

# Binary variables
result <- lp("max", obj, con, dir, rhs, all.bin = TRUE)

# Mixed integer
result <- lp("max", obj, con, dir, rhs, int.vec = c(1))  # First variable integer
```

## Transportation Problem

```r
# Costs matrix (sources x destinations)
costs <- matrix(c(8, 6, 10, 9,
                  9, 12, 13, 7,
                  14, 9, 16, 5), nrow = 3, byrow = TRUE)

# Supply at each source
supply <- c(35, 50, 40)

# Demand at each destination
demand <- c(45, 20, 30, 30)

# Solve
result <- lp.transport(costs, "min",
                       row.signs = rep("<=", 3), row.rhs = supply,
                       col.signs = rep(">=", 4), col.rhs = demand)

result$objval
result$solution
```

## Assignment Problem

```r
# Cost matrix (workers x tasks)
costs <- matrix(c(90, 75, 75, 80,
                  35, 85, 55, 65,
                  125, 95, 90, 105,
                  45, 110, 95, 115), nrow = 4, byrow = TRUE)

# Solve
result <- lp.assign(costs, "min")

result$objval
result$solution  # Binary matrix showing assignments
```

## Bounds on Variables

```r
# Variable bounds: 0 <= x <= 10, 0 <= y <= 5
result <- lp("max", obj, con, dir, rhs,
             all.int = FALSE,
             presolve = 0,
             compute.sens = FALSE)

# For bounds, add constraints
con_with_bounds <- rbind(con,
                         c(1, 0),  # x <= 10
                         c(0, 1))  # y <= 5
dir_with_bounds <- c(dir, "<=", "<=")
rhs_with_bounds <- c(rhs, 10, 5)

result <- lp("max", obj, con_with_bounds, dir_with_bounds, rhs_with_bounds)
```

## Sensitivity Analysis

```r
# Enable sensitivity analysis
result <- lp("max", obj, con, dir, rhs, compute.sens = TRUE)

# Sensitivity results
result$sens.coef.from   # Objective coefficient ranges (from)
result$sens.coef.to     # Objective coefficient ranges (to)
result$duals            # Dual values (shadow prices)
result$duals.from       # Dual ranges (from)
result$duals.to         # Dual ranges (to)
```

## Equality Constraints

```r
# x + y = 4
dir <- c("=")
rhs <- c(4)

result <- lp("max", obj, con, dir, rhs)
```

## Multiple Solutions

```r
# Check for alternative optima
# If dual value is 0 for a non-binding constraint,
# alternative optima may exist
```

## Large Problems

```r
# For large problems, consider:
# - Presolve
result <- lp("max", obj, con, dir, rhs, presolve = 1)

# - Scaling
result <- lp("max", obj, con, dir, rhs, scale = 1)
```

## Example: Diet Problem

```r
# Minimize cost while meeting nutritional requirements
# Foods: bread, milk, cheese
# Nutrients: protein, calcium, calories

# Cost per unit
cost <- c(2, 3.5, 8)

# Nutrient content per unit (nutrients x foods)
nutrients <- matrix(c(
  4, 8, 7,    # Protein
  10, 25, 20, # Calcium
  200, 150, 400  # Calories
), nrow = 3, byrow = TRUE)

# Minimum requirements
min_req <- c(20, 50, 500)

# Solve
result <- lp("min", cost, nutrients, rep(">=", 3), min_req)

result$objval
result$solution
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…