File size: 2,100 Bytes
b185c87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
---
title: Seating Chart Solver
emoji: 🪑
colorFrom: indigo
colorTo: purple
sdk: docker
app_port: 7860
short_description: 基于模拟退火算法的智能活动排座与可视化系统
---

# Seating Chart Solver (智能排座专家)

这是一个专为大型活动(婚礼、晚宴、会议)设计的智能排座系统。它利用**模拟退火算法 (Simulated Annealing)**,在满足各种复杂约束条件(如“必须坐在一起”、“不能坐在一起”)的同时,自动优化宾客的座位安排,最大化整体满意度。

## 核心功能

*   **智能优化引擎**: 一键自动计算最佳座位安排,解决 NP-Hard 排座问题。
*   **复杂约束管理**: 支持定义“亲密关系”(权重加分)和“冲突关系”(权重扣分)。
*   **可视化布局**: 直观的圆形餐桌视图,实时显示入座情况。
*   **资产导出**: 支持将最终排座方案导出为高清图片 (PNG) 或 PDF 文档,直接用于打印或分享。
*   **多维度评分**: 实时反馈当前方案的“和谐度”评分。

## 解决痛点

活动策划中最头疼的环节往往是排座位:
*   如何让关系好的人坐在一起?
*   如何避免死对头同桌?
*   如何平衡每桌的人数?
本工具通过算法自动化解决这些问题,将耗时数小时的工作缩短为几秒钟。

## 技术栈

*   **算法**: Python (Simulated Annealing), NumPy
*   **后端**: Flask
*   **前端**: Vue 3, Element Plus, TailwindCSS
*   **导出**: html2canvas, jsPDF
*   **部署**: Docker (Python 3.11 Slim)

## 算法原理

系统将排座问题建模为组合优化问题:
1.  **目标函数**: $Score = \sum (Relation_{i,j} \times SameTable_{i,j}) - \sum (Conflict_{i,j} \times SameTable_{i,j}) + GroupBonus$
2.  **寻优策略**: 使用模拟退火算法,允许以一定概率接受较差解以跳出局部最优,最终收敛到全局近似最优解。

## 运行方式

```bash
# 构建
docker build -t seating-solver .

# 运行
docker run -p 7860:7860 seating-solver
```

访问 `http://localhost:7860` 开始使用。