Advanced Decision Support System for Supply Chain Optimization Under Uncertainty
A sophisticated full-stack application that solves complex facility location and transportation optimization problems. OPTIdecide employs industrial-strength linear programming solvers and advanced decision theory to provide optimal resource allocation strategies when facing uncertain market conditions.
🎓 Academic Research Project: This system represents the practical implementation of research presented in our college thesis: "Sistema de apoyo para la toma de decisiones en problemas de optimización bajo incertidumbre". The thesis explores mathematical optimization methodologies and decision support systems for solving complex resource allocation problems under uncertainty.
- External LP Solver Integration: Built-in lp_solve 5.5 with custom JavaScript wrapper
- Multi-Model Generation: P-Model for primary optimization, Q-Model for alternative solutions
- Three Uncertainty Methods: Comprehensive approaches for handling uncertain parameters
- Binary & Integer Programming: Support for facility selection and resource allocation decisions
- Robustness Criteria: Performance evaluation across uncertain scenarios with configurable robustness index
- Laplace Criteria: Equal probability weighting for uncertainty scenarios
- Savage Criteria (Minimax Regret): Minimizes maximum regret across all possible scenarios
- Decision Matrix Analysis: Comprehensive payoff matrices for scenario evaluation
- Facility Location Selection: Optimal placement of distribution centers and warehouses
- Transportation Cost Minimization: Efficient routing from factories through distribution centers to clients
- Capacity Planning: Balances demand against facility and transportation constraints
- Multi-Product Support: Handles complex product flows across the supply chain
- Budget Constraints: Finds optimal solutions within financial limitations
- Interactive Solution Graphs: Visual representation of factory-location-client relationships using React Digraph
- Multiple Solution Views: Compare final solutions, alternative solutions, and initial problem data
- Excel Integration: Template-based bulk data entry with automatic processing
- Mathematical Model Export: Generates models in Lingo format for verification
- Performance Metrics: Execution time tracking and solution quality analysis
- Client App (Port 3001): Modern Next.js interface for problem configuration and solution visualization
- GraphQL API (Port 3000): Apollo Server with comprehensive mathematical modeling capabilities
- Mathematical Engine: Custom LP solving with uncertainty modeling and constraint generation
- File Processing: Excel template processing with data validation and transformation
- P-Model Constructor: Generates primary optimization models with deterministic and uncertain constraints
- Q-Model Generator: Creates alternative solution models using W-constraint methodology
- Uncertainty Solvers: Three distinct methods for incorporating uncertain parameters
- Decision Criteria Engine: Multi-criteria analysis for solution selection under uncertainty
- Node.js >= 16.0.0
- npm >= 8.0.0
- Clone the repository
git clone https://github.com/sabucds/OPTIdecide.git
cd OPTIdecide- Install dependencies
npm install- Start development servers
npm run devApplications will be available at:
- Client App: http://localhost:3001
- GraphQL API: http://localhost:3000/graphql
npm run build
docker-compose up -d- Distribution Network Design: Determine optimal locations for warehouses and distribution centers
- Transportation Cost Reduction: Minimize shipping costs while meeting all demand constraints
- Capacity Planning: Balance facility capacities against market demand requirements
- Multi-Echelon Inventory: Optimize product flows from factories through distribution centers to customers
- Market Demand Variability: Handle uncertain customer demand with robust optimization
- Cost Fluctuations: Account for variable transportation and operational costs
- Scenario Planning: Evaluate solutions across multiple future market scenarios
- Risk Management: Select robust solutions that perform well under various conditions
- P-Model: Primary linear programming formulation with deterministic constraints
- Q-Model: Alternative solution generation using epsilon-constraint methodology
- W-Constraint Method: Iterative approach for generating diverse solution sets
- x_client_location: Binary assignment of clients to distribution locations
- y_location: Binary selection of distribution center locations
- z_product_factory_location: Integer product flows from factories to locations
- Assignment Constraints: Each client assigned to exactly one location
- Selection Constraints: Clients only assigned to selected locations
- Capacity Constraints: Demand does not exceed location/factory capacity
- Budget Constraints: Total location selection costs within budget limits
- Flow Constraints: Product balance across the supply chain network
- Method 1: Full uncertainty modeling with 4 constraints per uncertain variable
- Method 2: Simplified approach with 2 constraints per uncertain variable
- Method 3: Iterative W-constraint method for robust solution generation
- Next.js 13.2.4 with React 18.2.0 and TypeScript 5.0.2
- Apollo Client 3.7.10 for GraphQL integration
- TailwindCSS 3.3.0 for responsive styling
- React Hook Form 7.47.0 for form management
- React Digraph 9.1.2 for solution visualization
- @tanstack/react-table 8.10.7 for data tables
- Apollo Server 4.5.0 with GraphQL schema
- Express.js 4.18.2 framework
- Mongoose 7.0.3 for database operations
- External LP Solver: lp_solve 5.5 with JavaScript wrapper
- AWS S3 Integration for file storage
- Docker containerization with multi-service orchestration
- Traefik reverse proxy with SSL termination
- Turborepo for monorepo build optimization
- Sentry for error monitoring and performance tracking
OPTIdecide/
├── apps/
│ ├── client/ # User-facing Next.js application (Port 3001)
│ └── api/ # GraphQL API server (Port 3000)
│ ├── src/components/
│ │ ├── mathModel/ # Core mathematical modeling
│ │ ├── user/ # User management
│ │ └── s3/ # File storage integration
│ └── utils/modelFunctions/
│ ├── decisionCriteria.ts # Multi-criteria decision analysis
│ ├── solve.ts # Main optimization solver
│ ├── generatePModel.ts # Primary model generation
│ ├── generateQModel.ts # Alternative model generation
│ └── lpSolve/ # External solver integration
├── packages/
│ ├── ui/ # Shared React components
│ └── eslint-config-custom/ # Shared linting configuration
├── docker-compose.yml # Container orchestration
└── turbo.json # Monorepo build configuration
- Model Management: Create, update, and query optimization models
- Solution Generation: Execute mathematical optimization with uncertainty handling
- Results Analysis: Retrieve and analyze multiple solutions with decision criteria
- File Processing: Upload and process Excel templates for bulk data entry
- Structured Data Entry: Predefined templates for complex optimization problems
- Automatic Validation: Data consistency checks and relationship validation
- Bulk Processing: Efficient handling of large-scale optimization problems
We welcome contributions! Please see our Contributing Guide and Code of Conduct.
This project is licensed under the terms specified in the LICENSE file.
🚀 Optimizing supply chains and logistics with mathematical precision and uncertainty-aware decision-making