用LaTeX寫線性規劃

2021-09-07 06:40:55 字數 1662 閱讀 1126

線性規劃由目標函式和若干約束構成,latex中並沒有直接的命令來寫線性規劃。簡單的做法是使用\begin … \end命令,但eqnarray命令是使若干方程按照中間的二元關係符(如等號)垂直對齊的,而線性規劃的約束條件上雖然有二元關係符,但約束條件後面往往還有量詞符號,它們也需要垂直對齊。也就是說,線性規劃中有不止乙個位置需要垂直對齊。或者乾脆使用\begin …\end命令,這樣可以做到多個位置垂直對齊,但又遇到公式無法自動編號、**中若干數學符號(如\sigma)不能按照數學格式顯示,而只能顯示成文字格式等若干問題。總之,雖然可以使用一些辦法「湊」出線性規劃,但許多地方不能做到盡如人意。

直到有一天偶然看到了amsmath包中的\begin …\end命令,才發現線性規劃可以使用這個命令得到較好的解決。下面直接給出**:

\documentclass

\usepackage

\begin

\title

\maketitle

\begin

\min\quad & \sum_x_ &{}& \tag \label\\

\mbox\quad

&\sum_ x_ \geq 1, &\quad& \forall p \in \mathcal_\\

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

\end

inthe linear program (\ref), ...

\end

產生的線性規劃如下圖所示:

有幾個要點解釋一下。

(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命令後面有乙個引數。關於alignat命令這裡不做進一步的贅述,大家有興趣可以參考amsmath包的資料。

當然,上述寫線性規劃的方法也可以推廣到一般的數學規劃。謹以志之,共享共勉。

(請將文中的全形「\」全部更換為半形的反斜線。)

from: 

用python做線性規劃

比如要做這道題吧,需要用到scipy庫裡面的函式 scipy.optimize.linprog c a ub none b ub none a eq none b eq none bounds none method x callback none options none 直接貼 吧 from s...

快速用matlab求解線性規劃

用matlab也有一年時間了,但是從來都懶得記怎麼用,所以老師上個月講的函式,這個月要用的時候一般都會在視窗自動先打出help 某函式,於是最近整理了乙個可以快速看懂函式用法的文章,幫助和我一樣懶惰的同學.eg 某飯店24小時中需要服務員數量如下表,如果每個服務員連續工作8小時,試問在2點,6點,1...

用matlab求解線性規劃技巧

一下是我學習的筆記,有不足之處還望提出交流!轉化為matlab的標準形式 即min f x 2.找價值列向量,注意是列向量,即f 3,找準a,b,aeq,beq,lb ub明白各自的含義,b是列向量 4,套用公式linprog f,a,b,aeq,beq,lb,ub 5,附上以下 用於求解如何轉化為...