亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MATLAB在運(yùn)籌學(xué)中的應(yīng)用

        2015-09-10 07:22:44張建勇于愷李友朋張翠艷
        考試周刊 2015年68期

        張建勇 于愷 李友朋 張翠艷

        摘 ? ?要: 本文根據(jù)運(yùn)籌學(xué)的學(xué)科特點及在教學(xué)中存在的不足,提出了在教學(xué)實踐中引入Matlab作為教學(xué)輔助手段,主要闡述MATLAB在線性規(guī)劃、目標(biāo)規(guī)劃、二次規(guī)劃中的應(yīng)用,實例驗證了Matlab在求解運(yùn)籌學(xué)問題時的高效性和準(zhǔn)確性。

        關(guān)鍵詞: MATLAB ? ?運(yùn)籌學(xué) ? ?線性規(guī)劃 ? ?目標(biāo)規(guī)劃 ? ?二次規(guī)劃

        一、引言

        運(yùn)籌學(xué)是利用現(xiàn)代數(shù)學(xué)研究各種廣義資源的運(yùn)用、籌劃與相關(guān)決策等問題的一門新興學(xué)科。該課程的主要特點是運(yùn)用量化的分析方法,對有限的資源進(jìn)行統(tǒng)籌安排,其研究成果為決策者提供科學(xué)依據(jù)。由于很多問題來源于實際的生產(chǎn)和管理活動,因此在建立數(shù)學(xué)模型時往往會涉及很多變量和約束條件,使得所建立的模型較復(fù)雜。如何求解這類模型成為解決問題的關(guān)鍵。

        在運(yùn)籌學(xué)的教學(xué)中,盡管目前的教學(xué)改革使得教學(xué)手段豐富多樣,但這些教學(xué)手段只是將教材內(nèi)容搬運(yùn)到多媒體課件上。加之多媒體的教學(xué)節(jié)奏較快,使得原本生動的教學(xué)內(nèi)容,只側(cè)重于理論分析和公式推導(dǎo),忽略計算過程和結(jié)果,導(dǎo)致課堂教學(xué)效果差。手工推演和計算運(yùn)籌學(xué)中實例的可行性太低,成熟的商業(yè)軟件能夠為運(yùn)籌學(xué)教學(xué)提供較好的輔助作用。

        目前最好的方法是借助于計算機(jī)和商業(yè)軟件進(jìn)行求解,常見的軟件主要有LINGO、LINDO和MATLAB等[1]。LINGO是美國LINDO系統(tǒng)公司研發(fā)的,常用于求解線性規(guī)劃及一些簡單的非線性規(guī)劃問題。該軟件在處理復(fù)雜的非線性規(guī)劃問題時存在一定的局限性。1984年美國MathWorks公司開發(fā)的MATLAB軟件,已經(jīng)發(fā)展成國際上應(yīng)用最廣泛的科學(xué)與工程計算軟件之一。其中包含與運(yùn)籌學(xué)緊密相關(guān)的優(yōu)化工具箱,該工具箱的基本功能有:求解線性規(guī)劃、非線性規(guī)劃、動態(tài)規(guī)劃、目標(biāo)規(guī)劃及多目標(biāo)規(guī)劃等問題,在求解各類優(yōu)化問題時都有著無可替代的優(yōu)勢[2]。

        本文通過線性規(guī)劃、二次規(guī)劃和目標(biāo)規(guī)劃三個方面,結(jié)合具體實例,說明MATLAB在求解運(yùn)籌學(xué)問題時的易操作性與直觀性。

        二、MATLAB在線性規(guī)劃方面的應(yīng)用

        線性規(guī)劃是最優(yōu)化中的一個分支,是最優(yōu)化理論的基礎(chǔ)性內(nèi)容。有關(guān)線性規(guī)劃問題的建模、求解和應(yīng)用性研究,構(gòu)成了運(yùn)籌學(xué)中線性規(guī)劃[3]分支。在MATLAB的優(yōu)化工具箱中,線性規(guī)劃問題必須表示為如下[4]:

        對于一般的線性規(guī)劃問題,可以根據(jù)線性規(guī)劃的標(biāo)準(zhǔn)化方法,將其轉(zhuǎn)換為模型(1)的形式。求解模型(1)的MATLAB命令函數(shù)為linprog(),完整的調(diào)用格式形式為:

        [x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)

        其中,f為目標(biāo)函數(shù)中系數(shù)向量的轉(zhuǎn)置,是一維行向量,A、b滿足不等式Ax≤b,若沒有不等式約束,則A=[],b=[];Aeq、beq滿足等式約束Aeq=beq,若沒有,則取Aeq=[],beq=[];lb、ub滿足,若無界,可令lb=[],ub=[];x0為初始值;options為包含算法控制參數(shù)的結(jié)構(gòu)變量,可以通過optimset命令對這些具體的控制參數(shù)進(jìn)行設(shè)置。

        輸出參數(shù)x為線性規(guī)劃問題的最優(yōu)解,fval為線性規(guī)劃問題在最優(yōu)解x處的函數(shù)值,exitflag返回的是優(yōu)化函數(shù)計算終止時的狀態(tài)指示,說明算法終止的原因,當(dāng)其值為1時說明已經(jīng)收斂到x,當(dāng)x取其他值時,其物理意義如表1。

        表1 ? ?Exitflag的反饋值與對應(yīng)的物理意義

        output輸出優(yōu)化信息,lambda為lagrange乘子,它體現(xiàn)某個約束的有效性。在使用linprog()命令時,必須嚴(yán)格遵循它的調(diào)用格式(1)。比如下面的線性規(guī)劃問題:

        max z=x■+x■s.t. ? ?x■-2x■≤4 ? ? ? ? x■+2x■≤8 ? ? ? ? x■,x■≥0

        程序如下:

        clc;clear;

        f=[-1;-1]; %目標(biāo)函數(shù),為轉(zhuǎn)化為極小,故取目標(biāo)函數(shù)中設(shè)計變量的相反數(shù)

        A=[1 ?-2;1 ?2];%線性不等式約束

        b=[4;8];

        lb=[0;0];

        ub=[Inf;Inf];%邊界約束,由于無上界,故設(shè)置ub=[Inf;Inf]

        [x,fval]=linprog(f,A,b,[],[],lb,ub)%x為最優(yōu)解,fval為最優(yōu)值

        運(yùn)算結(jié)果如下:

        Optimization terminated.

        x=[6.0000,1.0000]

        fval=-7.0000

        由結(jié)果可知,當(dāng)x=6,x=1時,目標(biāo)函數(shù)取得最優(yōu)解7。

        三、MATLAB在二次規(guī)劃中的應(yīng)用

        二次型規(guī)劃問題是一種簡單的有約束非線性規(guī)劃問題,它已成為運(yùn)籌學(xué)、經(jīng)濟(jì)數(shù)學(xué)及組合優(yōu)化科學(xué)的基本方法。非線性規(guī)劃問題在計算上是困難的,理論上也不像線性規(guī)劃那樣有簡潔的結(jié)果和成熟的理論。通常情況下,采用迭代的思想計算非線性規(guī)劃問題,即從一個滿足約束條件的初始可行點出發(fā),按照一定的搜索機(jī)制,找到下一個使目標(biāo)函數(shù)更優(yōu)的可行解,直到找到最優(yōu)解其目標(biāo)。在Matlab中,二次規(guī)劃函數(shù)是x的二次型形式,約束條件仍為線性的。一般的二次規(guī)劃問題的數(shù)學(xué)表示為[4]:

        與線性規(guī)劃相比,二次型規(guī)劃多出一項XHX描述x和xx項。在MATLAB工具箱中,求解二次型規(guī)劃的是命令函數(shù)是quadprog()。函數(shù)調(diào)用形式如下所示:

        [x,fval,exitflag,output,lambda]=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)

        其輸入?yún)?shù)H為對角矩陣,表示x和xx項前面的系數(shù),其他參數(shù)的輸入格式與linprog()完全相同,見表1。

        例如求解下列二次型規(guī)劃問題

        程序如下:

        clc,clear;

        H=diag([10 8 6 4 2]);

        f=[-2,-1,-2,-5,-10];

        A=[1,1,1,1,1;-5,4,-3,2,-1;1,1,0,0,-1;0,0,0,1,1;0,0,-1,0,0;0,0,0,-1,0];

        b=[20;-5;8;10;-5;-3];

        [x,fval,exitflag]=quadprog(H,f,A,b)

        運(yùn)算結(jié)果如下:

        Optimization terminated.

        x=[0.2000 ? 0.1250 ? 5.0000 ? 3.0000 ? 5.0000]

        fval=42.7375

        exitflag=1

        所以當(dāng)x=0.2,x=0.125,x=5,x=3,x=5時,目標(biāo)函數(shù)取得最小值42.7375。exitflag=1說明函數(shù)取得最優(yōu)解。

        四、MATLAB在目標(biāo)規(guī)劃中的應(yīng)用

        目標(biāo)規(guī)劃在處理實際決策問題時,承認(rèn)各項決策要求的存在有其合理性,即在最終決策時,不強(qiáng)調(diào)其絕對意義上的最優(yōu)性,在一定程度上彌補(bǔ)了線性規(guī)劃存在的某些缺陷。因此,在運(yùn)籌學(xué)中所有的規(guī)劃問題中,與實際聯(lián)系最大的當(dāng)屬目標(biāo)規(guī)劃。MATLAB所定義的目標(biāo)函數(shù)的標(biāo)準(zhǔn)形式為

        γs.t. ? f(x)-weight·γ≤goal ? ? ? ?c(x)≤0 ? ? ? ?ceq(x)=0 ? ? ? ?Ax≤b ? ? ? ?Aeqx=beq ? ? ? ?lb≤x≤ub

        其中x、weight、goal、b、beq、lb、ub為相應(yīng)維數(shù)的向量,A、Aeq為矩陣,c(x)、ceq(x)、f(x)為返回向量的函數(shù),它們可以是線性函數(shù),也可以是非線性函數(shù)。

        在MATLAB的庫函數(shù)中,針對目標(biāo)規(guī)劃的命令函數(shù)名為fgoalattain(),調(diào)用形式為:

        [x,fval,attainfactor,exitflag,output,lambda]=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)

        其中在輸入?yún)?shù)中,fun為目標(biāo)函數(shù),x■是求解的初始值,goal是目標(biāo)函數(shù)的期望值,weight是目標(biāo)權(quán)重,nonlcon是非線性約束函數(shù)。輸出參數(shù)中,attainfactor參數(shù)包含解處的γ值,γ取負(fù)值時表示結(jié)果溢出。

        例如,某化工廠擬生產(chǎn)兩種新產(chǎn)品A和B,其生產(chǎn)設(shè)備費(fèi)用分別為:2萬元/t和5萬元/t。這兩種產(chǎn)品均造成環(huán)境污染,假設(shè)由公害所造成的損失可折算為4萬元/t和1萬元/t。由于條件限制,該廠的兩種產(chǎn)品的最大生產(chǎn)能力分別為每月5t和6t,而市場需要這兩種產(chǎn)品的總量每月不少于7t。試問工廠如何安排生產(chǎn)計劃,在滿足市場需要的前提下,使設(shè)備投資和公害損失均達(dá)到最???

        該工廠決策認(rèn)為,這兩個目標(biāo)中環(huán)境污染應(yīng)優(yōu)先考慮,設(shè)備投資的目標(biāo)值20萬元,公害損失的目標(biāo)為12萬元。

        相應(yīng)的MATLAB程序如下:

        clc,clear;

        A=[1,0;0,1;-1;-1];

        b=[5;6;7];

        x0=[0,0];

        goal=[20,12];%設(shè)置期望目標(biāo)值

        weight=abs(goal);%設(shè)置目標(biāo)權(quán)重

        [x,fval,attainfactor]=fgoalattain(@funa,x0,goal,weight,A,b)

        function f=funa(x)

        f(1)=2*x(1)+5*x(2);

        f(2)=4*x(1)+x(2);

        運(yùn)算結(jié)果如下:

        x=[2.9167 ? ?4.0833]

        fval=26.2500 ? 15.7500

        attainfactor=0.3125

        由結(jié)果可知,每月生產(chǎn)A產(chǎn)品3t,B產(chǎn)品4t時,設(shè)備投資費(fèi)用和公害損失與目標(biāo)最為接近,設(shè)備投資費(fèi)用為26.25萬元,公害損失為15.75萬元。Attaintfactor>0說明γ值未溢出,結(jié)果可信。

        五、結(jié)語

        以上實例說明,利用MATLAB可以方便地求出線性規(guī)劃等優(yōu)化問題的解,不僅算法簡單,避免了手工的繁瑣計算,而且可以大大提高計算速度和計算的準(zhǔn)確性。將MATLAB軟件用于運(yùn)籌學(xué)教學(xué),可以更直觀地理解運(yùn)籌學(xué)中的基本概念理論,并可培養(yǎng)動手和科研實踐能力。

        同時,運(yùn)籌學(xué)還包含其他內(nèi)容,如動態(tài)規(guī)劃、整數(shù)規(guī)劃、非線性規(guī)劃等內(nèi)容,在Matlab中,也有與之對應(yīng)的命令或工具箱,學(xué)習(xí)者可以結(jié)合網(wǎng)絡(luò)資源或者M(jìn)atlab中的help命令進(jìn)行學(xué)習(xí)。

        參考文獻(xiàn):

        [1]王立欣,王愛維,趙美.運(yùn)籌學(xué)常用軟件綜述[J].科技情報開發(fā)與經(jīng)濟(jì),2009,26:95-96.

        [2]張明,王文文.Matlab在經(jīng)管類運(yùn)籌學(xué)教學(xué)中的探索與實踐[J].大學(xué)教育,2012,07:81-82.

        [3]胡運(yùn)權(quán).運(yùn)籌學(xué)教程(第三版)[M].北京:清華大學(xué)出版社,2007.

        [4]楊云峰,胡金燕,宋國亮.數(shù)學(xué)建模與數(shù)學(xué)軟件[M].哈爾濱:哈爾濱工程大學(xué)出版社,2012.

        [5]馬莉.MATLAB數(shù)學(xué)實驗與建模[M].北京:清華大學(xué)出版社,2010.

        欧美国产日本精品一区二区三区| 日本一区二区三区爆乳| 久久无码专区国产精品| 中文字幕 人妻熟女| 日本一本草久国产欧美日韩| 蓝蓝的天空,白白的云| 国产日产亚洲系列最新| 免费a级毛片出奶水| 91青草久久久久久清纯 | 国产精品毛片一区二区三区| 中国女人内谢69xxxxxa片| 无码人妻丰满熟妇片毛片 | 精品国产乱来一区二区三区| 日韩av一区二区观看| 又爽又黄又无遮挡的视频| 亚洲 欧美 综合 另类 中字| 中文字幕一二区中文字幕| av免费不卡一区二区| 中文字幕乱偷无码av先锋蜜桃| 国产美女网站视频| 国产一级一片内射在线| 亚洲精一区二区三av| 免费无码一区二区三区蜜桃大 | 亚洲av毛片成人精品| 精品一区中文字幕在线观看| 国产一极内射視颍一| 亚洲色成人网一二三区| 日本女优爱爱中文字幕| 亚洲av午夜精品无码专区| 一本之道高清无码视频| 久久国产精品岛国搬运工| 国产精品一区二区三区播放| 国产白袜脚足j棉袜在线观看| 国产精品日韩欧美一区二区区 | 人妻少妇猛烈井进入中文字幕 | 久久久99久久久国产自输拍| 日本最新一区二区三区在线| 国偷自产视频一区二区久| 中文字幕大屁股熟女乱| 偷偷夜夜精品一区二区三区蜜桃| 国产特黄级aaaaa片免|