天天看點

2021數學模組化C題題目:題目思路題解第三問第四問不足和缺陷模組化感想

PS:僅僅是我們小隊的思路和方案

題目:

某建築和裝飾闆材的生産企業所用原材料主要是木質纖維和其他植物素纖維材料, 總體可分為 A,B,C 三種類型。該企業每年按 48 周安排生産,需要提前制定 24 周的原 材料訂購和轉運計劃,即根據産能要求确定需要訂購的原材料供應商(稱為“供應商”)和相應每周的原材料訂購數量(稱為“訂貨量”),确定第三方物流公司(稱為“轉運 商”)并委托其将供應商每周的原材料供貨數量(稱為“供貨量”)轉運到企業倉庫。

該企業每周的産能為 2.82 萬立方米,每立方米産品需消耗 A 類原材料 0.6 立方米, 或 B 類原材料 0.66 立方米,或 C 類原材料 0.72 立方米。由于原材料的特殊性,供應商 不能保證嚴格按訂貨量供貨,實際供貨量可能多于或少于訂貨量。為了保證正常生産的 需要,該企業要盡可能保持不少于滿足兩周生産需求的原材料庫存量,為此該企業對供 應商實際提供的原材料總是全部收購。 在實際轉運過程中,原材料會有一定的損耗(損耗量占供貨量的百分比稱為“損耗率”),轉運商實際運送到企業倉庫的原材料數量稱為“接收量”。每家轉運商的運輸 能力為 6000 立方米/周。通常情況下,一家供應商每周供應的原材料盡量由一家轉運商 運輸。 原材料的采購成本直接影響到企業的生産效益,實際中 A 類和 B 類原材料的采購單 價分别比 C 類原材料高 20%和 10%。三類原材料運輸和儲存的機關費用相同。 附件 1 給出了該企業近 5 年 402 家原材料供應商的訂貨量和供貨量資料。附件 2 給 出了 8 家轉運商的運輸損耗率資料。請你們團隊結合實際情況,對相關資料進行深入分 析,研究下列問題:

1.根據附件 1,對 402 家供應商的供貨特征進行量化分析,建立反映保障企業生産 重要性的數學模型,在此基礎上确定 50 家最重要的供應商,并在論文中清單給出結果。

2.參考問題 1,該企業應至少選擇多少家供應商供應原材料才可能滿足生産的需求? 針對這些供應商,為該企業制定未來 24 周每周最經濟的原材料訂購方案,并據此制定 損耗最少的轉運方案。試對訂購方案和轉運方案的實施效果進行分析。

3.該企業為了壓縮生産成本,現計劃盡量多地采購 A 類和盡量少地采購 C 類原材 料,以減少轉運及倉儲的成本,同時希望轉運商的轉運損耗率盡量少。請制定新的訂購 方案及轉運方案,并分析方案的實施效果。

4.該企業通過技術改造已具備了提高産能的潛力。根據現有原材料的供應商和轉運 商的實際情況,确定該企業每周的産能可以提高多少,并給出未來 24 周的訂購和轉運方案。

附件一:企業對402家供應商過去240周的訂單量和供應商的供應量

附件二:8家轉運商過去240周的轉運損耗率

附件A:填寫未來24周的訂購方案(分三張表對應三道題)

附件B:未來24周的的轉運方案(分三張表對應三道題)

題目思路

先分析一下四道問題的的類型和解法

第一問就是一個很簡單的評價類模型,需要自己根據資料篩選出一些能夠衡量供應商對企業重要程度的名額,然後對各個供應商進行一個綜合的得分評價和排序,選出前五十家。

第二問分析題目應該可以得出是兩個規劃問題,具體的類型可能得根據自己實際建立的模型确定是多目标還是單目标規劃。先根據往年的資料設計未來24周的訂貨方案,再針對每一周的訂貨方案設計運輸方案。

第三問也是類似于第二問,多買A少買C,可以在第二問基礎上适當調整一下A、C的權重重新求解

第四問說具備提高産能的潛力。這個潛力具體指什麼我們小隊也讨論了很久,但是最後的結果還是很好的。我們統計了企業每隔半年的ABC三種原料的訂貨量,發現前面的四年半ABC整體的訂購都是比較穩定的,而且A和B綜合起來比C多很多,最後半年裡C的訂貨量突然上升很多(這個好像網上很少有人注意到)于是我們推測是企業對C原料的使用率提高了(這個也很符合提高産能潛力這個描述)

綜合來說,供應商是樹木的供應商,樹木的生長周期應該是相對而言比較穩定的,用EXCEL作折線圖也能發現供應量具有很明顯的周期性,是以供應商的供應能力相對而言比較穩定,而企業訂購多少A多少B多少C則應該是取決于企業本身的生産情況。

再有一點,運輸商的損耗率呈現一個很明顯的周期性變化,不能了解為該加運輸商損耗率低而盡可能挑選這家運輸商,還有可能是因為這家運輸商運送的貨物多了,是以損耗率才上升。損耗率的來源可能主要是木材在貨車商因為擠壓而損壞。

我們選擇盡可能讓周期性最明顯的供應商去運,而且注意到每個轉運商損耗率最高隻有5%,是以其實每家轉運商的運輸能力差不了多少,因為你也不知道過去240周裡每家轉運商分别運送了多少貨物,是以我們隊覺得從這些資訊裡分析轉運商的轉運能力是不現實的,而周期性最明顯的轉運商我們可以了解為企業過去選擇的最信任的轉運商,是以盡可能選損耗率到達5%最多的轉運商運送貨物。

除了這些點之外,做折線圖還能發現有些供應商是具有很明顯的周期性的,且一次性供貨量特别大,有一些供應商是持續供應的,供應幅度很小,還有一些平時幾乎為0,突然供應一次供應了二三十萬的,因為不知道未來24周不穩定供應商具體什麼時候才能供應貨物,是以原則上我覺得不能給這些供應商制定購買計劃。但是這些供應商在過去五年又确實供應了很多,是以第一問裡也可以認為它們是重要的供應商,也許隻是供應周期更久,但是過去五年這種供應商沒有供應兩次,是以不能由過去的資料推出明年她們是否能夠再次供應。

還有就是我們計算的過去五年的供應量其實是很難滿足企業的28200的産能的,這點在後面題解裡我會講我們是怎麼處理的。

和往年題目的對比(題外話)

我們原本打算也是做C題,比賽前還準備了很多機器學習的東西。感覺今年的題目原本會出一道大資料分析的題目(雖然還确實是)

沒有聚類沒有預測沒有分類 準備的全沒用上 第一天真的慌了一下

而且和往年的題目對比,今年題目真的特别坑爹(相信特别多人 被附件B這個複制粘貼3張表×24周×402家供應商×八個轉運商 給弄吐了)

今年題目主要就是 橫向的資料量特别大,像以前題目比較類似的17B拍照、20C企業信貸政策、18商品這些,都是縱向資料量大,橫向還好,今年真的有被坑到,附件還說0訂購量得空,不能寫0,我也不知咋的腦子一短路 CTRL+F把0全換成空了。。。還把excel關了,強行額外增加工作量

還好隊友非常”善解人意“讓我活着在這裡寫題解

題解

第一問

随便選取一些名額建立基于熵權法的TOPSIS模型就行了,舉一些如下的例子:

總供應量:能夠反映供應商的供應能力

總預定量:能夠反映企業對于該供應商的偏好程度

每家供應商年均或者半年均供應量的變異系數:反映供應商供應能力的穩定性

到貨率: 供 應 量 預 訂 量 \frac{供應量}{預訂量} 預訂量供應量​ 能夠反映供應商的信譽程度

…等等等等其它名額

但實際用TOPSIS分析之後最重要的名額其實是供應量,隻有供的多了企業才能生産的更多。

排個序選50家就行了。

TOPSIS熵權法不懂的可以去看清風的視訊

第二問

首先我們剔除掉不穩定供應商,即原則上不從不穩定供應商那裡預定原材料。

然後我們把供應商分為了三種類型:

大規模周期性供應商

小規模供應商

不穩定供應商

故名思意不加贅述。

其次前面說到供應量是很難滿足的,又要選選盡可能少的商家,是以我們引入了一個産能占比,前面的28200是企業的最高理論産能而不是維系正常生産的産能,我們的目标是選擇盡可能少的商家達到盡可能高的産能占比。可以做一個多目标規劃,但是權重不好确定。我們最後的思路是:對産能占比 α \alpha α和達到産能占比所需選擇的最少商家做一個靈敏度分析(對定步長的每一個 α \alpha α做一個0-1規劃,做出每個 α \alpha α所需選擇的最少商家,畫一個散點圖),最後我們挑選了0.8左右的産能占比和30家供應商)

效果分析就是:選擇了7%的商家達到了80%的産能占比(聽着還不錯對吧)

大概結果如下:

2021數學模組化C題題目:題目思路題解第三問第四問不足和缺陷模組化感想

然後對于轉運方案,我們也把後面四家比較具有規律性的供應商的損耗率每隔6個月取一個平均,然後得到的結論很有意思:

把損耗率往後平移兩個周期以後和供應量放一起做一個折線圖,大概長下面這樣:

2021數學模組化C題題目:題目思路題解第三問第四問不足和缺陷模組化感想

除了兩個地方突然相反意外,其他吻合的異常的好,至于為什麼損耗率需要向後平移:

聯系實際,供應量是不是在供應商發出去貨物的時候就能夠統計,而損耗率是不是要企業收到貨物以後實際計算收貨量以後才能統計損耗率?那這兩個資料必然會有一個時間差,這一點真的特别少有人能發現。

至于中間兩個異常值,對比原來八家轉運商的損耗率變化圖,其實是這段時間由1234家供應商來運輸了,1234轉運商損耗率突然上升,是以5678家轉運商損耗率突然下降。

然後把這幾個周期的資料剃掉,重新做個圖

2021數學模組化C題題目:題目思路題解第三問第四問不足和缺陷模組化感想

吻合得異常得好!!!

這點超級超級感謝我們親愛得隊友的堪稱神迹的發現,然後皮爾遜相關分析這兩組散點(原本想灰色關聯,但實際上跟時間沒有關系,僅僅是因為運輸量高了是以損耗率才搞了)于是在0.05的顯著性水準下自然而然的具有正相關性。

然後就自然而然的得出這樣的結論:

在已有的資料下無法推出8家轉運商的轉運能力的強弱。(因為不知道損耗率高是因為運送的貨物多還是轉運商本身問題,但是每家轉運商最多5%的損耗率,說明大家都存在某種手段講損耗率控制在一個範圍以内)于是企業應該保持原有的政策,讓轉運損耗率周期性強的去運送。

這邊放兩張圖,

2021數學模組化C題題目:題目思路題解第三問第四問不足和缺陷模組化感想
2021數學模組化C題題目:題目思路題解第三問第四問不足和缺陷模組化感想

能看的出來轉運商的損耗率和某家的供應量特别相關吧。

然後設計運送方案我們就沒有采取很進階的算法(嘗試過,但是結果并不好,往往是一家供應商被分成了很多家轉運商運輸,和題目要求不符)僅僅采用了一個貪心算法,由一家轉運商來運,運不下了優先考慮讓下一家運。運送量大于6000的也是這個思路。因為盡可能要讓一家供應商由一家轉運商來送。

于是我們的轉運方案就設計的很簡單

2021數學模組化C題題目:題目思路題解第三問第四問不足和缺陷模組化感想

大于6000的流程圖很類似,就不放了。

采購政策也很簡單,因為木材供應商相對穩定,是以采取這樣的訂購政策:把240周分成10個24周,求這10個24周裡面所有第一周的平均值作為未來24周第一周的與定量。(下文稱之為季節因子,可能聽着沒有各種進階的時間序列分析模型的那麼進階,但是模組化本身就是追求複雜問題簡單化,把要求抽象出來就可以了,畢竟也不是一道預測題,本質上還是規劃,雖然像什麼ARIMA指數平滑模型當然還是能用的,但我感覺這裡沒必要)

第三問

多選A少選C,為了簡化問題我們簡化成了:

多選供應A的商家,少選供應C的商家。同時盡可能減少成本。

繼續從第一問中的45家選(剔除了5家不穩定供應商)

我們引入了一個最小購買量的門檻值,小于這個門檻值的季節因子的商家在這周就不訂購。你想,你訂購了1立方米的木材還要找專車給你配送,是不是就要額外支付轉運成本?是以我們這邊有兩個參數,一個是産能占比 α \alpha α,一個是最少所需購買的量 X X X,低于這個量就不買了。我們第二問的目标函數是A商家的數量和C商家的數量的比值,重新設定第一問裡線性規劃矩陣裡A和C的系數,然後對 α \alpha α和 X X X進行一個網格搜尋,記錄 A C \frac{A}{C} CA​最大的 α \alpha α和 X X X。

最後的結論是:

取 X = 40 , α = 0.83 X=40,\alpha=0.83 X=40,α=0.83的時候A\C最大,分别是16家和13家,原本第二問A和C是9家和15家來着?(好像,不記得了,反正結論看着是很河狸)

總共選了40家,産能占比到了0.83,同時預計低于40供應量的供應商不購買(雖然和題目說的盡可能全部購買有點違背,但誰會送0.3立方米的貨物呢)

第四問

第四問特别特别感謝我的隊友們,又發現了一個及其微小不容易察覺的點。題目說企業具備了提高産能的潛力,這個描述就很模糊,提高産能?怎麼樣提高産能?平白無故從28200漲到30000?這不河狸啊!

聯系實際,建材企業具有這種潛力,最可能的是啥?

原料使用率提高了!原材料使用率提高了不就合理了?C原本要0.72立方米才能生産出1立方米産品,會不會現在隻需要更少的原料就能生成1立方米産品呢?

大喊一聲FJLnb666,然後畫一張圖:

2021數學模組化C題題目:題目思路題解第三問第四問不足和缺陷模組化感想

每半年的訂購量的折線圖,注意是訂購量,之前我們除了第一問,很少再用到訂購量這張表,訂購量能說明什麼?企業本身的生産情況!最後半年C的訂購量突然上升,而AB突然減少,能說明什麼?我們推斷是由于企業對于C原料的使用率突然上升了,通過技術改造,如今C的不在需要0.72,可能隻需要0.5就能夠生産1立方米的産品。于是企業訂購了更多的C,而實際上木材供應商供應量是相對穩定的,突然訂購C上漲就是因為企業選擇了更多C類商家。

于是我們把第四問轉化成了這樣一個問題:C類産品使用率需要提高多少,才能夠選擇盡可能少的商家并且使得 α = 1 \alpha=1 α=1,即達到原始設定的産能。然後對使用率提高率 β \beta β和所需選擇最少的商家數做一個靈敏度分析結果如下圖:

2021數學模組化C題題目:題目思路題解第三問第四問不足和缺陷模組化感想

大概1.18一下無解,就是說使用率提高1.18怎麼樣都無法選擇出商家到達28200,我們最後挑選了1.25和30這個點,因為和第二問30家資料對上,結論就是如果C的使用率在原先基礎上提高到125%,就是隻要0.576立方米的C就能生産出1立方米的産品,并且隻需要選擇30個商家就能到達28200的産能,這樣做是不是就很河狸了!

不足和缺陷

結論看上去特别棒,但是綜合分析下來還是有一定缺陷的,我們沒有考慮兩周儲備這個條件,因為當時發現根本不夠用,送多少産多少,哪來的兩周儲備

其次就是運輸成本和損失沒有具體分析,隻能從我們合理的假設上把問題簡化了,比如對于轉運方案的設計,整個三問都是基于貪心(其實 也可以試試0-1規劃,但是考慮到有6000以上的供應商還是沒有這麼做,太複雜了)

還有就是實際産能并沒有考慮到損耗率,實際上也很難算,因為不知道誰送誰的,損耗率和運輸量的關系很難确定。

然後對于題目這個原材料價格這個資訊的利用,我們也隻是很簡單的用1.1、1.2、0.6、0.66、0.72這幾個資料改變了一下A、B、C在矩陣方程組裡的系數。

這些資訊也在附件的資料裡很難展現,我看别人有假設初始存貨量和提前購買以儲備兩周的,這點我們真的一點都沒考慮到,供不應求了哪還來的儲備

但是整體上這個思路的設計和合理性我都覺得很棒,至于算法那些啟發式算法對初值敏感的特性直接就讓我放棄了這個想法。

模組化感想

和兩個小夥伴第一次組隊第一次參加國賽,寫出這樣的思路和論文,真的超級超級滿意了!而且收獲真的特别特别大。

容許我再做一次可恥的CV工程師

三天時間 三個人 三台電腦 一個奇迹

一個從未接觸模組化的人也和大佬體驗了一把三個人的心有靈犀 齊頭并進

有遺憾 但是三天時間 我們盡力了 不後悔

二十分鐘速成matlab python excel

問題 假設 分析 模組化 修正 求解 驗證 畫圖 制表 程式設計 優化

将實際世界問題變成一個個抽象的模型 一串串優美的數字 一條條靓麗的折線 我們做到了 至少我們在這三天都超越了自己

比賽前 我們從來沒有合作過一起模組化

但三天裡我們無比默契 我也找到了那個我一說就懂 一點就通的人 我的所有邏輯他都可以實作 變成一段段代碼求出最優解

他的所有想法我都能迅速了解并幫他修改很多問題和提出新的見解

我也遇見了寫工科論文純手寫不複制粘貼就能直接寫出将近2w字的人 排版 畫圖 描述 都恰到好處 組織語言無比流暢

他們倆個一個敲字一個敲代碼 而我好像就像一個黏合劑 修正劑 能流暢的進行小組内的溝通交流 提出很多新的點 什麼任務都幹點 讓我們的組合更有力量 當然 還有訂房間和點外賣

和強者一起比賽 連熬22小時都感覺不到一絲困意 即便淩晨六點也會因為一點新的發現而激動的無與倫比 往往是頭先疼了才發現身體好像該休息了

不管結果如何 大家都太棒了

我們雖然最後有一些失誤 但這些都不影響我們在這個過程中一邊辛苦一邊快樂 資料吻合預測的歡欣雀躍 和我們一起看日出的情誼

當然 這麼累也還是要飯後拿隊友安卓機玩一會紀念碑谷的

天天睡很少還連着幾天異常興奮從來沒有過 不斷靠近真相 即便最終是錯誤終點 都太快樂了 從來沒有熬的這麼開心過 也許身體是累的 但是精神上的充足真的快要溢出來了 太美妙了

很久沒有這麼長的小作文了

但是真的是因為太感謝了 感謝我的隊友們

感謝努力的自己 感謝互相了解互相付出一起為了一個目标為了一組完美的資料而不懈努力的我們

第一次配合寫論文就可以達成這樣的結果我是真的從來沒想到過的,也從來沒有熬夜熬的那麼開心過。

很慶幸遇到了一個

沒接觸過MATLAB,第一天隻能在旁邊看我寫代碼,第二天能夠幫我找bug,第三天能夠放着心讓她去幫我寫代碼、

能夠從我晦澀的想法中一下子GET到我的點并且提出更多超級好建議并馬上轉述成簡潔易懂的語言給負責論文寫作的隊友、

能看一眼就能夠立馬記住S108 S139 S140 S307和S395這幾個商家并且從四五十個亂七八糟的EXCEL中找到我們要的資訊、

雖然偶爾意見不合但是争論着争論着突然一下子所有想法冒到一塊去、并且能夠為了一個偶然的發現和我一樣興奮的通宵且毫無困意、

能夠在我把所有零全部删除的時候勇于獻身站出來主動當兩小時進階CV工程師,還讓我活着寫到現在的人;

很慶幸遇到了一個

寫工科論文純手寫不複制粘貼就能直接寫出将近2w字的人 排版 畫圖 描述 都恰到好處 組織語言無比流暢(絕不是複制粘貼)、

雖然是文科專業但仍然能夠很快了解晦澀複雜的邏輯思維和令人脫發的矩陣方程

即便通宵很困,睡了一個小時就艱難的爬起來繼續碼論文、

做着最枯燥犯困的工作仍然三天隻睡了不到12個小時的人。

大家真的都超級棒!

畢竟 直男碼長文 眼淚流兩盆

美賽沖TMD!

繼續閱讀