是否有用于指定优化问题的包?

是否有用于指定优化问题的包?

是否有用于指定优化问题的包,例如线性规划、二次规划、凸规划等?

或者我必须自己编写带有对齐、约束等的代码吗?我认为可能有一种非常优雅的方法来指定最小/最大问题,并在其下设置一些约束。

我指的是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,同时仍保持对齐点。alignatamsmath\intertext\shotintertexmathtools

编辑:顺便提一下,示例 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}

相关内容