Skip to content

Commit

Permalink
1.5
Browse files Browse the repository at this point in the history
  • Loading branch information
yhtq committed Jan 5, 2025
1 parent 5065c0d commit d9e20a0
Show file tree
Hide file tree
Showing 4 changed files with 281 additions and 7 deletions.
4 changes: 2 additions & 2 deletions 并行与分布式计算/main.typ
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@

如果采用 BSP 结构,程序运行时间大约为:
$
sum_(s = 1)^S w_s + g sum_(s = 1)^S h_2 + l S
sum_(s = 1)^S w_s + g sum_(s = 1)^S h_s + l S
$
其中:
- $S$ 是总超步数量
Expand All @@ -148,7 +148,7 @@
]
有些时候,BSP 架构的程序也可以实现本地计算与全局通信重叠,运行时间可以进一步减少。同时,这样的估算忽略了通信的延迟,传输 $m$ 各长度为 $1$ 的消息的开销等于传输一个长度为 $m$ 的消息的开销,这是不现实的。因此有更精细的模型,例如 LogP 模型。
== 并行编程模型
- 并行计算的八字原则:“负载均衡,通信极小”
- 并行计算的八字原则:*“负载均衡,通信极小”*
- 并行计算的基本形式:主从并行,流水线并行,工作池并行,功能分解,区域分解,递归分治等
主要的并行编程模型包括:
- 自动并行
Expand Down
2 changes: 1 addition & 1 deletion 数理逻辑/main.typ
Original file line number Diff line number Diff line change
Expand Up @@ -1647,7 +1647,7 @@
#definition[Pf][
定义 $NN$ 上的关系 Pf 为:
$
"Pf"(m, n) <=> m "是" calN "中一个公式序列的配数,且是" n "对应公式的一个证明"
"Pf"(m, n) <=> m space 是 space calN "中一个公式序列的配数,且是" n "对应公式的一个证明"
$
]
#proposition[][
Expand Down
170 changes: 170 additions & 0 deletions 计算方法B/code/hw12/hw12.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
#import "../../../template.typ": *
#show: note.with(
title: "作业12",
author: "YHTQ",
date: datetime.today().display(),
logo: none,
withOutlined : false,
withTitle : false,
withHeadingNumbering: false
)
= 5.
注意到 KTT 条件包含:
$
nabla f(x) - lambda^T nabla C(x) = 0\
lambda^T nabla C(x) = nabla f(x)
$
题目给出 $nabla C(x)$ 满秩,当然以上线性方程的解唯一。
= 10.
$
L(x, lambda) = (x_1 - 1)^2 + (x_2 - 2)^2 - lambda ((x_1 - 1)^2 - 5 x_2)
$
求 KKT 条件:
$
cases(
2 (1 - lambda) (x_1 - 1) = 0,
2 (x_2 - 2) + 5 lambda = 0,
(x_1 - 1)^2 - 5 x_2 = 0
)
$
- 若 $x_1 = 1$,则解得 $x_2 = 0, lambda = 4/5$,注意到:
$
nabla ((x_1 - 1)^2 - 5 x_2) (1, 0) = (0, -5)
$
因此线性化可行方向为 $(plus.minus 1, 0)$,它们都与梯度正交。进一步计算:
$
W^* = mat(2 - 2 lambda, 0;0, 2) = mat(2/5, 0;0, 2)
$
是正定矩阵,因此由二阶充分性条件这是一个局部极小点。
- 若 $lambda = 1$,发现无解

$
L(x, lambda) = (x_1 + x_2)^2 + 2 x_1 + x_2^2 - lambda_1 (4 - x_1 - 3x_2) - lambda_2 (3 - 2 x_1 -x_2) - lambda_3 x_1 - lambda_4 x_2
$
$
cases(
2 (x_1 + x_2) + 2 + lambda_1 + 2 lambda_2 - lambda_3 = 0,
2 (x_1 + x_2) + 2 x_2 + 3 lambda_1 + lambda_2 - lambda_4 = 0,
lambda_1 (4 - x_1 - 3 x_2) = 0,
lambda_2 (3 - 2 x_1 - x_2) = 0,
lambda_3 x_1 = 0,
lambda_4 x_2 = 0
)
$
- 首先观察到若 $lambda = 0$,则 $x_1 = -2, x_1 = 1,$ 但不满足约束条件
- 先设 $x_1 != 0, x_2 !=0$,有 $lambda_3 = lambda_4 = 0$
- 假设 $lambda_1 = 0, lambda_2 != 0$,有:
$
cases(
2 (x_1 + x_2) + 2 + 2 lambda_2 = 0,
2 (x_1 + x_2) + 2 x_2 + lambda_2 = 0,
3 - 2 x_1 - x_2 = 0
)
$
计算得:
$
2 + 2 lambda_2 = lambda_2 + 2 x_2\
lambda_2 = 2 x_2 - 2\
2(x_1 + x_2) + 2 x_2 + 2 x_2 - 2 = 0\
2 x_1 + 6x_2 - 2 = 0\
x_1 + 3 x_2 - 1 = 0\
2 x_1 + x_2 - 3 = 0\
x_1 = 8/5, x_2 = -1/5
$
不满足约束!
- 假设 $lambda_1 != 0, lambda_2 = 0$,有:
$
cases(
2 (x_1 + x_2) + 2 + lambda_1 = 0,
2 (x_1 + x_2) + 2 x_2 + 3 lambda_1 = 0,
4 - x_1 - 3 x_2 = 0
)
$
计算:
$
2 lambda_1 + 2 x_2 - 2 = 0\
lambda_1 = 1 - x_2\
2(x_1 + x_2) + 2 + 1 - x_2 = 0\
2 x_1 + x_2 + 3 = 0\
x_1 + 3x_2 - 4 = 0\
x_1 = - 13/5, x_2 = 11/5
$
不满足约束!
- 假设 $lambda_1 != 0, lambda_2 != 0$,有:
$
cases(
2 (x_1 + x_2) + 2 + lambda_1 + 2 lambda_2 = 0,
2 (x_1 + x_2) + 2 x_2 + 3 lambda_1 + lambda_2 = 0,
4 - x_1 - 3 x_2 = 0,
3 - 2 x_1 - x_2 = 0
)
$
直接解得 $x_1 = x_2 = 1$,但它不是局部极小点,不难验证 $(-1, -1)$ 是可行的下降方向
- $x_1 = 0$,此时不难解得 $x_2 = 0$ 时取极小,也是最小点
- $x_2 = 0$ 时情形类似
= 11.
$
L(x) = x_1^2 + 4 x_2^2 + 16 x_3^2 - lambda c(x)
$
KKT 条件:
$
cases(
2 x_1 - lambda partialDer(c(x), x_1) = 0,
8 x_2 - lambda partialDer(c(x), x_2) = 0,
32 x_3 - lambda partialDer(c(x), x_3) = 0,
c(x) = 0
)
$
== (1)
条件变成:
$
cases(
2 x_1 - lambda 1 = 0,
8 x_2 = 0,
32 x_3 = 0,
x_1 - 1 = 0
)
$
显然解为 $x_1 = 1, x_2 = x_3 = 0$,不难验证是最小值点
== (2)
条件变成:
$
cases(
2 x_1 - lambda x_2 = 0,
8 x_2 - lambda x_1 = 0,
32 x_3 = 0,
x_1 x_2 - 1 = 0
)
$
计算:
$
16 x_1 x_2 = lambda^2 x_1 x_2\
lambda^2 = 16\
lambda = plus.minus 4
$
- 若 $lambda = 4$,则 $x_1 = 2 x_2$,得 $2 x_2^2 = 1, x_2 = plus.minus sqrt(2)/2, x_1 = plus.minus sqrt(2)$
- 若 $lambda = -4$,则 $x_1 = -2 x_2$,得 $-2 x_2^2 = 1$ 无解!
由于一对 KKT 点的函数值相等,而不难验证原问题最小值存在,因此两个点都是最小值点
== (3)
条件变成:
$
cases(
2 x_1 - lambda x_2 x_3 = 0,
8 x_2 - lambda x_1 x_3 = 0,
32 x_3 - lambda x_1 x_2 = 0,
x_1 x_2 x_3 - 1 = 0
)
$
计算:
$
512 x_1 x_2 x_3 = lambda^3 (x_1 x_2 x_3)^2\
lambda^3 = 512\
lambda = 8\
2/(x_2 x_3) = 8 x_2 x_3\
x_1^2 = 4, x_2^2 x_3^2 = 1/4\
8x_2 - 16 x_3 = 0\
x_2 = 2 x_3\
x_2^2 = 4 x_3^2 \
x_3^2 = 1/4\
$
类似的找到若干函数值相等的最小值点
112 changes: 108 additions & 4 deletions 计算方法B/main.typ
Original file line number Diff line number Diff line change
Expand Up @@ -1123,7 +1123,7 @@
$
解得:
$
k(x) = (f^(n + 1) (x))/((n + 1)!)
k(x) = (f^(n + 1) (xi))/((n + 1)!)
$
]
#remark[][
Expand Down Expand Up @@ -1498,9 +1498,9 @@
其中:
$
k_1 = f(x_n, y_n)\
k_2 = f(x_n + a_2 h, h b_(2 1) k_1)\
k_2 = f(x_n + a_2 h, y_n + h b_(2 1) k_1)\
... \
k_m = f(x_n + a_m h, h sum_(i = 1)^(m - 1) b_(m i) k_i)
k_m = f(x_n + a_m h, y_n + h sum_(i = 1)^(m - 1) b_(m i) k_i)
$
事实上,往往有:
$
Expand Down Expand Up @@ -1684,7 +1684,7 @@
$
min_alpha f(x_k + alpha alpha_k)
$
其中 $alpha_k$ 是事先确定的方向。再选择 $alpha alpha_k$ 为步长即可。它的缺点是计算量过大,很多时候没有必要。大多数时候,我们都会选择非精确线搜素策略,常见的准则包括:
其中 $alpha_k$ 是事先确定的方向。再选择 $alpha alpha_k$ 为步长即可。它的缺点是计算量过大,很多时候没有必要。大多数时候,我们都会选择非精确线搜索策略,常见的准则包括:
- Armijo 准则:
$
f(x_k + alpha alpha_k) <= f(x_k) + rho g_k^T alpha_k alpha
Expand Down Expand Up @@ -1999,6 +1999,110 @@
- 采用 Wolfe 准则的 DY 方法得到的方向是下降方向a
]
= 约束最优化问题
== 一般约束最优化问题
一般约束最优化问题的形式为:
$
min f(x)\
s.t. c_i (x) = 0, i in E\
s.t. c_i (x) >= 0, i in I
$
其中 $f(x)$ 是目标函数,$c_i (x)$ 是约束函数,$I, E$ 分别代表等式约束和不等式约束。我们希望找到 $x$ 使得 $f(x)$ 最小,同时满足约束条件。这种问题的求解方法有很多,下面介绍几种常见的方法。

通常记:
$
g(x) = nabla f(x)\
a_i (x) = nabla c_i (x)
$
同时称所有满足约束的点构成的集合为可行域,记作 $D$,原问题也可以写成:
$
min_(x in D) f(x)
$
约束最优化问题同样也有局部最优解和全局最优解。
== 约束规范条件
#definition[][
$x$ 是可行点,若存在 ${x_i}$ 是一列可行点,满足 $x_i -> x$,且若记 $x_k = x + alpha_k d_k$,其中 $norm(d_k) = 1$$d_k -> d$,则 $d$ 称为一个可行方向
]
#definition[][
记:
$
F(x) = {d | norm(d) = 1, a_i^T d = 0 forall i in E, a_i^T d >= 0 forall i in I}
$
为在 $x$ 处线性化的可行方向集合
]
#lemma[][
可行方向都是线性化可行方向
]
#definition[下降方向][
记:
$
D = {d | nabla f(x)^T d < 0}
$
$f(x)$$x$ 处的下降方向集合
]
有了这些概念,我们引入以下规范条件:
#definition[约束规范条件][
- KT 约束规范条件:可行方向等同于线性化可行方向。由于实践中不易验证,因此使用较少。
- 正则性假设:可行的下降方向等同于线性化可行的下降方向。这个条件更容易验证,因此更常用。
]
#theorem[一阶必要条件][
$x^*$ 是约束最优化问题的局部最优解,则 $x^*$ 处可行方向和下降方向的交集为空集。
]
#proof[
假设 $d$ 是可行方向,则按可行方向定义取 $x_k$,使得:
$
x_k = x^* + alpha_k d_k
$
泰勒展开得到:
$
f(x_k) = f(x^*) + alpha_k nabla f(x^*)^T d_k + o(alpha_k)
$
由于 $x^*$ 是极小值,有:
$
alpha_k nabla f(x^*)^T d_k + o(alpha_k) >= 0
$
$k -> +infinity$,立得 $d$ 不是下降方向。
]
== 一阶最优性条件
#lemma[分离定理][
$C = {sum_i lambda_i a_i | lambda_i >= 0}$,若 $g in.not C$,则存在法向量 $d$ 对应的超平面分离 $g$$C$,且 $g^T d < 0$
]
#lemma[Farkes引理][
给定任意 $n$ 维向量 $a_1, a_2, ..., a_m, g$,则集合:
$
D = {d | g^T d < 0, a_i^T d >= 0}
$
为空集的充要条件是存在 $lambda_i >= 0$ 使得:
$
g = sum_(i = 1)^m lambda_i a_i
$
]
#proof[
由分离定理显然
]
#corollary[][
$
D = {d | g^T d < 0, a_i^T d >= 0 forall i in I, a_i^T d = 0 forall i in E}
$
为空集的充要条件是存在 $lambda_i$ 使得:
$
g = sum_(i in I union E) lambda_i a_i\
lambda_i >= 0, i in I\
$
]
#theorem[一阶必要条件 KKT][
$x^*$ 是约束最优化问题的局部最优解,且在 $x^*$ 处正则性假设成立,则存在拉格朗日乘子 $lambda$ 使得:
$
nabla_x (f(x^*) - sum_(i in I union E) lambda_i c_i (x^*)) := nabla_x L(x^*, lambda) = 0\
c_i (x^*) = 0, i in E\
c_i (x^*) >= 0, i in I\
lambda_i >= 0, i in I\
lambda_i c_i (x^*) = 0, i in I union E
$
上面的条件称为 KKT 条件。
]
#theorem[一阶充分条件][
假设对于所有可行方向 $d$ 都有 $g(x)^T d > 0$,则 $x$ 是严格局部最优解。
]
== 罚函数方法
罚函数方法分为外罚函数和内罚函数。时间原因只介绍外点罚函数方法。对于等式约束求解问题:
$
Expand Down

0 comments on commit d9e20a0

Please sign in to comment.