學(xué)習(xí)LINGO語(yǔ)言ppt課件_第1頁(yè)
學(xué)習(xí)LINGO語(yǔ)言ppt課件_第2頁(yè)
學(xué)習(xí)LINGO語(yǔ)言ppt課件_第3頁(yè)
學(xué)習(xí)LINGO語(yǔ)言ppt課件_第4頁(yè)
學(xué)習(xí)LINGO語(yǔ)言ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩146頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、30.08.2020,.,LINGO,數(shù)學(xué)科學(xué)與技術(shù)學(xué)院 楊云峰 密碼:654321,30.08.2020,.,一. 優(yōu)化模型與優(yōu)化軟件簡(jiǎn)介,二. LINGO軟件的基本使用方法,Outline,三. LINGO程序流程控制和子模型,30.08.2020,.,一. 優(yōu)化模型與優(yōu)化軟件簡(jiǎn)介,30.08.2020,.,優(yōu)化問(wèn)題的一般形式,無(wú)約束優(yōu)化: 只有目標(biāo)函數(shù), 沒有約束條件 有約束優(yōu)化: 目標(biāo)函數(shù)和約束條件都有 普通方程組:沒有(1)(3), 只有(2) 不等式方程組:沒有(1)(2), 只有(3),30.08.2020,.,優(yōu)化類型,連續(xù)優(yōu)化 : 全部決策變量取值均 為連續(xù)數(shù)值 (實(shí)數(shù)) 離

2、散優(yōu)化 : 部分或全部決策變量 只取離散數(shù)值,30.08.2020,.,連續(xù)優(yōu)化,線性規(guī)劃(LP) 目標(biāo)和約束均為線性函數(shù) 非線性規(guī)劃(NLP) 目標(biāo)或約束中有非線性函數(shù) 二次規(guī)劃(QP) 目標(biāo)為二次函數(shù)、 約束為線性,30.08.2020,.,離散優(yōu)化,整數(shù)規(guī)劃(IP) 決策變量(全部或部分)為整數(shù),整數(shù)線性規(guī)劃(ILP),整數(shù)非線性規(guī)劃(INLP) 純整數(shù)規(guī)劃(PIP), 混合整數(shù)規(guī)劃(MIP) 一般整數(shù)規(guī)劃,0-1(整數(shù))規(guī)劃,30.08.2020,.,常用優(yōu)化軟件,LINDO/LINGO軟件 MATLAB優(yōu)化工具箱/mathematica優(yōu)化程序包 EXCEL軟件的優(yōu)化功能 SAS(統(tǒng)

3、計(jì)分析)軟件的優(yōu)化功能,30.08.2020,.,建模時(shí)需要注意的幾個(gè)基本問(wèn)題,1、盡量使用實(shí)數(shù)優(yōu)化,減少整數(shù)約束和整數(shù)變量 2、盡量使用光滑優(yōu)化,減少非光滑約束的個(gè)數(shù) 如:盡量少使用絕對(duì)值、符號(hào)函數(shù)、多個(gè)變量求最大/最小值、四舍五入、取整函數(shù)等,30.08.2020,.,建模時(shí)需要注意的幾個(gè)基本問(wèn)題,3、盡量使用線性模型,減少非線性約束和非線性變量的個(gè)數(shù) (如x/y 5 改為x5y) 4、合理設(shè)定變量上下界,盡可能給出變量初始值 5、模型中使用的參數(shù)數(shù)量級(jí)要適當(dāng)(如小于103),30.08.2020,.,二. LINGO軟件的基本使用方法,30.08.2020,.,1 LINGO入門,30.

4、08.2020,.,max 2x1+3x2 St. 4x1+3x2=10 3x1+5x2=12 x10 x20,設(shè)有數(shù)學(xué)模型如下:,30.08.2020,.,第一步:?jiǎn)?dòng)Lingo,屏幕顯示如下: 標(biāo)記LINGO的外窗口是主框架窗口,主框架窗口的上面包含所有的命令菜單和命令工具欄; 標(biāo)記LINGO MODEL-LINGO1的子窗口是一個(gè)新的、空白的模型窗口。,30.08.2020,.,第二步:在模型窗口中輸入模型,model: max = 2*x1+3*x2; 4*x1+3*x210; 3*x1+5*x212; end,Max 2x1+3x2 St. 4x1+3x2=10 3x1+5x2=12

5、 x10 x20,30.08.2020,.,第三步:求解模型,1)選擇菜單 LINGO|Solve 或者按工具欄的,30.08.2020,.,2)LINGO開始編譯模型,如有語(yǔ)法錯(cuò)誤將返回一個(gè)錯(cuò)誤的消息并指明錯(cuò)誤出現(xiàn)的位置;如果通過(guò)編譯, LINGO將激活 Solver運(yùn)算器 尋求模型的最優(yōu)解;,30.08.2020,.,3)首先出現(xiàn)solver status 窗口,其作用是監(jiān)控solver的進(jìn)展和顯示模型的維數(shù)等信息;,30.08.2020,.,Solver Status 窗口,30.08.2020,.,4)計(jì)算完成后出現(xiàn)Solution Report 窗口顯示模型解的詳細(xì)信息;,30.08

6、.2020,.,Solution Report 窗口,Global optimal solution found at iteration: 2 Objective value: 7.454545 Variable Value Reduced Cost x1 1.272727 0.000000 x2 1.636364 0.000000 Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545,30.08.2020,.,Reduced Cost:,在max模型

7、中: 相應(yīng)變量的 reduced cost值表示當(dāng)該變量每增加一個(gè)單位時(shí)目標(biāo)函數(shù)減少的量。 本例中此值均為0,30.08.2020,.,Reduced Cost:,Reduced Cost 值列出最優(yōu)單純形表中判別 數(shù)所在行的變量的系數(shù),表示當(dāng)變量有微 小變動(dòng)時(shí),目標(biāo)函數(shù)的變化率。其中基變 量的reduced cost值應(yīng)為0, 對(duì)于非基變量 Xj, 相應(yīng)的reduced cost值表示當(dāng)某個(gè)變 量Xj 增加一個(gè)單位時(shí)目標(biāo)函數(shù)減少的量 ( max型問(wèn)題)。本例中此值均為0。,30.08.2020,.,SLACK OR SURPLUS:,給出約束條件的松馳變量或剩余變量的值; 小于等于約束為松馳

8、變量(SLACK); + 大于等于約束為剩余變量(SURPLUS); -,30.08.2020,.,DUAL PRICES:對(duì)偶價(jià)格或影子價(jià)格,DUAL PRICES表示當(dāng)對(duì)應(yīng)約束有微 小變動(dòng)時(shí),目標(biāo)函數(shù)的變化率,即約束條 件右端的常數(shù)項(xiàng)每增加一個(gè)單位,目標(biāo)函 數(shù)相應(yīng)獲得的改變量。 顯然,如果在最優(yōu)解處約束正好取等號(hào) (緊約束),該值才可能不是0;對(duì)于非緊 約束對(duì)該值必為0,表示對(duì)應(yīng)約束中不等式 右端項(xiàng)的微小擾動(dòng)不影響目標(biāo)函數(shù)。,30.08.2020,.,2 Lingo的基本用法注意事項(xiàng),30.08.2020,.,1)每一個(gè)模型都以 model: 開始, 又以 end 結(jié)束,也可省略此結(jié)構(gòu);,

9、30.08.2020,.,2)目標(biāo)函數(shù)必須由 min = 或 max = 開頭。,30.08.2020,.,3)可以用表示=;,Lingo無(wú)嚴(yán)格小于,欲使ab, 可以適當(dāng)選取小的正常數(shù)e 表示成a+eb,,30.08.2020,.,4) LINGO的每一語(yǔ)句以 ; 結(jié)束;,5) 注釋 以 ! 開始, 以 ; 結(jié)束;,30.08.2020,.,變量名:.不區(qū)分大小寫.由字母數(shù)字下劃線組成.第一個(gè)字符必須是字母.變量名最長(zhǎng)為32個(gè)字符,30.08.2020,.,LINGO編輯器用 藍(lán)色顯示LINGO關(guān)鍵字 綠色顯示注釋 其他文本用黑色 匹配的括號(hào)用紅色高亮度顯示,30.08.2020,.,8) 變

10、量和數(shù)字放在約束條件的左、右端均可;但最好變量在左,數(shù)字在右。,9) Lingo 變量默認(rèn)域?yàn)榉秦?fù)實(shí)數(shù),可以改變默認(rèn)域.,30.08.2020,.,10)行名 name例:Objectivemax=2*x+3*y;Con1 4*x+3*y10;Con2 3*x+5*y12;線性規(guī)劃(行名).lg4默認(rèn)為1,2,3,30.08.2020,.,Global optimal solution found. Objective value: 7.454545 Total solver iterations: 2 Variable Value Reduced Cost X 1.272727 0.0000

11、00 Y 1.636364 0.000000 Row Slack or Surplus Dual Price OBJECTIVE 7.454545 1.000000 CON1 0.000000 0.9090909E-01 CON2 0.000000 0.5454545,30.08.2020,.,3 LINGO的建模語(yǔ)言,30.08.2020,.,以運(yùn)輸實(shí)例逐步分析,6個(gè)倉(cāng)庫(kù)向8個(gè)小販供應(yīng)同一種貨物, 如何運(yùn),總運(yùn)輸費(fèi)用最?。?注:每個(gè)倉(cāng)庫(kù)可以向每個(gè)小販供貨 ,一共48個(gè)可能運(yùn)貨路線。,倉(cāng)庫(kù)貨存量、小販需求量、每條路線的單位運(yùn)輸費(fèi)用三個(gè)表如下:,30.08.2020,.,倉(cāng)庫(kù)貨存量:capaci

12、ty,30.08.2020,.,小販需求量:demand,30.08.2020,.,每單位貨物運(yùn)輸費(fèi)用表:cost,30.08.2020,.,demand_j 表示第j個(gè)小販的需求量 capacity_i 表示第i個(gè)倉(cāng)庫(kù)的庫(kù)存量 cost_i_j 表示從第i個(gè)倉(cāng)庫(kù)到第j個(gè)小販的單位運(yùn)輸費(fèi)用,volume_i_j 表示從第i個(gè)倉(cāng)庫(kù)到第j個(gè)小販的運(yùn)輸量,30.08.2020,.,數(shù)學(xué)模型可表示如下:,30.08.2020,.,當(dāng)然目標(biāo)函數(shù)可以如下輸入: min = 6 * volume_1_1 + 2 * volume_1_2 + 6 * volume_1_3 + . 1 * volume_6_6

13、 + 4 * volume_6_7 + 3 * volume_6_8;,30.08.2020,.,但是較大模型如果像上面那樣 輸入又費(fèi)時(shí),又容易出錯(cuò)! 這就需要LINGO的建模語(yǔ)言,30.08.2020,.,LINGO的建模語(yǔ)言優(yōu)點(diǎn):,1)可以用類似于標(biāo)準(zhǔn)數(shù)學(xué)符號(hào)的方式 表示你的模型; 2)可以用一個(gè)緊湊的語(yǔ)句表示一系列 約束。 3)數(shù)據(jù)可獨(dú)立于模型:LINGO可以從 文本文件、電子數(shù)據(jù)表、數(shù)據(jù)庫(kù)中讀 取數(shù)據(jù)。,30.08.2020,.,LINGO模型的構(gòu)成:5個(gè)段,目標(biāo)函數(shù)與約束條件段 集合段(sets: endsets) 數(shù)據(jù)段(data: enddata) 初始段(init: endin

14、it) 計(jì)算段(calc: endcalc),Lingo建模語(yǔ)言的重點(diǎn)和難點(diǎn)是: 對(duì)集合概念的理解和正確使用,30.08.2020,.,為什么使用集合,集合是LINGO建模語(yǔ)言的基礎(chǔ),是LINGO程序設(shè)計(jì)最強(qiáng)有力的基本構(gòu)件。借助于集合,能夠用一個(gè)單一的、長(zhǎng)的、簡(jiǎn)明的復(fù)合公式表示一系列相似的約束,從而可以快速方便地表達(dá)規(guī)模較大的模型。,30.08.2020,.,什么是集合,集合是一群相聯(lián)系的對(duì)象,比如 倉(cāng)庫(kù)、小販、運(yùn)輸路線,這些對(duì)象也 稱為集合的成員。每個(gè)集合成員可能 有一個(gè)或多個(gè)與之有關(guān)聯(lián)的特征,我 們把這些特征稱為屬性。 屬性值可以預(yù)先給定,也可以是 未知的,有待于LINGO求解。,30.0

15、8.2020,.,從我們的數(shù)學(xué)模型看需要三個(gè)集合:,(1)倉(cāng)庫(kù)-6個(gè)成員-貨存量 (2)小販-8個(gè)成員-需求量 (3)運(yùn)輸路線-48個(gè)成員 -單位運(yùn)費(fèi)和運(yùn)貨量,30.08.2020,.,LINGO有兩種類型的集合,原始集合(primitive set):由一些 最基本的對(duì)象組成的。 派生集(derived set): 用一個(gè)或多 個(gè)其它集來(lái)定義的,也就是說(shuō),它 的成員來(lái)自于其它已存在的集。,30.08.2020,.,*下面我們學(xué)習(xí)集合定義部分*,1. 以sets:開始,以endsets結(jié)束; sets: endsets,30.08.2020,.,2. 原始集合定義法:,setname /mem

16、ber_list/ :attribute_list ; 。setname是集合的名字; 。member_list是成員列表,各成員之間可用 空格或逗號(hào)分隔; 。attribute_list是集合成員所具有的屬性列 表,多個(gè)屬性之間用逗號(hào)分隔; 。原始集合的member_list, attribute_list是可選項(xiàng);,30.08.2020,.,*倉(cāng)庫(kù)和小販的集合可如下定義*,sets: warehouses / w1 w2 w3 w4 w5 w6 /: capacity; vendors / v1,v2,v3,v4,v5,v6, v7,v8 / : demand; endsets,30.08

17、.2020,.,*成員較多時(shí),可使用隱式成員列表,setname /member1.memberN/ :attribute_list;,30.08.2020,.,數(shù)字型 字符數(shù)字型 星期型 月份型 年份-月份型,*隱式成員列表類別*,30.08.2020,.,(1)數(shù)字型,1.n 例:1.5 (1,2,3,4,5),(2)字符數(shù)字型,stringM.stringN 例: truck3.truck34,30.08.2020,.,(3)星期型,dayM.dayN 例:mon.fri (Mon, Tue, Wed, Thu, Fri),(4)月份型,MonthM.MonthN 例:OCT.JAN (

18、Oct, Nov, Dec, Jan),30.08.2020,.,(5)年份-月份型,monthYearM.monthYearN 例:OCT2001.JAN2002 (2001.10 2001.11 2001.12 2002.1),30.08.2020,.,*倉(cāng)庫(kù)和小販的集合也可如下定義*,sets: warehouses / w1.w6/: capacity; vendors / v1.v8 /: demand; endsets,30.08.2020,.,3. 派生集合定義法:,setname (parent_set_list) /member_list/ :attribute_list;

19、parent_set_list是父集合名列表,30.08.2020,.,*48條運(yùn)輸路線集合定義*,links(warehouses,vendors) : cost, volume;,30.08.2020,.,*三個(gè)集合定義如下*,sets: warehouses / wh1.wh6 /: capacity; vendors / v1.v8 /: demand; links( warehouses, vendors): cost,volume; endsets,30.08.2020,.,運(yùn)輸問(wèn)題的三個(gè)集合說(shuō)明:,這段代碼定義了4個(gè)屬性值,在接下來(lái)的模型中就可以使用屬性值capacity(1),

20、capacity(2),capacity(6); demand(1),demand(2) ,demand(8); cost(1,1), cost(1,2) , cost(1,8) , cost(2,1), cost(2,2) , cost(2,8) , cost(6,1), cost(6,2) , cost(6,8); volume的引用同cost。,30.08.2020,.,4.集合成員過(guò)濾:,trucks/1.100/:capacity; heavy_duty (trucks) | capacity( endsets,如果想賦值 x(1)=1, x(2)=2, x(3)=3, y(1)=4

21、,y(2)=5, y(3)=6, 則數(shù)據(jù)段可以為,30.08.2020,.,data: x=1,2,3; y=4 5 6; enddata,data: x,y=1 4 2 5 3 6; enddata,多個(gè)數(shù)據(jù)之間可用逗號(hào)或空格分隔,30.08.2020,.,若成員屬性值相同,數(shù)據(jù)段定義如下:,data: x=3; !(所有成員的x=3); y=6; !(所有成員的y=6); enddata,30.08.2020,.,也可以在運(yùn)行時(shí)輸入屬性值:,data: x=?; !(運(yùn)行時(shí)輸入所有成員的x值); y=6; enddata,30.08.2020,.,*運(yùn)輸問(wèn)題的數(shù)據(jù)部分*,data: cap

22、acity=60,55,51,43,41,52; demand=35 37 22 32 41 32 43 38;,30.08.2020,.,cost = 6 2 6 7 4 2 5 9 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata,30.08.2020,.,sets: sett : x, y ; endsets data: sett, x, y = a 1 4 b 2 5 c 3 6; enddata,sets: sett/a,b,c/ : x, y ; ends

23、ets data: x =1 2 3; y=4 5 6; enddata,集合成員可以在數(shù)據(jù)段定義:,30.08.2020,.,運(yùn)輸實(shí)例:,sets: warehouses: capacity; endsets data: !可以寫成warehouses =w1.w6; !也可以同時(shí)定義集合成員列表和屬性值; warehouses, capacity= w1 60,w2 55, w3 51,w4 43, w5 41,w6 52; enddata,30.08.2020,.,* 初始化定義*,只在非線性規(guī)劃中使用,指定初 始值。 init: . endinit,30.08.2020,.,例: in

24、it: x=0.999; y=0.002; endinit y=log(x); x2+y2=1; 給了恰當(dāng)?shù)某跏贾担瑫?huì)減少運(yùn)算時(shí)間。,30.08.2020,.,*計(jì)算段定義*,calc: . . . endcalc,計(jì)算段的作用: 在模型輸入后,LINGO開始正式求解模型之前對(duì)原始數(shù)據(jù)進(jìn)行一定的計(jì)算,得到我們模型中要使用的部分?jǐn)?shù)據(jù)。,30.08.2020,.,一個(gè)簡(jiǎn)單的計(jì)算段例子:,model: data: x,y,z = 1, 2, 3; enddata calc: avg = ( x + y + z) / 3; endcalc end,30.08.2020,.,*目標(biāo)函數(shù)和約束條件段*,L

25、INGO提供了集合循環(huán)函數(shù)和集合操作 函數(shù)使得目標(biāo)函數(shù)和約束條件的書寫如同 數(shù)學(xué)公式那樣簡(jiǎn)單。,四個(gè)集合循環(huán)函數(shù),FOR、SUM 、 MAX、MIN,30.08.2020,.,sum ( setname ( set_index_list) | condition : expression );,求和,30.08.2020,.,*運(yùn)輸問(wèn)題的目標(biāo)函數(shù)*,min = sum( links ( i, j) : cost( i, j) * volume( i, j) );,min = sum( links : cost* volume );,30.08.2020,.,*運(yùn)輸問(wèn)題實(shí)例中的求和*,!從6個(gè)倉(cāng)

26、庫(kù)發(fā)到第j個(gè)小販的貨物量總和; sum( warehouses(i) : volume(i, j) );,30.08.2020,.,從第i個(gè)倉(cāng)庫(kù)發(fā)出到8個(gè)小販的貨物量總和;,sum( vendors(j) : volume( i , j ) ),30.08.2020,.,for ( setname ( set_index_list) | condition : expression_list );,生成約束for,對(duì)集合setname中的每個(gè)成員獨(dú)立地生成約束,約束由約束表達(dá)式列表expression_list描述; 多個(gè)表達(dá)式之間用分號(hào)相隔。,30.08.2020,.,*每個(gè)小販的需求約束*

27、,?。ㄒ?個(gè)倉(cāng)庫(kù)發(fā)給每個(gè)小販的貨物總量=小販的需求量); for( vendors(j) : sum( warehouses( i): volume( i, j) ) =demand( j) );,30.08.2020,.,*每個(gè)倉(cāng)庫(kù)的供貨約束*,for( warehouses( i) : sum( vendors(j) : volume( i, j) ) capacity( i) );,?。ㄒ竺總€(gè)倉(cāng)庫(kù)發(fā)給8個(gè)小販的 貨物總量倉(cāng)庫(kù)的貨存量);,30.08.2020,.,*運(yùn)輸問(wèn)題的完整模型,運(yùn)輸問(wèn)題.lg4,30.08.2020,.,返回集合setname上的表達(dá)式expression的最

28、大值,max ( setname ( set_index_list) | condition : expression );,30.08.2020,.,min ( setname ( set_index_list) | condition : expression); 返回集合setname上的表達(dá)式expression的最小值,30.08.2020,.,返回?cái)?shù)據(jù)集setname中成員 element的位置號(hào) (下標(biāo)),*集合操作函數(shù)*,index ( setname, element ),30.08.2020,.,model: sets: girls/debbie,sue,alice/:;

29、boys/bob,joe,sue,fred/:; endsets calc: x=index(boys,sue); y=index(sue); endcalc end,30.08.2020,.,in( set_name, primitive_index_1 ,primitive_index_2 ),如果數(shù)據(jù)集set_name中包含成員primitive_index_1則返回1,否則 返回0。,30.08.2020,.,例:,model: sets: plants / a,b,c,d /: ; closed(plants) / b /: ; open(plants) | #not# in(clo

30、sed, enddata end,30.08.2020,.,例2:,model: sets: s1/a b c/:; s2/x y z/:; s3(s1,s2)/a,x a,z b,y c,z/: ; endsets calc: x=in(s3,index(s1,b), index(s2,y) ); endcalc end,本例要判斷集合s3中是否包含元素(b,y),運(yùn)行LINGO|SOLVE得到x=1,說(shuō)明包含。,30.08.2020,.,wrap(index,limit) 當(dāng)index位于區(qū)間1,limit時(shí)返回index,否則返回j=index-k*limit,其中j位于區(qū)間1,limi

31、t,30.08.2020,.,職員時(shí)序安排模型,一項(xiàng)工作一周7 天都需要有人(比如 護(hù)士工作),每天(周一至周日)所需的 最少職員數(shù)為20、16、13、16、19、14 和 12,并要求每個(gè)職員一周連續(xù)工作5 天, 試求每周所需最少職員數(shù),并給出安排。 注意這里我們考慮穩(wěn)定后的情況。,30.08.2020,.,sets: days/mon.sun/: required,start; endsets data: required = 20 16 13 16 19 14 12; enddata min=sum(days: start); !最小化每周所需職員數(shù); for(days(j): sum(

32、 days(i) | i #le# 5: start( wrap(j+i+2,7 ) ) ) = required(j) );,30.08.2020,.,size(setname),返回集合setname中所包含的成員 個(gè)數(shù)。,30.08.2020,.,第二章 LINGO與其它軟件交換數(shù)據(jù),30.08.2020,.,拷貝、粘貼,From Exel,Pastefromexel.lg4,30.08.2020,.,輸入輸出函數(shù),用來(lái)與外部數(shù)據(jù)源連接 text()、 ole()、 file()、odbc()、 dual(),30.08.2020,.,file( filename ),在模型的集合和數(shù)據(jù)

33、部分使用, 從文本 文件輸入數(shù)據(jù).,30.08.2020,.,sets: warehouses / file( 1.txt) / : capacity; vendors / file( 1.txt ) / : demand; links( warehouses, vendors) : cost, volume; endsets,運(yùn)輸實(shí)例的數(shù)據(jù)可以從文本文件輸入:,30.08.2020,.,data: capacity = file( 1.txt ); demand = file( 1.txt ); cost = file( 1.txt ); enddata,1.txt文件內(nèi)容 1.txt,30

34、.08.2020,.,text( filename ),在模型的數(shù)據(jù)部分使用, 向文本 文件輸出數(shù)據(jù).,Outputtotext.lg4,30.08.2020,.,ole( spreadsheet_file ,range_name_list ),在模型的數(shù)據(jù)和集合部分使用, 與excel交換數(shù)據(jù),30.08.2020,.,運(yùn)輸實(shí)例的數(shù)據(jù)可以從Excel輸入:,sets: warehouses: capacity; vendors : demand; links( warehouses, vendors) : cost, volume; endsets,30.08.2020,.,data: wa

35、rehouses, vendors, capacity, demand, cost = ole ( 2.xls, warehouses, vendors, capacity, demand, cost );enddata,30.08.2020,.,在Excel中定義單元格范圍名稱的方法:, 按鼠標(biāo)左鍵拖曳選擇單元格范圍, 釋放鼠標(biāo)按鈕, 選擇“插入|名稱|定義”, 輸入希望的名字, 點(diǎn)擊“確定”按鈕。,30.08.2020,.,2.xls從Excel輸入數(shù)據(jù).lg4,30.08.2020,.,odbc(data_source, table_name, col_1, col_2 . ),在模型的

36、數(shù)據(jù)部分使用,與數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)傳輸,30.08.2020,.,運(yùn)輸實(shí)例的數(shù)據(jù)可以從數(shù)據(jù)庫(kù)輸入:,sets: warehouses: capacity; vendors : demand; links( warehouses, vendors) : cost, volume; endsets,30.08.2020,.,data: warehouses, capacity= odbc(); vendors, demand= odbc(); links,cost = odbc(); odbc()=volume; enddata,30.08.2020,.,trans.mdb與數(shù)據(jù)庫(kù)的數(shù)據(jù)傳遞.lg4,

37、30.08.2020,.,第三章 LINGO的內(nèi)部函數(shù),30.08.2020,.,1. 標(biāo)準(zhǔn)運(yùn)算符,算術(shù)運(yùn)算符: * / + -,邏輯運(yùn)算符: #EQ# #NE# #GE# #GT# #LE# #LT# #NOT# #AND# #OR#,30.08.2020,.,關(guān)系運(yùn)算符: = = 可以用表示=或,30.08.2020,.,運(yùn)算符的優(yōu)先級(jí),30.08.2020,.,lingo變量默認(rèn)域?yàn)榉秦?fù)實(shí)數(shù) free(variable) 取消默認(rèn)域,使變量可以取任意實(shí)數(shù) gin(variable) 限制變量取整數(shù)值 bin(variable) 限制變量取值為0,1 bnd(low,variable,up

38、) 限制變量于一個(gè)有限的范圍,3. 變量界定函數(shù),30.08.2020,.,練習(xí)1,x1=2, x2 =3, Z*17,練習(xí)1,30.08.2020,.,練習(xí)2,X1=1 X2=0 X3=1 Z=8,練習(xí)2,30.08.2020,.,abs(x)、cos(x)、sin(x) 、 tan(x) 、exp(x) 、sign(x) floor(x) (返回x的整數(shù)部分) smax(x1,x2,xn) (返回x1,x2,xn的最大值) smin(x1,x2,xn),4. 數(shù)學(xué)函數(shù),30.08.2020,.,5. 條件控制,if ( logical_condition, true_result, fal

39、se_result ) 計(jì)算logical_condition,若真 返回true_result 否則返回false_result.,30.08.2020,.,7個(gè)選項(xiàng)卡(可設(shè)置80-90個(gè)控制參數(shù)),30.08.2020,.,范例,30.08.2020,.,整數(shù)規(guī)劃 整數(shù)規(guī)劃.lg4,30.08.2020,.,二次規(guī)劃的例子(lingo).lg4,30.08.2020,.,遞規(guī)調(diào)用.lg4,已知 ,求a7,30.08.2020,.,學(xué)習(xí)方法: (1)上課各位老師講的每個(gè)有數(shù)據(jù)的規(guī)劃 模型上機(jī)用lingo語(yǔ)言實(shí)踐; (2) LINGO 的help下有一項(xiàng) Additional Examples

40、 of LINGO Modeling,可以仔細(xì)研究每個(gè)例子的 模型。,30.08.2020,.,某車間有甲、乙兩臺(tái)機(jī)床,可用于加工三種工件。假定這兩臺(tái)車床的可用臺(tái)時(shí)數(shù)分別為800和900,三種工件的數(shù)量分別為400、600和500,且已知用三種不同車床加工單位數(shù)量不同工件所需的臺(tái)時(shí)數(shù)和加工費(fèi)用如下表。問(wèn)怎樣分配車床的加工任務(wù),才能既滿足加工工件的要求,又使加工費(fèi)用最低?,練習(xí)3,30.08.2020,.,練習(xí)3,30.08.2020,.,解1 設(shè)在甲車床上加工工件1、2、3的數(shù)量為x1、x2、x3,在乙車床上加工工件1、2、3的數(shù)量分別為x4、x5、x6??山⒁韵戮€性規(guī)劃模型:,30.08.

41、2020,.,解2,設(shè)在甲車床上加工工件i的數(shù)量為x(i), 單位工件所需加工臺(tái)時(shí)數(shù)為timex(i), 單位工件的加工費(fèi)用為costx(i), 在乙車床上加工工件i的數(shù)量為y(i), 單位工件所需加工臺(tái)時(shí)數(shù)為timey(i) 單位工件的加工費(fèi)用為costy(i) 工件i的加工數(shù)量為demand(i),30.08.2020,.,數(shù)學(xué)模型,30.08.2020,.,Lingo建模,sets: Chechuang/1.3/ :costx,costy, timex,timey,x,y,demand; endsets,30.08.2020,.,Lingo建模,min=sum( chechuang :

42、costx*x+costy*y ) sum(chechuang:timex*x)800; sum(chechuang:timey*y)900; for(chechuang:x+y=demand); for(chechuang:gin(x);gin(y);,30.08.2020,.,data: costx=13,9,10; costy=11,12,8; timex=0.4,1.1,1; timey=0.5,1.2,1.3; demand=400,600,500; enddata,練習(xí)3,30.08.2020,.,Lingo-Generate-Display model,MODEL: _1 MIN

43、= 13 * X_1 + 11 * Y_1 + 9 * X_2 + 12 * Y_2 + 10 * X_3 + 8 * Y_3 ; _2 0.4 * X_1 + 1.1 * X_2 + X_3 = 800 ; _3 0.5 * Y_1 + 1.2 * Y_2 + 1.3 * Y_3 = 900 ; _4 X_1 + Y_1 = 400 ; _5 X_2 + Y_2 = 600 ; _6 X_3 + Y_3 = 500 ; GIN( X_1); GIN( Y_1); GIN( X_2); GIN( Y_2); GIN( X_3); GIN( Y_3); END,30.08.2020,.,練習(xí)4-求S到T的最短路,30.08.2020,.,model: sets: cities/s,a1,a2,a3, b1,b2,c1,c2,t/:l; roads(cities,cities)/ s,a1 s,a2 s,a3 a1,b1 a1,b2 a2,b1 a2,b2 a3,b1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論