我正在尝试很好地(并且正确地)对齐两级优化问题。目前想出了以下解决方案:
$
\begin{array}{llr}
\min \limits_{\mathbf{x}, \mathbf{y}} & -2x_1^2 + x_2^2 - 6y_1 + y_2^2 \\
\st & x_1^3 + 3x_2 - 10 \le 0 \\
& \displaystyle \mathbf{y} \in \argmin_{\mathbf{y}\in [0, 10]^2} \; 2x_1^2 + 2y_1^2 - 8y_2 \\
& \hspace{1.25cm} \st - x_1 + 2x_1 - x_2^2 + 2y_1 - y_2 - 3 \le 0\\
& \hspace{1.9cm} - x_1 + 2x_1 - x_2^2 + 2y_1 - y_2 - 3 \le 0 \\
& \mathbf{x} \in [-10, 10]^2,\; \mathbf{y} \in [-10, 10]^2
\end{array}
$
输出结果如下:
在这里我强调了几个问题:
- 有什么更好的方法(与手动相比,
hspace{}
第一个约束以关键字“st”开头,根据上线对齐分钟关键字(见图中蓝线)。其余约束应与第一个约束左对齐。 - 为什么内部约束的间距不同?两者完全相同,但在第一个约束中,减号后的空间更大(图中用红色“圆圈”突出显示的情况)
答案1
array
我建议尝试一下aligned
(基本上是但间距更适合数学),而不是环境array
。 MWE 可能如下:
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\st}{s.t.}
\DeclareMathOperator*{\argmin}{arg\,min}
\begin{document}
\[
\begin{aligned}
&\min \limits_{\mathbf{x}, \mathbf{y}} && {-}2x_1^2 + x_2^2 - 6y_1 + y_2^2 \\
&\st && x_1^3 + 3x_2 - 10 \le 0 \\
&&&\mathbf{y} \in
\begin{aligned}[t]
&\argmin_{\mathbf{y}\in [0, 10]^2} && 2x_1^2 + 2y_1^2 - 8y_2 \\
&\st &&{-}x_1 + 2x_1 - x_2^2 + 2y_1 - y_2 - 3 \le 0\\
&&&{-}x_1 + 2x_1 - x_2^2 + 2y_1 - y_2 - 3 \le 0
\end{aligned}\\
&&&\mathbf{x} \in [-10, 10]^2,\; \mathbf{y} \in [-10, 10]^2
\end{aligned}
\]
\end{document}
请注意,我将 定义\st
为数学运算符。这只是为了使其周围的间距类似于\max
和\argmax
,否则正确的对齐将更难实现。另一个想法是使用嵌套 来排版内部优化问题aligned
,这更简洁。但不要忘记用括号括住一元减号,因为aligned
会自动认为后面的运算符&
是二元的。