# 配料推荐 **Repository Path**: kma5871/IngredientRecommendation ## Basic Information - **Project Name**: 配料推荐 - **Description**: 基与大朗实现配料推荐算法 前端基于 Vue 3 + TypeScript + Vite 构建,算法python,数据接口java - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-20 - **Last Updated**: 2026-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大朗配料推荐系统 基于 Vue 3 + FastAPI 构建的锰矿配料优化系统,用于计算最优配料方案以降低成本。 ## 系统架构 ``` ore-blending-recommendation/ ├── backend/ # FastAPI 后端服务 │ ├── main.py # API 主程序 (v3.2) │ ├── algorithm.py # 优化算法核心 │ └── requirements.txt # Python 依赖 ├── frontend/ # Vue 3 前端应用 │ ├── src/ # 源代码 │ ├── dist/ # 构建输出 │ └── package.json # Node.js 依赖 └── docs/ # 文档 ``` ## 功能特点 - 🎯 **智能配料优化** - 基于连续优化与整数修复算法,自动计算最优配比方案 - 📊 **多数据源支持** - 支持最新一次检测、自定义选择两种数据来源 - 🏭 **多配料系统** - 支持不同配料系统的物料管理 - 📈 **指标约束** - 支持设置 Mn、Fe、P、SiO₂ 等化学指标的范围约束 - 💰 **成本优化** - 自动计算最低成本配比方案 - 📥 **结果导出** - 支持导出 Excel 格式的配比结果 - 📋 **配料通知单** - 支持下发配料通知单到生产系统 ## 技术栈 ### 后端 - **FastAPI** - 现代化 Python Web 框架 - **NumPy** - 数值计算 - **SciPy** - 科学计算与优化(SLSQP算法) - **Pydantic** - 数据验证 ### 前端 - **Vue 3** (Composition API) - **TypeScript** - 类型安全 - **Vite** - 构建工具 - **ECharts** - 图表可视化 - **CSS Grid / Flexbox** - 响应式布局 ## 快速开始 ### 后端部署 ```bash # 进入后端目录 cd backend # 安装依赖 pip install -r requirements.txt # 启动服务(开发模式) uvicorn main:app --reload --host 0.0.0.0 --port 8000 # 启动服务(生产模式) uvicorn main:app --host 0.0.0.0 --port 8000 ``` API 文档访问: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ### 前端开发 ```bash # 进入前端目录 cd frontend # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build ``` 构建后会在 `frontend/dist/` 目录生成以下文件: - `index.html` - HTML 入口文件 - `app.js` - 主 JavaScript 文件 - `style.css` - 样式文件 - `assets/` - 其他资源文件(图表库等) 这些文件可以直接上传到低代码平台的表单设计器中,通过 iframe 嵌入使用。 ## 使用说明 1. **选择数据来源** - 在左侧配置面板选择质检数据来源(最新一次检测/自定义选择) 2. **选择配料系统** - 选择配料系统后自动带出物料、单价和化验结果 3. **设置指标范围** - 根据需要调整各化学指标的目标范围 4. **开始优化计算** - 点击底部的「开始优化计算」按钮 5. **查看结果** - 在右侧结果面板查看: - **推荐配比** - 最优配比方案和成本 - **指标核对** - 验证各指标是否达标 - **物料详情** - 查看参与计算物料的化学成分 6. **下发配料单** - 确认方案后可下发配料通知单到生产系统 ## 项目结构 ### 前端目录结构 ``` frontend/src/ ├── components/ # Vue 组件 │ ├── layout/ # 布局组件 │ │ ├── ConfigPanel.vue # 左侧配置面板(数据源、配料系统、指标范围等) │ │ └── ResultPanel.vue # 右侧结果面板(推荐配比、指标核对、物料详情) │ │ │ ├── config-panel/ # 配置面板子组件 │ │ ├── DataSourceSection.vue # 数据来源选择(最新一次/自定义) │ │ ├── BatchingSystemSection.vue # 配料系统选择与物料管理 │ │ ├── MetricRangeSection.vue # 指标范围设置 │ │ └── OptimizeParamsSection.vue # 优化参数设置 │ │ │ ├── result-panel/ # 结果面板子组件 │ │ ├── ResultTabNav.vue # 结果标签页导航 │ │ ├── BlendRecommendTab.vue # 推荐配比标签页(配比方案、下发配料单) │ │ ├── MetricVerifyTab.vue # 指标核对标签页(指标达成情况) │ │ ├── MaterialDetailsTab.vue # 物料详情标签页(化学成分、价格) │ │ ├── MetricTraceModal.vue # 指标追溯弹窗 │ │ └── MetricTraceNode.vue # 追溯树节点组件 │ │ │ ├── materials/ # 物料相关组件 │ │ ├── MaterialTable.vue # 物料列表表格 │ │ └── MaterialCard.vue # 物料卡片 │ │ │ └── shared/ # 通用组件 │ ├── Collapsible.vue # 可折叠面板 │ ├── LoadingOverlay.vue # 加载遮罩 │ ├── MessageContainer.vue # 消息提示容器 │ ├── MetricInput.vue # 指标输入组件 │ ├── MetricTraceTree.vue # 指标追溯树 │ ├── NumberInput.vue # 数字输入框 │ ├── SliderInput.vue # 滑块输入 │ ├── Tooltip.vue # 工具提示 │ ├── TreeChart.vue # 树形图表 │ └── IdNameInput.vue # ID名称输入 │ ├── composables/ # 组合式函数(状态管理) │ ├── useMaterials.ts # 物料数据管理(配料系统、物料列表、炉台等) │ ├── useOptimization.ts # 优化计算(调用后端API、结果处理) │ ├── useMetrics.ts # 指标管理 │ └── useMessage.ts # 消息提示 │ ├── services/ # API 服务 │ ├── dataService.ts # 数据接口(配料系统、物料、炉台、下发通知单等) │ └── optimizeApi.ts # 优化算法接口(与Python后端交互) │ ├── config/ # 配置文件 │ └── indexMapping.ts # 指标编码映射 │ ├── types/ # TypeScript 类型定义 │ └── index.ts # 类型定义(Material、Metric、TraceNode等) │ ├── data/ # 静态数据 │ └── materials.ts # 物料默认数据 │ ├── styles/ # 样式文件 │ └── main.css # 全局样式 │ ├── App.vue # 根组件 └── main.ts # 应用入口 ``` ### 后端目录结构 ``` backend/ ├── main.py # FastAPI 主程序 │ # - /api/optimize 优化计算接口 │ # - 请求参数验证 │ # - CORS 配置 │ ├── algorithm.py # 优化算法核心 │ # - SLSQP 连续优化 │ # - 整数修复算法 │ # - 指标计算公式 │ # - 多重启动策略 │ └── requirements.txt # Python 依赖 # - fastapi # - uvicorn # - numpy # - scipy # - pydantic ``` ## API 端点 ### 本地后端 API | 方法 | 路径 | 描述 | |------|------|------| | GET | `/` | API 状态检查 | | POST | `/api/optimize` | 执行优化计算 | ### 外部系统 API(通过 systemService.ts 调用) | 接口 | 描述 | |------|------| | `fetchBatchingSystemList` | 获取配料系统列表 | | `fetchMaterialsBySystem` | 根据配料系统获取物料列表 | | `fetchMaterialCalculateDetail` | 获取物料计算详情(含化验数据) | | `fetchFurnacesBySystem` | 获取炉台列表 | | `fetchOreIndexData` | 获取矿石指标配置 | | `issueIngredientNotice` | 下发配料通知单 | ## 优化算法说明 系统采用 **SLSQP(序列最小二乘规划)** 算法进行优化: 1. **目标函数** - 最小化总成本(各物料用量 × 单价之和) 2. **约束条件** - 各化学指标在设定范围内 3. **多重启动** - 使用多个随机初始点,避免局部最优 4. **整数修复** - 将连续解修复为整数吨,保持约束满足 ### 支持的指标 | 指标代码 | 指标名称 | 计算方式 | |----------|----------|----------| | mix_Mn_frac | 配矿锰% | 加权平均 | | Mn_over_Fe | 锰铁比 | Mn / Fe | | clinker_ratio | 熟料比 | 特定公式 | | CaMg_total | 钙镁总量 | CaO + MgO | | R3 | R3指标 | 特定公式 | | theoretical_quartz | 理论石英 | 特定公式 | | total_SiO2 | 总二氧化硅 | 加权平均 | | theoretical_coke | 理论焦炭 | 特定公式 | | theoretical_power | 理论电耗 | 特定公式 | ## License MIT