math-skill 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +278 -0
  3. package/agents/math-critic.md +203 -0
  4. package/commands/abstraction.md +34 -0
  5. package/commands/algorithmic-thinking.md +34 -0
  6. package/commands/ask.md +21 -0
  7. package/commands/axiomatization.md +34 -0
  8. package/commands/causal-inference.md +34 -0
  9. package/commands/discrete-combinatorial.md +34 -0
  10. package/commands/game-theory.md +34 -0
  11. package/commands/induction-analogy.md +34 -0
  12. package/commands/information-theory.md +34 -0
  13. package/commands/logic-deduction.md +34 -0
  14. package/commands/modeling.md +37 -0
  15. package/commands/optimization.md +33 -0
  16. package/commands/probability-statistics.md +36 -0
  17. package/commands/symmetry-invariance.md +34 -0
  18. package/commands/topological-thinking.md +33 -0
  19. package/commands/transformation.md +33 -0
  20. package/docs/CLAUDE.md +187 -0
  21. package/docs/inspiration.md +113 -0
  22. package/knowledge-base/overview.md +230 -0
  23. package/package.json +60 -0
  24. package/skills/abstraction/SKILL.md +264 -0
  25. package/skills/abstraction/original-texts.md +175 -0
  26. package/skills/algorithmic-thinking/SKILL.md +371 -0
  27. package/skills/algorithmic-thinking/original-texts.md +256 -0
  28. package/skills/axiomatization/SKILL.md +213 -0
  29. package/skills/axiomatization/original-texts.md +160 -0
  30. package/skills/causal-inference/SKILL.md +374 -0
  31. package/skills/causal-inference/original-texts.md +167 -0
  32. package/skills/discrete-combinatorial/SKILL.md +286 -0
  33. package/skills/discrete-combinatorial/original-texts.md +185 -0
  34. package/skills/game-theory/SKILL.md +318 -0
  35. package/skills/game-theory/original-texts.md +131 -0
  36. package/skills/induction-analogy/SKILL.md +310 -0
  37. package/skills/induction-analogy/original-texts.md +154 -0
  38. package/skills/information-theory/SKILL.md +242 -0
  39. package/skills/information-theory/original-texts.md +127 -0
  40. package/skills/logic-deduction/SKILL.md +280 -0
  41. package/skills/logic-deduction/original-texts.md +173 -0
  42. package/skills/meta-selector/SKILL.md +188 -0
  43. package/skills/meta-selector/original-texts.md +105 -0
  44. package/skills/modeling/SKILL.md +318 -0
  45. package/skills/modeling/original-texts.md +165 -0
  46. package/skills/optimization/SKILL.md +292 -0
  47. package/skills/optimization/original-texts.md +168 -0
  48. package/skills/probability-statistics/SKILL.md +312 -0
  49. package/skills/probability-statistics/original-texts.md +193 -0
  50. package/skills/symmetry-invariance/SKILL.md +358 -0
  51. package/skills/symmetry-invariance/original-texts.md +221 -0
  52. package/skills/topological-thinking/SKILL.md +273 -0
  53. package/skills/topological-thinking/original-texts.md +164 -0
  54. package/skills/transformation/SKILL.md +264 -0
  55. package/skills/transformation/original-texts.md +216 -0
@@ -0,0 +1,292 @@
1
+ ---
2
+ name: optimization
3
+ description: |
4
+ 触发:当问题涉及资源分配、取舍、最大化/最小化目标,或在限制条件下做决策,或需要判断问题的凸性、使用拉格朗日方法、分析对偶结构时调用。
5
+ 模式:科研模式适用于数学推导、论文审查、实验设计优化;生活模式适用于日常决策、时间管理、人际互动、生活规划。
6
+ Trigger when a problem involves resource allocation, trade-offs, maximizing/minimizing objectives, decision-making under constraints, or when convexity analysis, Lagrangian methods, or duality structures are relevant.
7
+ Mode: Research mode for mathematical derivation, paper review, experimental design optimization; Life mode for daily decisions, time management, interpersonal interactions, life planning.
8
+ ---
9
+
10
+ # ⚖️ 优化思想
11
+
12
+ > "在最一般的约束条件下,寻找目标函数的极值——凸性决定难度,KKT 给出必要条件,对偶揭示结构。"
13
+ > "Under the most general constraints, find extrema of the objective — convexity determines difficulty, KKT gives necessity, duality reveals structure."
14
+ >
15
+ > —— 最优化理论与运筹学
16
+ > —— Optimization Theory & Operations Research
17
+
18
+ ## 核心原则 / Core Principle
19
+
20
+ **任何决策问题都可以表述为优化问题:在约束条件下最大化(或最小化)某个目标。优化的本质不是追求'最好',而是在约束下追求'可行中的最好'。**
21
+
22
+ **Any decision problem can be formulated as an optimization problem: maximizing (or minimizing) an objective subject to constraints. The essence of optimization is not pursuing 'the best' in the abstract, but pursuing 'the best among the feasible' under constraints.**
23
+
24
+ > 人生就是一场最优化——目标是你追求的价值,起点是你的出身,约束是时间、健康、规则。局部最优是当前环境中看似最好的选择,全局最优或许在另一个领域。探索与利用的权衡是人生的根本张力。重要的不是找到传说中的全局最优,而是在每一步迭代中保持方向大致正确、接受噪声与约束、允许目标随阅历增长而优雅地演变。过程即意义,优化本身就是生活。
25
+
26
+ > Life itself is an optimization — the objective is what you value, the starting point is where you begin, constraints are time, health, and rules. Local optima are the best-looking choices in your current environment; the global optimum might be in a completely different field. The explore-exploit tradeoff is life's fundamental tension. The point is not finding a legendary global optimum, but keeping the direction roughly right at each iteration, accepting noise and constraints, and letting the objective evolve gracefully as experience grows. The process is the meaning; optimization itself is life.
27
+
28
+ 优化的三个核心要素:
29
+ - **目标(Objective)**:你要最大化或最小化什么
30
+ - **约束(Constraints)**:不可违反的限制
31
+ - **可行选项(Feasible Options)**:满足所有约束的选择范围
32
+
33
+ > **数学形式化 / Mathematical Formalization**(科研模式参考)
34
+ >
35
+ > 一般优化问题:$\min_{x \in \mathbb{R}^n} f(x) \quad \text{s.t.} \quad g_i(x) \leq 0, \; i=1,\dots,m; \quad h_j(x) = 0, \; j=1,\dots,p$
36
+ >
37
+ > 其中 $f(x)$ 为目标函数,$g_i(x)$ 为不等式约束,$h_j(x)$ 为等式约束。
38
+ >
39
+ > 拉格朗日函数:$L(x, \lambda, \mu) = f(x) + \sum_{i=1}^{m} \lambda_i g_i(x) + \sum_{j=1}^{p} \mu_j h_j(x)$
40
+ >
41
+ > KKT 条件(核心必要条件):若 $x^*$ 为最优解且约束满足某种正则性条件(如 Slater 条件),则存在 $\lambda^* \geq 0$, $\mu^*$ 使得:
42
+ > 1. **驻点条件**:$\nabla_x L(x^*, \lambda^*, \mu^*) = 0$
43
+ > 2. **原始可行性**:$g_i(x^*) \leq 0$, $h_j(x^*) = 0$
44
+ > 3. **对偶可行性**:$\lambda_i^* \geq 0$
45
+ > 4. **互补松弛性**:$\lambda_i^* g_i(x^*) = 0$
46
+ >
47
+ > 凸性定义与关键性质:若 $f$ 和所有 $g_i$ 为凸函数,所有 $h_j$ 为线性函数,则问题为凸优化。凸优化中,**KKT 条件变为充分条件**,且局部最优 = 全局最优。
48
+
49
+ ## 不适用场景 / When NOT to Use
50
+
51
+ - **没有明确的评价标准**(不知道什么是"好")——先定义目标再谈优化 `[通用]`
52
+ - **纯粹的执行性任务**(如"把这段代码格式化")——没有优化空间 `[通用]`
53
+ - **用户已经确定了方案**——优化已由用户完成,无需重复 `[通用]`
54
+ - **问题本质是定性判断而非定量极值**——应先建模再优化 `[科研]`
55
+
56
+ ## 何时使用 / When to Use
57
+
58
+ ### 科研触发条件 / Research Triggers
59
+
60
+ - 需要判断问题是否为凸优化以决定求解难度
61
+ - 科研项目的时间规划或实验设计优化
62
+ - 需要在约束条件下做出理性决策,涉及可量化目标函数
63
+ - 不确定当前策略是否最优,想要系统分析
64
+
65
+ ### 生活触发条件 / Life Triggers
66
+
67
+ - 需要在有限资源(时间、精力、金钱)之间做分配
68
+ - 面临多目标取舍(如质量 vs 速度、短期 vs 长期)
69
+ - 想搞清楚"在当前限制下,我最好的选择是什么"
70
+ - 需要判断该优先争取什么资源(哪些限制一旦放宽收益最大)
71
+ - 感觉自己陷入"眼前看似最好但可能不是真正最好"的困境
72
+
73
+ ## 方法流程 / Method
74
+
75
+ ### 第一步:定义目标 / Define the Objective
76
+
77
+ 明确你要最大化或最小化什么。这是最重要的一步——目标不清晰,优化没有方向。
78
+
79
+ #### 科研模式 / Research Mode
80
+
81
+ **关键问题**:
82
+ - 单一目标还是多目标?
83
+ - 目标是可量化的吗?如果不能,能否找到代理变量?
84
+ - 目标是时间相关的吗?(静态优化 vs 动态优化)
85
+ - **$f$ 是否为凸函数?** 若凸,则局部最优即全局最优;若非凸,需警惕局部极值。
86
+
87
+ #### 生活模式 / Life Mode
88
+
89
+ 明确你要优化什么——这不是数学公式,而是人生方向。
90
+
91
+ - 你真正想要的是什么?(一个明确的目标,还是多个相互矛盾的追求?)
92
+ - 这个目标可以衡量吗?如果不能,用什么代理指标来判断"够好"?
93
+ - 目标会不会随时间变化?(短期目标 vs 长期方向)
94
+ - 核心追问:你追求的是当前环境下"看起来最好的",还是可能存在一个完全不同的领域更契合你?
95
+
96
+ #### 共通要点 / Common Key Points
97
+
98
+ 目标定义是优化的方向——方向错了,走得越远越偏。必须先回答"我要什么"再回答"怎么要"。
99
+
100
+ ### 第二步:列出约束 / List the Constraints
101
+
102
+ #### 科研模式 / Research Mode
103
+
104
+ 区分**硬约束**与**软约束**,同时对约束进行数学分类:
105
+
106
+ - **硬约束 [硬]**:物理限制、硬性 deadline、预算上限
107
+ - **软约束 [软]**:个人偏好、质量下限、舒适区
108
+ - **不等式约束 $g_i(x) \leq 0$**:定义可行域边界,是优化中最常见的约束类型
109
+ - **等式约束 $h_j(x) = 0$**:减少可行域维度,通常对应物理守恒或精确要求
110
+ - **线性约束 vs 非线性约束**:线性约束保持可行域为凸多面体;非线性约束可能使可行域非凸
111
+
112
+ #### 生活模式 / Life Mode
113
+
114
+ 搞清楚哪些限制是不可逾越的,哪些是可以协商的。
115
+
116
+ - **不可逾越的限制**:法律法规、物理极限、硬性截止日期——你不能突破这些
117
+ - **可以协商的限制**:个人偏好、舒适区、习惯——这些看似限制但其实是软约束,你可以选择突破
118
+ - 核心追问:你以为的限制中,有多少是真正的硬约束?有多少只是你给自己设的软约束?
119
+
120
+ #### 共通要点 / Common Key Points
121
+
122
+ 约束定义了你的选择范围。区分硬约束和软约束至关重要——混淆两者要么让你错过可行选项,要么让你追逐不可行方案。
123
+
124
+ ### 第三步:类型分类 / Classify the Problem Type
125
+
126
+ #### 科研模式 / Research Mode
127
+
128
+ 根据目标函数和约束的结构,判定问题类别:
129
+
130
+ | 类型 | 目标 | 约束 | 核心性质 | 典型方法 |
131
+ |------|------|------|----------|----------|
132
+ | LP(线性规划) | 线性 | 线性不等式 | 全局最优在顶点 | 单纯形法 |
133
+ | QP(二次规划) | 二次 | 线性 | 正定 QP 为凸 | 内点法 |
134
+ | 凸优化 | 凸 | 凸不等式 + 线性等式 | 局部=全局 | 梯度下降、内点法 |
135
+ | 非凸优化 | 非凸 | 任意 | 多局部极值 | 全局搜索、模拟退火 |
136
+ | 组合优化 | 离散域 | 任意 | NP-hard 常见 | 分支定界、启发式 |
137
+ | 随机优化 | 含随机项 | 可能含随机 | 期望最优 vs 随机可行 | SAA、鲁棒优化 |
138
+
139
+ #### 生活模式 / Life Mode
140
+
141
+ 判断你的问题属于哪种类型——这决定了你的求解策略:
142
+
143
+ - **有明确最优答案**的问题:目标清晰、限制明确,存在一个"最好的"选择——直接找到它
144
+ - **看似最好但未必真正最好的问题**:你可能在局部最优中——当前环境下最好的选择,换一个环境可能更好
145
+ - **没有完美方案的问题**:多个目标互相矛盾,不可能同时满足——必须取舍
146
+ - **信息不足的问题**:不确定选项的后果——找到"足够好"的方案即可,不必追求最优
147
+
148
+ #### 共通要点 / Common Key Points
149
+
150
+ 问题类型决定求解策略。不同类型需要不同方法——对"没有完美方案"的问题追求最优是浪费时间。
151
+
152
+ ### 第四步:寻找最优解 / Find the Optimal Solution
153
+
154
+ #### 科研模式 / Research Mode
155
+
156
+ 根据类型分类选择求解策略:
157
+ - **LP/QP/凸优化**:利用凸性,梯度类方法或内点法可保证收敛到全局最优
158
+ - **非凸优化**:需警惕局部最优——尝试多起点、全局搜索策略,或松弛为凸近似
159
+ - **组合优化**:精确求解往往 NP-hard——分支定界求小规模精确解,启发式求大规模近似解
160
+ - **随机优化**:样本平均近似(SAA)将随机问题转化为确定性近似问题
161
+ - **信息不足**:使用满意解(satisficing)——找到"足够好"的解即可
162
+
163
+ #### 生活模式 / Life Mode
164
+
165
+ 根据问题类型采取不同策略:
166
+
167
+ - **有明确最优答案**:系统比较各选项,直接选最优
168
+ - **可能陷入局部最优**:多探索不同领域,避免过早锁定——"多试几个方向再决定"比"在当前领域精雕细琢"有时更有效
169
+ - **没有完美方案**:明确各目标的权重,在取舍中找平衡——接受"不完美但足够好"
170
+ - **信息不足**:先收集关键信息,或采用"满意解"策略——找到"足够好"就行动,不必等"最优"
171
+
172
+ #### 共通要点 / Common Key Points
173
+
174
+ 求解策略必须匹配问题类型。对没有完美方案的问题追求最优是徒劳——满意解往往比最优解更务实。
175
+
176
+ ### 第五步:灵敏度分析 / Sensitivity Analysis
177
+
178
+ #### 科研模式 / Research Mode
179
+
180
+ 拉格朗日乘子的经济学含义:$\lambda_i^*$ 为第 $i$ 个不等式约束的**影子价格**——约束放松一个单位,目标函数改善约 $\lambda_i^*$ 个单位。互补松弛性表明:若 $\lambda_i^* = 0$,则该约束对最优解无影响(非活跃约束);若 $\lambda_i^* > 0$,则约束活跃且最优解恰好在其边界上。
181
+
182
+ **关键问题**:如果约束条件或目标函数发生微小变化,最优解会如何变化?哪些约束是活跃的?影子价格是多少?
183
+
184
+ #### 生活模式 / Life Mode
185
+
186
+ 搞清楚哪个限制最重要——如果某个限制放宽一点,你的选择空间会大幅扩展。
187
+
188
+ - **关键限制的优先级**:哪个限制一旦放宽,你获得的选择改善最大?——这告诉你应该优先争取什么资源
189
+ - **限制的活跃性**:有些限制根本不影响你的最佳选择(你离它的边界很远),有些限制恰好卡住你(你就在它的边界上)——只关注活跃的限制
190
+ - 核心追问:如果我只能放宽一个限制,应该选哪个?这往往指向你该优先争取的资源
191
+
192
+ #### 共通要点 / Common Key Points
193
+
194
+ 灵敏度分析告诉你"什么最重要"——不是所有限制都同等重要,活跃限制对结果的影响远大于非活跃限制。
195
+
196
+ ### 第六步:多目标与帕累托 / Multi-Objective and Pareto
197
+
198
+ #### 科研模式 / Research Mode
199
+
200
+ 当存在多个目标 $f_1, f_2, \dots, f_k$ 时,通常不存在单一最优解。帕累托最优解集定义:不存在另一个可行解使所有目标同时改善。
201
+
202
+ 常用方法:
203
+ - **加权求和法**:$\min \sum w_i f_i(x)$,权重 $w_i > 0$——不同权重对应帕累托前沿上不同点
204
+ - **$\epsilon$-约束法**:将一个目标作为主目标,其余转为不等式约束 $\min f_1(x)$ s.t. $f_i(x) \leq \epsilon_i$——遍历 $\epsilon_i$ 可覆盖帕累托前沿
205
+
206
+ #### 生活模式 / Life Mode
207
+
208
+ 当追求多个目标且它们互相矛盾时,没有完美方案——必须取舍。
209
+
210
+ - **取舍的本质**:有些目标之间必须牺牲一个来成就另一个,不存在同时满足所有目标的完美方案
211
+ - **如何取舍**:明确各目标的权重——哪个对你更重要?或者先把最重要的目标做到位,其余只要"不太差"就行
212
+ - 核心追问:你的各目标之间,哪些可以同时满足,哪些必须取舍?取舍时你优先保哪个?
213
+
214
+ #### 共通要点 / Common Key Points
215
+
216
+ 多目标问题没有唯一最优解——取舍是不可避免的。关键不是"找到完美方案",而是"在取舍中做出有意识的选择"。
217
+
218
+ ### 第七步:监控约束变化 / Monitor Constraint Changes
219
+
220
+ #### 科研模式 / Research Mode
221
+
222
+ 最优解不是永恒的——当约束条件变化时,需要重新优化。活跃约束的变化对最优解影响最大(影子价格高),非活跃约束的微小变化通常不影响最优解。
223
+
224
+ #### 生活模式 / Life Mode
225
+
226
+ 你的最佳选择不是一成不变的——当限制条件变了,你该重新审视选择。
227
+
228
+ - **什么变化最值得关注**:那些恰好卡住你的限制如果变化了,你的最优选择会随之改变;离你很远的限制即使变化,对你的选择也没什么影响
229
+ - **何时需要重新决策**:当你面临的限制发生了明显变化(新的机会出现、旧的约束消失),就该重新审视选择
230
+ - 核心追问:最近我的限制条件有没有变化?如果有,我的选择是否还合适?
231
+
232
+ #### 共通要点 / Common Key Points
233
+
234
+ 最优解依赖约束——约束变了,最优解就变了。定期审视限制条件是否发生变化,是持续优化的关键。
235
+
236
+ ## 常见错误 / Common Errors
237
+
238
+ | 错误 / Error | 批评 / Critique | 正确做法 / Correct Approach | 模式 |
239
+ |-------------|-------------------------------|---------------------------|------|
240
+ | 没有明确目标就优化 | 目标不清晰,方向不确定 | 先精确定义目标 | `[通用]` |
241
+ | 忽略隐式约束 | 未发现的约束使"最优解"不可行 | 穷尽检查所有可能的约束 | `[通用]` |
242
+ | 陷入局部最优 | 非凸问题中贪心策略不保证全局最优 | 验证凸性;非凸时用多起点或全局方法 | `[科研]` |
243
+ | 把最优当唯一 | 最优解可能不唯一 | 检查是否存在多个等价最优解 | `[科研]` |
244
+ | 多目标用单目标方法 | 不同目标需 trade-off | 使用帕累托分析 | `[科研]` |
245
+ | 忘记重新优化 | 约束变了但未更新 | 定期检查约束是否变化 | `[通用]` |
246
+ | 未验证凸性 | 非凸问题误用凸优化方法 | 先判断凸性,再选方法 | `[科研]` |
247
+ | 忽略对偶理论 | 对偶问题可能更易求解 | 构造对偶问题,利用强对偶性 | `[科研]` |
248
+ | 混淆可行与最优 | 可行解不一定最优;最优解必须可行 | 先验证可行性,再验证最优性 | `[科研]` |
249
+ | 忽略计算复杂度 | 组合优化问题可能 NP-hard | 对大规模问题使用启发式或近似算法 | `[科研]` |
250
+ | 把软约束当硬约束 | 以为不可突破的限制其实可以协商 | 严格区分不可逾越的限制和可以协商的限制 | `[生活]` |
251
+ | 追求完美方案 | 多目标问题不存在完美方案,取舍不可避免 | 有意识地做取舍,接受"足够好" | `[生活]` |
252
+ | 不关注哪个限制最关键 | 所有限制看似同等重要,但活跃限制的影响远大于非活跃限制 | 找出哪个限制一旦放宽收益最大,优先争取 | `[生活]` |
253
+ | 在当前领域死磕 | 可能陷入局部最优——换个领域可能更好 | 多探索不同方向,不要过早锁定 | `[生活]` |
254
+
255
+ ## 操作规程 / Operating Procedure
256
+
257
+ **模式选择**:根据问题性质自动选择——
258
+ - **科研模式**触发条件:涉及数学推导、定理证明、算法设计、论文审查、实验设计优化、需要判断凸性或使用对偶理论
259
+ - **生活模式**触发条件:涉及日常决策、人际互动、时间管理、生活规划、资源分配、取舍判断
260
+
261
+ 当本 skill 被触发时,根据选择的模式执行以下步骤:
262
+
263
+ ### 科研模式输出格式 / Research Mode Output Format
264
+
265
+ 1. **目标函数**:用一句话明确"我们要最大化/最小化什么" `[目标]: [描述]`,并判断凸性 `[凸性]: [凸/非凸/未知]`
266
+ 2. **约束清单**:标注每个约束为 `[硬约束]` 或 `[软约束]`,并分类 `[不等式/等式]` `[线性/非线性]`
267
+ 3. **类型分类**:判定问题类别 `[类型]: [LP/QP/凸/非凸/组合/随机]`
268
+ 4. **可行域分析**:在约束下,哪些选项是可行的?活跃约束是哪些?
269
+ 5. **最优解/满意解**:标注使用的策略 `[策略]: [梯度法/内点法/全局搜索/satisficing/帕累托]`
270
+ 6. **灵敏度分析**:关键约束的影子价格是多少?若关键约束变化 X%,结论如何变化?
271
+ 7. **行动建议**:明确写出"接下来我将……"
272
+
273
+ **科研模式输出必须包含以上 7 项,不得只输出分析性文字而不给出结论。**
274
+
275
+ ### 生活模式输出格式 / Life Mode Output Format
276
+
277
+ 1. **核心追求**:一句话说清"我最想要什么" `[追求]: [描述]`——单一目标还是多个矛盾目标?
278
+ 2. **现实限制**:标注每个限制 `[不可逾越]` 或 `[可以协商]`——哪些是真正的硬约束,哪些只是你给自己设的软约束?
279
+ 3. **可选范围**:在这些限制下,我实际有哪些选择?最受限的选择维度是什么?
280
+ 4. **最优选择/满意选择**:标注策略 `[策略]: [系统比较/多方向探索/取舍平衡/满意即可]`
281
+ 5. **关键限制的优先级**:哪个限制一旦放宽收益最大?——这告诉我该优先争取什么资源
282
+ 6. **行动建议**:明确写出"接下来我将……"
283
+
284
+ **生活模式输出必须包含以上 6 项,不得只输出分析性文字而不给出结论。**
285
+
286
+ ## 与其他 skill 的关系 / Relations to Other Skills
287
+
288
+ - **建模思想**:优化前需要先建模——定义目标函数和约束本身就是一个建模过程
289
+ - **概率与统计**:在不确定性下做优化需要随机优化或鲁棒优化方法
290
+ - **变换思想**:有时变换到对偶问题更容易求解;对偶性是优化中最深刻的变换
291
+ - **博弈思想**:当多个决策者同时优化时,问题变为博弈论中的均衡问题——纳什均衡即多人优化中的稳定点
292
+ - **算法思想**:优化问题的求解依赖于算法设计——凸优化可用梯度法,组合优化需分支定界或启发式算法
@@ -0,0 +1,168 @@
1
+ # 数学出处与经典文献 / Mathematical Sources and Classic Texts
2
+
3
+ ## Euler-Lagrange 变分方程与最速降线 / Euler-Lagrange Variational Equation & Brachistochrone (1696)
4
+
5
+ > Johann Bernoulli 于 1696 年提出最速降线问题:在重力作用下,质点从 A 到 B 沿哪条曲线下降最快?答案是旋轮线(cycloid)。
6
+
7
+ **核心方程**:对泛函 J[y] = ∫_{a}^{b} F(x, y, y') dx,极值函数满足
8
+
9
+ > ∂F/∂y - d/dx(∂F/∂y') = 0 (Euler-Lagrange 方程)
10
+
11
+ 最速降线问题的 F = √(1 + y'²) / √(2g(y₀ - y)),代入 Euler-Lagrange 方程后解出旋轮线参数方程:x = a(θ - sin θ), y = a(1 - cos θ)。
12
+
13
+ **思想**:变分法将"在整个函数类中寻优"化为微分方程求解——这是无穷维优化的起源。Euler(1744)系统化了变分法,Lagrange(1788)引入了 δ 符号与乘数法,两者一脉相承。变分法后来发展为最优控制理论(Pontryagin 最大值原理,1961),在航天轨道设计、机器人路径规划等领域广泛应用。
14
+
15
+ ## Fermat 与 Weierstrass 极值条件 / Fermat & Weierstrass Conditions for Unconstrained Optimization
16
+
17
+ > Fermat(1636):可微函数 f 在 x* 处取得局部极值的必要条件是 ∇f(x*) = 0。
18
+ > Weierstrass(19th c.):若 f 二阶可微且 ∇f(x*) = 0,则 Hessian H(x*) 正定 ⇔ x* 是严格局部极小;H(x*) 负定 ⇔ x* 是严格局部极大。
19
+
20
+ 对凸函数,∇f(x*) = 0 不仅是必要条件,也是充分条件——且 x* 是全局极小。
21
+
22
+ **思想**:一阶条件找驻点,二阶条件判极值性质——无约束优化的最基本定理。∇f = 0 是几乎所有迭代优化算法(梯度下降、牛顿法)的收敛目标。
23
+
24
+ ## Lagrange 乘数法 / Lagrange Multipliers (1788)
25
+
26
+ > 在约束 g(x) = 0 下求 f(x) 的极值,等价于求 L(x,λ) = f(x) - λg(x) 的无条件极值。
27
+
28
+ **思想**:将约束优化问题转化为无约束问题。在最优解处,目标函数的梯度与约束函数的梯度平行:∇f(x*) = λ∇g(x*)。
29
+
30
+ ## Pareto 最优性 / Pareto Optimality (Vilfredo Pareto, ~1906)
31
+
32
+ > 在多目标优化中,解 x 是 Pareto 最优的,若不存在 y 使得 f_i(y) ≤ f_i(x) ∀i 且至少一个 f_j(y) < f_j(x)(严格改善)。
33
+
34
+ Pareto 在《Manuale di economia politica》(1906) 中将此概念引入经济学:资源配置的效率前沿。Pareto 前沿 Pareto frontier {f(x) : x is Pareto optimal} 刻画了所有不可同时改善的权衡解。数学上,对目标 f₁,...,fₘ 的 Pareto 前沿是 {y ∈ ℝᵐ : y = (f₁(x),...,fₘ(x)), x Pareto optimal}——它是目标空间中的一个(通常非凸的)曲面。
35
+
36
+ > 加权标量化:将多目标 min f₁,...,fₘ 转化为单目标 min Σw_i f_i(w_i > 0),每个权重组合对应 Pareto 前沿上的一个点。这是求解 Pareto 前沿的常用方法,但对非凸前沿不能遍历所有 Pareto 最优解。
37
+
38
+ **思想**:多目标优化没有唯一的"最优解",而有一组 Pareto 最优解,需要在它们之间做权衡。这在经济学(效率与公平)、工程(性能与成本)、机器学习(精度与复杂度)中无处不在。
39
+
40
+ ## 博弈论与优化 / Game Theory & Optimization (von Neumann, 1928; Nash, 1950)
41
+
42
+ > Nash 均衡:策略组 (s₁*, ..., sₙ*) 使得每个玩家 i 在其他玩家策略固定时,s_i* 是其最优响应——即无人有单方面偏离的动机。
43
+
44
+ von Neumann(1928)证明了零和博弈的 minimax 定理:max_{x} min_{y} f(x,y) = min_{y} max_{x} f(x,y),这本质上是线性规划对偶性的先声。Nash(1950)将均衡推广到非零和博弈,Nash 均衡是"互为最优"的优化——每个玩家的优化问题以他人策略为约束。
45
+
46
+ > Nash 均衡的存在性:Nash(1950)用 Brouwer 不动点定理证明了每个有限博弈至少存在一个混合策略 Nash 均衡。这揭示了博弈论与拓扑学的深层联系。
47
+
48
+ **思想**:博弈论将优化从"单人决策"推广到"多人交互决策"——最优不再是对自然的最优,而是对其他理性主体的最优响应。
49
+
50
+ ## KKT 条件 / Karush-Kuhn-Tucker Conditions (1939/1951)
51
+
52
+ 不等式约束优化的必要条件:
53
+
54
+ > 对于 min f(x) s.t. g_i(x) ≤ 0, h_j(x) = 0,最优解 x* 满足:
55
+ > - 平稳性:∇f(x*) + Σμ_i∇g_i(x*) + Σλ_j∇h_j(x*) = 0
56
+ > - 可行性:g_i(x*) ≤ 0, h_j(x*) = 0
57
+ > - 互补松弛性:μ_i · g_i(x*) = 0, μ_i ≥ 0
58
+
59
+ Karush(1939,硕士论文)最早给出此条件;Kuhn & Tucker(1951)独立重新发现并广泛传播。
60
+
61
+ **思想**:最优解处,要么约束不起作用(μ_i = 0),要么约束是紧的(g_i(x*) = 0)。互补松弛性是对偶理论的基石——它将 KKT 条件与对偶间隙为零紧密联系。当约束限定条件 constraint qualification 成立时(如 LICQ:活跃约束梯度线性无关),KKT 条件是最优性的必要条件。
62
+
63
+ ## 线性规划对偶 / Linear Programming Duality (Farkas, 1902; Dantzig-von Neumann, 1947)
64
+
65
+ > Farkas 引理(1902):Ax = b, x ≥ 0 有解 ⟺ Aᵀy ≥ 0, bᵀy < 0 无解——这是 LP 对偶的几何根基。
66
+
67
+ > 强对偶定理:若原 LP min cᵀx s.t. Ax = b, x ≥ 0 有可行解,则 max bᵀy s.t. Aᵀy ≤ c 的最优值相等。对偶变量 y 的分量称为影子价格 shadow price——它衡量每个约束的"边际价值"。
68
+
69
+ **思想**:每个 LP 都有一个"镜像"问题——原问题看成本,对偶问题看价值。对偶间隙为零是深刻的事实:资源的最小成本等于影子价格的最大收益。
70
+
71
+ ## Dantzig 单纯形法 / Simplex Method (1947)
72
+
73
+ 线性规划的基本算法。在可行域的顶点上搜索最优解。
74
+
75
+ > Klee-Minty 立方体(1973):存在 LP 实例使得单纯形法遍历所有 2ⁿ 个顶点——最坏情况指数复杂度。
76
+
77
+ > 内点法 / Interior-Point Methods:Karmarkar(1984)提出多项式时间 LP 算法,在可行域内部沿中心路径收敛,避免顶点遍历。现代内点法(如 Mehrotra predictor-corrector)在实践和理论上均表现优异。
78
+
79
+ **思想**:线性规划的最优解一定在可行域的顶点上。单纯形法利用此结构沿边移动;内点法从内部逼近,两者互补。
80
+
81
+ ## 对偶理论 / Duality Theory
82
+
83
+ > 弱对偶:对任何优化问题,对偶问题的最优值 d* ≤ 原问题最优值 p*(对偶间隙 gap = p* - d* ≥ 0)。
84
+
85
+ > 强对偶(Slater 条件):若凸优化问题存在严格可行点(Slater point:g_i(x) < 0 严格成立),则 d* = p*,对偶间隙为零。
86
+
87
+ > 对偶提供了下界(原问题的最优值 ≥ 对偶值),这在分支定界、 Cutting-plane 等算法中是关键工具。
88
+
89
+ **思想**:对偶将"最小化成本"与"最大化价值"联系起来——两个视角看同一问题。Slater 条件保证了凸优化的"无信息损失"。
90
+
91
+ ## 梯度下降 / Gradient Descent (Cauchy, 1847; Robbins-Monro, 1951)
92
+
93
+ > Cauchy(1847)提出最速下降法:x_{k+1} = x_k - α_k ∇f(x_k),沿负梯度方向迭代,α_k 为步长。对 L-平滑凸函数(Lipschitz 连续梯度),步长 α = 1/L 时 f(x_k) - f(x*) ≤ L‖x₀ - x*‖² / (2k)——线性收敛率 O(1/k)。
94
+
95
+ > 牛顿法 Newton's Method:x_{k+1} = x_k - H(x_k)⁻¹ ∇f(x_k),利用二阶信息,在最优解附近达到二次收敛 O(‖x_k - x*‖²)。
96
+
97
+ > 随机梯度下降 SGD:Robbins & Monro(1951)提出随机逼近,用噪声梯度 g_k ≈ ∇f(x_k) 替代真梯度。条件 Σα_k = ∞, Σα_k² < ∞ 保证收敛。SGD 在期望意义上收敛,代价是方差——minibatch 是方差与效率的折中。
98
+
99
+ **思想**:梯度下降是最朴素的优化——"哪里最陡就往哪里走"。SGD 将此思想扩展到大数据场景:不需要看全部数据,只需随机采样一小部分即可逼近方向。深度学习的训练几乎全部依赖 SGD 及其变体(Adam, AdaGrad 等)。
100
+
101
+ ## 整数规划与 NP-困难 / Integer Programming & NP-Hardness (Cook, 1971; Karp, 1972)
102
+
103
+ > 整数线性规划 ILP:min cᵀx s.t. Ax ≤ b, x ∈ ℤⁿ——变量取整数值。即使 0-1 ILP(x ∈ {0,1}ⁿ)也是 NP困难的。
104
+
105
+ > Cook(1971)证明 SAT 是 NP 完全的(Cook-Levin 定理);Karp(1972)列出 21 个 NP 完全问题,包含整数规划、背包问题、旅行商问题等。ILP 是 NP困难的——不存在(在 P ≠ NP 假设下)多项式时间精确算法。
106
+
107
+ > 凸松弛:将 x ∈ ℤⁿ 松弛为 x ∈ ℝⁿ 得到 LP,其最优值给出 ILP 的下界——这正是分支定界法 branch-and-bound 的核心机制。
108
+
109
+ **思想**:离散优化比连续优化本质上更难。"整数"这一看似微小的约束,将问题从多项式可解推向 NP 困难。分支定界 branch-and-bound、割平面 cutting-plane 是主要精确方法;启发法在实践中更常用。
110
+
111
+ ## 凸优化 / Convex Optimization (Boyd & Vandenberghe, 2004)
112
+
113
+ > 凸优化:min f(x) s.t. g_i(x) ≤ 0 (凸), h_j(x) = 0 (线性), x ∈ C (凸集)。f 为凸函数时局部极小即全局极小。
114
+
115
+ > 关键性质:(1) 局部极小 = 全局极小;(2) 可行域是凸集;(3) Slater 条件下强对偶成立;(4) 内点法在多项式时间内可解。
116
+
117
+ 凸优化涵盖的重要子类:
118
+ - LP(线性规划):f 线性,约束线性
119
+ - QP(二次规划):f 二次,约束线性
120
+ - SOCP(二阶锥规划):约束含二阶锥 ‖Ax + b‖ ≤ cᵀx + d
121
+ - SDP(半定规划):约束含矩阵半正定条件 X ≥ 0
122
+ - GP(几何规划):对数空间下化为凸优化
123
+
124
+ Boyd & Vandenberghe《Convex Optimization》(2004) 统一了上述各类问题,成为现代优化的标准教材与工程参考。凸优化是"可高效求解的优化"的边界——凸性保证了算法的收敛性与解的全局性。
125
+
126
+ **思想**:凸优化是优化理论的"甜蜜区"——足够丰富以涵盖大量实际问题,又足够结构化以保证可解性。非凸问题往往通过凸松弛 convex relaxation 来近似。
127
+
128
+ ## Bellman 最优性原理 / Bellman's Principle of Optimality (1957)
129
+
130
+ > "一个最优策略具有这样的性质:无论初始状态和初始决策如何,剩余决策必须构成关于由初始决策产生的状态的最优策略。"
131
+ > "An optimal policy has the property that whatever the initial state and initial decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the first decision."
132
+
133
+ > 递推方程:V(s) = max_a { R(s,a) + γ · V(s') },其中 s' 为状态转移结果。
134
+
135
+ **思想**:动态规划的核心——最优解的子结构也是最优的。Bellman 方程将多阶段决策分解为单阶段子问题,是强化学习的理论根基。
136
+
137
+ ## 优化的哲学意义
138
+
139
+ 优化思想的核心是**在约束下做最好的选择**——这不仅是数学问题,也是人生问题。生活中大多数决策都可以表述为优化问题:
140
+
141
+ - **目标函数**:你想最大化什么?(幸福?成就?自由?)
142
+ - **约束条件**:你面临什么限制?(时间?金钱?能力?)
143
+ - **可行域**:在约束下你有什么选择?
144
+ - **最优解**:在所有选择中,哪个使目标最大化?
145
+ - **对偶视角**:从"成本"看和从"价值"看,答案是一致的——这正是强对偶的哲学。
146
+ - **凸与非凸**:凸优化有唯一全局最优;非凸优化有多个局部最优——人生的困境恰在于世界是非凸的。
147
+
148
+ ## 优化理论历史年表 / Timeline of Optimization
149
+
150
+ | 年份 | 事件 |
151
+ |------|------|
152
+ | 1636 | Fermat 提出无约束极值的必要条件 ∇f = 0 |
153
+ | 1696 | Johann Bernoulli 提出最速降线问题,变分法萌芽 |
154
+ | 1744 | Euler 系统化变分法 |
155
+ | 1788 | Lagrange 发表乘数法,融入《分析力学》 |
156
+ | 1902 | Farkas 引理——LP 对偶的几何基础 |
157
+ | ~1906 | Pareto 将效率前沿概念引入经济学 |
158
+ | 1928 | von Neumann 证明 minimax 定理(零和博弈) |
159
+ | 1939 | Karush 给出 KKT 条件(硕士论文) |
160
+ | 1947 | Dantzig 发明单纯形法;von Neumann 建立 LP 对偶 |
161
+ | 1950 | Nash 证明非零和博弈均衡存在性 |
162
+ | 1951 | Kuhn & Tucker 发表 KKT 条件;Robbins-Monro 提出随机逼近 |
163
+ | 1957 | Bellman 发表动态规划与最优性原理 |
164
+ | 1971 | Cook 证明 NP 完全性(Cook-Levin 定理) |
165
+ | 1972 | Karp 列出 21 个 NP 完全问题 |
166
+ | 1973 | Klee-Minty 证明单纯形法最坏情况指数复杂度 |
167
+ | 1984 | Karmarkar 提出多项式时间内点法 |
168
+ | 2004 | Boyd & Vandenberghe 出版《Convex Optimization》