Lingo解決最優化問題

2022-07-05 15:30:15 字數 1879 閱讀 5428

目錄

三、待更新

前面,我們已經對lingo有了一定的了解,但是要想真正的熟悉lingo在解決優化問題中的強大之處,還需要不斷加強相關訓練,本文主要是使用lingo來解決優化問題,該文的主要目的有以下三點:

若您對lingo的安裝及基本操作不是很了解,可暫且移步:lingo安裝、lingo基本操作

優化模型主要有三個基本要素:決策變數、目標函式、約束條件。其一般形式如下:

\[opt \ \ \ \ f(x) \\

s.t \ \ \ \ h_i(x)=0,\ i=1,2,\cdots,m \\

g_j(x)\leq0,\ j=1,2,\cdots,l

\]\(opt\) 是「optimize」的縮寫,表示「最優化」,一般為 \(min\) 或 \(max\),\(f(x)\) 表示目標函式,\(s.t.\) 是「subject to」的縮寫「受約束於」,\(h_i(x), g_i(x)\) 則表示約束條件,其中 \(x\) 表示優化模型的決策變數。

question:有三個生產地和四個銷售地,其生產量、銷售量及單位運費如表所示,求總運費最少的運輸方案以及總運費。

由題意,我們不難看出優化模型的決策變數是每個生產地向各個銷售地運輸的貨量,即 \(s_\)。運輸的總費用由各個產地向各個銷售地運輸所需費用之和,乙個產地可以向多個銷售地運輸貨物,乙個銷售地亦可接受多個產地的貨物,所以可知優化模型中的目標函式是運輸的總費用,即 \(w=\sum^3_\sum^4_s_x_\)。除此之外,該目標函式受到兩個限制,即優化模型的約束條件:

有以上問題分析,為求出總運費最小的方案,我們可以構建該問題的優化模型如下:

\[min \ \ \ \ \sum^3_\sum^4_s_x_ \\

s.t. \ \ \ \ \sum_^4s_\leq a_i \;;\ \sum_^3x_=b_j \ ;\ s_\geq0 \ ;

\]求解的lingo**如下:

sets:

supply/1..3/: s; !定義運輸集,集中的每個元素都有對應的屬性,即運輸量s;

demand/1..4/: d; !定義需求集,集中的每個元素都有對應的屬性,即需求量d;

link(supply, demand): p, x; !定義link衍生集,每個元素中都有兩個屬性,運費p,運輸量x;

endsets

data:

s = 30 25 21; !定義資料集s,表示生產量;

d = 15 17 22 12; !定義資料集d,表示銷售量;

p = 6 2 6 7 !定義資料集p,表示生產地向銷售地所對應的運費;

4 9 5 3

8 8 1 5;

enddata

min = @sum(link(i,j): p(i,j)*x(i,j)); !目標函式;

@for(supply(i): @sum(demand(j): x(i,j)) <= s(i)); !生產地限制約束條件;

@for(demand(j): @sum(supply(i): x(i,j)) = d(j)); !銷售地限制約束條件;

執行如上所示lingo程式,我們可以得到如下結果:

通過上圖展示,我們可以得到運輸的最佳方案以及最小運費161個單位。運輸方案圖示如下:

LINGO程式 最優組隊模型(優化問題)

某車間要參加單位舉辦的技術操作比賽,比賽設有5個單項和乙個全能專案 同時參加5個單項 14人參加。隊員1 2345 6789 1011 1213 14單項 1101 41055 4624 86109 單項 295 6447 4786 7814 單項 375 5677 88710 2645 單項 43...

用lingo解決酒精稀釋問題

案例 求2ml 75 的酒精,分別稀釋為70 65 60 55 50 45 40 35 30 25 20 15 10 時所需要的水量 如下 model 求2ml 75 的酒精,稀釋為70 65 60 55 50 45 40 35 30 25 20 15 10 時所需要的水量 sets water 1...

LINGO基本問題

1.lingo中的infeasibilities 矛盾約束的數目 一般不可行的問題裡面才 會不為0 可行的都是0或者很接近0 slack or surplus什麼意思 slack一般用作鬆弛的或是鬆懈的,surplus一般用作剩餘或是超出 lingo中的reduced cost 和dual pric...