# MCM/ICM Toolkit 美赛(MCM/ICM)编程手的**竞赛层工具箱**: 把比赛中反复手写的代码沉淀成"高频算法自己实现 + 成熟库薄封装 + 统一结果接口"。 > **不**替代 SciPy / scikit-learn / statsmodels / NetworkX / SALib / SymPy。 > 只做它们到"4 天赛程能用"之间的那一层。 ## 快速开始 ```powershell # 1) 建环境(两条路选一条) .\scripts\setup-venv.ps1 # venv,零下载,复用 Anaconda base 的科学栈 .\scripts\setup-conda.ps1 # conda 环境 mcm-toolkit(精准包列表,走代理下载) # 2) 自检 .\scripts\doctor.ps1 # 3) 激活 .\.venv\Scripts\Activate.ps1 ``` ```python import mcm_toolkit as mcm mcm.set_seed(42) r = mcm.bootstrap_ci(data, statistic=np.median, random_state=42) print(r.params["low"], r.params["high"]) ``` ## 当前状态(v0.0.1) 本地 git 仓库已初始化(`main`,首次提交 `5319589`),远程 Gitea 待配置。 **接口已定,实现未填。** 所有函数体是 `raise NotImplementedError` + `TODO(L0/L1/v0.2)` 标记, 按 [docs/03-roadmap.md](docs/03-roadmap.md) 的 L0 → L1 顺序填。 ## 目录 | 路径 | 说明 | |---|---| | `src/mcm_toolkit/` | 包源码,7 个子包 | | `tests/` | 测试,与包一一对应(测已知解析解,不测实现细节) | | `examples/` | 每个模块一个能跑的最小例子 | | `problems/` | 历年真题(每做完一题,反向沉淀 1~3 个通用函数) | | `notebooks/` | 探索用 | | `docs/` | 需求、架构、路线图、环境、规范 | | `scripts/` | 环境脚本 | | `STATUS.md` | 当前进度 | ## 子包 | 包 | 职责 | 关键函数 | |---|---|---| | `core` | 基础设施 | `Result` `get_rng` `check_*` | | `data` | 读 / 洗 / 变换 / 采样 | `load_table` `detect_outliers` `normalize` | | `stats` | 描述 / 推断 / bootstrap | `describe` `bootstrap_ci` `fit_distribution` | | `models` | 回归 / 时序 / ML | `fit_linear` `fit_arima` `compare_models` | | `solve` | 优化 / 模拟 / 敏感性 | `monte_carlo` `simulated_annealing` `sobol_analyze` | | `decision` | 评价决策 | `entropy_weights` `ahp_weights` `topsis` `gm11` | | `viz` | 出图出表 | `plot` `save_figure` `save_table` | ## 文档 开始动手前请先读 [docs/01-suggestion-review.md](docs/01-suggestion-review.md)—— 它记录了"为什么最终结构是这样",以及**明确不做什么**。 ## 许可 MIT,见 [LICENSE](LICENSE)。