国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Gurobi使用(一)——操作指南(轉(zhuǎn)自知乎)

這篇具有很好參考價值的文章主要介紹了Gurobi使用(一)——操作指南(轉(zhuǎn)自知乎)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

好像還是要學一下Gurobi如何使用的,不然這代碼著實有點抽象了

一、入門操作

一般來說,求解一個數(shù)學規(guī)劃模型的時候,通常會按照如下步驟解決問題:
設(shè)置變量---addVar()。
更新變量空間---update()。
設(shè)定目標函數(shù)---setObjective()。
設(shè)定約束條件---addConstr()。
執(zhí)行最優(yōu)化---optimize()。

創(chuàng)建模型:

import gurobipy
model = gurobipy.Model('LP模型測試1')  # 創(chuàng)建一個模型

(1) 設(shè)置決策變量

一次創(chuàng)建一個變量:

x = model.addVar(lb=0.0, ub=gurobipy.GRB.INFINITY, vtype=gurobipy.GRB.CONTINUOUS, name="")
  • lb=0.0:變量的下界,默認為0.0。?
  • ub=gurobipy.GRB.INFINITY:變量的上界,默認為無窮大。?
  • vtype=gurobipy.GRB.CONTINUOUS:變量的類型,默認為連續(xù)型號。變?yōu)镚RB.BINARY則是0-1變量,變?yōu)镚RB.INTEGER則為整數(shù)變量。?
  • name="":變量名,默認為空。?

一次創(chuàng)建多個變量:

x = model.addVars(*indexes, lb=0, ub=gurobipy.GRB.INFINITY, vtype=gurobipy.GRB.CONTINUOUS, name="")

示例:?

x = model.addVars(3, 4, 5, vtype=gurobipy.GRB.BINARY, name="C")

一次性生成3x4x5個變量。x包含了3x4x5個變量,可以通過x[i,j,k]來訪問單個的變量。

(2)更新變量空間

model.update()

(3)設(shè)定目標函數(shù)

單目標優(yōu)化

model.setObjective(expression,sense=None)
  • expression:表達式,可以是一次或者二次函數(shù)的類型。?
  • sense:求解類型,GRB.MINIMIZE則為最小值,GRB.MAXMIZE則為最大值。?
model.setObjective(8 * x1 + 10 * x2 + 7 * x3 + 6 * x4 + 11 * x5 + 9 * x6, gurobipy.GRB.MINIMIZE)

多目標優(yōu)化代碼:

model.setObjectiveN(expression, index, priority=0, weight=1.0, abstol=0, reltol=0, name="")
  • expression:表達式,可以是一次或者二次函數(shù)類型。?
  • index:目標函數(shù)對應(yīng)的序號(默認0,1,2,...),以index=0作為目標函數(shù)的值,其余值需要另外設(shè)置參數(shù)。?
  • priority:分層序列法多目標決策的優(yōu)先級,值越大優(yōu)先級越高。?
  • weight:線性加權(quán)多目標決策權(quán)重(在優(yōu)先級相同的時候發(fā)揮作用)。?
  • abstol:分層序列法多目標決策時允許的目標函數(shù)值的最大降低量。?
  • reltol:分層序列法多目標決策時允許的目標函數(shù)值的最大降低比率。

(4)添加約束條件:

創(chuàng)建一個約束條件

model.addConstr(expression, name="")
  • expression: 布爾表達式,可以是一次或二次函數(shù)類型
  • name: 約束式的名稱?
model.addConstr(12 * x1 + 9 * x2 + 25 * x3 + 20 * x4 + 17 * x5 + 13 * x6 >= 60, "c0")

創(chuàng)建多個約束條件

model.addConstrs(expressions, name="")

創(chuàng)建一個指示變量約束

model.addGenConstrIndicator(binvar, binval, expression, name="")

指示變量 binvar 的值取 binval 時, 進行約束 expression?

或者?
方法1: 構(gòu)造指示變量??,則上述約束轉(zhuǎn)化為:?(M是一個很大的數(shù),可以取1000)
方法2:轉(zhuǎn)化為二次約束,但是如果矩陣為非正定矩陣,則無法求解:

(5)執(zhí)行最優(yōu)化

model.Params.LogToConsole=True # 顯示求解過程
model.Params.MIPGap=0.0001 # 百分比界差
model.Params.TimeLimit=100 # 限制求解時間為 100s
model.Params.Presolve = -1 # 預(yù)處理程度, 0關(guān)閉,1保守,2激進
model.Params.MIPFocus = 0 # 求解側(cè)重點. 1快速找到可行解, 2證明最有, 3側(cè)重邊界提升, 0均衡搜索
model.Params.SolutionLimit = inf # 求解數(shù)量, 默認求所有解, 比較出最優(yōu)的結(jié)果, 只需要可行解時可以設(shè)置該參數(shù)為1
model.Params.NonConvex = 1  # 默認求解器,改為 2 時可以解決非凸二次優(yōu)化問題
?
model.optimize()

(6)查看模型優(yōu)化結(jié)果

  • 查看函數(shù)值以及變量值
# 查看單目標規(guī)劃模型的目標函數(shù)值
print("Optimal Objective Value", model.objVal)  
# 查看多目標規(guī)劃模型的目標函數(shù)值
for i in range(model.NumObj):
  MODEL.setParam(gurobipy.GRB.Param.ObjNumber, i)
  print(f"Obj {i+1} = {model.ObjNVal}")  
# 查看變量取值
for var in model.getVars():
   print(f"{var.varName}: {round(var.X, 3)}")

(7)輔助函數(shù)

quicksum()
quicksum相當于sum及其求和符號,效率更高。
寫為:?

for i in I:
    model.addConstr(quicksum(x[i,j] for j in J) <= 5)

此外,它還支持迭代器、生成器協(xié)議,也就是說,可以通過下面的代碼,實現(xiàn)更為復(fù)雜的過濾、求和方法.?

for c in C:
  model.addConstr(gurobipy.quicksum(x[d,i,j] for d in D for i in range(0, 24) for j in range(i + 1, 25) if i <= c < j) >= R[c])


?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-700155.html

?

到了這里,關(guān)于Gurobi使用(一)——操作指南(轉(zhuǎn)自知乎)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 操作指南 | 如何使用Chainlink喂價功能獲取價格數(shù)據(jù)

    操作指南 | 如何使用Chainlink喂價功能獲取價格數(shù)據(jù)

    Chainlink的去中心化預(yù)言機網(wǎng)絡(luò)中的智能合約包含由運行商為其他智能合約(DApps)使用或截取所持續(xù)更新的實施價格數(shù)據(jù)。其中有兩個主要架構(gòu):喂價和基礎(chǔ)要求模型。此教程將會展現(xiàn)如何在Moonbeam、Moonriver或是Moonbase Alpha測試網(wǎng)上使用喂價功能。 這些信息僅用于教育目的,永

    2024年02月11日
    瀏覽(26)
  • 【Golang】golang使用三方SDK操作容器指南

    【Golang】golang使用三方SDK操作容器指南

    大家好 我是寸鐵?? 總結(jié)了一篇 golang使用三方SDK操作容器? 喜歡的小伙伴可以點點關(guān)注 ?? 這應(yīng)該是目前全網(wǎng)最全golang使用三方SDK操作容器的指南了?? 主要是創(chuàng)建容器的配置信息,常用的字段 使用包如下: 配置創(chuàng)建Docker 容器的結(jié)構(gòu)體,具體字段的含義和用途如下: 1.

    2024年04月11日
    瀏覽(20)
  • Moonbeam操作指南|如何使用Gelato創(chuàng)建自動化任務(wù)

    Moonbeam操作指南|如何使用Gelato創(chuàng)建自動化任務(wù)

    Gelato是一個Web3去中心化自動化網(wǎng)絡(luò),允許開發(fā)者橫跨多個基于EVM兼容區(qū)塊鏈上自動化和連接任意的智能合約執(zhí)行。 ??閱讀中文版詳細操作教程 舉例來說,我們將使用MetaMask作為錢包。同時,您的錢包余額中需要有一些GLMR用于支付自動化交易的gas費用。 開始之前,請先前往

    2024年02月02日
    瀏覽(22)
  • 【操作寶典】IDE神器解密:IntelliJ IDEA詳細教程,Java編程進階指南!

    【操作寶典】IDE神器解密:IntelliJ IDEA詳細教程,Java編程進階指南!

    目錄 ??1. 新建Java項目 ??2. 運行Java程序 ??3. 創(chuàng)建springboot項目 方法一 導(dǎo)入jar包 ?編輯方法二 maven的安裝配置 ??4. 創(chuàng)建Vue項目 ?編輯4.1 配置node.js ?編輯4.2 idea運行 文件--新建--項目 JAVA模型--JDK 注意: 程序放在src里面 xxx.java則創(chuàng)建的類名只能為xxx 示例程序Hello.java 建議使

    2024年02月05日
    瀏覽(18)
  • MySQL 數(shù)據(jù)庫操作指南:LIMIT,OFFSET 和 JOIN 的使用

    您可以通過使用\\\"LIMIT\\\"語句來限制查詢返回的記錄數(shù)量。以下是一個示例,獲取您自己的Python服務(wù)器中\(zhòng)\\"customers\\\"表中的前5條記錄: 如果您想返回五條記錄,從第三條記錄開始,可以使用\\\"OFFSET\\\"。以下是一個示例: 通過使用JOIN語句,您可以基于它們之間的相關(guān)列合并兩個

    2024年02月05日
    瀏覽(44)
  • Go語言變量使用指南:聲明、類型轉(zhuǎn)換與字符串操作

    Go語言變量使用指南:聲明、類型轉(zhuǎn)換與字符串操作

    深入了解Go語言中變量的聲明方式、字符和布爾類型的細節(jié)、字符串的不可變性以及基本數(shù)據(jù)類型之間的轉(zhuǎn)換規(guī)則。

    2024年02月10日
    瀏覽(63)
  • Word不同部分(分節(jié))設(shè)置頁眉和頁碼的使用指南——附案例操作

    Word不同部分(分節(jié))設(shè)置頁眉和頁碼的使用指南——附案例操作

    在撰寫word文檔時,我們經(jīng)常需要在不同的部分應(yīng)用不同的頁眉和頁碼格式。在這篇博文中,我們將深入探討如何正確使用這些功能,避免常見錯誤,以及關(guān)注設(shè)置的重點。 在需要設(shè)置不同頁眉和頁碼的地方,首先插入分節(jié)符: 將光標放在要分割的位置,如新的章節(jié)開始處。

    2024年01月23日
    瀏覽(19)
  • MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 數(shù)據(jù)庫中文指南

    MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 數(shù)據(jù)庫中文指南

    MySQL Workbench 是一款專門為 MySQL 設(shè)計的可視化數(shù)據(jù)庫管理軟件,我們可以在自己的計算機上,使用圖形化界面遠程管理 MySQL 數(shù)據(jù)庫。 有關(guān) MySQL 遠程管理軟件,你可以選擇 Windows 下的 HeidiSQL,MacOS 下的 Sequel Ace 或者 MySQL 官方推出的跨平臺客戶端 MySQL Workbench 。 本文使用 Mac 版

    2024年02月10日
    瀏覽(39)
  • AI繪圖提示詞/咒語/詞綴/關(guān)鍵詞使用指南(Stable Diffusion Prompt 設(shè)計師操作手冊)

    AI繪圖提示詞/咒語/詞綴/關(guān)鍵詞使用指南(Stable Diffusion Prompt 設(shè)計師操作手冊)

    基本知識 : 安裝及其問題解決參考:《Windows安裝Stable Diffusion WebUI及問題解決記錄》; 運行使用時問題《Windows使用Stable Diffusion時遇到的各種問題整理》; 模型運用及參數(shù)《Stable Diffusion 個人推薦的各種模型及設(shè)置參數(shù)、擴展應(yīng)用等合集》; 提示詞生圖咒語《AI繪圖提示詞

    2024年02月01日
    瀏覽(39)
  • 端口操作指南

    端口操作指南

    知行之橋 EDI 系統(tǒng)中的端口是用于創(chuàng)建數(shù)據(jù)工作流的功能模塊。每個端口可執(zhí)行以下的一個任務(wù): 使用標準網(wǎng)絡(luò)協(xié)議 (AS2,AS4,F(xiàn)TP,SFTP,OFTP 等)與外部目標之間傳輸文件 與后端系統(tǒng)集成,例如數(shù)據(jù)庫或云端應(yīng)用程序 使用或公開 RESTful web API 將數(shù)據(jù)從一種格式轉(zhuǎn)換為另一種格式

    2024年02月16日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包