2009暑期數(shù)學(xué)建模集訓(xùn)專題-數(shù)學(xué)規(guī)劃(完整課件含711712上課內(nèi)容)_第1頁
2009暑期數(shù)學(xué)建模集訓(xùn)專題-數(shù)學(xué)規(guī)劃(完整課件含711712上課內(nèi)容)_第2頁
2009暑期數(shù)學(xué)建模集訓(xùn)專題-數(shù)學(xué)規(guī)劃(完整課件含711712上課內(nèi)容)_第3頁
2009暑期數(shù)學(xué)建模集訓(xùn)專題-數(shù)學(xué)規(guī)劃(完整課件含711712上課內(nèi)容)_第4頁
2009暑期數(shù)學(xué)建模集訓(xùn)專題-數(shù)學(xué)規(guī)劃(完整課件含711712上課內(nèi)容)_第5頁
已閱讀5頁,還剩205頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

一、引言二、線性規(guī)劃模型三、整數(shù)規(guī)劃模型數(shù)學(xué)建模專題----規(guī)劃理論及模型四、0-1規(guī)劃模型五、幾種常用的線性規(guī)劃模型六、非線性規(guī)劃模型七、多目標(biāo)規(guī)劃模型八、LINGO入門一、引言我們從2005年“高教社杯〞全國大學(xué)生數(shù)模競談起.其中第二個問題是一個如何來分配有限資源,從而到達(dá)人們期望目標(biāo)的優(yōu)化分配數(shù)學(xué)模型.它在數(shù)學(xué)建模中處于中心的地位.這類問題一般可以歸結(jié)為數(shù)學(xué)規(guī)劃模型.賽的B題“DVD在線租賃〞問題的第二問和第三問規(guī)劃模型的應(yīng)用極其廣泛,其作用已為越來來越急速地滲透于工農(nóng)業(yè)生產(chǎn)、商業(yè)活動、軍事行為核科學(xué)研究的各個方面,為社會節(jié)省的財富、創(chuàng)造的價值無法估量.在數(shù)模競賽過程中,規(guī)劃模型是最常見的一類數(shù)學(xué)模型.從92-08年全國大學(xué)生數(shù)模競賽試題越多的人所重視.隨著計算機(jī)的逐漸普及,它越的解題方法統(tǒng)計結(jié)果來看,規(guī)劃模型共出現(xiàn)了16次,占到了近50%,也就是說每兩道競賽題中就有一道涉及到利用規(guī)劃理論來分析、求解.

二、線性規(guī)劃模型線性規(guī)劃模型是所有規(guī)劃模型中最根本、最例1.〔食譜問題〕設(shè)有n種食物,各含m種營養(yǎng)素,第j種食物中第i種營養(yǎng)素的含量為aij,n種食物價格分別為c1,c2,…,cn,請確定食譜中n種食物的數(shù)量x1,x2,…,xn,要求在食譜中m種營養(yǎng)素簡單的一種.

2.1線性規(guī)劃模型的根本形式的含量分別不低于b1,b2,…,bm的情況下,使得總總的費(fèi)用最低.首先根據(jù)食物數(shù)量及價格可寫出食譜費(fèi)用為其次食譜中第i種營養(yǎng)素的含量為因此上述問題可表述為:解上述食譜問題就是一個典型的線性規(guī)劃問題,尋求以線性函數(shù)的最大〔小〕值為目標(biāo)的數(shù)學(xué)模型.它是指在一組線性的等式或不等式的約束條件下,線性規(guī)劃的數(shù)學(xué)模型maxz=線性規(guī)劃、線性規(guī)劃的可行解,最優(yōu)解的概念線性規(guī)劃一般可寫作min(ormax)f=s.t.

線性規(guī)劃問題還可以用矩陣表示minf=

s.tAx≥b,x≥0其中f被稱作目標(biāo)函數(shù),目標(biāo)函數(shù)下的等式或不等式被稱作約束條件,

A=,b=一組滿足約束條件的變量的值稱為一組可行解??尚薪獾募戏Q為可行解域,或可行解空間。線性規(guī)劃問題也就是在可行解域上尋找使目標(biāo)函數(shù)取得極小〔或極大〕值的可行解,稱之為最優(yōu)解。

針對標(biāo)準(zhǔn)形式的線性規(guī)劃問題,其解的理論分析已經(jīng)很完備,在此根底上也提出了很好的算單純形方法是線性規(guī)劃問題的最為根底、也法——單純形方法及其相應(yīng)的變化形式〔兩階段2.2線性規(guī)劃模型的求解

法,對偶單純形法等〕.是最核心的算法。它是一個迭代算法,先從一個特殊的可行解〔極點(diǎn)〕出發(fā),通過判別條件去判斷該可行解是否為最優(yōu)解〔或問題無界〕,假設(shè)不是最優(yōu)解,那么根據(jù)相應(yīng)規(guī)那么,迭代到下一個更好的可行解〔極點(diǎn)〕,直到最優(yōu)解〔或問題無界〕.關(guān)于線性規(guī)劃問題解的理論和單純形法具體的求解過程可參見相關(guān)文獻(xiàn).然而在實(shí)際應(yīng)用中,特別是數(shù)學(xué)建模過程中,遇到線性規(guī)劃問題的求解,我們一般都是利用現(xiàn)有的軟件進(jìn)行求解,此時通常并不要求線性規(guī)劃問題是標(biāo)準(zhǔn)形式.比較常用的求解線性規(guī)劃模型的軟件包有LINGO、LINDO和MATLAB。MATLAB中有關(guān)求解線性規(guī)劃問題的指令X=linprog(f,A,b,Aeq,beq)X=linprog(f,A,b,Aeq,beq,lb,ub)X=linprog(f,A,b,Aeq,beq,lb,ub,x0)X=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)[x,fval,exitflag,output]=linprog(…)用MATLAB優(yōu)化工具箱解線性規(guī)劃minz=cX

1、模型:命令:x=linprog〔c,A,b〕2、模型:minz=cX

命令:x=linprog〔c,A,b,Aeq,beq〕注意:若沒有不等式:存在,則令A(yù)=[],b=[].1/12/2023143、模型: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]若沒有等式約束:,則令A(yù)eq=[],beq=[].[2]其中X0表示初始點(diǎn)4、命令:[x,fval]=linprog(…)返回最優(yōu)解x及x處的目標(biāo)函數(shù)值fval.1/12/202315解編寫M文件如下:c=[-0.4-0.28-0.32-0.72-0.64-0.6];A=[0.010.010.010.030.030.03;0.02000.0500;00.02000.050;000.03000.08];b=[850;700;100;900];Aeq=[];beq=[];vlb=[0;0;0;0;0;0];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)1/12/202316解:編寫M文件如下:c=[-7-5];A=[32;46;07];b=[90;200;210];Aeq=[];beq=[];vlb=[0,0];vub=[inf,inf];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)問題2解答1/12/202317線性規(guī)劃中的特殊形式----運(yùn)輸問題例2.

設(shè)要從甲地調(diào)出物資2000噸,從乙地調(diào)出物資1100噸,分別供給A地1700噸、B地1100噸、C假定運(yùn)費(fèi)與運(yùn)量成正比.在這種情況下,采用不地200噸、D地100噸.每噸運(yùn)費(fèi)如表所示.同的調(diào)撥方案,運(yùn)費(fèi)就可能不一樣.現(xiàn)在問:怎樣才能找出一個運(yùn)費(fèi)最省的調(diào)撥方案?1572521甲15375151乙DCBA表1.1銷地運(yùn)費(fèi)產(chǎn)地乙甲DCBA解一般的運(yùn)輸問題可以表述如下:數(shù)學(xué)模型:

假設(shè)其中各產(chǎn)地的總產(chǎn)量等于各銷地的總銷量,即類似與將一般的線性規(guī)劃問題轉(zhuǎn)化為其標(biāo)準(zhǔn)否那么,稱為不平衡的運(yùn)輸問題,包括:,那么稱該問題為平衡的運(yùn)輸問題.總產(chǎn)量>總銷量和總產(chǎn)量<總銷量.形式,我們總可以通過引入假想的銷地或產(chǎn)地,將不平衡的運(yùn)輸問題轉(zhuǎn)化為平衡的運(yùn)輸問題.從而,我們的重點(diǎn)就是解決平衡運(yùn)輸問題的求解.顯然,運(yùn)輸問題是一個標(biāo)準(zhǔn)的線性規(guī)劃問題,因而當(dāng)然可以運(yùn)用單純形方法求解.但由于平衡的運(yùn)輸問題的特殊性質(zhì),它還可以用其它的一些特殊方法求解,其中最常用的就是表上作業(yè)法,該方法將單純形法與平衡的運(yùn)輸問題的特殊性質(zhì)結(jié)合起來,很方便地實(shí)行了運(yùn)輸問題的求解.關(guān)于運(yùn)輸問題及其解法的進(jìn)一步介紹可參考相關(guān)文獻(xiàn).對于線性規(guī)劃問題,如果要求其決策變量取整數(shù)值,那么稱該問題為整數(shù)線性規(guī)劃問題.平面法和分枝支定界法是兩種常用的求解整數(shù)線性對于整數(shù)線性規(guī)劃問題的求解,其難度和運(yùn)算量遠(yuǎn)大于同規(guī)模的線性規(guī)劃問題.Gomory割規(guī)劃問題的方法(參見相關(guān)文獻(xiàn)).此外,同線性規(guī)劃模型一樣,我們也可以運(yùn)用LINGO和LINDO軟件包來求解整數(shù)線性規(guī)劃模型.三、整數(shù)線性規(guī)劃模型以1988年美國大學(xué)生數(shù)學(xué)建模競賽B題為例,說明整數(shù)線性規(guī)劃模型的建立及用LINGO軟件包如何求解整數(shù)線性規(guī)劃模型。例3.有七種規(guī)格的包裝箱要裝到兩節(jié)鐵路平板車上去。包裝箱的寬和高是一樣的,但厚度〔t,以cm計〕及重量〔w,以kg計〕是不同的.表1給出了每種包裝箱的厚度、重量以及數(shù)量。每節(jié)平板車有m長的地方可用來裝包裝箱〔像面包片那樣〕,載重為40t.由于當(dāng)?shù)刎涍\(yùn)的限制,對于C5,C6,C7類包裝箱的總數(shù)有一個特別的限制:這類箱子所占的空間〔厚度〕不能超過cm.試把包裝箱裝到平板車上,使得浪費(fèi)的空間最小.種類C1C2C3C4C5C6C7t/cm48.753.061.372.048.752.064.0w/kg200030001000500400020001000n/件8796648為在第節(jié)車上裝載第件包裝箱的解令下面我們建立該問題的整數(shù)線性規(guī)劃模型。1)約束條件兩節(jié)車的裝箱數(shù)不能超過需要裝的件數(shù),即:每節(jié)車可裝的長度不能超過車能提供的長度:每節(jié)車可裝的重量不超過車能夠承受的重量:對于C5,C6,C7類包裝箱的總數(shù)的特別限制:2)目標(biāo)函數(shù)浪費(fèi)的空間最小,即包裝箱的總厚度最大:3)整數(shù)線性規(guī)劃模型由上一步中的求解結(jié)果可以看出,4)模型求解運(yùn)用LINGO軟件求解得到:5)最優(yōu)解的分析說明的裝車方案,此時裝箱的總長度為cm,兩節(jié)車共裝箱的總長度為cm.即為最優(yōu)但是,上述求解結(jié)果只是其中一種最優(yōu)的裝車方案,即此答案并不唯一.0-1整數(shù)規(guī)劃是整數(shù)規(guī)劃的特殊情形,它要求線性規(guī)劃模型中的決策變量xij只能取值為0或1.單隱枚舉法,該方法是一種基于判斷條件〔過濾0-1整數(shù)規(guī)劃模型的求解目前并沒有非常好的算法,對于變量比較少的情形,我們可以采取簡條件〕的窮舉法.我們也可以利用LINGO和LINDO軟件包來求解0-1整數(shù)規(guī)劃模型.四、0-1整數(shù)規(guī)劃模型背包問題例4.有n個物品,編號為1,2,…,n,第i件物品重ai千克,價值為ci

元,現(xiàn)有一個載重量不超過大,應(yīng)如何裝載這些物品?a千克的背包,為了使裝入背包的物品總價值最用變量xi

表示物品i是否裝包,i=1,2,…,n,并令:解可得到背包問題的規(guī)劃模型為:指派問題例5.有n項(xiàng)任務(wù),由n個人來完成,每個人只能做一件,第i個人完成第j項(xiàng)任務(wù)要cij小時,如何合理安排時間才能使總用時最?。恳霠顟B(tài)變量xij

,并令:解那么總用時表達(dá)式為:可得到指派問題的規(guī)劃模型為:上面介紹的指派問題稱為指派問題的標(biāo)準(zhǔn)形式,還有許多其它的諸如人數(shù)與任務(wù)數(shù)不等、及但一般可以通過一些轉(zhuǎn)化,將其變?yōu)闃?biāo)準(zhǔn)形式.某人可以完成多個任務(wù),某人不可以完成任務(wù),某任務(wù)必須由某人完成等特殊要求的指派問題.對于標(biāo)準(zhǔn)形式的指派問題,我們可以利用匈牙利算法實(shí)現(xiàn)求解.它將指派問題中的系數(shù)構(gòu)成一個矩陣,利用矩陣上簡單的行和列變換,結(jié)合解的判定條件,實(shí)現(xiàn)求解〔見相關(guān)文獻(xiàn)〕.五、幾種常用的線性規(guī)劃模型問題1生產(chǎn)組織與方案問題工廠用種設(shè)備生產(chǎn)種產(chǎn)品在一個生產(chǎn)周期內(nèi),已知第臺設(shè)備只能工作個機(jī)時.工廠必須完成產(chǎn)品至少件.設(shè)備生產(chǎn)所需要的機(jī)時和成本分別為試建立相應(yīng)的數(shù)學(xué)模型,使設(shè)備能在計劃周期內(nèi)完成計劃但又使成本達(dá)到最低.1/12/202340模型為1/12/202341問題2工廠選址問題設(shè)有個需求點(diǎn)(城市,倉庫,商店等),有個可供選擇的建廠地址,每個地址最多可建一個工廠.在地址建立工廠的生產(chǎn)能力為在地址經(jīng)營工廠,單位時間的固定成本為需求點(diǎn)的需求量為從廠址到需求點(diǎn)的單位運(yùn)費(fèi)為問應(yīng)如何選擇廠址和安排運(yùn)輸計劃,使相應(yīng)的成本為最小.1/12/202342模型為1/12/202343上式中的意義是:在地址建廠,不在地址建廠.這樣的線性規(guī)劃稱為混合型的整數(shù)線性規(guī)劃.1/12/202344問題3設(shè)備購置和安裝問題工廠需要種設(shè)備設(shè)備的單價為工廠已有第種設(shè)備臺,今有資金元,可用于購置這些設(shè)備.該廠有處可安裝這些設(shè)備,處最多可安裝臺,將一臺設(shè)備安裝在處,經(jīng)濟(jì)效益為元,問應(yīng)如何購置和安裝這些設(shè)備,才能使總的經(jīng)濟(jì)效益最高.以表示設(shè)備在處安裝的臺數(shù),表示購置1/12/202345的臺數(shù),那么模型為1/12/2023461/12/202347問題4貨郎問題貨郎要到個地方去賣貨.已知兩個地方和之間的距離為如何選擇一條道路,使得貨郎每個地方走一遍后回到起點(diǎn),且所走的路徑最短.定義貨郎選擇的路線包含從到的路徑否則1/12/202348那么相應(yīng)的模型為1/12/202349問題5系統(tǒng)可靠性問題選擇個元件,組成一個并聯(lián)系統(tǒng).設(shè)第個位置所用的元件可從集合中挑選.對元件用表示元件在第個位置上的花費(fèi),表示其可靠性的概率,問應(yīng)如何配置各位置上的元件,使得系統(tǒng)的可靠性不小于且使總費(fèi)用最小.定義若元件且元件用在位置上若元件且元件不用在位置上1/12/202350總費(fèi)用為其可靠性為若記則上式可寫成相應(yīng)的模型轉(zhuǎn)化為規(guī)劃.1/12/202351模型為1/12/202352DVD在線租賃第二個問題的求解問題二的分析經(jīng)營本錢和會員的滿意度是被考慮的兩個相互制約的重要因素.在忽略郵寄本錢的前提下,經(jīng)營本錢主要表達(dá)為DVD的數(shù)量.我們主要考慮在會員向網(wǎng)站提供需求信息,且滿足一定要求的前提下,對給定數(shù)量DVD進(jìn)行分配決策,使得DVD的數(shù)量盡量小,會員滿意度最大.假設(shè)按照公歷月份進(jìn)行的租賃業(yè)務(wù),即會員無論兩次租賃還是一次租賃,必須在當(dāng)月內(nèi)完成DVD的租與還.同時假設(shè)網(wǎng)站對其會員進(jìn)行一次租賃業(yè)務(wù)時,只能向其提供3張該會員已經(jīng)預(yù)定的DVD,否那么不進(jìn)行租賃.經(jīng)觀察,可以認(rèn)為在線訂單中每個會員的預(yù)定DVD的表示偏好程度的數(shù)字反映了會員對所預(yù)定不同DVD的滿意程度,且當(dāng)會員租到其預(yù)定排序?yàn)?,2,3的三張DVD時,滿意度到達(dá)100%.會員沒有預(yù)定的DVD對其滿意度的奉獻(xiàn)為0.利用層次分析法,對此滿意指數(shù)的合理性進(jìn)行簡單分析.該問題要求根據(jù)現(xiàn)有的100種DVD的數(shù)量和當(dāng)前需要處理的1000位會員的在線訂單,制定分配策略,使得會員到達(dá)最大的滿意度.因而我們認(rèn)為只需對這些DVD進(jìn)行一次性分配,使得會員的總體滿意度到達(dá)最大.為此考慮建立優(yōu)化模型,進(jìn)行求解.問題二的模型及求解經(jīng)營本錢和會員的滿意度是被考慮的兩個相互制約的重要因素.在忽略郵寄本錢的前提下,經(jīng)營本錢主要表達(dá)為DVD的數(shù)量.我們主要考慮在會員向網(wǎng)站提供需求信息,且滿足一定要求的前提下,對給定數(shù)量DVD進(jìn)行分配決策,使得DVD的數(shù)量盡量小,會員滿意度最大.由此,可得問題二的0-1整數(shù)線性規(guī)劃模型如下:根據(jù)所得的0-1整數(shù)線性規(guī)劃模型,利用LINGO軟件進(jìn)行求解,我們得到了一組最優(yōu)分配方案.該組最優(yōu)解其目標(biāo)函數(shù)會員總體最大滿意度為91.56%,只有6人未成功租賃〔如:前30名會員中C0008被分配到DVD〕,其余994個會員全都得到了3張預(yù)定的DVD.六.非線性規(guī)劃模型

前面介紹了線性規(guī)劃問題,即目標(biāo)函數(shù)和約束條件都是線性函數(shù)的規(guī)劃問題,但在實(shí)際問題建模過程中,還常常會遇到另一類更一般的規(guī)劃問題,即目標(biāo)函數(shù)和約束條件中至少有一個是非線性函數(shù)的規(guī)劃問題,即非線性規(guī)劃問題.非線性規(guī)劃問題的標(biāo)準(zhǔn)形式為:非線性規(guī)劃模型按約束條件可分為以下三類:⑴無約束非線性規(guī)劃模型:⑵等式約束非線性規(guī)劃模型:⑶不等式約束非線性規(guī)劃模型:1)無約束的非線性規(guī)劃問題.針對上述三類非線性規(guī)劃模型,其常用求解的根本思路可歸納如下:

在下降迭代算法中,搜索方向起著關(guān)鍵的作用,而當(dāng)搜索方向確定后,步長又是決定算法好壞的重要因素.非線性規(guī)劃只含一個變量,即一維非線性規(guī)劃可以用一維搜索方法求得最優(yōu)解,一維搜索方法主要有進(jìn)退法和黃金分割法.二維的非線性規(guī)劃也可以像解線性規(guī)劃那樣用圖形求解.對于二維非線性規(guī)劃,使用搜索方法是要用到梯度的概念,最常用的搜索方法就是最速下降法.2)只有等式約束的非線性規(guī)劃問題通??捎孟ā⒗窭嗜粘俗臃ɑ蚍春瘮?shù)法,將其化為無約束問題求解.3)

具有不等式約束的非線性規(guī)劃問題解起來很復(fù)雜,求解這一類問題,通常將不等式化為等式約束,再將約束問題化為無約束問題,用線性逼近的方法將非線性規(guī)劃問題化為線性規(guī)劃問題.最速下降法是一種最根本的算法,它在最優(yōu)化方法中占有重要地位.最速下降法的優(yōu)點(diǎn)是工作量小,存儲變量較少,初始點(diǎn)要求不高;缺點(diǎn)是收斂慢,最速下降法適用于尋優(yōu)過程的前期迭代或作為間插步驟,當(dāng)接近極值點(diǎn)時,宜選用別種收斂快的算法.1.最速下降法〔共軛梯度法〕算法步驟:(一)無約束優(yōu)化問題的根本算法1/12/2023702.牛頓法算法步驟:如果f是對稱正定矩陣A的二次函數(shù),那么用牛頓法經(jīng)過一次迭代就可到達(dá)最優(yōu)點(diǎn),如不是二次函數(shù),那么牛頓法不能一步到達(dá)極值點(diǎn),但由于這種函數(shù)在極值點(diǎn)附近和二次函數(shù)很近似,因此牛頓法的收斂速度還是很快的.牛頓法的收斂速度雖然較快,但要求Hessian矩陣要可逆,要計算二階導(dǎo)數(shù)和逆矩陣,就加大了計算機(jī)計算量和存儲量.1/12/2023713.?dāng)M牛頓法1/12/2023721/12/202373返回1/12/202374Matlab優(yōu)化工具箱簡介求解優(yōu)化問題的主要函數(shù)1/12/2023752.優(yōu)化函數(shù)的輸入變量

使用優(yōu)化函數(shù)或優(yōu)化工具箱中其它優(yōu)化函數(shù)時,輸入變量見下表:1/12/2023763.優(yōu)化函數(shù)的輸出變量下表:1/12/2023774.控制參數(shù)options的設(shè)置(3)MaxIter:允許進(jìn)行迭代的最大次數(shù),取值為正整數(shù).Options中常用的幾個參數(shù)的名稱、含義、取值如下:(1) Display:顯示水平.取值為’off’時,不顯示輸出;取值為’iter’時,顯示每次迭代的信息;取值為’final’時,顯示最終結(jié)果.默認(rèn)值為’final’.(2) MaxFunEvals:允許進(jìn)行函數(shù)評價的最大次數(shù),取值為正整數(shù).1/12/202378例:opts=optimset(‘Display’,’iter’,’TolFun’,1e-8)該語句創(chuàng)立一個稱為opts的優(yōu)化選項(xiàng)結(jié)構(gòu),其中顯示參數(shù)設(shè)為’iter’,TolFun參數(shù)設(shè)為1e-8.控制參數(shù)options可以通過函數(shù)optimset創(chuàng)立或修改。命令的格式如下:(1)options=optimset(‘optimfun’)創(chuàng)立一個含有所有參數(shù)名,并與優(yōu)化函數(shù)optimfun相關(guān)的默認(rèn)值的選項(xiàng)結(jié)構(gòu)options.〔2〕options=optimset(‘param1’,value1,’param2’,value2,...)創(chuàng)立一個名稱為options的優(yōu)化選項(xiàng)參數(shù),其中指定的參數(shù)具有指定值,所有未指定的參數(shù)取默認(rèn)值.(3)options=optimset(oldops,‘param1’,value1,’param2’,value2,...)創(chuàng)立名稱為oldops的參數(shù)的拷貝,用指定的參數(shù)值修改oldops中相應(yīng)的參數(shù).返回1/12/202379用Matlab解無約束優(yōu)化問題其中〔3〕、〔4〕、〔5〕的等式右邊可選用〔1〕或〔2〕的等式右邊。函數(shù)fminbnd的算法基于黃金分割法和二次插值法,它要求目標(biāo)函數(shù)必須是連續(xù)函數(shù),并可能只給出局部最優(yōu)解。常用格式如下:〔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/12/202380

主程序?yàn)?f='2*exp(-x).*sin(x)';fplot(f,[0,8]);%作圖語句

[xmin,ymin]=fminbnd(f,0,8)f1='-2*exp(-x).*sin(x)';[xmax,ymax]=fminbnd(f1,0,8)1/12/202381例2對邊長為3米的正方形鐵板,在四個角剪去相等的正方形以制成方形無蓋水槽,問如何剪法使水槽的容積最大?解先編寫M文件如下:functionf=myfun(x)f=-(3-2*x).^2*x;主程序調(diào)用fminbnd:[x,fval]=fminbnd('fminbndtest',0,1.5);xmax=xfmax=-fval運(yùn)算結(jié)果為:xmax=0.5000,fmax=2.0000.即剪掉的正方形的邊長為米時水槽的容積最大,最大容積為2立方米.1/12/202382命令格式為:〔1〕x=fminunc〔fun,X0〕;或x=fminsearch〔fun,X0〕〔2〕x=fminunc〔fun,X0,options〕;或x=fminsearch〔fun,X0,options〕〔3〕[x,fval]=fminunc〔...〕;或[x,fval]=fminsearch〔...〕〔4〕[x,fval,exitflag]=fminunc〔...〕;或[x,fval,exitflag]=fminsearch〔5〕[x,fval,exitflag,output]=fminunc〔...〕;或[x,fval,exitflag,output]=fminsearch〔...〕2、多元函數(shù)無約束優(yōu)化問題標(biāo)準(zhǔn)型為:minF(X)1/12/202383[3]fminunc為中型優(yōu)化算法的步長一維搜索提供了兩種算法,由options中參數(shù)LineSearchType控制:LineSearchType=’quadcubic’(缺省值),混合的二次和三次多項(xiàng)式插值;LineSearchType=’cubicpoly’,三次多項(xiàng)式插使用fminunc和fminsearch可能會得到局部最優(yōu)解.說明:fminsearch是用單純形法尋優(yōu).fminunc的算法見以下幾點(diǎn)說明:[1]fminunc為無約束優(yōu)化提供了大型優(yōu)化和中型優(yōu)化算法。由options中的參數(shù)LargeScale控制:LargeScale=’on’(默認(rèn)值),使用大型算法LargeScale=’off’(默認(rèn)值),使用中型算法[2]fminunc為中型優(yōu)化算法的搜索方向提供了4種算法,由options中的參數(shù)HessUpdate控制:HessUpdate=’bfgs’〔默認(rèn)值〕,擬牛頓法的BFGS公式;HessUpdate=’dfp’,擬牛頓法的DFP公式;HessUpdate=’steepdesc’,最速下降法1/12/202384例3minf(x)=(4x12+2x22+4x1x2+2x2+1)*exp(x1)1、編寫M-文件fun1.m:functionf=fun1(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

2、輸入M文件如下:x0=[-1,1];x=fminunc('fun1',x0);y=fun1(x)

3、運(yùn)行結(jié)果:1/12/2023852.畫出Rosenbrock函數(shù)的等高線圖,輸入命令:contour(x,y,z,20)holdonplot(-1.2,2,'o');text(-1.2,2,'startpoint')plot(1,1,'o')text(1,1,'solution')1/12/2023863.用fminsearch函數(shù)求解輸入命令:f='100*(x(2)-x(1)^2)^2+(1-x(1))^2';[x,fval,exitflag,output]=fminsearch(f,[-1.22])運(yùn)行結(jié)果:fvalexitflag=1output=iterations:108funcCount:202algorithm:'Nelder-Meadsimplexdirectsearch'1/12/2023874.

用fminunc函數(shù)(1)建立M-文件fun1.m

functionf=fun1(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^2(2)求解主程序oldoptions=optimset('fminunc')options=optimset(oldoptions,'LargeScale','off')

options11=optimset(options,'HessUpdate','dfp')[x11,fval11,exitflag11,output11]=fminunc('fun1',[-1.22],options11)1/12/202388(二)有約束優(yōu)化問題的根本算法1/12/202389有約束非線性規(guī)劃的根本解法SUTM外點(diǎn)法SUTM內(nèi)點(diǎn)法〔障礙罰函數(shù)法〕1.罰函數(shù)法2.

近似規(guī)劃法1/12/202390

罰函數(shù)法罰函數(shù)法根本思想是通過構(gòu)造罰函數(shù)把約束問題轉(zhuǎn)化為一系列無約束最優(yōu)化問題,進(jìn)而用無約束最優(yōu)化方法去求解.這類方法稱為序列無約束最小化方法.簡稱為SUMT法.其一為SUMT外點(diǎn)法,其二為SUMT內(nèi)點(diǎn)法.1/12/202391其中T(X,M)稱為罰函數(shù),M稱為罰因子,帶M的項(xiàng)稱為罰項(xiàng),這里的罰函數(shù)只對不滿足約束條件的點(diǎn)實(shí)行懲罰:當(dāng)時,滿足各,故罰項(xiàng)=0,不受懲罰.當(dāng)時,必有的約束條件,故罰項(xiàng)>0,要受懲罰.SUTM外點(diǎn)法1/12/202392罰函數(shù)法的缺點(diǎn)是:每個近似最優(yōu)解Xk往往不是容許解,而只能近似滿足約束,在實(shí)際問題中這種結(jié)果可能不能使用;在解一系列無約束問題中,計算量太大,特別是隨著Mk的增大,可能導(dǎo)致錯誤.1、任意給定初始點(diǎn)X0,取M1>1,給定允許誤差,令k=1;2、求無約束極值問題的最優(yōu)解,設(shè)為Xk=X(Mk),即;3、假設(shè)存在,使,那么取Mk>M()令k=k+1返回〔2〕,否那么,停止迭代.得最優(yōu)解.計算時也可將收斂性判別準(zhǔn)那么改為.

SUTM外點(diǎn)法(罰函數(shù)法)的迭代步驟1/12/202393SUTM內(nèi)點(diǎn)法〔障礙函數(shù)法〕1/12/202394

內(nèi)點(diǎn)法的迭代步驟1/12/202395

近似規(guī)劃法的根本思想:將問題中的目標(biāo)函數(shù)和約束條件近似為線性函數(shù),并對變量的取值范圍加以限制,從而得到一個近似線性規(guī)劃問題,再用單純形法求解之,把其符合原始條件的最優(yōu)解作為原問題的解的近似.近似規(guī)劃法每得到一個近似解后,都從這點(diǎn)出發(fā),重復(fù)以上步驟.這樣,通過求解一系列線性規(guī)劃問題,產(chǎn)生一個由線性規(guī)劃最優(yōu)解組成的序列,經(jīng)驗(yàn)說明,這樣的序列往往收斂于非線性規(guī)劃問題的解。1/12/202396

近似規(guī)劃法的算法步驟如下1/12/2023971/12/202398用MATLAB軟件求解,其輸入格式如下:1. x=quadprog(H,C,A,b);2. x=quadprog(H,C,A,b,Aeq,beq);3. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);4. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0);5. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0,options);6. [x,fval]=quaprog(...);7. [x,fval,exitflag]=quaprog(...);8. [x,fval,exitflag,output]=quaprog(...);1.二次規(guī)劃1/12/202399例1

minf(x1,x2)=-2x1-6x2+x12-2x1x2+2x22s.t.x1+x2≤2-x1+2x2≤2x1≥0,x2≥01、寫成標(biāo)準(zhǔn)形式:2、輸入命令:

H=[1-1;-12];c=[-2;-6];A=[11;-12];b=[2;2];Aeq=[];beq=[];VLB=[0;0];VUB=[];[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)3、運(yùn)算結(jié)果為:

s.t.1/12/20231001.首先建立M文件fun.m,定義目標(biāo)函數(shù)F〔X〕:functionf=fun(X);f=F(X);其中X為n維變元向量,G(X)與Ceq(X)均為非線性函數(shù)組成的向量,其它變量的含義與線性規(guī)劃、二次規(guī)劃中相同.用Matlab求解上述問題,根本步驟分三步:2.一般有約束非線性規(guī)劃1/12/20231013.建立主程序.非線性規(guī)劃求解的函數(shù)是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(...)輸出極值點(diǎn)M文件迭代的初值參數(shù)說明變量上下限1/12/2023102注意:[1]fmincon函數(shù)提供了大型優(yōu)化算法和中型優(yōu)化算法。默認(rèn)時,假設(shè)在fun函數(shù)中提供了梯度〔options參數(shù)的GradObj設(shè)置為’on’〕,并且只有上下界存在或只有等式約束,fmincon函數(shù)將選擇大型算法。當(dāng)既有等式約束又有梯度約束時,使用中型算法。[2]fmincon函數(shù)的中型算法使用的是序列二次規(guī)劃法。在每一步迭代中求解二次規(guī)劃子問題,并用BFGS法更新拉格朗日Hessian矩陣。[3]fmincon函數(shù)可能會給出局部最優(yōu)解,這與初值X0的選取有關(guān)。1/12/20231031、寫成標(biāo)準(zhǔn)形式:

s.t.

2x1+3x26s.tx1+4x25x1,x20例21/12/20231042、先建立M-文件fun3.m:

functionf=fun3(x);f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^23、再建立主程序youh2.m:x0=[1;1];A=[23;14];b=[6;5];Aeq=[];beq=[];VLB=[0;0];VUB=[];[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB)4、運(yùn)算結(jié)果為:1/12/20231051.先建立M文件fun4.m,定義目標(biāo)函數(shù):

functionf=fun4(x);f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);x1+x2=0s.t.1.5+x1x2-x1-x20-x1x2–10

0例32.再建立M文件mycon.m定義非線性約束:function[g,ceq]=mycon(x)g=[x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];1/12/20231063.主程序youh3.m為:x0=[-1;1];A=[];b=[];Aeq=[11];beq=[0];vlb=[];vub=[];[x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb,vub,'mycon')3.運(yùn)算結(jié)果為:

1/12/2023107例4

1.先建立M-文件fun.m定義目標(biāo)函數(shù):functionf=fun(x);f=-2*x(1)-x(2);2.再建立M文件mycon2.m定義非線性約束:function[g,ceq]=mycon2(x)g=[x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7];1/12/2023108為:x0=[3;2.5];VLB=[00];VUB=[510];[x,fval,exitflag,output]=fmincon('fun',x0,[],[],[],[],VLB,VUB,'mycon2')1/12/20231094.運(yùn)算結(jié)果為:x=exitflag=1output=iterations:4funcCount:17stepsize:1algorithm:[1x44char]firstorderopt:[]cgiterations:[]1/12/2023110非線性規(guī)劃建模實(shí)例(一):供給與選址某公司有6個建筑工地要開工,每個工地的位置〔用平面坐標(biāo)系a,b表示,距離單位:千米〕及水泥日用量d(噸)由下表給出。目前有兩個臨時料場位于A(5,1),B(2,7),日儲量各有20噸。假設(shè)從料場到工地之間均有直線道路相連?!?〕試制定每天的供給方案,即從A,B兩料場分別向各工地運(yùn)送多少噸水泥,使總的噸千米數(shù)最小?!?〕為了進(jìn)一步減少噸千米數(shù),打算舍棄兩個臨時料場,改建兩個新的,日儲量各為20噸,問應(yīng)建在何處,節(jié)省的噸千米數(shù)有多大?1/12/2023111〔一〕、建立模型

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

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

1/12/2023113計算結(jié)果為:x=[3.00005.00000.00007.00000.00001.00000.00000.00004.00000.00006.000010.0000]’1/12/2023114〔三〕改建兩個新料場的情形

改建兩個新料場,要同時確定料場的位置(xj,yj)和運(yùn)送量Xij,在同樣條件下使總噸千米數(shù)最小.這是非線性規(guī)劃問題。非線性規(guī)劃模型為:1/12/2023115設(shè)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定義目標(biāo)函數(shù)。(2)取初值為線性規(guī)劃的計算結(jié)果及臨時料場的坐標(biāo):x0=[35070100406105127]';編寫主程序gying2.m.1/12/2023116(3)計算結(jié)果為:10.07076.38754.39435.75117.1867]’exitflag=11/12/2023117(4)假設(shè)修改主程序gying2.m,取初值為上面的計算結(jié)果:x0=[3.00005.00000.07077.000000.9293003.929306.000010.07076.38754.39435.75117.1867]’得結(jié)果為:x=[3.00005.00000.30947.00000.01080.6798003.690605.989210.32025.53694.91945.82917.2852]’exitflag=1總的噸千米數(shù)比上面結(jié)果略優(yōu).(5)假設(shè)再取剛得出的結(jié)果為初值,卻計算不出最優(yōu)解.1/12/2023118(6)假設(shè)取初值為:x0=[35471000005115.63484.86877.24797.7499]',那么計算結(jié)果為:x=[3.00005.00004.00007.00001.0000000005.000011.00005.69594.92857.25007.7500]’exitflag=1總的噸千米數(shù)89.8835比上面結(jié)果更好.通過此例可看出fmincon函數(shù)在選取初值上的重要性.1/12/2023119非線性規(guī)劃建模實(shí)例(二)高速公路問題

1/12/2023120A城和B城之間準(zhǔn)備建一條高速公路,B城位于A城正南20公里和正東30公里交匯處,它們之間有東西走向連綿起伏的山脈。公路造價與地形特點(diǎn)有關(guān),以下圖給出了整個地區(qū)的大致地貌情況,顯示可分為三條沿東西方向的地形帶。你的任務(wù)是建立一個數(shù)學(xué)模型,在給定三種地形上每公里的建造費(fèi)用的情況下,確定最廉價的路線。圖中直線AB顯然是路徑最短的,但不一定最廉價。而路徑ARSB過山地的路段最短,但是否是最好的路徑呢?你怎樣使你的模型適合于下面兩個限制條件的情況呢?1.當(dāng)?shù)缆忿D(zhuǎn)彎是,角度至少為1400。2.道路必須通過一個地點(diǎn)〔如P〕。1/12/20231211/12/2023122問題分析

在建設(shè)高速公路時,總是希望建造費(fèi)用最小。如果要建造的起點(diǎn)、終點(diǎn)在同一地貌中,那么最正確路線那么是兩點(diǎn)間連接的線段,這樣費(fèi)用那么最省。因此本問題是一個典型的最優(yōu)化問題,以建造費(fèi)用最小為目標(biāo),需要做出的決策那么是確定在各個地貌交界處的集合點(diǎn)。1/12/2023123變量說明

xi:在第i個集合點(diǎn)上的橫坐標(biāo)〔以左下角為直角坐標(biāo)原點(diǎn)〕,i=1,2,…,4;x5=30〔指目的地B點(diǎn)的橫坐標(biāo)〕

li:第i段南北方向的長度〔i=1,…,5〕Si:在第i段上地所建公路的長度〔i=1,2,…,5〕。由問題分析可知,1/12/2023124C1:平原每公里的造價〔單位:萬元/公里〕C2:高地每公里的造價〔單位:萬元/公里〕C3:高山每公里的造價〔單位:萬元/公里〕1/12/2023125模型假設(shè)1、假設(shè)在相同地貌中修改高速公路,建造費(fèi)用與公路長度成正比;2、假設(shè)在相同地貌中修改高速為直線。在理論上,可以使得建造費(fèi)用最少,當(dāng)然實(shí)際中一般達(dá)不到。1/12/2023126模型建立

在A城與B城之間建造一條高速公路的問題可以轉(zhuǎn)化為下面的非線性規(guī)劃模型。優(yōu)化目標(biāo)是在A城與B城之間建造高速公路的費(fèi)用。1/12/2023127模型求解

這里采用Matlab編程求解。模型求解時,分別取Ci如下。平原每公里的造價C1=400萬元/公里;高地每公里的造價C2=800萬元/公里;高山每公里的造價C3=1200萬元/公里。

〔注意:實(shí)際建模時必須查找資料來確定參數(shù)或者題目給定有數(shù)據(jù)〕1/12/2023128模型結(jié)果及分析

通過求解可知,為了使得建造費(fèi)用最小。建造地點(diǎn)的選擇宜采取以下結(jié)果。建造總費(fèi)用為億元??傞L度為公里。

1/12/2023129求解模型的主程序文件model_p97

functionx=model_p97clearallglobalCLC=[4008001200];L=[44444];x=fmincon('objfun_97',[1,1,1,1],[],[],[],[],zeros(1,4),ones(1,4)*30,'mycon_p97');optans=objfun_97(x)C=ones(3,1);len=objfun_97(x)

1/12/2023130模型中描述目標(biāo)函數(shù)的Matlab程序

functionobj=objfun_97(x)globalCLobj=C(1)*sqrt(L(1)^2+x(1)^2)+C(2)*sqrt(L(2)^2+(x(2)-x(1))^2)+...C(3)*sqrt(L(3)^2+(x(3)-x(2))^2)+C(2)*sqrt(L(4)^2+(x(4)-x(3))^2)+...C(1)*sqrt(L(5)^2+(30-x(4))^2);

1/12/2023131描述約束條件的Matlab函數(shù)

function[c,ceq]=mycon_p97(x)c(1)=x(1)-x(2);c(2)=x(2)-x(3);c(3)=x(3)-x(4);c(4)=x(4)-30;ceq=[];1/12/2023132主程序運(yùn)行結(jié)果model_p97optans

=2.2584e+004len

=

ans

=

1/12/2023133七、多目標(biāo)規(guī)劃模型

在許多實(shí)際問題中,衡量一個方案的好壞標(biāo)準(zhǔn)往往不止一個,例如設(shè)計一個導(dǎo)彈,既要射程最遠(yuǎn),又要燃料最省,還要精度最高.這一類問題統(tǒng)稱為多目標(biāo)最優(yōu)化問題或多目標(biāo)規(guī)劃問題.我們先來看一個生產(chǎn)方案的例子.我們希望購置DVD的總數(shù)量最小,即:由此,可以得到問題三的雙目標(biāo)整數(shù)線性規(guī)劃模型如下:表6當(dāng)時最小購置量的值DVD編號D01D02D03D04D05D06D07D08D09D10最少購買量14211724121719212214DVD編號D11D12D13D14D15D16D17D18D19D20最少購買量18181717172418161823DVD編號D21D22D23D24D25D26D27D28D29D30最少購買量20182214181715121624DVD編號D31D32D33D34D35D36D37D38D39D40最少購買量19222019222213171717DVD編號D41D42D43D44D45D46D47D48D49D50最少購買量32201621221620152020續(xù)上表DVD編號D51D52D53D54D55D56D57D58D59D60最少購買量24171917191819172021DVD編號D61D62D63D64D65D66D67D68D69D70最少購買量16191920171917212019DVD編號D71D72D73D74D75D76D77D78D79D80最少購買量21221520151412171917DVD編號D81D82D83D84D85D86D87D88D89D90最少購買量18101412211322151317DVD編號D91D92D93D94D95D96D97D98D99D100最少購買量24171514251522201122

我們利用規(guī)劃模型求得每種DVD的購置量后,需要對其進(jìn)行可行性校驗(yàn),測試此結(jié)果是否可以滿足一個月內(nèi)比例為95%的會員得到他想看的DVD,且具有盡可能大的總體滿意度.校驗(yàn)方法:〔一〕根據(jù)訂單和求得的DVD購置數(shù)量,利用問題二的規(guī)劃模型進(jìn)行第一次分配,對分配情況:租賃的會員,DVD的分配情況,剩余的各種DVD數(shù)量作記錄;同時將已租賃的會員在滿意指數(shù)矩陣的指數(shù)全變?yōu)?,即不考慮對其進(jìn)行第二次分配.〔二〕隨機(jī)從第一次得到DVD的會員中抽取60%,將這局部人所還回的DVD與第一次分配余下的DVD合在一起,作為第二次分配時各種DVD的現(xiàn)有量.然后,利用問題二的0-1線性規(guī)劃模型對第一次未分配到DVD的會員進(jìn)行第二次分配;〔三〕統(tǒng)計出經(jīng)過兩次分配后,得到DVD的會員的比例,假設(shè)大于95%,那么此次分配成功.利用這種算法進(jìn)行屢次隨機(jī)模擬,假設(shè)大多數(shù)情況下可以使得到DVD的會員大于95%,那么認(rèn)為模型三是合理的.校驗(yàn)結(jié)果:因?yàn)槊看螜z驗(yàn)需時約1小時,我們只對問題三求得的結(jié)果進(jìn)行了7次模擬,其中6次符合要求〔觀看比例大于95%〕.下面給出7次模擬得到的觀看比例〔表7〕:表77次模擬結(jié)果每次的觀看比例列表驗(yàn)證次數(shù)1234567觀看比例95.8%96.6%93.4%95.3%95.9%96.1%95.7%八、Lingo入門1/12/20231611在Lingo中使用Lindo模型Lindo與Lingo都是LINDO系統(tǒng)公司開發(fā)的專門用于求解最優(yōu)化問題的軟件包。與Lindo相比,Lingo軟件主要具有兩大優(yōu)點(diǎn):〔1〕除具有LINDO的全部功能外,還可用于求解非線性規(guī)劃問題,包括非線性整數(shù)規(guī)劃問題?!?〕LINGO包含了內(nèi)置的建模語言,允許以簡練、直觀的方式描述較大規(guī)模的優(yōu)化問題,模型中所需的數(shù)據(jù)可以以一定格式保存在獨(dú)立的文件中。1/12/20231621在Lingo中使用Lindo模型完全支持Lindo模型程序的書寫格式。在模型窗口中選擇菜單命令“File|Open(F3)〞注意在以前的版本中〔如〕,“File|ImportLINDOFile(F12)〞命令可以將Lindo模型文件轉(zhuǎn)化成Lingo模型。這個菜單命令的意思是“導(dǎo)入Lindo文件〞〔在中已無必要,所以該命令已經(jīng)被取消了〕。1/12/2023163·后綴“l(fā)dt〞表示LINGO數(shù)據(jù)文件;·后綴“l(fā)tf〞表示LINGO命令腳本文件;·后綴“l(fā)gr〞表示LINGO報告文件;·后綴“mps〞表示MPS〔數(shù)學(xué)規(guī)劃系統(tǒng)〕格式的模型文件;·“*.*〞表示所有文件。后綴“l(fā)g4〞表示LINGO格式的模型文件,是一種特殊的二進(jìn)制格式文件,保存了我們在模型窗口中能夠看到的所有文件和其他對象及其格式信息,只有LINGO能讀出它,用其他系統(tǒng)翻開這種文件時會出現(xiàn)亂碼;后綴“l(fā)ng〞表示文本格式的模型文件,并且以這個格式保存模型時LINGO將給出警告,因?yàn)槟P椭械母袷叫畔ⅰ踩缱煮w、顏色、嵌入對象等〕將會喪失;LINDO格式的模型文件1/12/20231642用Lingo求解二次規(guī)劃〔QP〕模型例2.1某廠生產(chǎn)的一種產(chǎn)品有甲、乙兩個牌號,討論在產(chǎn)銷平衡的情況下如何確定各自的產(chǎn)量,使總的利潤最大。所謂產(chǎn)銷平衡指工廠的產(chǎn)量等于市場上的銷量,沒有賣不出去的產(chǎn)品的情況。顯然,銷售總利潤既取決于兩種牌號產(chǎn)品的銷量和〔單件〕價格,也依賴于產(chǎn)量和〔單件〕本錢,按照市場經(jīng)濟(jì)規(guī)律,甲的價格p1固然會隨其銷量x1的增長而降低,同時乙的銷量x2的增長也會使甲的價格有稍微的下降,可以簡單地假設(shè)價格與銷量成線性關(guān)系,即p1=b1-a11x1-a12x2,b1,a11,a12>0,a11>a12;類似地,乙的價格p2遵循同樣的規(guī)律,即有p2=b2-a21x1-a22x2,b2,a21,a22>0,a22>a21.例如,假定實(shí)際中b1=100,a11=1,a12,b2=280;a21,a22=2。此外,假設(shè)工廠的生產(chǎn)能力有限,兩種牌號產(chǎn)品的產(chǎn)量之和不可能超過100件,且甲的產(chǎn)量不可能超過乙的產(chǎn)量的兩倍,甲乙的單件生產(chǎn)本錢分別是q1=2和q2=3(假定為常數(shù))。求甲、乙兩個牌號的產(chǎn)量x1,x2使總利潤最大。1/12/2023165優(yōu)化模型

決策變量:決策變量就是甲、乙兩個牌號的產(chǎn)量〔也是銷量〕x1,x2目標(biāo)函數(shù):顯然,目標(biāo)函數(shù)就是總利潤z(x1,x2),即 z(x1,x2)=〔p1-q1〕x1+〔p2-q2〕x2=〔100-x1-2-2〕x1+〔280-1- 2x2-3〕x2=98x1+277x2-x12-0.3x1x2-2x22約束條件:題中假設(shè)工廠的生產(chǎn)能力有限,兩種產(chǎn)品的產(chǎn)量之和不可能超過100件,且產(chǎn)品甲的產(chǎn)量不可能超過乙的產(chǎn)量的兩倍。寫成數(shù)學(xué)表達(dá)式,就是x1+x2≤100,x1≤2x21/12/2023166綜上所述maxz=98x1+277x2-x12-0.3 x1x2-2x22〔〕

s.t. x1+x2≤100〔〕x1≤2x2〔〕x1,x2≥0〔〕1/12/2023167LINGO中的變量名由字母和數(shù)字組成,但必須以字母開頭,長度不能超過32個字符〔只能是英文字符,不能含有中文字符〕行號、“TITLE〞語句和注釋語句是LINGO中唯一可以使用漢字字符的地方行號必須以字母或下劃線開頭;LINGO中不區(qū)分大小寫字母LINGO中已假定所有變量非負(fù)1/12/2023168通過“LINGO|Generate|DisplayModel(Ctrl+G)〞命令可以看到完整的模型以及每行語句對應(yīng)的行號了。1/12/2023169可使用“LINGO|Picture〞命令檢查模型中的簡單錯誤,該命令將目標(biāo)函數(shù)和約束表達(dá)式中的非零系數(shù)通過列表〔或圖形〕顯示出來。1/12/2023170用“LINGO|Solve〔Ctrl+S〕〞命令來運(yùn)行這個程序?!踩绻胍私膺\(yùn)行狀態(tài)窗口中各項(xiàng)的含義,可先點(diǎn)擊工具欄上的圖標(biāo),再點(diǎn)擊運(yùn)行狀態(tài)窗口,屏幕上自動彈出運(yùn)行狀態(tài)窗口的幫助信息。〕1/12/2023171求解結(jié)果報告窗口1/12/20231723敏感性分析敏感性分析的作用是給出“Rangesinwhichthebasisisunchanged〞,即研究當(dāng)目標(biāo)函數(shù)的系數(shù)和約束右端項(xiàng)在什么范圍變化〔此時假定其他系數(shù)保持不變〕時,最優(yōu)基〔矩陣〕保持不變。注意:這里L(fēng)INGO不詢問是否進(jìn)行敏感性分析。如果需要進(jìn)行敏感性分析,必須用“LINGO|Options〞命令翻開系統(tǒng)選項(xiàng)對話框,在“GeneralSolver〞標(biāo)簽下的“DualComputations〞下拉列表中選中“Prices&Range〞,再按下“OK〞按鈕激活敏感性分析功能。修改了系統(tǒng)選項(xiàng)后,以后只需調(diào)用“LINGO|Range〞命令即可進(jìn)行敏感性分析了。1/12/2023173修改運(yùn)行時的內(nèi)存限制激活敏感性分析1/12/2023174 例3.1一奶制品加工廠用牛奶生產(chǎn)A1,A2兩種奶制品,1桶牛奶可以在甲車間用12h加工成3kgA1,或者在乙車間用8h加工成4kgA2。根據(jù)市場需求,生產(chǎn)出的A1,A2全部能售出,且每千克A1獲利24元,每千克A2獲利16元?,F(xiàn)在加工廠每天能得到50桶牛奶的供給,每天正式工人總的勞動時間為480h,并且甲車間的設(shè)備每天至多能加工100kgA1,乙車間的設(shè)備的加工能力可以認(rèn)為沒有上限限制〔即加工能力足夠大〕。試為該廠制定一個生產(chǎn)方案,使每天獲利最大,并進(jìn)一步討論以下3個附加問題: 〔1〕假設(shè)用35元可以買到1桶牛奶,是否作這項(xiàng)投資?假設(shè)投資,每天最多購置多少桶牛奶? 〔2〕假設(shè)可以聘用臨時工人以增加勞動時間,付給臨時工人的工資最多是每小時幾元? 〔3〕由于市場需求變化,每千克A1的獲利增加到30元,是否應(yīng)該改變生產(chǎn)方案?1/12/2023175優(yōu)化模型 決策變量: 設(shè)每天用x1桶牛奶生產(chǎn)A1,用x2桶牛奶生產(chǎn)A2 目標(biāo)函數(shù): 設(shè)每天獲利為z〔元〕,x1桶牛奶生產(chǎn)3x1(kg)A1,獲利24×3x1,x2桶牛奶生產(chǎn)4x2(kg)A2,獲利16×4x1,故z=72x1+64x2. 約束條件: 原料供給:生產(chǎn)A1,A2的原料〔牛奶〕總量不得超過每 天的供給,即x1+x2≤50〔桶〕; 勞動時間:生產(chǎn)A1,A2的總加工時間不得超過每天正式 工人總的勞動時間,即12x1+8x2≤480〔h〕; 設(shè)備能力:A1的產(chǎn)量不得超過甲車間設(shè)備每天的加工 能力,即3x1≤100; 非負(fù)約束:x1,x2均不能為負(fù)值。1/12/2023176綜上所述Maxz=72x1+64x2;s.t.x1+x2≤50,12x1+8x2≤480,3x1≤100, x1,x2≥0線性規(guī)劃模型〔LP〕1/12/2023177模型分析與假設(shè)

比例性可加性連續(xù)性xi對目標(biāo)函數(shù)的“奉獻(xiàn)〞與xi取值成正比xi對約束條件的“奉獻(xiàn)〞與xi取值成正比xi對目標(biāo)函數(shù)的“奉獻(xiàn)〞與xj取值無關(guān)xi對約束條件的“奉獻(xiàn)〞與xj取值無關(guān)xi取值連續(xù)A1,A2每公斤的獲利是與各自產(chǎn)量無關(guān)的常數(shù)每桶牛奶加工出A1,A2的數(shù)量和時間是與各自產(chǎn)量無關(guān)的常數(shù)A1,A2每公斤的獲利是與相互產(chǎn)量無關(guān)的常數(shù)每桶牛奶加工出A1,A2的數(shù)量和時間是與相互產(chǎn)量無關(guān)的常數(shù)加工A1,A2的牛奶桶數(shù)是實(shí)數(shù)線性規(guī)劃模型1/12/2023178模型求解

圖解法

x1x20ABCDl1l2l3l4l5約束條件目標(biāo)函數(shù)

Z=0Z=2400Z=3600z=c(常數(shù))~等值線c在B(20,30)點(diǎn)得到最優(yōu)解目標(biāo)函數(shù)和約束條件是線性函數(shù)可行域?yàn)橹本€段圍成的凸多邊形目標(biāo)函數(shù)的等值線為直線最優(yōu)解一定在凸多邊形的某個頂點(diǎn)取得。1/12/2023179Lingo優(yōu)化模型這是一個〔連續(xù)〕線性規(guī)劃〔LP〕問題1/12/2023180“LINGO|Solve〞求解結(jié)果報告〔1〕假設(shè)用35元可以買到1桶牛奶,是否作這項(xiàng)投資?假設(shè)投資,每天最多購置多少桶牛奶?〔2〕假設(shè)可以聘用臨時工人以增加勞動時間,付給臨時工人的工資最多是每小時幾元?〔3〕由于市場需求變化,每千克A1的獲利增加到30元,是否應(yīng)該改變生產(chǎn)方案?“LINGO|Range〞敏感性分析1/12/2023181結(jié)論應(yīng)該批準(zhǔn)用35元買1桶牛奶的投資,但每天最多購置10桶牛奶。可以用低于2元/h的工資聘用臨時工人以增加勞動時間,但最多增加。假設(shè)每千克A1的獲利增加到30元,那么x1系數(shù)變?yōu)?0×3=90,在允許的范圍內(nèi),所以不應(yīng)改變生產(chǎn)方案,但最優(yōu)值變?yōu)?0×20+64×30=3720。1/12/2023182 例SAILCO公司需要決定下四個季度的帆船生產(chǎn)量。下四個季度的帆船需求量分別是40條,60條,75條,25條,這些需求必須按時滿足。每個季度正常的生產(chǎn)能力是40條帆船,每條船的生產(chǎn)費(fèi)用為400美元。如果加班生產(chǎn),每條船的生產(chǎn)費(fèi)用為450美元。每個季度末,每條船的庫存費(fèi)用為20美元,假定生產(chǎn)提前期為0,初始庫存為10條船。如何安排生產(chǎn)可使總費(fèi)用最小?4在LINGO中使用集合1/12/2023183

DEM——需求量,RP——正常生產(chǎn)的產(chǎn)量,OP——加班生產(chǎn)的產(chǎn)量,INV——庫存量

目標(biāo)函數(shù):

約束條件: 能力限制RP(I)≤40,I=1,2,3,4 產(chǎn)品數(shù)量的平衡方程 INV〔I〕=INV〔I-1〕+RP〔I〕+OP〔I〕-DEM〔I〕I=1,2,3,4 INV〔0〕=10; 變量的非負(fù)約束1/12/2023184Lingo優(yōu)化模型集合屬性集合的屬性相當(dāng)于以集合的元素為下標(biāo)的數(shù)組1/12/2023185Lingo模型的根本要素〔1〕集合段〔SETS〕〔2〕目標(biāo)與約束段〔3〕數(shù)據(jù)段〔DATA〕:作用在于對集合的屬性〔數(shù) 組〕輸入必要的常數(shù)數(shù)據(jù)。格式為: attribute(屬性)=value_list(常數(shù)列表); 常數(shù)列表〔value_list〕中數(shù)據(jù)之間可以用逗號“,〞分 開,也可以用空格分開〔回車的作用也等價于一個空 格〕 “變量名=?;〞——運(yùn)行

溫馨提示

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

評論

0/150

提交評論