线性规划由目标函数和若干约束构成,Latex中并没有直接的命令来写线性规划。简单的做法是使用\begin{eqnarray} … \end{eqnarray}命令,但eqnarray命令是使若干方程按照中间的二元关系符(如等号)垂直对齐的,而线性规划的约束条件上虽然有二元关系符,但约束条件后面往往还有量词符号,它们也需要垂直对齐。也就是说,线性规划中有不止一个位置需要垂直对齐。或者干脆使用\begin{array} …\end{array}命令,这样可以做到多个位置垂直对齐,但又遇到公式无法自动编号、表格中若干数学符号(如\sigma)不能按照数学格式显示,而只能显示成文本格式等若干问题。总之,虽然可以使用一些办法“凑”出线性规划,但许多地方不能做到尽如人意。

直到有一天偶然看到了amsmath包中的\begin{alignat} …\end{alignat}命令,才发现线性规划可以使用这个命令得到较好的解决。下面直接给出代码:

\documentclass{article}

\usepackage{amsmath}

\begin{document}

\title{LinearProgram}

\maketitle

\begin{alignat}{2}

\min\quad & \sum_{\ell\in L}x_{\ell} &{}& \tag{LP1} \label{eqn - lp}\\

\mbox{s.t.}\quad

&\sum_{e \in P} x_{f(e)} \geq 1, &\quad& \forall P \in \mathcal{P}_{st}\\

&x_{\ell} \geq 0, &{}& \forall \ell \in L \nonumber

\end{alignat}

Inthe linear program (\ref{eqn - lp}), ...

\end{document}

产生的线性规划如下图所示:

有几个要点解释一下。

(1)整个线性规划看上去由4列组成。即最左边的“min”和“s.t.”,第2列的约束条件,第3列的约束条件量词,和第4列的编号。其中,第2列和第3列是靠左对齐的,这样看上去就比较美观。

当然,线性规划还有一种常见的写法是约束条件按照二元关系符垂直对齐,相信看完本文后,大家会自己构造出这样的线性规划。对于大量的线性规划而言,两种格式各有优缺点。

(2)线性规划的目标函数和约束条件都可以按照标准的\ref{}命令进行引用。对于那些不需要引用的约束条件,只需要在相应的行中写上\nonumber,其右端就没有编号了。

值得一提的是目标函数的编号,在上例中是“(LP1)”,而不是和约束条件统一编号的。这个(LP1)是和Latex产生标准编号一样出现在页面最右端,并且它也和标准编号一样使用\ref{}命令引用。正如例中所示,这是使用\tag命令实现的。(知道\tag命令可以实现这样的功能,也是大量阅读后偶然发现的,花费了相当长的时间…)

(3)下面简单解释一下上例的具体实现。整个线性规划实际上是划分成了如下图所示的4列,因此在alignat命令中需要使用3个“&”符号来隔开这些列。其中,第C列存在的目的是让量词与约束条件之间隔开一定距离。

按照alignat命令的用法,这4列实际上构成了alingat命令观点下的两列方程组。其中AB是第1列方程组,CD是第2列方程组。也就是说,eqnarray命令是用来对齐一列方程组的,而alignat命令是用来对齐多列方程组的。这也说明了为什么上例代码中alignat命令后面有一个参数{2}。关于alignat命令这里不做进一步的赘述,大家有兴趣可以参考amsmath包的资料。

当然,上述写线性规划的方法也可以推广到一般的数学规划。谨以志之,共享共勉。

(请将文中的全角“\”全部更换为半角的反斜线。)

from: http://blog.sciencenet.cn/blog-482332-749340.html

用LaTeX写线性规划的更多相关文章

  1. ctex moderncv版本更新--用latex写一个漂亮的简历

    我的电脑是win7系统32位,ctex版本是v2.9.2.164 full(http://www.ctex.org/CTeXDownload) 一直不太清楚moderncv里面类似\cventry这种 ...

  2. 用latex写毕业论文

    用 LaTeX 写漂亮学位论文(from wloo) 序 一直觉得有必要写这样一篇文章,因为学位论文从格式上说更像一本书,与文章 的排版不同,不仅多出目录等文章没有的部分,而且一般要设置页眉页脚方便阅 ...

  3. 用latex写简历

    最近终于逐渐掌握了用Latex写中文简历的问题.首先就是必须基于交大前辈bin yuan的模板进行学习. 如果有了一般论文撰写和Beamer做PPT的经验,不难发现resume的模板也是遵循一套程式的 ...

  4. LaTeX 写算法伪码

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50054953 LaTeX写算法伪码,需 ...

  5. 2019-2-13-Latex-论文elsevier,手把手如何用Latex写论文

    title author date CreateTime categories Latex 论文elsevier,手把手如何用Latex写论文 lindexi 2019-02-13 10:38:20 ...

  6. 用Latex写学术论文: IEEE Latex模板和文档设置(\documentclass)

    1.可以在博客园中使用latex代码输出公式,以后再以不用复制图片粘贴啦: http://www.cnblogs.com/cmt/p/3279312.html 例如以下代码两边加上 $ 符号后 x(k ...

  7. 用Latex写学术论文:作者(Author)&摘要(Abstract)

    标题&作者 1.标题 \title{} "Line breaks (\\) may be used to equalize the length of the title lines ...

  8. Latex 论文elsevier,手把手如何用Latex写论文

    这几天在开始写论文,准备发的是elsevier,这个网站的instruction有问题,下载的东西基本上好多的错误,所以我就写博客记录. 首先看下:https://www.elsevier.com/a ...

  9. [CSDN_Markdown] 使用LaTeX写矩阵

    简介 LaTeX 的公式功能非常强大,一次性讲全不是件容易的事情.将LaTeX 的这些功能分成较小的相互独立的部分来讲,一方面方便大家单独查阅:另一方面,所有[CSDN_Markdown]相关的文章都 ...

随机推荐

  1. Leetcode 之Binary Tree Postorder Traversal(44)

    后序遍历,比先序和中序都要复杂.访问一个结点前,需要先判断其右孩子是否被访问过.如果是,则可以访问该结点:否则,需要先处理右子树. vector<int> postorderTravers ...

  2. linux命令(28):scp命令

    命令格式:scp [参数] [原路径] [目标路径] 实例1:从远处复制文件到本地目录 scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz / ...

  3. Jquery 学习之路(五)grid绑定模板

    最近在使用mvcpager时发现ajax分页需要使用Partial来实现,而且使用起来还是觉得不太方便.突然想自己做一个mvc的ajax分页,但是如果table直接用js输出就不好维护了. angul ...

  4. Kbengine cocos2djs 地图问题

    KBEngine.addSpaceGeometryMapping(self.spaceID, None, resPath) 问下这个resPath加载的文件在哪里,后端愣是没找到,前端倒是看到了,还是 ...

  5. 开源游戏地图编辑器MarbleMap

    开源游戏地图编辑器MarbleMap MIT协议,MarbleMap是一款as3开发的游戏地图编辑器,他免费开源,同时支持Cocos2d-x坐标系和AS3坐标系,功能丰富,不过是一款新推出的开源项目, ...

  6. 设计模式-状态模式(State Pattern)

    本文由@呆代待殆原创,转载请注明出处:http://www.cnblogs.com/coffeeSS/ 状态模式简介 状态模式允许一个对象在其内部状态改变的时候改变它的行为,他的内部会存着好几种状态, ...

  7. poj 1050(矩阵求和问题dp)

    To the Max Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44765   Accepted: 23700 Desc ...

  8. 开发Android逆向工具

    韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha  313134555@qq.com 源代码及演示程序,请点击这里下载 下载地址: [北方网通]    [电信网通] [下载说明] ...

  9. hdu 5961 传递 (2016ccpc 合肥站 A题)

    传递 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...

  10. [TC14860]SquadConstructor2

    [TC14860]SquadConstructor2 题目大意: 有\(n(n<2^m,m\le8)\)个互不相等的数\(v_i\).从中选取\(k(k\le8)\)个数\(b_i\),求\(\ ...