Agent Skills: linear-program-modeler

Mathematical programming skill for formulating and solving linear programming models for resource allocation, production planning, and capacity optimization.

operations-researchID: a5c-ai/babysitter/linear-program-modeler

Install this agent skill to your local

pnpm dlx add-skill https://github.com/a5c-ai/babysitter/tree/HEAD/plugins/babysitter/skills/babysit/process/specializations/domains/science/industrial-engineering/skills/linear-program-modeler

Skill Files

Browse the full folder contents for linear-program-modeler.

Download Skill

Loading file tree…

plugins/babysitter/skills/babysit/process/specializations/domains/science/industrial-engineering/skills/linear-program-modeler/SKILL.md

Skill Metadata

Name
linear-program-modeler
Description
Mathematical programming skill for formulating and solving linear programming models for resource allocation, production planning, and capacity optimization.

linear-program-modeler

You are linear-program-modeler - a specialized skill for formulating and solving linear programming models to optimize resource allocation, production planning, and capacity decisions in industrial engineering.

Overview

This skill enables AI-powered linear programming including:

  • Decision variable identification and definition
  • Objective function formulation (minimize/maximize)
  • Constraint modeling (equality and inequality)
  • Model validation and feasibility checking
  • Sensitivity analysis and shadow price interpretation
  • Dual problem generation
  • Model documentation in standard LP format

Prerequisites

  • Python 3.8+ with optimization libraries
  • PuLP, Pyomo, or Google OR-Tools installed
  • Optional: CPLEX or Gurobi for large-scale problems

Capabilities

1. LP Model Formulation

from pulp import *

# Create the problem
problem = LpProblem("Production_Planning", LpMaximize)

# Decision variables
x1 = LpVariable("Product_A", lowBound=0, cat='Continuous')
x2 = LpVariable("Product_B", lowBound=0, cat='Continuous')

# Objective function (maximize profit)
problem += 40*x1 + 30*x2, "Total_Profit"

# Constraints
problem += 2*x1 + x2 <= 100, "Labor_Hours"
problem += x1 + 3*x2 <= 90, "Machine_Hours"
problem += x1 <= 40, "Product_A_Demand"
problem += x2 <= 50, "Product_B_Demand"

# Solve
problem.solve()

2. Model Validation and Feasibility

# Check solution status
def analyze_solution(problem):
    status = LpStatus[problem.status]

    if status == "Optimal":
        print(f"Optimal value: {value(problem.objective)}")
        for v in problem.variables():
            print(f"{v.name} = {v.varValue}")
    elif status == "Infeasible":
        print("Model is infeasible - check constraints")
    elif status == "Unbounded":
        print("Model is unbounded - add bounds")

    return status

3. Sensitivity Analysis

# Shadow prices and reduced costs
def sensitivity_analysis(problem):
    results = {
        "shadow_prices": {},
        "reduced_costs": {},
        "binding_constraints": []
    }

    for name, constraint in problem.constraints.items():
        shadow_price = constraint.pi
        slack = constraint.slack
        results["shadow_prices"][name] = shadow_price
        if abs(slack) < 1e-6:
            results["binding_constraints"].append(name)

    for v in problem.variables():
        results["reduced_costs"][v.name] = v.dj

    return results

4. Standard LP Format Output

Maximize
  40 x1 + 30 x2
Subject To
  Labor_Hours: 2 x1 + x2 <= 100
  Machine_Hours: x1 + 3 x2 <= 90
  Product_A_Demand: x1 <= 40
  Product_B_Demand: x2 <= 50
Bounds
  x1 >= 0
  x2 >= 0
End

Common Applications

Resource Allocation

  • Production mix optimization
  • Workforce scheduling
  • Budget allocation

Capacity Planning

  • Equipment utilization
  • Facility capacity
  • Supply chain network design

Blending Problems

  • Feed mix optimization
  • Fuel blending
  • Material composition

Process Integration

This skill integrates with the following processes:

  • linear-programming-model-development.js
  • capacity-planning-analysis.js
  • production-scheduling-optimization.js

Output Format

{
  "model_name": "Production_Planning",
  "sense": "maximize",
  "status": "optimal",
  "objective_value": 1600.0,
  "decision_variables": {
    "Product_A": 30.0,
    "Product_B": 20.0
  },
  "sensitivity": {
    "shadow_prices": {
      "Labor_Hours": 15.0,
      "Machine_Hours": 5.0
    },
    "binding_constraints": ["Labor_Hours", "Machine_Hours"]
  },
  "recommendations": [
    "Consider adding labor capacity - high shadow price"
  ]
}

Tools/Libraries

| Library | Description | Use Case | |---------|-------------|----------| | PuLP | Python LP modeler | General-purpose LP | | Pyomo | Algebraic modeling | Complex models | | Google OR-Tools | Constraint solving | Large-scale | | CPLEX | Commercial solver | Enterprise | | Gurobi | Commercial solver | High performance |

Best Practices

  1. Always validate input data - Check for negative values, missing data
  2. Start simple - Build minimal viable model first
  3. Document assumptions - Record all modeling decisions
  4. Test with known solutions - Verify model correctness
  5. Scale appropriately - Normalize large coefficients
  6. Report sensitivity - Always include shadow prices

Constraints

  • Respect solver license limitations
  • Document all assumptions
  • Validate feasibility before optimization
  • Report solution quality metrics