第一篇:關于售書問題的數學建模
關于售書問題的數學建模
1一、問題的提出
1、問題的描述
一家出版社準備在某市建立兩個銷售代銷點,向7個區的大學生售書,每個區的大學生數量(單位:千人)已經表示在圖上.每個銷售代理點只能向本區和一個相連區的大學生售書,這兩個銷售代理點應該建在何處才能使所能供應的大學生的數量最大?
2、問題分析
本問題實際就是找到一人數最多的方案,得到最優解,因此考慮優化模型。而且題目主要是以文字的形式給出的,需要構建合理的數學模型,用到數學模型的專用軟件。
二、模型的假設
將大學生數量為34、29、42、21、56、18、71的區分別標號為1、2、3、4、5、6、7區,畫出區域區之間的相鄰關系:
記rij為第i區的大學生人數,用0-1變量xij=1表示(i,j)區的大學生由一個代售點供應圖書(i 數學模型第一次討論作業 問題: 某部門現有資金10萬元,五年內有以下投資 項目供選擇: 項目A:從第一年到第四年每年初投資,次年末收回本金且獲利15%; 項目B:第三年初投資,第五年末收回本金且獲利25%,最大投資額為4萬元; 項目C:第二年初投資,第五年末收回本金且獲利40%,最大投資額為3萬元; 項目D:每年初投資,年末收回本金且獲利6%; 問如何確定投資策略使第五年末本息總額最大? 問題分析: 用表示第i年對第j個項目的投資金額 要使第五年年末本息總額最大,應當在每年將所有可用資金都用于投資,以確保資金的充分利用,由于項目投資均發生在年初,故以下只討論年初的投資情況: 第一年: 第二年:手上資金(即第一年年末收回資金)為,全部用來對可投資項目投資,則有= 第三年:同理,有= 第四年:= 第五年:= 第五年年末本息和為(即第五年所能收回的所有資金) 建立模型: = = = =,求解模型: Lingo解法: 可編寫lingo程序如下: model: max=1.06*x54+1.15*x41+1.25*x32+1.4*x23;!目標函數; x11+x14=10;!以下約束條件表示每年資金全部用于投資; 1.06*x14=x21+x23+x24; 1.15*x11+1.06*x24=x31+x32+x34; 1.15*x21+1.06*x34=x41+x44; 1.15*x31+1.06*x44=x54; x23<=3;!限制B,C項目的最大投資額; x32<=4; end 運行結果如下: Global optimal solution found.Objective value: 14.37500 Infeasibilities: 0.000000 Total solver iterations: Variable Value Reduced Cost X54 0.000000 0.000000 X41 4.500000 0.000000 X32 4.000000 0.000000 X23 3.000000 0.000000 X11 7.169811 0.000000 X14 2.830189 0.000000 X21 0.000000 0.000000 X24 0.000000 0.3036000E-01 X31 0.000000 0.000000 X34 4.245283 0.000000 X44 0.000000 0.2640000E-01 Row Slack or Surplus Dual Price 14.37500 1.000000 0.000000 1.401850 0.000000 -1.322500 0.000000 -1.219000 0.000000 -1.150000 0.000000 -1.060000 0.000000 0.7750000E-01 0.000000 0.3100000E-01 所得最優值為14.375萬元,對應的最優解為: x11=7.169811,x14=2.830189,x23=3,x32=4,x34=4.245283,x41=4.5,其余值為0 即第一年對A項目投資7.169811萬元,對D項目投資2.830189萬元;第二年對C項目投資3萬元;第三年對B項目投資4萬元,對D項目投資4.245283萬元;第四年對A項目投資4.5萬元。 Lindo解法: 可編寫lindo程序如下: max 1.06x54+1.15x41+1.25x32+1.4x23 st x11+x14=10 1.06x14-x21-x23-x24=0 1.15x11+1.06x24-x31-x32-x34=0 1.15x21+1.06x34-x41-x44=0 1.15x31+1.06x44-x54=0 x23<=3 x32<=4 輸出結果如下: LP OPTIMUM FOUND AT STEP OBJECTIVE FUNCTION VALUE 1) 14.37500 VARIABLE VALUE REDUCED COST X54 0.000000 0.000000 X41 4.500000 0.000000 X32 4.000000 0.000000 X23 3.000000 0.000000 X11 7.169811 0.000000 X14 2.830189 0.000000 X21 0.000000 0.000000 X24 0.000000 0.030360 X31 0.000000 0.000000 X34 4.245283 0.000000 X44 0.000000 0.026400 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 1.401850 3) 0.000000 -1.322500 4) 0.000000 -1.219000 5) 0.000000 -1.150000 6) 0.000000 -1.060000 7) 0.000000 0.077500 8) 0.000000 0.031000 NO.ITERATIONS= 所得最優值為14.375萬元,對應的最優解為: x11=7.169811,x14=2.830189,x23=3,x32=4,x34=4.245283,x41=4.5,其余值為0 即第一年對A項目投資7.169811萬元,對D項目投資2.830189萬元;第二年對C項目投資3萬元;第三年對B項目投資4萬元,對D項目投資4.245283萬元;第四年對A項目投資4.5萬元。 Matlab解法: Way1可編寫matlab程序如下: f=[0 0 0 0 0 0 1.4 0 0 1.25 0 0 1.15 0 0 0 0 0 0 1.06]; Aeq=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 1.06 0 0 0 0 0 0 0 0 0 0 0 0 0; 1.15 0 0 0 0 0 0 1.06 0 0 0 0 0 0 0 0 0; 0 0 0 0 1.15 0 0 0 0 0 0 1.06 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 1.15 0 0 0 0 0 0 1.06 0 0 0 -1]; beq=[10;0;0;0;0]; A=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; b=[3;4]; lb=zeros(20,1); [x,fval]=linprog(-f,A,b,Aeq,beq,lb,[]) 運行結果如下: Optimization terminated.x = 6.5508 0 0 3.4492 0.6561 0 3.0000 0.0000 2.0066 4.0000 0 1.5268 2.3730 0 0 0.0000 0 0 0 2.3076 fval = -14.3750 所得最優值為14.375萬元,對應的最優解為:x11=6.5508,x14=3.4492,x21=0.6561,x23=3,x31=2.0066,x32=4,x34=1.5268,x41=2.3730,x54=2.3076,其余值為0。 Way2可編寫matlab程序如下: f=[0?0?0?0?0?0-1.4?0?0-1.25?0?0-1.15?0?0?0?0?0?0-1.06]; A=[]; b=[]; Aeq=[1?0?0?1?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0;...0?0?0?1.06-1?0-1-1?0?0?0?0?0?0?0?0?0?0?0?0;...1.15?0?0?0?0?0?0?1.06-1-1?0-1?0?0?0?0?0?0?0?0;...0?0?0?0?1.15?0?0?0?0?0?0?1.06-1?0?0-1?0?0?0?0;...0?0?0?0?0?0?0?0?1.15?0?0?0?0?0?0?1.06?0?0?0-1]; beq=[10;0;0;0;0]; lb=[0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0]; ub=[inf?inf?inf?inf?inf?inf?3?inf?inf?4?inf?inf?inf?inf?inf?inf?inf?inf?inf?inf]; [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub) 運行結果如下: Optimization?terminated.x?= 6.5113 0 0 3.4887 0.6980 0 3.0000 0.0000 2.0003 4.0000 0 1.4877 2.3797 0 0 0.0000 0 0 0 2.3004 fval?= -14.3750 所得最優值為14.375萬元,對應的最優解為:x11=6.5113,x14=3.4887,x21=0.6980,x23=3,x31=2.0003,x32=4,x34=1.4877,x41=2.3797,x54=2.3004,其余值為0。 討論:利用matlab,lingo及lindo程序分別求解上述模型后,發現取到相同最優值情況下,matlab的最優解不同于lingo和lindo,該問題可能存在多個最優解? 經嘗試已排除變量設置數量差異,軟件版本差異及計算機系統差異的原因,可能是軟件求解原理或近似導致,或者該問題本身最優解不唯一。 2008年高教社杯全國大學生數學建模競賽 承諾書 我們仔細閱讀了中國大學生數學建模競賽的競賽規則. 我們完全明白,在競賽開始后參賽隊員不能以任何方式(包括電話、電子郵件、網上咨詢等)與隊外的任何人(包括指導教師)研究,討論與賽題有關的問題。 我們知道,抄襲別人的成果是違反競賽規則的,如果引用別人的成果或其他公開的資料(包括網上查到的資料),必須按照規定的參考文獻的表述方式在正文引用處和參考文獻中明確列出。 我們鄭重承諾,嚴格遵守競賽規則,以保證競賽的工正,公平性。如有違反競賽規則的行為,我們將受到嚴肅處理。 我們參賽選擇的題號是(從A/B/C/D中選擇一項填寫): 我們的參賽報名號為(如果賽區設置報名的話): 所屬學校(請填寫完整的全名): 參賽隊員(打印并簽名):1. 2.3. 指導教師或指導老師負責人(打印并簽名): 日期:年 月 日 賽區評閱編號(由賽區組委會評閱前進行編 學科評估模型 摘要 學科間水平的評價對于學科的發展有著重要的作用,在遵循學科評價的客觀性,發展性,服務性等原則的基礎上,運用建模題目歲提供的數據,本文建立兩種不同的評價模型對學科進行評價。模型一首先運用層次分析法確定影響學科發展的重要因素,建立指標評價體系,然后采用理想解法來建立學科評價模型;模型二與模型一樣也是運用層次分析法建立指標體系,然后運用專家分析法進行調查,對調查結果取眾數,得到了關于學科評價指標體系各層次指標的判斷矩陣,在運用MATLAB求判斷矩陣特值,檢驗判斷矩陣的一致性,最終求出各指標的有效權重系數,用各指標的權重系數乘以各指標的得分,以求出學科的綜合得分,得分越高,說明排在前面的指標越多,在一定程度上就是說,該學科綜合實力和發展水平相對其他學科靠前。最后,為防止有些學科指標得分很高,另一部分得分很低,但綜合得分任然靠前,而掩飾了學科發展的不穩定,不均衡的病態現象 因此,再進一步對最低級指標計算法案差,以檢測學科發展的穩定性和均衡性,從而指導學科的正確發展。 通過運用以上方法,不僅可以分出各學科的建設水平高低,學科本身也可看出自己發展的優勢與劣勢,從而,給學科的發展指明了方向。 本題所提供的數據是來自科研與教學并重型高效,因此,我們在此基礎上還假設了數據是來自科研型或教學型的高校,又該如何改進模型以適合不同類型的高校學科特點而給出了相應的評價模型。 關鍵詞:學科評價 層次分析法 理想解法 多級指標 1.問題的提出 學科是教學,科研等各項工作的基礎和載體,學科建設水平是考察學校辦學水平,辦學實力,辦學特色的重要標志,是高校建設的核心內容。而學科間水平的評價對于學科的發展有著重要作用,它可以使得各學科能更加深入的了解本學科與其他學科相比較的地位及不足之處,可以更好的促進學科發展。因此,學科建設評估體系與機制的建立直接影響到高校學科建設整體水平的發展,如何給出合理的學科評價體系或模型一直是學科發展的熱點問題,本文研究的目的是建立一套科學可行的學科評價模型。 2.建模的原則 由于學科的發展水平和綜合實力是由多種因素共同決定,比如學科的基礎建設,師資隊伍,科學研究,辦學聲譽等等,有的因素可定量分析的,而有的是不能定量分析的,本文的研究思路是在所給數據的基礎上針對各個因素的特點,將影響學科綜合實力的各種因素定量化,制定出綜合的指標評價系統,模型構建的遵循以下五項基本原則:(1)原則影響因素,學科建設狀況及其潛在競爭力是多種因素和各個子系統綜合作用的結果。反映學科建設狀況及其潛在競爭力的指標體系應包含學科基礎,人才培養,科學研究等各個方面的指標,這就要求評價指標系要盡可能體現綜合性和全面性。 (2)合理性原則。由于學科評價指標體系涉及面比較寬,在具體操作過程中必定有個對指標取舍的問題,為此,要盡可能選取能區分不同學科建設高低能力的指標。(3)可行性原則。可行性評價指標 3.模型的建立與求解 數學建模實驗報告 試驗名稱:生日問題 問題背景描述: 在100個人的團體中,如果不考慮年齡的差異,研究是否有兩個以上的人生日相同。假設每人的生日在一年365天中的任意一天是等可能的,那么隨機找n個人(不超過365人)。求這n個人生日各不相同的概率是多少?從而求這n個人中至少有兩個人生日相同這一隨機事件發生的概率是多少? 實驗目的: 用計算機求解概率計算問題;當冪方次數較大時用多項式擬合方法確定求概率的近似計算公式;了解隨機現象的計算機模擬技術。實驗原理與數學模型: 這是一個古典概率問題,n個人中每一人的生日都可能在365天中任何一天,樣本空間中樣本點總數為365n,考慮n個人的生日兩兩不同,第一個人的生日可能在365天中任一天,第二個人的生日不能與第一個人生日相同,第二個人生日可能在364天中任何一天,類推可得,n個人生日兩兩不同的這一事件的總共有365*364*……*(365-n+1).故這n個人的生日各不相同的概率(可能性)以下面公式計算: P?365*364*......*(365?n?1)365n(1) 因而,n個人中至少有兩人生日相同這一隨機事件發生的概率為: P(n)=1-365*364*......*(365?n?1)365n(2) 但是在利用公式進行計算時,所用的乘法次數和除法次數較多,可以考慮用多項式做近似計算。這需要解決多項式擬合問題。主要內容(要點): 1、求出n個人中至少有兩個人生日相同的概率P(n)的近似公式; 2、根據P(n)的近似公式,用計算機分別計算出當團體人數取n=1,2,……,100時的概率值:P(1),P(2),……,P(100)。在Matlab環境下用指令plot(p)繪制圖形,描述概率值隨團體人數變化的規律; 3、特殊概率值的計算。在有40個學生的班上,至少有2個同學生日相同的概率是多少?60個人的團體中,至少有兩個人生日在同一天的概率又是多少?在80個人的團體中,情況又如何? 4、用5次多項式擬合方法尋找一個近似計算概率的公式; 5、考慮團體總人數對概率值的影響; 計算機仿真(數值模擬)。 實驗過程記錄(含:基本步驟、主要程序清單及異常情況記錄等): 1、利用(2),用計算機分別計算出當團體人數取n=1,2,……,100時的概率值:P(1),P(2),……,P(100),并繪制圖形。Matlab程序具體如下: for k=1:100 p(k)=1-prod(365-k+1:365)/365^k;end plot(p)并以shengriyi.m為文件名保存,然后在Matlab工作環境下輸入如下指令: >> shengriyi 結果所得圖形如下: 2、特殊概率值的計算。由于前面已經計算了概率值P(k)(k=1,2,……,100),所以只需鍵入P(40),P(60),P(80)即可。如輸入如下指令: >> p(40)ans = 0.8912 一個40個同學的學生班上,至少有兩個同學生日相同的概率是P(40)=0.8912; 同理可求出60個人的團體中,至少有兩個人生日相同的概率是P(60)= 0.9941; 在80個人的團體中,至少有兩人生日相同的概率是P(80)=0.0.9999。 3、參考上圖,用五次多項式擬合方法尋找近似計算概率的公式。 在Matlab環境下鍵入下列指令(該指令為求五次多項式擬合的多項式系數): >> n=1:100; >> c5=polyfit(n,p,5)c5 =-0.0000 0.0000-0.0001 0.0023-0.0046-0.0020 該多項式即為: c1x?c2x?c3x?c4x?c5x?c6?0x?0x?0.0001x?0.0023x?0.0046x?0.002054325432在Matlab環境下繼續鍵入下列指令: >> p5=polyval(c5,n);////////用多項式近似計算100個概率值 >> plot(n,p,n,p5,'.')////////畫出擬合多項式的圖象與概率曲線作比較 結果所得的圖象如下所示: 用五次多項式作近似計算P(30)、P(50)和P(70),指令和結果如下: >> p5(40)ans = 0.8895 >> p5(60)ans = 0.9985 >> p5(80)ans = 0.9943 4、在某團體中,要保證“至少有兩人生日相同”的概率大于99%,可以利用第一個步驟以算出的100個概率值,鍵入如下指令:>> find(p>0.99),可得結果為: ans = Columns 1 through 27 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 Columns 28 through 44 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 從結果可看出,該團體總人數若超過57人,則這個團體中至少有兩人生日相同的概率將大于99%。 5、算機仿真(數值模擬)。隨機產生30個正整數,介于1到365之間(用這30個數代表一個學生班的30個同學的生日),然后統計數據,觀察是否有兩人以上的人生日相同。當30人中有兩人生日相同時,計算機輸出為“1”,否則輸出為“0”。如此重復觀察100次,可得頻率f100。下面是做計算機模擬的Matlab源程序: n=0;for m=1:100 y=0;x=1+fix(365*rand(1,30));for i=1:29 for j=i+1:30 if(x(i)==x(j)),y=1;break,end end end n=n+y;end f=n/m shengrier.m為文件名保存在Matlab工作空間中,并在Matlab環境下鍵入j,回車,可輸出結果:f100=0.6500 實驗結果報告與實驗總結: 通過本試驗的學習,對一般較簡單的Matlab語句有了更深得了解,對一些循環語句也有了一定的認識,但對于語句與語句之間在循環判斷條件下如何進行連接,以及如何寫出正確的語句還存在著一定的困難。然而從這個實驗中也有了不少的收獲,在Matlab環境下計算概率值,但當冪方很大的時候,就較難用乘冪直接求出,其已超出計算機的最大數,最終只能作近似計算,而用擬合多項式作近似誤差很小,是一種很好的方法;用計算機模擬100次,可以計算出30人中至少有兩人生日相同的頻率值。注意到頻率的波動性,再次運行程序所得頻率值的結果可能會有所差異,當模擬結果的頻率值接近與前面的概率值時,給所求的概率作了直觀的說明。 建模A第三問思路: 此問題可以用排隊論知識來解決,模型說明:發生交通事故時,事故車輛占用了兩個車道,只剩下一個車道能通行,而此時有三個隊列的車輛在排隊,此時可以看成是單服務臺、多隊列的排隊問題,由于此問題較復雜,可以假設為單隊列,先到先出的原則。假設λ為單位時間內到達的車輛數,也就是本題的上游車流量,μ為一標準量的車通過事故口所用的時間,1/μ就是通行能力,根據經典的排隊論模型可以得到排隊長L=g(λ,μ),(單位:車輛數,乘以車頭間距離就是排隊長度。以下同) 改進:λ的處理:由于本題中單位時間內到達的車輛數不穩定,設t為事故發生到解除所用的時間,把[0,t]這個時間段分割成k份,每一小段的時間為t/k,每一小段時間對應一個λk,利用插值法,得出λk和λk-1之間的關系,這個關系中包含了參數k,t; μ的處理:由于是三個車道的車 通過并道由同一個出口駛出,左車道和右車道以及中間車道通過事故口所用的時間是不同的,這里可以用加權平均來求,至于權數可以通過視頻數據來調整。 這樣就得到了Lk=Lk-1+g(λk,t,μ),通過遞推可以得出Lk=L0+ g(λ1…λk,t,μ)而L0是事故剛發生時排隊的長度,可以認為等于0,這樣就建立了排隊長度L、時間t、上游車流量λk、通行能力1/μ,之間的關系 對于第四問就是當L折合成長度后=140m時,求t 參考文獻:排隊論等,一點不是特別成熟的想法,希望能給你提供點幫助第二篇:投資問題數學建模
第三篇:數學建模摘要及問題
第四篇:數學建模生日問題
第五篇:數學建模A交通事故車流量問題