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 |





