An open API service indexing awesome lists of open source software.

https://github.com/lithstudy/hmscheme


https://github.com/lithstudy/hmscheme

Last synced: 10 months ago
JSON representation

Awesome Lists containing this project

README

          

# 智能食谱生成器

## 技术方案概述

本项目是一个基于多目标遗传算法的智能食谱生成系统,旨在为用户生成营养均衡、符合个人偏好的膳食方案。

### 核心算法

系统采用NSGA-II(非支配排序遗传算法II)作为核心优化算法,通过多目标优化来平衡多个相互冲突的目标:

1. 营养素目标
2. 用户偏好目标
3. 食物多样性目标
4. 营养平衡目标

### 系统架构

#### 1. 核心组件

- **NSGAIIMealPlanner**: 主算法实现类,负责种群初始化、进化过程控制和结果输出
- **MealSolution**: 表示一个膳食解决方案(染色体),包含食物组合和摄入量
- **MultiObjectiveEvaluator**: 多目标评估器,评估解决方案在各个目标上的表现
- **Population**: 种群管理类,处理个体的排序和选择

#### 2. 目标评估系统

系统实现了多个目标评估器:

1. **营养素目标评估器**
- 评估热量、蛋白质、脂肪、碳水化合物等营养素的达标情况
- 支持不同营养素的重要程度权重配置
- 考虑用户健康状况对营养素需求的影响

2. **用户偏好目标评估器**
- 评估食物是否符合用户口味偏好
- 考虑过敏原限制
- 考虑宗教信仰限制
- 考虑用户不喜欢的食物

3. **食物多样性目标评估器**
- 评估食物类别的多样性
- 评估食物组合的合理性
- 考虑理想的食物类别分布

4. **营养平衡目标评估器**
- 评估宏量营养素的比例
- 评估食物摄入量的合理性
- 考虑热量分配的合理性

#### 3. 遗传操作
1. **交叉操作**
- 实现父代解决方案的基因重组
- 保持解决方案的有效性

2. **变异操作**

1. **摄入量调整变异** (`INTAKE_ADJUSTMENT`)
- 随机选择一个食物
- 在其推荐摄入量范围内调整摄入量
- 使用变异强度参数控制调整幅度

2. **食物替换变异** (`FOOD_REPLACEMENT`)
- 随机选择一个食物进行替换
- 从同类别食物中选择替换食物
- 保持主食要求(如果需要)
- 新食物的摄入量在推荐范围内随机生成

3. **食物添加变异** (`FOOD_ADDITION`)
- 从食物数据库中选择新食物
- 考虑主食要求(如果需要)
- 新食物的摄入量在推荐范围内随机生成

4. **食物移除变异** (`FOOD_REMOVAL`)
- 随机选择一个食物移除
- 保持至少一种食物
- 考虑主食要求(如果需要)

5. **热量优化变异** (`CALORIES_OPTIMIZATION`)
- 根据目标热量和当前热量的差异进行调整
- 选择高热量密度的食物进行调整
- 智能计算调整幅度
- 确保调整后的摄入量在推荐范围内

6. **营养素敏感度变异** (`NUTRIENT_SENSITIVITY`)
- 分析当前膳食方案中各营养素的达成率
- 识别不足或过量的营养素
- 计算每种食材对各营养素的贡献度
- 选择最适合调整的食材
- 根据营养素权重和贡献度计算调整幅度
- 执行精准的摄入量调整

7. **综合变异** (`COMPREHENSIVE`)
- 随机选择上述变异类型之一执行
- 提供更全面的探索能力

#### 4. 约束处理

系统实现了多重约束机制:

1. **硬性约束**
- 营养素达标率范围
- 食物摄入量范围
- 食物组合规则

2. **软性约束**
- 用户偏好权重
- 营养平衡权重
- 多样性权重

### 特色功能

1. **个性化配置**
- 支持用户健康状况的个性化配置
- 支持用户偏好的个性化配置
- 支持营养素权重的动态调整

2. **智能优化**
- 基于NSGA-II的多目标优化
- 自适应变异策略
- 动态权重调整

3. **结果评估**
- 多维度评分系统
- 详细的营养分析
- 可视化输出

### 技术特点

1. **可扩展性**
- 模块化的目标评估系统
- 可配置的遗传操作
- 灵活的约束处理机制

2. **实用性**
- 考虑实际饮食场景
- 支持多种营养目标
- 考虑用户偏好和限制

3. **可靠性**
- 严格的约束检查
- 完整的有效性验证
- 详细的日志记录

### 使用的主要技术

- Java 8+
- 遗传算法框架
- 多目标优化算法
- 面向对象设计模式
- 数据结构和算法

### 性能优化

1. **计算优化**
- 缓存机制
- 并行评估
- 高效的数据结构

2. **内存优化**
- 对象复用
- 及时清理
- 内存管理

### 后续优化方向

1. **算法优化**
- 引入更多智能优化算法
- 优化变异策略
- 改进选择机制

2. **功能扩展**
- 支持更多营养目标
- 增加更多用户偏好选项
- 提供更多评估维度

3. **性能提升**
- 引入并行计算
- 优化数据结构
- 改进内存管理