Lingo基本操作


Lingo基本操作

前言

Lingo是一門主要求解非線性規划數學模型的編程軟件,記得最初接觸Lingo是在閱讀《數學建模教程》一書,該書在第五章主要講解使用Lingo來解決優化問題,也是在那個時候認識到了Lingo的強大之處。Lingo的使用就好比解決一道簡單的數學問題,而你只需要使用Lingo支持的編程規范給其提供充足的已知條件即可,之后會自動使用相關算法為您解答。為了日后更加方便的查詢Lingo相關知識,所以將Lingo的基本使用在此記錄。

關於Lingo的下載及安裝問題博主已做整理,可參考本篇教程 Lingo安裝

一、Lingo基本運算符

1.1 算術運算符

^:乘方
*:乘
/:除
+:加
-:減

1.2 邏輯運算符

在Lingo中,邏輯運算符主要用於集循環函數的條件表達式中,來控制在函數中哪些集成員被包含,哪些被排斥。

符號 說明
#and# 且,&
#or# 或,||
#not# 非,!
#eq# 等於,==
#ne# 不等於,!=
#gt# 大於,>
#ge# 大於等於,>=
#lt# 小於,<
#le# 小於等於,<=

1.3 關系運算符

= 、<= 、 >=

二、函數

2.1 標准數學函數

函數 說明
@abs(x) 絕對值
@sin(x) 正弦值,采用弧度制
@cos(x) 余弦值
@tan(x) 正切
@exp(x) 指數,
@log(x) 自然對數
@lgm(x) gamma函數的自然對數
@sign(x) x<0返回-1,否則返回返回1
@floor(x) 取整
@smax() 取() 中的最大值
@smin() 取() 中的最小值

2.2 集循環函數

集循環函數用於遍歷整個集,其基本語法如下:

@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]

sets:
nums/1..5/: x;
endsets

@for(nums(i): x(i)=i^2);

2.2.2 @sum

@sum函數返回遍歷指定集成員的一個表達式的和

例:求[1,2,3,4,5,6,7]中前五個數的和

sets:
nums/1..7/: x;
endsets

@for(nums(i): x(i)=i);

s = @sum(nums(i) | i #le# 5: x(i));

2.2.3 @max,@min

這兩個函數分別用於返回指定集成員的一個表達式的最大值和最小值

例:求[1,2,3,4,5,6,7,8,9,10]中前五個數的最大值,后五個數的最小值

sets:
nums/1..10/: x;
endsets

@for(nums(i): x(i)=i);

min_value = @max(nums(i) | i #le# 5: x);
max_value = @min(nums(i) | i #ge# 6: x);

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中還有其他大量的函數,比如金融函數、概率函數、變量界定函數,由於目前博主占時用不上,所以就暫且不記錄了,待需要時再做進一步更新。

三、待更新


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM