是否有用于指定优化问题的包,例如线性规划、二次规划、凸规划等?
或者我必须自己编写带有对齐、约束等的代码吗?我认为可能有一种非常优雅的方法来指定最小/最大问题,并在其下设置一些约束。
我指的是http://people.ucsc.edu/~rgil/Optimization.pdf。
编辑:根据以下请求,我添加了一个说明性示例来说明我在对齐时遇到的问题。
\begin{alignat}{3}
\min && n \\
\mathrm{s.t.} && xxxxxxx \\
&& yyyyyyyyyyyyyyyyyyy \\
&& zzzzzzzzzzzzzzzzzzz
\end{alignat}
实际情况是 n 对齐到最左边。我希望所有左侧列都居中排列。这是我制定约束优化问题的方法,如果有人有更好的想法,我将非常乐意听取。
如果我只使用两列,$\min$ 和 $n$ 之间几乎没有空格。我几乎想使用 eqnarray :-)
答案1
虽然有点晚了,但这可能有助于其他寻找相同答案的人。optidef 包旨在作为定义优化问题的简便方法。
\usepackage{optidef}
\begin{mini}|l|
{w,u}{f(w)+ R(w+6x)}{}{}
\addConstraint{g(w_k)+h(w_k)}{=0,}{k=0,\ldots,N-1}
\addConstraint{l(w_k)}{=5u,\quad}{k=0,\ldots,N-1}
\end{mini}
该软件包还有更多选项。下面提供了一些示例。要全面了解功能和选项,请查看文档。
使用最小化/受制于的较短描述。##
\usepackage[short]{optidef}
\begin{mini}
{w,u}{f(w)+ R(w+6x)}{}{}
\addConstraint{g(w_k)+h(w_k)}{=0,}{k=0,\ldots,N-1}
\addConstraint{l(w_k)}{=5u,\quad}{k=0,\ldots,N-1}
\end{mini}
##打破了多条目标。##
\usepackage[long]{optidef}
\begin{mini}
{w,u}{f(w)+ R(w+6x)+ H(100w-x*w/500)}{}{}
\breakObjective{-g(w^3-x^2*200+10000*w^5)}
\addConstraint{g(w_k)+h(w_k)}{=0,}{k=0,\ldots,N-1}
\addConstraint{l(w_k)}{=5u,\quad}{k=0,\ldots,N-1}
\end{mini}
多标签/无标签:
\begin{mini*}
{w}{f(w)+ R(w+6x)}
{}{}
\addConstraint{g(w)}{=0}
\end{mini*}
\begin{mini!}
{w}{f(w)+ R(w+6x)}
{}{}
\addConstraint{g(w)}{=0}
\end{mini!}
约束相对于目标的对齐位置:
方案 1
\begin{mini}[2]
{w}{f(w)+ R(w+6x)}
{\label{eq:Ex1}}{}
\addConstraint{g(w)+h(w)}{=0}
\addConstraint{t(w)}{=0.}
\end{mini}
方案 2
\begin{mini}[3]
{w}{f(w)+ R(w+6x)}
{\label{eq:Ex1}}{}
\addConstraint{g(w)+h(w)}{=0}
\addConstraint{t(w)}{=0.}
\end{mini}
方案 3
\begin{mini}[4]
{w}{f(w)+ R(w+6x)}
{\label{eq:Ex1}}{}
\addConstraint{g(w)+h(w)}{=0}
\addConstraint{t(w)}{=0.}
\end{mini}
其他优化环境
精氨酸
\begin{argmini}
{w}{f(w)+ R(w+6x)}
{}{}
\addConstraint{g(w)}{=0}
\end{argmini}
马克西
\begin{maxi}
{w}{f(w)+ R(w+6x)}
{}{}
\addConstraint{g(w)}{=0}
\end{maxi}
精子
\begin{argmaxi}
{w}{f(w)+ R(w+6x)}
{}{}
\addConstraint{g(w)}{=0}
\end{argmaxi}
有关上述不同实现的完整详细信息(以及更多详细信息)可以在文档中找到:http://mirrors.ctan.org/macros/latex/contrib/optidef/optidef.pdf。
功能请求和问题讨论可以通过 github 页面进行:https://github.com/jeslago/optidef
答案2
环境(来自)似乎是这里的解决方法;在某些情况下,您可以使用(或来自包)来中断一些多行显示align
,同时仍保持对齐点。alignat
amsmath
\intertext
\shotintertex
mathtools
编辑:顺便提一下,示例 2.2 中的方程组(在您在评论中链接的文档中)在“然后,“可能是使用 排版的eqnarray
;您应该避免使用此环境,因为等号周围的间距比其他对齐环境大,从而导致文档不一致。Lars Madsen 的这篇精彩文章解释(并通过示例说明)了为什么不应再使用 eqnarray:避免使用 eqnarray!
EDIT2:使用align
您可以编写的环境:
\documentclass{report}
\usepackage{amsmath}
\begin{document}
\begin{align}
\min &\hspace{0.5em} n \\
\mathrm{s.t.} &\hspace{0.5em} xxxxxxx \\
& \hspace{0.5em} yyyyyyyyyyyyyyyyyyy \\
& \hspace{0.5em} zzzzzzzzzzzzzzzzzzz
\end{align}
\end{document}
答案3
这是另一种可能性,我喜欢这种间距:
\begin{equation}
\begin{aligned}
&\min &&c^\top x + p^\top(b-Ax)\\
&\textrm{s.t.} &&x \geq 0
\label{eq:LagrangeRelax}
\end{aligned}
\end{equation}