數學建模競賽培訓_第1頁
數學建模競賽培訓_第2頁
數學建模競賽培訓_第3頁
數學建模競賽培訓_第4頁
數學建模競賽培訓_第5頁
已閱讀5頁,還剩126頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數學建模競賽培訓第一部分數學建模概況

唐代大詩人王之渙有一首著名詩篇:白日依山盡

黃河入海流

欲窮千里目

更上一層樓

按詩人的想象,要看到千里之外的景物,要站在多高的“一層樓”上呢?

以地球中心為原點,向上方向為縱軸建立直角坐標系.從地球表面算起,設應站高度為x,那么根據題設,該點到地球表面的切線長應為500km.

則依據題意,并利用勾股定理有解得解決問題的思路、方法、步驟:做出了合理的簡化:1.人眼能看很遠;2.樓房可以修的很高;3.地球近似為球體。進行了抽象:用數學符號表示相關變量應用數學物理知識、方法建立了方程(模型):利用數學工具求解(方程)回答現實世界數學世界數學模型(MathematicalModel)一般地說,數學模型可以描述為,對于現實世界的一個特定對象,為了一個特定目的,根據特有的內在規律,做出一些必要的簡化假設,運用一些適當的數學工具,得到的一個數學結構。

數學建模(MathematicalModeling)

應用知識從實際問題中抽象、提煉出數學模型的過程。1.

數學模型與數學建模強調運用數學的思維方法、數學的語言去近似地刻畫實際問題,并加以解決。樹上有十只鳥,開槍打死一只,還剩幾只,這樣的問題就是一道數學應用題。正確答案應該是9只,是吧?這樣的題照樣是數學建模題,不過答案就不重要了,重要的是過程。真正的數學建模高手應該這樣回答這道題。體現數學思維的案例:“樹上有十只鳥,開槍打死一只,還剩幾只?”“是無聲手槍或別的無聲的槍嗎?”“不是。”“槍聲有多大?”“80-100分貝。”“那就是說會震的耳朵疼?”“是。”“在這個城市里打鳥犯不犯法?”“不犯。”“您確定那只鳥真的被打死啦?”“確定。”“OK,樹上的鳥里有沒有聾子?”“沒有。”“有沒有關在籠子里的?”“沒有。”“邊上還有沒有其他的樹,樹上還有沒有其他鳥?”“沒有。”“有沒有殘疾的或餓的飛不動的鳥?”“沒有。”“打鳥的人眼有沒有花?保證是十只?”“沒有花,就十只。”“有沒有傻的不怕死的?”“都怕死。”“會不會一槍打死兩只?”“不會。”“所有的鳥都可以自由活動嗎?”“完全可以。”“如果您的回答沒有騙人,打死的鳥要是掛在樹上沒掉下來,那么就剩一只,如果掉下來,就一只不剩。”不是開玩笑,這就是數學建模。從不同的角度思考一個問題,想盡所有的可能,正所謂智者千慮,絕無一失!

建立數學模型的方法和步驟并沒有一定的模式,但一個理想的模型應能反映系統的全部重要特征:

可靠性和使用性

建模的一般方法:◆機理分析◆測試分析方法

機理分析:根據對現實對象特性的認識,分析其因果關系,找出反映內部機理的規律,所建立的模型常有明確的物理或現實意義。

2.

數學建模的一般方法和步驟

測試分析方法:

將研究對象視為一個“黑箱”系統,內部機理無法直接尋求,通過測量系統的輸入輸出數據,并以此為基礎運用統計分析方法,按照事先確定的準則在某一類模型中選出一個數據擬合得最好的模型。測試分析方法也叫做系統辯識。將這兩種方法結合起來使用,即用機理分析方法建立模型的結構,用系統測試方法來確定模型的參數,也是常用的建模方法。

在實際過程中用那一種方法建模主要是根據我們對研究對象的了解程度和建模目的來決定。機理分析法建模的具體步驟大致可見右圖。符合實際不符合實際交付使用,從而可產生經濟、社會效益實際問題抽象、簡化、假設確定變量、參數建立數學模型并用數學方法、計算機求解用實際問題的實測數據等來檢驗該數學模型建模過程示意圖2.

數學建模步驟3.

數學模型及其分類模型

數學模型是模型的一種形式,屬理想模型(又稱為抽象模型),是將現實事物設定在一種理想狀態,依據對事物所關心的目標,找出相關的主要因素,分析其內在聯系,將目標及全部相關因素符號化、數量化;用數學的方法把這種關系表述出來(圖形、圖像、數表、解析式),這種數學表述形式就是數學模型。數學模型的分類:

◆按研究方法和對象的數學特征分:初等模型、幾何模型、優化模型、微分方程模型、圖論模型、邏輯模型、概率模型、穩定性模型、擴散模型等。◆按研究對象的實際領域(或所屬學科)分:人口模型、交通模型、環境模型、生態模型、生理模型、城鎮規劃模型、水資源模型、污染模型、經濟模型、社會模型等。3.

數學模型及其分類

競賽的規模越來越大數量逐年增大覆蓋面越來越大競賽的水平不斷地提高賽題水平的提高學生參賽水平的提高

越來越受到各個高校和學生的重視

一次參賽,終身受益衡量一個大學培養質量的重要指標

賽題越來越復雜(綜合性、實用性、即時性)海量數據處理全國高校規模最大的學生課外科技活動!4.

CUMCM概況與趨勢歷年全國數學建模賽題及常用方法剖析賽題

解法93A非線性交調的頻率設計擬合、規劃93B足球隊排名

矩陣論、圖論、層次分析、整數規劃94A逢山開路

圖論、插值、動態規劃94B鎖具裝箱問題

圖論、組合數學95A飛行管理問題非線性規劃、線性規劃95B天車與冶煉爐的作業調度非線性規劃、動態規劃、層次分析法、PETRI方法、圖論方法、排隊論方法

96A最優捕魚策略

微分方程、優化96B節水洗衣機非線性規劃97A零件的參數設計田口方法、非線性規劃97B截斷切割的最優排列動態規劃、圖論模型、隨機模擬98A一類投資組合問題多目標優化、非線性規劃、模糊線性規劃

98B災情巡視的最佳路線圖論、組合優化、線性規劃99A自動化車床管理

隨機優化、計算機模擬99B鉆井布局0-1規劃、圖論、非線性規劃

00ADNA序列分類

模式識別、歐氏距離、馬氏距離分類法、Fischer判別模型、神經網絡方法00B鋼管訂購和運輸

組合優化、運輸問題01A血管三維重建曲線擬合、曲面重建01B工交車調度問題多目標規劃02A車燈線光源的優化

非線性規劃02B彩票問題單目標決策03ASARS的傳播

微分方程、差分方程03B露天礦生產的車輛安排整數規劃、運輸問題04A奧運會臨時超市網點設計統計分析、數據處理、優化04B電力市場的輸電阻塞管理數據擬合、優化05A長江水質整體評價模糊數學、神經網絡方法,曲線擬合05BDVD在線租賃整數規劃06A出版社資源優化配置統計分析(海量數據統計、篩選)、數據處理、優化06B艾滋病治療效果評價與預測聚類分析,模糊數學評價,數據處理(1).從問題的實際意義分析

從問題的實際意義方面分析,大體上可以分為工業、農業、工程設計、交通運輸、經濟管理、生物醫學和社會事業等七個大類。

工業類:電子通信、機械加工與制造、機械設計與控制等行業,共有8個題,約占31%。農業類:1個題,占4%。工程設計類:

3個題,占11%。交通運輸類:3個題,占11%經濟管理類:3個題,占11%生物醫學類:4個題,占15%社會事業類:4個題,占15%(2).從所用方法上分析最優化方法:一般函數優化—用微積分的方法解決;規劃問題—線性規劃,非線性規劃,多目標規劃,動態規劃,整數規劃,組合優化(離散優化))等(使用軟件求解);數據處理方法:曲線擬合,數據回歸分析,插值,基于數據庫(Acess,Excel)的海量數據的篩選等;概率統計方法:期望分析,排隊論,回歸分析,模式識別,判別分析;圖論方法:最短路問題,最大流問題,最小生成樹;微分方程方法:穩定性分析,預測;模糊數學:模糊聚類分析,模糊層次分析,模糊規劃計算機技術:圖像處理,隨機模擬,各種算法實現,神經網絡方法。離散方法:層次分析法,決策分析,對策論;

從各年賽題所用方法看,以下幾種方法出現頻率最高:最優化方法約占總數的80%大部分題目都可以用兩種以上的方法來解決。數據處理方法概率統計方法約占總數的50%(3).從問題的題型上分析1)“即時性”較強的問題約占35%:1993B:足球隊排名問題;1998B:災情巡視路線問題;2000A:DNA序列分類問題;2000B:鋼管訂購與運輸問題;2001B:公交車的調度問題;2002B:彩票中的數學問題;2003A:SARS的傳播問題;2004A:奧運會臨時超市網點設計問題2004B:電力市場的輸電阻塞管理問題2005A:長江水質評價2)理論性較強的問題約占46%:94A,94B,95A,96A,97A,98B,99A,00B,01A,02A,03A,04B;3)實用性較強的問題約占46%:93A,94B,95B,96B,98B,99B,00B,01A,01B,02B,03A,04B;06A,06B4)算法要求強的約占19%:95A,97B,99B,00A,00B;5)數據量較大的問題約占31%:00A,00B,01A,01B,02B,03A,04A,04B,05B,06A,06B.

從近幾年的競賽題目來看,題目的水平在不斷提高、難度在增加、實用性在增強;特別是綜合性和開放性也在增強,這是一大潮流,從發展趨勢上來看,有逐步走向國際化的趨勢,同國際接軌是必然的;隨著計算機技術和工具軟件(Matlab,SAS,Lingo等)功能的增強,數據信息量(海量)也在逐步地增大,這也是現代應用的特點之一。第二部分專題+案例專題1:優化模型與優化工具無約束優化問題線性規劃問題整數規劃問題非線性規劃問題

Lingo9Matlab6.5一、優化模型的一般形式

實際問題中的優化模型x~決策變量f(x)~目標函數gi(x)0~約束條件多元函數條件極值決策變量個數n和約束條件個數m較大最優解在可行域的邊界上取得數學規劃線性規劃非線性規劃整數規劃重點在模型的建立和結果的分析有約束問題和無約束問題。靜態問題和動態問題。線性規劃,非線性規劃,二次規劃,多目標規劃等。二、優化模型的分類

線性規劃(LP)特點:

目標函數和所有的約束條件都是決策變量的線性函數。5.根據變量具有確定值還是隨機值

確定規劃和隨機規劃。4.根據決策變量的允許值整數規劃(0-1規劃)和實數規劃。1.確定決策變量和目標變量;2.確定目標函數的表達式;3.尋找約束條件。三、建立優化模型的一般步驟四、若干優化模型案例

其中(3)、(4)、(5)的等式右邊可選用(1)或(2)的等式右邊。函數fminbnd的算法基于黃金分割法和二次插值法,它要求目標函數必須是連續函數,并可能只給出局部最優解。常用格式如下:(1)x=fminbnd(fun,x1,x2)(2)x=fminbnd(fun,x1,x2,options)(3)[x,fval]=fminbnd(...)(4)[x,fval,exitflag]=fminbnd(...)(5)[x,fval,exitflag,output]=fminbnd(...)1無約束優化問題及Matlab求解描述退出條件:exitflag>0,表目標函數收斂于解x處exitflag=0,表已達到函數評價或迭代的最大次數exitflag<0,表目標函數不收斂

包含優化結果信息的輸出結構.Iterations:迭代次數Algorithm:所采用的算法FuncCount:函數評價次數

由優化函數求得的值.若exitflag>0,則x為解;否則,x不是最終解,它只是迭代制止時優化過程的值。優化函數的輸出變量的含義:xexitflagoptions案例1對邊長為3米的正方形鐵板,在四個角剪去相等的正方形以制成方形無蓋水槽,問如何剪法使水槽的容積最大?解:先編寫M文件box.m如下:

functionf=box(x)f=-(3-2*x).^2*x;主程序為box_main.m:

[x,fval]=fminbnd(‘box',0,1.5);xmax=xfmax=-fval運算結果為:xmax=0.5000,fmax=2.0000.即剪掉的正方形的邊長為0.5米時水槽的容積最大,最大容積為2立方米。案例2

有甲、乙兩個工廠,甲廠位于一直線河岸的岸邊A處,乙廠在河的另一側的B處,B處距甲所在河岸的垂直距離為35公里,乙廠到河岸的垂足D與A相距50公里,兩廠要在此岸邊合建一個供水站C,從供水站到甲廠和乙廠的水管費用分別為30元和50元每公里,問供水站C建在何處才能使水管費用最省?xDCBA先建立該問題的數學模型。據題意和平面幾何知識知,只有點C在線段AD上某一適當位置,才能能使費用最省。設C點距D點x公里,如右圖所示,則BD=35,AC=50-x,于是

又設總的水管費用為f元,由題意得管道總費用模型如下:解答:xDCBA求該函數的最小值。

先定義目標函數plant.m:functionf=plant(x)f=30*(50-x)+50*sqrt(x^2+35^2);主程序為plant_main.m:fplot('plant',[0,50])[x,fval]=fminbnd('plant',0,50)輸出圖形見右圖,最優解和最優值為:fval=2900注:fplot表示繪制字符串fun指定的函數在[xmin,xmax]的圖形.2線性規劃模型

線性規劃(LP)研究的實際問題多種多樣的,它在工農業生產、經濟管理、優化設計與控制等領域都有廣泛應用。如資源分配問題、生產計劃問題、物資運輸問題、合理下料問題、庫存問題、勞動力安排問題、最優設計問題等等。線性規劃模型的求解方法目前仍以單純形法為主要方法,該方法于1947年由美國數學家丹茨格(G.B.Dantzig)提出,經過60多年的發展完善,已經形成比較成熟的算法,同時配合計算機技術的廣泛應用使得該方法得到空前的普及應用。目前,大多數數學軟件都可以求解一般線性規劃模型,這一節主要采用Matlab和Lindo軟件。

每種蔬菜含有的營養素成份是不同的,從醫學上知道每人每周對每種營養成分的最低需求量以及各種蔬菜所含各種營養成分的數據。某醫院營養室在制定下一周菜單時,需要確定表1中所列8種蔬菜的供應量,以便使費用最小而又能滿足營養素等其它方面的要求。規定小白菜、豆芽的供應一周內不多于20千克,胡蘿卜供應一周內不低于10千克,不高于35千克,其它蔬菜的供應在一周內不多于30千克,每周共需供應150千克蔬菜,為了使費用最小又滿足營養成分等其它方面的要求,問在下一周內應當如何合理的安排食譜?案例3食譜問題表1各種蔬菜的營養成分表成份蔬菜熱量(卡)水分(克)維生素A(IU)維生素C(毫克)鉀(毫克)纖維(克)市場單價(元/千克)小白菜1395.778140.02401.82菠菜2293.021069.04602.44胡蘿卜3889.751004.02902.65小黃瓜1795.2934.0900.93豆芽3390.60183.61901.76玉米11174.286.02404.67香菇4088.500.22803.912蕃茄2692.927821.02101.26人體最低需求量/周12000(卡)17500(克)24500(IU)420(毫克)2100(毫克)175(克)備注:此表為100克蔬菜所含的營養成分,IU表示國際單位

。決策變量:設xi(i=1,…,8)分別表示在下一周內應當供應的小白菜、菠菜、胡蘿卜、小黃瓜、豆芽、玉米、香菇及蕃茄的量(千克)。費用的目標函數為:根據人體每周對各種營養成分的需求量,可以得到如下需求約束:模型建立需要注意的是,表中數據是每100克食物中所含營養成分的的量,而變量是以千克為單位,所以數據要作適當的轉化處理,這里很明顯就是各式兩邊除以10即可。另外對食物需求的上限和下限有如下約束:食物總供應量限制:小白菜、豆芽的供應一周內不多于20千克,胡蘿卜不低于10千克,不高于35千克,其它蔬菜的不多于30千克,每周共需供應150千克蔬菜模型建立食譜搭配問題的線性規劃模型模型建立min2x1+4x2+5x3+3x4+6x5+7x6+12x7+6x8st13x1+22x2+38x3+17x4+33x5+111x6+40x7+26x8>120095.7x1+93x2+89.7x3+95.2x4+90.6x5+74.2x6+88.5x7+92.9x8>1750781x1+2106x2+5100x3+93x4+8x6+278x8>245040x1+9x2+4x3+4x4+183.6x5+6x6+0.2x7+21x8>42240x1+460x2+290x3+90x4+190x5+240x6+280x7+210x8>210x1+x2+x3+x4+x5+x6+x7+x8=150x1<20x5<20x3>10x3<35x2<30x4<30x6<30x7<30x8<30end模型求解

LPOPTIMUMFOUNDATSTEP22OBJECTIVEFUNCTIONVALUEVARIABLEVALUEREDUCEDCOST運行后得到如下結果:可見最佳的食物搭配方案為一周安排20千克小白菜,30千克菠菜,35千克胡蘿卜,30千克小黃瓜,5千克豆芽和30千克蕃茄,方案最小費用為635元。小白菜菠菜胡蘿卜小黃瓜豆芽玉米香菇蕃茄結果分析ROWSLACKORSURPLUSDUALRICESNO.ITERATIONS=22結果分析x1<20x5<20x3>10x3<35x2<30x4<30x6<30x7<30x8<30小白菜豆芽胡蘿卜胡蘿卜小黃瓜菠菜玉米香菇蕃茄可見最佳的食物搭配方案為一周安排20千克小白菜,30千克菠菜,35千克胡蘿卜,30千克小黃瓜,5千克豆芽和30千克蕃茄,方案最小費用為635元。minz=cX

1、模型:命令:x=linprog(c,A,b)

2、模型:minz=cX

命令:x=linprog(c,A,b,Aeq,beq)注意:若沒有不等式:存在,則令A=[],b=[].MATLAB優化工具箱解數學規劃(一)線性規劃3、模型:minz=cX

VLB≤X≤VUB命令:[1]x=linprog(c,A,b,Aeq,beq,VLB,VUB)

[2]x=linprog(c,A,b,Aeq,beq,VLB,VUB,X0)

注意:[1]若沒有等式約束:,則令Aeq=[],beq=[].[2]其中X0表示初始點4、命令:[x,fval]=linprog(…)返回最優解x及x處的目標函數值fval。clearf=[245367126];A=-[13223817331114026;95.79389.795.290.674.288.592.9;7812106510093080278;40944183.660.221;24046029090190240280210;1.82.42.60.91.74.63.91.2];b=-[1200175024504221017.5]';aeq=[11111111];beq=[150];vlb=[001000000]';vub=[2030353020303030]';[x,fval,exitflag,output]=linprog(f,A,b,aeq,beq,vlb,vub)Matlab求解Optimizationterminatedsuccessfully.x=fval=exitflag=1output=iterations:19cgiterations:0algorithm:'lipsol'X120.000000X230.000000X335.000000X430.000000X55.000000X60.000000X70.000000X830.000000Lindo6.1求解結果豆芽番茄對比用Matlab和Lindo求解的結果發現兩個最優解不一樣,主要是豆芽和蕃茄的量不一樣,但最優值是一致的。導致這種結果的原因是不同軟件使用算法的細節上有差異(初值,基變量選擇),這從兩個軟件求解過程迭代的次數不同可見,同時由于線性規劃問題可能存在多個最優解,而一般情況下軟件只能給出一個解,這就使得不同軟件求出的最優解可能具有算法上或精度上的差異。兩種軟件對比兩種軟件求解線性規劃問題在格式上也有很大差別,Lindo語句在形式上和模型具有較大的相似性,使得輸入比較直觀,但如果約束條件多,變量多,可能程序會很羅嗦冗長,而Matlab所有數據需用矩陣形式輸入,形式比較簡單緊湊,也易于修改,但開始需要對模型進行變形整理,化成標準形式。靈敏度分析、整數規劃求解等等。3整數規劃模型實際問題中經常遇到貨物是不可分割的,如人,動物,整體裝配的設備等,這時候除了題目本身的約束外,還要加上決策變量的整數約束,這就是這節要介紹的整數規劃問題(IntegerPrograming)。整數規劃又可分為線性整數規劃和非線性整數規劃,這一節只介紹整線性規劃。整數線性規劃中如果所有決策變量都是整數,則稱為純整數規劃;若只有部分變量為整數,則稱為混合整數規劃;若決策變量只能取0或1,則稱為0-1規劃。求解整數規劃的算法主要是分枝定界法和割平面法,這兩種方法都是以求解線性規劃的方法為基礎。而0-1規劃的求解使用隱枚舉法,它不需要用單純形法先求解線性規劃,而是依次檢查變量等于0或1的某種組合,以便使目前最好的可行解不斷加以改進,最終獲得最優解。

整數規劃的求解主要使用Lindo和Lingo軟件。案例4鐵路平板車裝貨問題有七種規格的包裝箱要裝到兩輛鐵路平板車上去。包裝箱的寬和高是一樣的,但厚度(t,以厘米計)及重量(w,以公斤計)是不同的。下表給出了每種包裝箱的厚度、重量以及數量。下圖中每輛平板車有10.2米長的地方可用來裝包裝箱(象面包片那樣),載重為40噸。由于當地貨運的限制,對C5,C6,C7類的包裝箱的總數有一定的限制:這類箱子所占的空間(厚度)不能超過302.7厘米。試把包裝箱裝到平板車上去使得浪費的空間最小。問題描述C1C2C3C4C5C6C7t厘米48.752.061.372.048.752.064.0W公斤200030001000500400020001000件數8796648七種規格的包裝箱參數所有包裝箱的總重量為89噸,大于兩輛平板車的總載重量80,所以只能選擇性的裝載貨物.

浪費空間是指平板車可裝車長度與每輛車所有包裝箱厚度總和的差值,可以等效的把浪費空間最小轉化成兩輛車裝車總量最大.包裝箱的重量和厚度受到平板車裝載條件的限制以及貨物總量的限制.

問題分析貨物是不可拆分的,所以這是一個典型的整數線性規劃問題.兩輛平板車之間存在相互的制約關系,在考慮一輛平板車時,必須同時考慮第二輛平板車.問題分析對題目中“由于當地貨運的限制,對C5,C6,C7類的包裝箱的總數有一定的限制:這類箱子所占的空間(厚度)不能超過厘米。”可以理解成每輛車這三類貨物的裝車總數不超過厘米,也可以是兩輛車裝載三類貨物的總量不超過厘米.

模型假設1.各個貨物之間排列時靠在一起,包裝箱之間的空隙不計;2.裝載的過程中不考慮貨物在車上的排列次序及各個貨物的重量分布,排除因局部過重而造成平板車失衡的情況;3.鐵路平板車只能放置一列包裝箱;4.兩輛平板車裝載C5,C6,C7三類包裝箱的總厚度不超過302.7厘米。

模型建立決策變量設xij表示第i輛平板車裝載Cj包裝箱的件數,i=1,2;j=1,2,…,7.

分別表示包裝箱的厚度、單個重量和可供裝車的件數.參數變量裝車總厚度記為T,則目標函數可表示為:

目標函數約束條件各種包裝箱可供裝車數量的限制:平板車載重限制:厚度限制:模型建立約束條件兩輛車對包裝箱C5,C6,C7的特殊限制:所有決策變量都是整數變量:

模型求解該整數規劃模型可以利用Lindo和Lingo求解。求解之前注意到20.4-3.027=17.373m,而前4類貨物的總長度恰為17.373m。因此在滿足約束條件的情況下,應盡量將C1~C4四類箱子裝完,以保證兩輛車浪費的空間最小。所以在求解時將前四類箱子的數量約束改成等式。stx11+x21=8x12+x22=7x13+x23=9x14+x24=6x15+x25<6x16+x26<4x17+x27<82x11+3x12+x13+0.5x14+4x15+2x16+x17<402x21+3x22+x23+0.5x24+4x25+2x26+x27<400.487x11+0.52x12+0.613x13+0.72x14+0.487x15+0.52x16+0.64x17<10.2endgin14在Lindo6.1中輸入程序代碼:包裝箱可供裝車數量的限制平板車載重限制厚度限制特殊限制整數即最優的裝車方案為:x11=0,x12=7,x13=9,x14=0,x15=0,x16=2,x17=0;x21=8,x22=0,x23=0,x24=6,x25=3,x26=1,x27=0。最優值為20.394,浪費的空間僅有0.6cm。此時兩輛車裝車總長度均為10.197m,裝車總重分別為34t和33t,裝載C5,C6,C7三類貨物總長度分別為1.04m和1.981m。OBJECTIVEFUNCTIONVALUEVARIABLEVALUEREDUCEDCOSTX110.000000X12X13X140.000000X150.000000X162.000000X170.000000計算結果:ROWSLACKORSURPLUSDUALPRICESNO.ITERATIONS=155747計算結果:結果分析注意:題目中C1與C5,C2與C6厚度相同,導致可能存在多個解。通過不斷求解這種實驗方式來體驗多個解的存在性!OBJECTIVEFUNCTIONVALUEVARIABLEVALUEREDUCEDCOSTNO.ITERATIONS=300985繼續求解會得到不同的最優解,而且呈現一定的周期性重復,但最優值都是20.394。其原因就在于模型有多個解,但Lindo一次只能給出一個最優解。雖然每次求解可能有不同解,但并不是說一直進行下去就會求出所有解。可以利用最優解已知(20.394),通過計算機編程枚舉得出如下所有可能解:第一輛第二輛x11x12x13x14x15x16x17x21x22x23x24x25x26x27079002080063100564020823231006900308106300076400080323300664010813232014433307353000154332072530101643310715302024432306353100250533062910002543220625311026432106153120274320060531303091320570501031913105605020329130055050303443130535320035052305291100354312052532103605220519111036431105153220370521050911203743100505323040533304743000409122047051104191210460512041533204643010425331045430204291200450513043533004443030該模型的計算量較大,每次迭代次數達到數十萬次,尋找改進的、簡化的計算方法和技巧是值得我們進一步思考的。如果將兩輛車裝載后三類貨物總厚度不超過改成每輛車裝載不超過此值,則情況如何?結果分析這30組解中,所有的裝車方案都是值得推薦的嗎?現實中還應考慮兩輛平板車的載重量、占用空間差別均不應太大。需要進行結果篩選。該問題和自來水輸送以及飛機裝貨問題一樣屬于運輸問題,只不過是運輸問題的一種變形,運籌學中通常將這類問題稱為背包問題,由于有長度、重量兩項約束,所以稱為二維背包問題,可以利用數學規劃或動態規劃求解。小結每組解中第7種貨物都沒有選!這是88年一道MCM競賽題,在當時軟件還不發達時是有較大難度的!生產、生活物資從若干供應點運送到一些需求點,怎樣安排輸送方案使運費最小,或利潤最大;小結:運輸問題(TransportationProblem)各種類型的貨物裝箱,由于受體積、重量等限制,如何搭配裝載,使獲利最高,或裝箱數量最少。案例5:人力資源配置問題

某城市有一晝夜服務的公交線路,經過長期觀察統計,每天各時間區段內需司機和乘務人員總數如下表。班次時間區段所需人數16:00~10:0050210:00~14:0060314:00~18:0050418:00~22:0040522:00~2:002062:00~6:0030問題描述設司機和乘務人員分別在各時間區段一開始時上班,并連續工作八小時,問該公交線路至少配備多少名司機和乘務人員才能滿足實際需要?模型建立設xi為第i時段所需的人數,由于從第i時段開始上班的人在第i+1時段會繼續上班(注意如果i取6,則i+1應取1)目標函數約束條件班次時間區段16:00~10:00210:00~14:00314:00~18:00418:00~22:00522:00~2:0062:00~6:00模型求解直接輸入方式:

model:min=x1+x2+x3+x4+x5+x6;x1+x6>50;x1+x2>60;x2+x3>50;x3+x4>40;x4+x5>20;x5+x6>30;@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);@gin(x6);endGlobaloptimalsolutionfound.Objectivevalue:130.0000Extendedsolversteps:0Totalsolveriterations:7VariableValueReducedCostX150.000001.000000X210.000001.000000X340.000001.000000X40.0000001.000000X530.000001.000000X60.0000001.000000計算結果:注意與Lindo的相似性和區別Lingo程序(方式一):

模型求解Lingo程序(方式二):model:sets:time/1..6/:required,driver;endsetsdata:required=605040203050;enddatamin=@sum(time:driver);!各時段需求約束;@for(time(i):driver(i)+driver(@wrap(i+1,6))>=required(i));!各變量整數約束;@for(time:@gin(driver));end注:在集合循環函數中,當達到集合的最后(或第一個)成員后,可以用@wrap函數把索引轉到集合的第一個(或最后一個)成員。@wrap(i,N)的返回值當i位于區間[1,N]內時返回i,否則返回j=i-k*N,k為整數,且j位于區間[1,N]內。如@wrap(2,5)返回值為2,@wrap(16,5)返回值為1。在這里的作用是讓@wrap(7,6)返回到1。編程方式定義原始集time,6個成員,兩個屬性數據部分Globaloptimalsolutionfound.Extendedsolversteps:0Totalsolveriterations:6VariableValueReducedCost求解結果即6個班次依次需要的司乘人員數量分別為:x1=50;x2=10;x3=40;x4=0;x5=30;x6=0。共計至少需要130名司乘人員。生產中通過切割、剪裁、沖壓等手段,將原材料加工成所需大小原料下料問題按照工藝要求,確定下料方案,使所用材料最省,或利潤最大案例6:下料問題(一維)問題.如何下料最節省?原料鋼管:每根19米4米50根6米20根8米15根工地需求節省的標準是什么?問題描述某建筑工地需要一批不同型號的鋼管,其中4m的50根,6m的20根,8m的15根。現在從鋼管廠進貨的原料都是19m的,需要對這些原料進行合理的切割。問怎樣切割使得既滿足工地需求,又使浪費材料最小?按照客戶需要在一根原料鋼管上安排切割的一種組合。

切割模式余料1米4米1根6米1根8米1根余料3米4米1根6米1根6米1根合理切割模式的余料應小于客戶需要鋼管的最小尺寸余料3米8米1根8米1根鋼管下料為滿足客戶需要,按照哪些種合理模式,每種模式切割多少根原料鋼管,最為節省?合理切割模式2.所用原料鋼管總根數最少模式

4米鋼管根數6米鋼管根數8米鋼管根數余料(米)14003231013201341203511116030170023鋼管下料問題1兩種標準1.原料鋼管剩余總余量最小xi~按第i種模式切割的原料鋼管根數(i=1,2,…7)約束滿足需求決策變量

目標1(總余量)按模式2切割12根,按模式5切割15根,余料27米

模式4米根數6米根數8米根數余料14003231013201341203511116030170023需求502015最優解:x2=12,x5=15,其余為0;最優值:27。整數約束:xi為整數model:sets:pattern/1..7/:residu,number;type/1..3/:required;link(pattern,type):aa;endsetsdata:residu=3133113;required=502015;aa=400310201120111030002;enddata!目標函數(總余量最小)min=@sum(pattern:residu*number);!工地需求;@for(type(i):@sum(pattern(j):aa(j,i)*number(j))>required(i));!各變量整數約束;@for(pattern:@gin(number));end鋼管切割問題的Lingo程序當余料沒有用處時,通常以總根數最少為目標目標2(總根數)鋼管下料問題1約束條件不變最優解:x2=15,x5=5,x7=5,其余為0;最優值:25。xi為整數按模式2切割15根,按模式5切割5根,按模式7切割5根,共25根,余料35米雖余料增加8米,但減少了2根與目標1的結果“共切割27根,余料27米”相比小結:下料問題的建模確定下料模式構造優化模型規格不太多,可枚舉下料模式,建立整數線性規劃模型,否則要構造整數非線性規劃模型,求解困難,可用縮小可行域的方法進行化簡,但要保證最優解的存在。一維問題(如鋼管下料)二維問題(如易拉罐下料)具體問題具體分析(比較復雜)

1.首先建立M文件fun.m,定義目標函數F(X):functionf=fun(X);f=F(X);

其中X為n維變元向量,G(X)與Ceq(X)均為非線性函數組成的向量,其它變量的含義與線性規劃、二次規劃中相同.用Matlab求解上述問題,基本步驟分三步:4非線性規劃問題的matlab求解3.建立主程序.非線性規劃求解的函數是fmincon,命令的基本格式如下:

(1)x=fmincon(‘fun’,X0,A,b)

(2)x=fmincon(‘fun’,X0,A,b,Aeq,beq)

(3)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB)

(4)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)(5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)

(6)[x,fval]=fmincon(...)

(7)[x,fval,exitflag]=fmincon(...)(8)[x,fval,exitflag,output]=fmincon(...)輸出極值點M文件迭代的初值參數說明變量上下限

fmincon函數提供了大型優化算法和中型優化算法。默認時,若在fun函數中提供了梯度(options參數的GradObj設置為’on’),并且只有上下界存在或只有等式約束,fmincon函數將選擇大型算法。當既有等式約束又有梯度約束時,使用中型算法。

fmincon函數的中型算法使用的是序列二次規劃法。在每一步迭代中求解二次規劃子問題,并用BFGS法更新拉格朗日Hessian矩陣。

fmincon函數可能會給出局部最優解,這與初值X0的選取有關。注意:案例71.先建立M-文件fun1.m定義目標函數:functionf=fun1(x);f=-2*x(1)-x(2);2.再建立M文件mycon1.m定義非線性約束:function[g,ceq]=mycon1(x)g=[x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7];ceq=[];3.主程序main.m為:x0=[3;2.5];VLB=[00];VUB=[510];[x,fval,exitflag,output]=fmincon('fun1',x0,[],[],[],[],VLB,VUB,'mycon4')4.運算結果為:x=exitflag=1output=iterations:4funcCount:17stepsize:1algorithm:[1x44char]firstorderopt:[]cgiterations:[]

某公司有6個建筑工地要開工,每個工地的位置(用平面坐標系a,b表示,距離單位:千米)及水泥日用量d(噸)由下表給出。目前有兩個臨時料場位于A(5,1),B(2,7),日儲量各有20噸。假設從料場到工地之間均有直線道路相連。(1)試制定每天的供應計劃,即從A,B兩料場分別向各工地運送多少噸水泥,使總的噸千米數最小。(2)為了進一步減少噸千米數,打算舍棄兩個臨時料場,改建兩個新的,日儲量各為20噸,問應建在何處,節省的噸千米數有多大?案例8:供應與選址一建立模型

記工地的位置為(ai,bi),水泥日用量為di,i=1,…,6;料場位置為(xj,yj),日儲量為ej,j=1,2;從料場j向工地i的運送量為Xij。當用臨時料場時決策變量為:Xij,當不用臨時料場時決策變量為:Xij,xj,yj。二使用臨時料場的情形

使用兩個臨時料場A(5,1),B(2,7).求從料場j向工地i的運送量為Xij,在各工地用量必須滿足和各料場運送量不超過日儲量的條件下,使總的噸千米數最小,這是線性規劃問題.線性規劃模型為:設X11=X1,X21=X2,,X31=X3,X41=X4,X51=X5,,X61=X6X12=X7,X22=X8,,X32=X9,X42=X10,X52=X11,,X62=X12計算結果為:x=[3.00005.00000.00007.00000.00001.00000.00000.00004.00000.00006.000010.0000]’三改建兩個新料場的情形

改建兩個新料場,要同時確定料場的位置(xj,yj)和運送量Xij,在同樣條件下使總噸千米數最小。這是非線性規劃問題。非線性規劃模型為:設X11=X1,X21=X2,,X31=X3,X41=X4,X51=X5,,X61=X6X12=X7,X22=X8,,X32=X9,X42=X10,X52=X11,,X62=X12

x1=X13,y1=X14,x2=X15,y2=X16

(1)先編寫M文件liaoch.m定義目標函數。functionf=liaoch(x)a=[1.258.750.55.7537.25];b=[1.250.754.7556.57.75];d=[3547611];e=[2020];f1=0;fori=1:6s(i)=sqrt((x(13)-a(i))^2+(x(14)-b(i))^2);%計算料場A到各個工地距離f1=s(i)*x(i)+f1;%計算料場A到各個工地的噸千米總量Endf2=0;fori=7:12s(i)=sqrt((x(15)-a(i-6))^2+(x(16)-b(i-6))^2);%計算料場B到各工地距離f2=s(i)*x(i)+f2;%計算料場B到各個工地的噸千米總量endf=f1+f2;(2)取初值為線性規劃的計算結果及臨時料場的坐標:x0=[35070100406105127]';編寫主程序gying2.m.x0=[35471000005115.63484.86877.24797.7499]';A=[11111100000000000000001111110000];B=[20;20];Aeq=[100000100000000001000001000000000010000010000000000100000100000000001000001000000000010000010000];beq=[3547611]';vlb=[zeros(12,1);-inf;-inf;-inf;-inf];vub=[];[x,fval,exitflag]=fmincon('liaoch',x0,A,B,Aeq,beq,vlb,vub)(3)計算結果為:10.07076.38754.39435.75117.1867]’exitflag=1(4)若修改主程序gying2.m,取初值為上面的計算結果:x0=[3.00005.00000.07077.000000.9293003.929306.000010.07076.38754.39435.75117.1867]’得結果為:x=[3.00005.00000.30947.00000.01080.6798003.690605.989210.32025.53694.91945.82917.2852]’exitflag=1總的噸千米數比上面結果略優.(5)若再取剛得出的結果為初值,卻計算不出最優解.(6)若取初值為:x0=[35471000005115.63484.86877.24797.7499]',則計算結果為:x=[3.00005.00004.00007.00001.0000000005.000011.00005.69594.92857.25007.7500]’exitflag=1總的噸千米數89.8835比上面結果更好.通過此例可看出fmincon函數在選取初值上的重要性。

在我們的生活中每天都面對各種各樣的大量的數據,比如科學研究,工程建設,股票信息,彩票數據,考試成績,經濟開銷,時間,身高體重、三圍參數等等。怎樣從紛繁復雜的數據當中挖掘出有用的信息,是我們面臨的一大問題。數據處理是數學建模一項重要的內容。問題的提出專題2:數據處理(擬合、插值、回歸)問題1.已知一室模型快速靜脈注射下的血藥濃度數據(t=0注射300mg)求血藥濃度隨時間的變化規律c(t).

t(h)0.250.511.523468c(g/ml)19.2118.1515.3614.1012.899.327.455.243.01

這個問題要從一組實驗觀測數據(xi

,yi

)(i=1,2,…,n)出發揭示出自變量x與因變量y之間的關系,一般可以用一個近似的函數關系式y=f(x)來表示。函數f(x)的產生辦法因觀測數據與要求的不同而異,通常可采用兩種方法:插值與數據擬合。1數據擬合2數據插值3回歸分析4聚類分析數據處理的常用方法簡介

已知一組(二維)數據,即平面上n個點(xi,yi)i=1,…,n,尋求一個函數(曲線)y=f(x),使f(x)在某種準則下與所有數據點最為接近,即曲線擬合得最好。

1.數據擬合(曲線擬合)+++++++++xyy=f(x)(xi,yi)ii為點(xi,yi)與曲線y=f(x)的距離某種準則下與所有數據點最為接近曲線擬合問題的提法擬合基函數第一步:確定擬合的函數類型其中為待定系數。第二步:確定的最小二乘準則:要求n個已知點(xi

,yi)與曲線的距離(偏差)di的平方和最小。滿足上述要求的參數取值稱為該問題的最小二乘解。曲線擬合問題最常用的解法—最小二乘法的基本思路2.如果無現成的規則,則可以通過散點圖,結合曲線的形狀進行分析,即建立經驗模型。1.通過機理分析建立數學模型來確定f(x);+++++++++++++++f=ae-bxf=a1+a2xf=a1+a2x+a3x2擬合函數類型的確定1、線性最小二乘擬合2、非線性最小二乘擬合用MATLAB求解擬合問題1.作多項式f(x)=a1xm+…+amx+am+1擬合,可利用已有程序:a=polyfit(x,y,m)輸出擬合多項式系數a=[a1,…,am,

am+1](數組)輸入同長度的數組X,Y擬合多項式次數2.多項式在x處的值y可用以下命令計算:

y=polyval(a,x)用MATLAB作線性最小二乘擬合問題1藥物濃度問題

2擬合結果:2次擬合效果對比圖藥物濃度與時間關系32擬合結果:藥物濃度與時間關系3次擬合效果對比圖

Matlab的提供了兩個求非線性最小二乘擬合的函數:lsqcurvefit和lsqnonlin。兩個命令都要先建立M-文件fun.m,在其中定義函數f(x),但兩者定義f(x

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論