SimplexIQ is a React + Python (FastAPI) web app for solving Linear Programming problems using the Simplex (Big‑M) method, with step-by-step tableau iterations, sensitivity analysis (shadow prices/slack), templates, and visualizations.
- Overview
- Key Features
- How It Works
- Tech Stack
- Project Structure
- Getting Started
- Usage Guide
- Available Scripts
- Configuration and Limits
- Quality and Testing
- Troubleshooting
- Security and Responsible Use
- Contributing
- License
- Disclaimer
SimplexIQ is designed for learners, analysts, and practitioners who want an interactive way to solve LP problems and understand the mechanics of simplex optimization.
The app supports:
- Objective function definition (maximize or minimize)
- Dynamic variable and constraint entry
- Constraint types (
<=,>=,=) - Iterative simplex tableau breakdown
- Result interpretation with shadow prices and binding constraints
- Visual analytics and graphical method support for 2-variable problems
-
Interactive Problem Builder Configure variables, objective coefficients, and constraints in a structured UI.
-
Simplex Solver Engine Runs simplex logic and computes feasibility/optimality status.
-
Iteration Explorer Navigate pivot-by-pivot tableau states with entering/leaving variable indicators.
-
Sensitivity Analysis Review slack values, shadow prices, and binding constraints.
-
Visualization Dashboard Inspect solution distribution, capacity utilization, and dual-value trends.
-
Built-in Templates Load preconfigured LP scenarios for quick experimentation.
- Create or load a problem template.
- Define objective type and coefficients.
- Add constraints and right-hand-side values.
- Run simplex solve.
- Review results, iterations, and visualizations.
- React 19
- Vite 8
- Recharts
- ESLint 9
frontend/
src/ React UI (unchanged)
public/ Static assets (favicon, etc.)
backend/
app.py FastAPI app (exposes `/api/solve`)
simplex_solver.py Simplex/LPP solver implementation (Python)
schemas.py Request/response models
- Node.js 18 or later
- npm 9 or later
cd frontend
npm install
cd ../backend
pip install -r requirements.txt# Terminal 1 (project root):
python -m uvicorn backend.app:app --host 127.0.0.1 --port 8000
# Terminal 2:
cd frontend
npm run devVite will print the local URL (for example: http://localhost:5173 or next available port). The UI calls http://localhost:8000/api/solve by default.
cd frontend
npm run buildcd frontend
npm run preview- Choose objective type (maximize/minimize).
- Set variable and constraint counts.
- Enter objective coefficients and constraint rows.
- View solution status and objective value.
- Inspect variable values and sensitivity table.
- Track each simplex iteration.
- Identify entering and leaving variables.
- Compare variable values and resource usage.
- Analyze shadow prices in chart form.
- Load predefined LP scenarios to test quickly.
npm run dev- Start local development servernpm run build- Generate production buildnpm run preview- Preview production bundlenpm run lint- Run static lint checks
Current UI safeguards include:
- Variable count range: 1 to 8
- Constraint count range: 1 to 10
These limits are configurable in input-handling logic if your use case requires higher ranges.
Minimum quality workflow:
npm run lint
npm run buildRecommended additions for production readiness:
- Unit tests for solver edge cases
- Integration tests for UI workflows
- Snapshot tests for key visualization states
- Port already in use
- Vite automatically switches to another port.
- Open the URL shown in terminal output.
- Build size warning
- The project may output a chunk size warning during build.
- Consider route-based code splitting if needed.
- Dependency issues
- Remove
node_modulesand lockfile, then reinstall dependencies.
- Do not submit sensitive or confidential optimization data in shared deployments.
- Validate user-provided numeric inputs in any backend-integrated version.
- Apply authentication/authorization before exposing this app in multi-user environments.
Contributions are welcome.
Recommended process:
- Create a feature branch.
- Keep changes focused and documented.
- Run lint and build checks.
- Submit a pull request with clear context and screenshots (if UI changes).
No license file is currently defined in this repository.
If you plan to distribute this project, add an explicit license file (for example MIT, Apache-2.0, or proprietary terms).
SimplexIQ is provided for educational and analytical purposes. Results should be independently validated before use in business-critical or regulatory decision-making contexts.