POLab
2017/09/27
【回到首頁】
Python中宣告for迴圈及if條件式後,記得用冒號':' 來結束聲明,接著在下一行打上要對for迴圈或if條件式做的事情,在此要特別注意的是Python是透過縮排來辨別不同的程式區塊,因此在下一行開始前,要記得按tab鍵來做區隔,這樣程式才知道他們是包含在for迴圈跟if條件句之下的程式碼。
-for迴圈
for i in <some list>:
<do something for each i here>
-if條件句
if <condition>:
<do something if condition is true here>
for i in I:
m.addConstr(quicksum(x[i,j] for j in J)<=5)
在建立數學規劃的最後,通常需顯示最終求得之最佳解,例如:目標函數值、各決策變數值等...
此時,可藉由格式符來替我們列印各項數值及名稱,以下為幾個常用的格式符:
※如果對格式化字符串的使用較不熟悉,可參考這裡
符號 | 說明 |
---|---|
%s | 字符串 |
%d | 格式化整數 |
%f | 格式化浮點數 |
%e | 指數,科學計數法 |
%g | 根據值的大小決定使用%f或%e |
print('She is %s. She weights %gkg and is %dcm tall.'%('Rima',50.4,166))
She is Rima. She weights 50.4kg and is 166cm tall.
print('obj:%d'%m.objVal)
obj:36
在建立一個數學規劃時,我們必須加入我們的決策變數、目標函數及限制式,以下是在設定這些變數及式子常用的三大函數的詳細內容介紹
P.S. 在Gurobi中設定目標函數及限制式還有其他不一樣的方式,在此只介紹這三個函數的應用,若想要有更進一步的了解可至Gurboi網站內的Python專區查詢,若想了解其他函數的詳細資訊可點擊這裡
變數預設的範圍上限為無限,下限為0,變數型態為連續變數(continuous)
在Guroib中,可以透過各種屬性來查詢或更改所建立數學規劃的內容,以下為常用的幾個屬性:
P.S. 更多屬性查詢,可點擊這裡
Attribute Name | Description |
---|---|
NumVars | Number of variables |
NumConstrs | Number of linear constraints |
ObjVal | objective value for current solution |
Attribute Name | Description |
---|---|
LB | Lower bound |
Obj | Linear objective coefficient |
VarName | Variable name |
X | Value in the current solution |
Attribute Name | Description |
---|---|
ConstrName | Constraint name |
Pi | Dual value (also known as the shadow price) |
Slack | Slack in the current solution |