国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Gurobi入門實踐(一)——以16屆華為杯F題為例

2023-02-04 14:18 作者:gdg1999  | 我要投稿

一、引言

本篇將介紹優(yōu)化類建模的一般分析方法,以及優(yōu)化求解器Gurobi+Python(Gurobipy)的使用。以2019年華為杯F題第一問為例,通過代碼實踐來提高解決問題的能力。

二、優(yōu)化建模的關(guān)鍵

對于實際的問題,設(shè)立恰當(dāng)?shù)臎Q策變量,將問題條件轉(zhuǎn)化為可編程表達的數(shù)學(xué)語言,往往是解決問題的第一步。

而這其中的關(guān)鍵往往在于,我們所設(shè)定決策變量的各種取值應(yīng)該無重復(fù)的代表實際的所有情況。因此,要培養(yǎng)優(yōu)化建模能力,體會各種決策變量的類型以及其在計算機中的數(shù)據(jù)結(jié)構(gòu)與實際問題的對應(yīng)關(guān)系,是學(xué)習(xí)過程中當(dāng)著重思考的。

三、問題分析

對于以下“多約束條件下智能飛行器航跡快速規(guī)劃”問題:

第一張為題目背景介紹,以及飛行器基本的飛行過程,其中出現(xiàn)“水平”與“垂直”、“專用單位”等名詞。分析伊始,不需要太過于關(guān)注其中的過程細節(jié),而是要抓住能夠表達目標(biāo)函數(shù),反應(yīng)實際情況的決策變量。
第二張為題目約束的問題描述,通過這些可以幫助我們更好的建立恰當(dāng)?shù)臎Q策變量。
2019年華為杯F題問題一與問題二

閱讀題目即可知,飛行器從A點到B點飛行,過程中會有水平、垂直兩個指標(biāo)的偏差。因此需要在途中經(jīng)過兩種類型的校正點,而對于途中所經(jīng)過的點,飛行器的偏差同樣需要滿足特定要求(如圖1)。

題目提供了每個點的數(shù)據(jù)與坐標(biāo),可以繪制其分布,這有助于我們進一步化簡問題。
  • 如果不考慮題目中所出現(xiàn)的各種約束,我們的目的就僅僅是讓飛行器從A飛到B就好,圖中可以可以飛過任意的點。因此可以發(fā)現(xiàn),此處強調(diào)的是點與點之間的連接關(guān)系,每個點之間要么相連,要么斷開。相連則為1,斷開則為0,因此,為了覆蓋所有的情況,我們可以建立0-1矩陣(方陣,邊長為所有點的數(shù)量)來描述這種關(guān)系。

  • 然而,對于一個所有點的0-1矩陣,在不考慮題目約束情況下,其中矩陣“1”元素的分布也是有限制的,因為之少從A到B,是一條連貫的通路,如果還考慮“不能轉(zhuǎn)圈圈”,“不能重復(fù)經(jīng)過點”等,則“1”的分布更加受限制。

因此,我們通過0-1矩陣的二進制變量,作為我們的決策變量,其能夠無重復(fù)地反應(yīng)所有的連接可能,且能夠通過約束表達進一步限制。不過,這能否表達我們的目標(biāo)函數(shù)呢?

  • 由題目可知,目標(biāo)函數(shù)是距離最短,經(jīng)過的點最少。經(jīng)過點的數(shù)量從0-1矩陣就可以獲得,距離最短則牽扯到點-點距離,因此我們還需要構(gòu)建所有點之間的距離矩陣。

  • 最后觀察約束,約束中的共性是,偏移不超過某個值。而偏移是由每移動1m產(chǎn)生的偏差積累而來。這是,我們可以將“偏移不超過某個值”轉(zhuǎn)化為“移動距離不超過某個值”,從而減少參數(shù)的個數(shù)。具體約束的表達,后面將和代碼一并分析。

四、模型建立與Gurobipy

此處將著重分析校正點的約束分析,給出其數(shù)學(xué)表達方法,其余約束模型以代碼形式呈現(xiàn)。同時介紹Gurobipy的基本語法。


以上代碼中,讀取了數(shù)據(jù),建立了點-點距離矩陣,還對數(shù)據(jù)進行了刪減處理(預(yù)處理)。這是考慮到通過繪制題目所給數(shù)據(jù)點發(fā)現(xiàn),所有點幾乎均勻分布于一個較為廣大的空間中,且兩種校正點沒有特定的集中分布。因此,此處連接A、B兩點,以此為軸線,將15000距離以外的點都刪去,提高了程序的執(zhí)行效率。


Gurobipy基本語法,建立點×點范圍的0-1變量矩陣,結(jié)合距離矩陣一起表達約束和目標(biāo)函數(shù)。


以上為路徑形成約束,即在沒有校正點約束下,能夠生成從A到B路徑的約束。包括:從A出發(fā),不回到自己,單入單出,不重復(fù)經(jīng)過,路徑連續(xù)等約束。這些約束通過分析0-1矩陣本身的特性不難得出。

可以發(fā)現(xiàn),操作對象都是0-1決策變量。gp.quicksum()等都是Gurobipy的常見語法,需要結(jié)合Python生成器熟練運用。


以上是目標(biāo)函數(shù)的表達,以及軌跡的打印。接下來將詳細分析校正點的約束。


校正點約束即以下約束:

結(jié)合(1),(4,5,6,7)即為校正點約束

我們不妨列舉一些可能的情況,如下圖所示,從A出發(fā),到達點無非兩種,可以記為0和1,通過分析相同點(即下一個點仍然為同類型)以及相異點(下一個點為不同類型)之間的關(guān)系,便可以發(fā)現(xiàn)其中的數(shù)學(xué)規(guī)律。

列舉一般情況,發(fā)現(xiàn)普遍數(shù)學(xué)規(guī)律,是寫出約束式的思考方式之一

數(shù)學(xué)表達式從前述代碼容易看出。

最后經(jīng)過4.32s迭代得到結(jié)果:

數(shù)據(jù)集一:

經(jīng)過校正點為9,104065.88m

數(shù)據(jù)集二:

經(jīng)過校正點為8,104861.06m

依據(jù)上述分析可設(shè)計程序,檢驗輸入的路徑是否滿足約束要求:(以下可實現(xiàn)檢驗路徑,計算路徑長度,繪制坐標(biāo)點功能)

五、總結(jié)

初始而言,對于日常優(yōu)化建模的練習(xí),應(yīng)當(dāng)著重分析決策變量的設(shè)立技巧,反思并積累經(jīng)驗,并將數(shù)學(xué)公式轉(zhuǎn)化成可用求解器求解的形式;

本篇應(yīng)用Gurobipy解決了一道較易的0-1優(yōu)化問題,第二問可在此基礎(chǔ)上進一步分析,重點則在于第一問校正點約束構(gòu)建的思考方式。

六、參考文獻

[1] 2019 年第十六屆中國研究生數(shù)學(xué)建模競賽 F 題.多約束條件下智能飛行器航跡快速規(guī)劃.

Gurobi入門實踐(一)——以16屆華為杯F題為例的評論 (共 條)

分享到微博請遵守國家法律
阳曲县| 太仆寺旗| 斗六市| 青神县| 宁津县| 阳谷县| 甘洛县| 云阳县| 炉霍县| 雷波县| 高阳县| 瓮安县| 施甸县| 庄浪县| 平利县| 加查县| 邻水| 南召县| 青龙| 大关县| 永川市| 江陵县| 丰城市| 新津县| 荥阳市| 辽阳县| 资源县| 闽侯县| 双辽市| 阳东县| 德清县| 永顺县| 抚远县| 庆元县| 石门县| 大同县| 阿图什市| 临颍县| 洛宁县| 鸡西市| 宁国市|