上一部分我們簡(jiǎn)單介紹了Lingo飞盆,這一部分我們繼續(xù)介紹Lingo中的語法恐锦,運(yùn)算符,以及應(yīng)用實(shí)例役听。
3.模型的數(shù)據(jù)(Data)部分和初始化(Init)部分
在處理模型的數(shù)據(jù)時(shí)颓鲜,需要為集指派一些成員并在Lingo求解模型之前為集的某些屬性指定值。
為此典予,Lingo為用戶提供了兩個(gè)可選部分:輸入集成員和數(shù)據(jù)的數(shù)據(jù)部分(Data Section)和為決策變量設(shè)置初始值的初始化部分(Init Section)甜滨。
3.1.模型的數(shù)據(jù)部分(Data Section)
3.1.1.簡(jiǎn)介
數(shù)據(jù)部分以關(guān)鍵字“data:”開始,以關(guān)鍵字“enddata”結(jié)束瘤袖。在這里衣摩,可以指定集成員、集的屬性捂敌。其語法如下:
object_list = value_list;
對(duì)象列(object_list)包含要指定值的屬性名艾扮、要設(shè)置集成員的集名既琴,用逗號(hào)或空格隔開。一個(gè)對(duì)象列中至多有一個(gè)集名泡嘴,而屬性名可以有任意多甫恩。如果對(duì)象列中有多個(gè)屬性名,那么它們的類型必須一致酌予。如果對(duì)象列中有一個(gè)集名填物,那么對(duì)象列中所有的屬性的類型就是這個(gè)集。
數(shù)值列(value_list)包含要分配給對(duì)象列中的對(duì)象的值霎终,用逗號(hào)或空格隔開。注意屬性值的個(gè)數(shù)必須等于集成員的個(gè)數(shù)升薯±嘲看下面的例子。
例3.1
sets:
set1/A,B,C/: X,Y;
endsets
data:
X=1,2,3;
Y=4,5,6;
enddata
在集set1中定義了兩個(gè)屬性X和Y涎劈。X的三個(gè)值是1广凸、2和3,Y的三個(gè)值是4蛛枚、5和6谅海。也可采用如下例子中的復(fù)合數(shù)據(jù)聲明(data statement)實(shí)現(xiàn)同樣的功能。
例3.2 復(fù)合數(shù)據(jù)聲明
sets:
set1/A,B,C/: X,Y;
endsets
data:
X,Y=1 4
2 5
3 6;
enddata
這時(shí)的數(shù)據(jù)分配和例3.1是等效的蹦浦,像這種將X,Y看為一組數(shù)扭吁,一組一組構(gòu)建數(shù)據(jù)的方式稱為復(fù)合數(shù)據(jù)聲明。
3.1.2.參數(shù)
在數(shù)據(jù)部分也可以制定一些標(biāo)量變量盲镶,稱之為參數(shù)侥袜。
例3.3
data:
interest_rate = .085;
enddata
3.1.3.實(shí)時(shí)數(shù)據(jù)處理
在某些情況,對(duì)于模型中的某些數(shù)據(jù)并不是定值溉贿。譬如模型中有一個(gè)通貨膨脹率的參數(shù)枫吧,我們想在2%至6%范圍內(nèi),對(duì)不同的值求解模型宇色,來觀察模型的結(jié)果對(duì)通貨膨脹的依賴有多么敏感九杂。我們把這種情況稱為實(shí)時(shí)數(shù)據(jù)處理。LINGO可方便地做到這件事宣蠕。
在本該放數(shù)的地方輸入一個(gè)問號(hào)(?)例隆。
例3.4 實(shí)時(shí)數(shù)據(jù)處理
data:
interest_rate,inflation_rate = .085 ?;
enddata
這樣系統(tǒng)就會(huì)彈出一個(gè)交互框來讓你隨意調(diào)整數(shù)值。
3.1.4.指定屬性為一個(gè)值
可以在數(shù)據(jù)聲明的右邊輸入一個(gè)值來把所有的成員的該屬性指定為一個(gè)值植影∩亚妫看下面的例子。
例3.5 指定屬性為同一個(gè)值
sets:
days /MO,TU,WE,TH,FR,SA,SU/:needs;
endsets
data:
needs = 20;
enddata
LINGO將用20指定days集的所有成員的needs屬性思币。對(duì)于多個(gè)屬性的情形鹿响,見下例羡微。
例3.6 指定多個(gè)屬性為同一個(gè)值
sets:
days /MO,TU,WE,TH,FR,SA,SU/:needs,cost;
endsets
data:
needs cost = 20 100;
enddata
3.1.5 數(shù)據(jù)部分的未知數(shù)值
有時(shí)只想為一個(gè)集的部分成員的某個(gè)屬性指定值,而讓其余成員的該屬性保持未知惶我,以便讓LINGO去求出它們的最優(yōu)值妈倔。在數(shù)據(jù)聲明中輸入兩個(gè)相連的逗號(hào)表示該位置對(duì)應(yīng)的集成員的屬性值未知。兩個(gè)逗號(hào)間可以有空格绸贡。
例3.7 數(shù)據(jù)部分的未知數(shù)值
sets:
years/1..5/: capacity;
endsets
data:
capacity = ,34,20,,;
enddata
這代表屬性capacity的第2個(gè)值和第3個(gè)值分別為34和20盯蝴,其余的未知。
3.2.模型的初始化部分(Init Section)
初始部分是LINGO提供的另一個(gè)可選部分听怕。在初始部分中捧挺,可以輸入初始聲明(initialization statement),和數(shù)據(jù)部分中的數(shù)據(jù)聲明相同尿瞭。對(duì)實(shí)際問題的建模時(shí)闽烙,初始部分并不起到描述模型的作用,在初始部分輸入的值僅被LINGO求解器當(dāng)作初始點(diǎn)來用声搁,并且僅僅對(duì)非線性模型有用黑竞。和數(shù)據(jù)部分指定變量的值不同,LINGO求解器可以自由改變初始部分初始化的變量的值疏旨。
一個(gè)初始部分以“init:”開始很魂,以“endinit”結(jié)束。初始部分的初始聲明規(guī)則和數(shù)據(jù)部分的數(shù)據(jù)聲明規(guī)則相同檐涝。也就是說遏匆,我們可以在聲明的左邊同時(shí)初始化多個(gè)集屬性,可以把集屬性初始化為一個(gè)值骤铃,可以用問號(hào)實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理拉岁,還可以用逗號(hào)指定未知數(shù)值。
例3.8
init:
X, Y = 0, .1;
endinit
Y=@log(X);
X^2+Y^2<=1;
好的初始點(diǎn)會(huì)減少模型的求解時(shí)間惰爬。
4.Lingo函數(shù)
Lingo共有9種類型的函數(shù):
1.基本運(yùn)算符:算數(shù)運(yùn)算符喊暖,邏輯運(yùn)算符和關(guān)系運(yùn)算符
2.數(shù)學(xué)函數(shù):三角函數(shù)和常規(guī)的數(shù)學(xué)函數(shù)。
3.金融函數(shù):Lingo提供的兩種金融函數(shù)撕瞧。
4.概率函數(shù):Lingo提供了大量的概率函數(shù)陵叽。
5.變量界定函數(shù):這類函數(shù)用來界定變量的取值范圍。
6.集操作函數(shù):對(duì)集的操作提供幫助丛版。
7.集循環(huán)函數(shù):遍歷集的元素巩掺,執(zhí)行一定的操作的函數(shù)。
8.數(shù)據(jù)輸入輸出函數(shù):這類函數(shù)允許模型和外部數(shù)據(jù)相聯(lián)系页畦,進(jìn)行數(shù)據(jù)的輸入輸出胖替。
9.輔助函數(shù):各種雜類函數(shù)。
接下來將逐一介紹:
4.1.基本運(yùn)算符
4.1.1.算術(shù)運(yùn)算符
Lingo提供了5種二元運(yùn)算符:
^ :乘方
*:乘
/:除
+:加
-:減
提供了一種一元運(yùn)算符——取反運(yùn)算符。
優(yōu)先級(jí)從高到低分別為:取反独令,乘方端朵,乘除,加減燃箭。
可用圓括號(hào)"()"來調(diào)整優(yōu)先級(jí)冲呢。
4.1.2.邏輯運(yùn)算符
在 Lingo 中,邏輯運(yùn)算符主要用于集循環(huán)函數(shù)的條件表達(dá)式中招狸,來控制在函數(shù)中哪些集成員被包含敬拓,哪些被排斥。在創(chuàng)建稀疏集時(shí)用在成員資格過濾器中裙戏。
Lingo具有9中邏輯運(yùn)算符:
#not#:否定該操作數(shù)的邏輯值乘凸,#not#是一個(gè)一元運(yùn)算符
#eq#:若兩個(gè)運(yùn)算數(shù)相等,則為true累榜;否則為flase
#ne#:若兩個(gè)運(yùn)算符不相等翰意,則為true;否則為flase
#gt#: 若左邊的運(yùn)算符嚴(yán)格大于右邊的運(yùn)算符信柿,則為true;否則為flase
#ge#:若左邊的運(yùn)算符大于或等于右邊的運(yùn)算符醒第,則為true渔嚷;否則為flase
#lt#:若左邊的運(yùn)算符嚴(yán)格小于右邊的運(yùn)算符,則為true稠曼;否則為flase
#le#:若左邊的運(yùn)算符小于或等于右邊的運(yùn)算符形病,則為true;否則為flase
#and#:僅當(dāng)兩個(gè)參數(shù)都為true時(shí)霞幅,結(jié)果為true漠吻;否則為flase
#or#:僅當(dāng)兩個(gè)參數(shù)都為false時(shí),結(jié)果為false司恳;否則為true
運(yùn)算符優(yōu)先級(jí)從低到高為:
#not#
#eq#,#ne#,#gt#,#ge#,#lt#,#le#
#and#
#or#
4.1.3.關(guān)系運(yùn)算符
在LINGO中途乃,關(guān)系運(yùn)算符主要是被用在模型中,來指定一個(gè)表達(dá)式的左邊是否等于扔傅、小于等于耍共、或者大于等于右邊,形成模型的一個(gè)約束條件猎塞。關(guān)系運(yùn)算符與邏輯運(yùn)算符#eq#试读、#le#、#ge#截然不同荠耽,前者是模型中該關(guān)系運(yùn)算符所指定關(guān)系的為真描述钩骇,而后者僅僅判斷一個(gè)該關(guān)系是否被滿足:滿足為真,不滿足為假。
LINGO有三種關(guān)系運(yùn)算符:“=”倘屹、“<=”和“>=”银亲。LINGO中還能用“<”表示小于等于關(guān)系,“>”表示大于等于關(guān)系唐瀑。LINGO并不支持嚴(yán)格小于和嚴(yán)格大于關(guān)系運(yùn)算符群凶。然而,如果需要嚴(yán)格小于和嚴(yán)格大于關(guān)系哄辣,比如讓A嚴(yán)格小于B:
那么可以把它變成如下的小于等于表達(dá)式:
給出以上三類操作符的優(yōu)先級(jí):(從高到低)
#not# 取反
^
* /
+ -
#eq#,#ne#,#gt#,#ge#,#lt#,#le#
#and#,#or#
4.2.數(shù)學(xué)函數(shù)
Lingo提供了大量標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)晶丘。
@abs(x):返回x的絕對(duì)值峭范。
@sin(x):返回x的正弦值,x采用弧度制。
@cos(x):返回x的余弦值凿跳。
@tan(x):返回x的正切值。
@exp(x):返回常數(shù)e的x次方耍属。
@log(x):返回x的自然對(duì)數(shù)萄唇。
@lgm(x):返回x的gamma函數(shù)的自然對(duì)數(shù)。
@mod(x,y):返回x除以y的余數(shù)崖面。
@sign(x):如果x<0返回-1元咙;否則,返回1巫员。
@floor(x):返回x的整數(shù)部分庶香。當(dāng)x>=0時(shí),返回不超過x的最大整數(shù)简识;當(dāng)x<0時(shí)赶掖,返回不低于x的最大整數(shù)。
@smax(x1,x2,…,xn):返回x1七扰,x2奢赂,…,xn中的最大值颈走。
@smin(x1,x2,…,xn):返回x1膳灶,x2,…立由,xn中的最小值袖瞻。
4.3.金融函數(shù)
目前Lingo提供了兩個(gè)金融函數(shù)。
1.@fpa(I,n)
返回如下情形的凈現(xiàn)值:?jiǎn)挝粫r(shí)段利率為I拆吆,連續(xù)n個(gè)時(shí)段支付聋迎,每個(gè)時(shí)段支付單位費(fèi)用。若每個(gè)時(shí)段支付x單位的費(fèi)用枣耀,則凈現(xiàn)值可用x乘以@fpa(I,n)算得霉晕。@fpa的計(jì)算公式為:
例4.1 (貸款買房問題)
Lingo代碼如下:貸款金額50000元庭再,貸款年利率5.31%,采取分期付款方式(每年年末還固定金額牺堰,直至還清)拄轻。問擬貸款10年,每年需償還多少元伟葫?
LINGO代碼如下:
50000 = x * @fpa(.0531,10);
答案是x=6573.069元恨搓。
2.@fpl(I,n)
返回如下情形的凈現(xiàn)值:?jiǎn)挝粫r(shí)段利率為I,第n個(gè)時(shí)段支付單位費(fèi)用筏养。@fpl(I,n)的計(jì)算公式為
細(xì)心的讀者可以發(fā)現(xiàn)這兩個(gè)函數(shù)間的關(guān)系:
@fpa(I,n)=@fpl(I,n)
4.4.概率函數(shù)
1.@pbn(p,n,x)
二項(xiàng)分布的累積分布函數(shù)斧抱。當(dāng)n和(或)x不是整數(shù)時(shí),用線性插值法進(jìn)行計(jì)算渐溶。
2.@pcx(n,x)
自由度為n的χ2分布的累積分布函數(shù)辉浦。
3.@peb(a,x)
當(dāng)?shù)竭_(dá)負(fù)荷為a,服務(wù)系統(tǒng)有x個(gè)服務(wù)器且允許無窮排隊(duì)時(shí)的Erlang繁忙概率茎辐。
4.@pel(a,x)
當(dāng)?shù)竭_(dá)負(fù)荷為a宪郊,服務(wù)系統(tǒng)有x個(gè)服務(wù)器且不允許排隊(duì)時(shí)的Erlang繁忙概率。
5.@pfd(n,d,x)
自由度為n和d的F分布的累積分布函數(shù)拖陆。
6.@pfs(a,x,c)
當(dāng)負(fù)荷上限為a弛槐,顧客數(shù)為c,平行服務(wù)器數(shù)量為x時(shí)依啰,有限源的Poisson服務(wù)系統(tǒng)的等待或返修顧客數(shù)的期望值丐黄。a是顧客數(shù)乘以平均服務(wù)時(shí)間,再除以平均返修時(shí)間孔飒。當(dāng)c和(或)x不是整數(shù)時(shí),采用線性插值進(jìn)行計(jì)算艰争。
7.@phg(pop,g,n,x)
超幾何(Hypergeometric)分布的累積分布函數(shù)坏瞄。pop表示產(chǎn)品總數(shù),g是正品數(shù)甩卓。從所有產(chǎn)品中任意取出n(n≤pop)件鸠匀。pop,g逾柿,n和x都可以是非整數(shù)缀棍,這時(shí)采用線性插值進(jìn)行計(jì)算。
8.@ppl(a,x)
Poisson分布的線性損失函數(shù)机错,即返回max(0,z-x)的期望值爬范,其中隨機(jī)變量z服從均值為a的Poisson分布。
9.@pps(a,x)
均值為a的Poisson分布的累積分布函數(shù)弱匪。當(dāng)x不是整數(shù)時(shí)青瀑,采用線性插值進(jìn)行計(jì)算。
10.@psl(x)
單位正態(tài)線性損失函數(shù),即返回max(0,z-x)的期望值斥难,其中隨機(jī)變量z服從標(biāo)準(zhǔn)正態(tài)分布枝嘶。
11.@psn(x)
標(biāo)準(zhǔn)正態(tài)分布的累積分布函數(shù)。
12.@ptd(n,x)
自由度為n的t分布的累積分布函數(shù)哑诊。
13.@qrand(seed)
產(chǎn)生服從(0,1)區(qū)間的擬隨機(jī)數(shù)群扶。@qrand只允許在模型的數(shù)據(jù)部分使用,它將用擬隨機(jī)數(shù)填滿集屬性镀裤。通常竞阐,聲明一個(gè)m×n的二維表,m表示運(yùn)行實(shí)驗(yàn)的次數(shù)淹禾,n表示每次實(shí)驗(yàn)所需的隨機(jī)數(shù)的個(gè)數(shù)馁菜。在行內(nèi),隨機(jī)數(shù)是獨(dú)立分布的铃岔;在行間汪疮,隨機(jī)數(shù)是非常均勻的。這些隨機(jī)數(shù)是用“分層取樣”的方法產(chǎn)生的毁习。
14.@rand(seed)
返回0和1間的偽隨機(jī)數(shù)智嚷,依賴于指定的種子。典型用法是U(I+1)=@rand(U(I))纺且。注意如果seed不變盏道,那么產(chǎn)生的隨機(jī)數(shù)也不變。
4.5.變量界定函數(shù)
變量界定函數(shù)實(shí)現(xiàn)對(duì)變量取值范圍的附加限制载碌,共4種:
@bin(x):限制x為0或1猜嘱;
@bnd(L,x,U):限制L≤x≤U;
@free(x):取消對(duì)變量x的默認(rèn)下界為0的限制嫁艇,即x可以取任意實(shí)數(shù)朗伶;
@gin(x):限制x為整數(shù)。
在默認(rèn)情況下步咪,LINGO規(guī)定變量是非負(fù)的论皆,也就是說下界為0,上界為+∞猾漫。@free取消了默認(rèn)的下界為0的限制点晴,使變量也可以取負(fù)值。@bnd用于設(shè)定一個(gè)變量的上下界,它也可以取消默認(rèn)下界為0的約束悯周。
4.6.集操作函數(shù)
LINGO提供了幾個(gè)函數(shù)幫助處理集粒督。
1.@in(set_name,primitive_index_1 [,primitive_index_2,…])
如果元素在指定集中,返回1禽翼;否則返回0坠陈。
例4.2 全集為I萨惑,B是I的一個(gè)子集,C是B的補(bǔ)集仇矾。
sets:
I/x1..x4/:x;
B(I)/x2/:y;
C(I)|#not#@in(B,&1):z;
endsets
2.@index([set_name,] primitive_set_element)
該函數(shù)返回在集set_name中原始集成員primitive_set_element的索引庸蔼。如果set_name被忽略,那么LINGO將返回與primitive_set_element匹配的第一個(gè)原始集成員的索引贮匕。如果找不到姐仅,則產(chǎn)生一個(gè)錯(cuò)誤。
例4.3 如何確定集成員(B,Y)屬于派生集S3
sets:
S1/A B C/;
S2/X Y Z/;
S3(S1,S2)/A X, A Z, B Y, C X/;
endsets
X=@in(S3,@index(S1,B),@index(S2,Y));
3.@wrap(index,limit) (取余)
該函數(shù)返回j=index-k*limit刻盐,其中k是一個(gè)整數(shù)掏膏,取適當(dāng)值保證j落在區(qū)間[1,limit]內(nèi)敦锌。該函數(shù)在循環(huán)馒疹、多階段計(jì)劃編制中特別有用。
4.@size(set_name)
該函數(shù)返回集set_name的成員個(gè)數(shù)乙墙。在模型中明確給出集大小時(shí)最好使用該函數(shù)颖变。它的使用使模型更加數(shù)據(jù)中立,集大小改變時(shí)也更易維護(hù)听想。
4.7.集循環(huán)函數(shù)
集循環(huán)函數(shù)遍歷整個(gè)集進(jìn)行操作腥刹。其語法為
@function(setname[(set_index_list)[|conditional_qualifier]]:
expression_list);
@function相應(yīng)于下面羅列的四個(gè)集循環(huán)函數(shù)之一;
setname是要遍歷的集汉买;
set_ index_list是集索引列表衔峰;
conditional_qualifier是用來限制集循環(huán)函數(shù)的范圍。
當(dāng)集循環(huán)函數(shù)遍歷集的每個(gè)成員時(shí)蛙粘,LINGO都要對(duì)conditional_qualifier進(jìn)行評(píng)價(jià)垫卤,若結(jié)果為真,則對(duì)該成員執(zhí)行@function操作出牧,否則跳過穴肘,繼續(xù)執(zhí)行下一次循環(huán)。expression_list是被應(yīng)用到每個(gè)集成員的表達(dá)式列表崔列,當(dāng)用的是@for函數(shù)時(shí),expression_list可以包含多個(gè)表達(dá)式旺遮,其間用逗號(hào)隔開赵讯。這些表達(dá)式將被作為約束加到模型中。當(dāng)使用其余的三個(gè)集循環(huán)函數(shù)時(shí)耿眉,expression_list只能有一個(gè)表達(dá)式边翼。如果省略set_index_list,那么在expression_list中引用的所有屬性的類型都是setname集鸣剪。
1.@for
該函數(shù)用來產(chǎn)生對(duì)集成員的約束组底≌苫基于建模語言的標(biāo)量需要顯式輸入每個(gè)約束,不過@for函數(shù)允許只輸入一個(gè)約束债鸡,然后LINGO自動(dòng)產(chǎn)生每個(gè)集成員的約束江滨。
例4.4 產(chǎn)生序列{1,4,9,16,25}
model:
sets:
number/1..5/:x;
endsets
@for(number(I): x(I)=I^2);
end
2.@sum
該函數(shù)返回遍歷指定的集成員的一個(gè)表達(dá)式的和。
例4.5 求向量[5厌均,1唬滑,3,4棺弊,6晶密,10]前5個(gè)數(shù)的和。
model:
data:
N=6;
enddata
sets:
number/1..N/:x;
endsets
data:
x = 5 1 3 4 6 10;
enddata
s=@sum(number(I) | I #le# 5: x);
end
3.@min和@max
返回指定的集成員的一個(gè)表達(dá)式的最小值或最大值模她。
例4.6 求向量[5稻艰,1,3侈净,4尊勿,6,10]前5個(gè)數(shù)的最小值用狱,后3個(gè)數(shù)的最大值运怖。
model:
data:
N=6;
enddata
sets:
number/1..N/:x;
endsets
data:
x = 5 1 3 4 6 10;
enddata
minv=@min(number(I) | I #le# 5: x);
maxv=@max(number(I) | I #ge# N-2: x);
end
4.8.輸入和輸出函數(shù)
輸入和輸出函數(shù)可以把模型和外部數(shù)據(jù)比如文本文件、數(shù)據(jù)庫和電子表格等連接起來夏伊。
1.@file函數(shù)
該函數(shù)用從外部文件中輸入數(shù)據(jù)摇展,可以放在模型中任何地方。該函數(shù)的語法格式為@file(’filename’)溺忧。這里filename是文件名咏连,可以采用相對(duì)路徑和絕對(duì)路徑兩種表示方式。
2.@text函數(shù)
該函數(shù)被用在數(shù)據(jù)部分用來把解輸出至文本文件中鲁森。它可以輸出集成員和集屬性值祟滴。其語法為
@text([’filename’])
這里filename是文件名,可以采用相對(duì)路徑和絕對(duì)路徑兩種表示方式歌溉。如果忽略filename垄懂,那么數(shù)據(jù)就被輸出到標(biāo)準(zhǔn)輸出設(shè)備(大多數(shù)情形都是屏幕)。@text函數(shù)僅能出現(xiàn)在模型數(shù)據(jù)部分的一條語句的左邊痛垛,右邊是集名(用來輸出該集的所有成員名)或集屬性名(用來輸出該集屬性的值)草慧。
我們把用接口函數(shù)產(chǎn)生輸出的數(shù)據(jù)聲明稱為輸出操作。輸出操作僅當(dāng)求解器求解完模型后才執(zhí)行匙头,執(zhí)行次序取決于其在模型中出現(xiàn)的先后漫谷。
3.@ole函數(shù)
@OLE是從EXCEL中引入或輸出數(shù)據(jù)的接口函數(shù),它是基于傳輸?shù)腛LE技術(shù)蹂析。OLE傳輸直接在內(nèi)存中傳輸數(shù)據(jù)舔示,并不借助于中間文件碟婆。當(dāng)使用@OLE時(shí),LINGO先裝載EXCEL惕稻,再通知EXCEL裝載指定的電子數(shù)據(jù)表竖共,最后從電子數(shù)據(jù)表中獲得Ranges。為了使用OLE函數(shù)缩宜,必須有EXCEL5及其以上版本肘迎。OLE函數(shù)可在數(shù)據(jù)部分和初始部分引入數(shù)據(jù)。
@OLE可以同時(shí)讀集成員和集屬性锻煌,集成員最好用文本格式妓布,集屬性最好用數(shù)值格式。原始集每個(gè)集成員需要一個(gè)單元(cell)宋梧,而對(duì)于n元的派生集每個(gè)集成員需要n個(gè)單元匣沼,這里第一行的n個(gè)單元對(duì)應(yīng)派生集的第一個(gè)集成員,第二行的n個(gè)單元對(duì)應(yīng)派生集的第二個(gè)集成員捂龄,依此類推释涛。
@OLE只能讀一維或二維的Ranges(在單個(gè)的EXCEL工作表(sheet)中),但不能讀間斷的或三維的Ranges倦沧。Ranges是自左而右唇撬、自上而下來讀。
4.9 輔助函數(shù)
1.@if(logical_condition,true_result,false_result)
@if函數(shù)將評(píng)價(jià)一個(gè)邏輯表達(dá)式logical_condition展融,如果為真窖认,返回true_ result,否則返回false_result告希。
以上即是Lingo軟件中涉及的基本函數(shù)扑浸,下一部分將用綜合實(shí)例來全面實(shí)踐用Lingo解決規(guī)劃問題。