二、函式
三、待更新
lingo是一門主要求解非線性規劃數學模型的程式設計軟體,記得最初接觸lingo是在閱讀《數學建模教程》一書,該書在第五章主要講解使用lingo來解決優化問題,也是在那個時候認識到了lingo的強大之處。lingo的使用就好比解決一道簡單的數學問題,而你只需要使用lingo支援的程式設計規範給其提供充足的已知條件即可,之後會自動使用相關演算法為您解答。為了日後更加方便的查詢lingo相關知識,所以將lingo的基本使用在此記錄。
^:乘方
*:乘
/:除
+:加
-:減在lingo中,邏輯運算子主要用於集迴圈函式的條件表示式中,來控制在函式中哪些集成員被包含,哪些被排斥。
符號說明
#and#
且,or#
或,||
#not#
非,!#eq#
等於,==
#ne#
不等於,!=
#gt#
大於,>
#ge#
大於等於,>=
#lt#
小於,<
#le#
小於等於,<=
函式說明
@abs(x)
絕對值@sin(x)
正弦值,採用弧度制
@cos(x)
余弦值@tan(x)
正切@exp(x)
指數,e
x e
x@log(x)
自然對數
@lgm(x)
gamma函式的自然對數
@sign(x)
x<0返回-1,否則返回返回1
@floor(x)
取整@smax(x1
,x2,
⋯,xnx1
,x2,
⋯,xn
)取(x1,x
2,⋯,xnx
1,x2
,⋯,x
n) 中的最大值
@smin(x1
,x2,
⋯,xnx1
,x2,
⋯,xn
)取(x1,x
2,⋯,xnx
1,x2
,⋯,x
n) 中的最小值
集迴圈函式用於遍歷整個集,其基本語法如下:
@function
(setname[(set_index_list)[|conditional_qualifier]]:
expression_list);
@function相應於下面羅列的四個集迴圈函式之一;setname是要遍歷的集;set_ index_list是集索引列表;conditional_qualifier是用來限制集迴圈函式的範圍,當集迴圈函式遍歷集的每個成員時,lingo都要對conditional_qualifier進行評價,若結果為真,則對該成員執行@function操作,否則跳過,繼續執行下一次迴圈。expression_list是被應用到每個集成員的表示式列表,當用的是@for函式時,expression_list可以包含多個表示式,其間用逗號隔開。這些表示式將被作為約束加到模型中。當使用其餘的三個集迴圈函式時,expression_list只能有乙個表示式。如果省略set_index_list,那麼在expression_list中引用的所有屬性的型別都是setname集。
2.2.1 @for
@for函式用來對集中的成員形成約束。
例:產生序列[1,4,9,16,25]
@sum函式返回遍歷指定集成員的乙個表示式的和
例:求[1,2,3,4,5,6,7]中前五個數的和
這兩個函式分別用於返回指定集成員的乙個表示式的最大值和最小值
例:求[1,2,3,4,5,6,7,8,9,10]中前五個數的最大值,後五個數的最小值
2.2.4 變數界定函式
該函式主要是對決策變數做附加限制,一般用於@for函式中,主要有如下四種:
函式說明
@bin(x)
限制x為0或1
@bnd(a,x,b)
限制x取a到b之間的值
@free(x)
x取實數
@gin(x)
x取整數
2.2.5 說明
lingo中還有其他大量的函式,比如金融函式、概率函式、變數界定函式,由於目前博主佔時用不上,所以就暫且不記錄了,待需要時再做進一步更新。
LINGO基本問題
1.lingo中的infeasibilities 矛盾約束的數目 一般不可行的問題裡面才 會不為0 可行的都是0或者很接近0 slack or surplus什麼意思 slack一般用作鬆弛的或是鬆懈的,surplus一般用作剩餘或是超出 lingo中的reduced cost 和dual pric...
Lingo的基本用法 更新版
lingo是用來求解線性和非線性優化問題的簡易工具。lingo免費版可以支援30個未知數,lingo破解版可以支援幾萬個未知數 幾萬個約束條件。lingo中變數不區分大小寫,以字母開頭不超過32個字元 算術運算子是針對數值進行操作的。lingo提供了5種二元運算子 乘方 乘 除 加 減 lingo唯...
Lingo 集合小結
現在,我們歸納一下基本集合和派生集合的定義語法。基本集合的定義格式為 以下語 法中凡是在方括號 中的內容,表示是可選的項,即該項可以有也可以沒有 setname member list attribute list 其中 setname 為定義的集合名,member list 為元素列表,attri...