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

        ?

        MATLAB在水資源動態(tài)規(guī)劃中的運用與改進

        2014-01-13 07:10:16駱歡劉培李思晨
        科技致富向導 2013年24期
        關鍵詞:動態(tài)規(guī)劃

        駱歡 劉培 李思晨

        【摘 要】水資源是人類賴以生存的寶貴資源,搞好水資源優(yōu)化配置對實現(xiàn)水資源的可持續(xù)利用尤為重要。本文結合一個實例,詳細介紹了用MATLAB解決水資源動態(tài)規(guī)劃的思路與方法,同時與傳統(tǒng)的逆序法對比,突出了MATLAB的優(yōu)越性。并且,參照了之前學者所編寫的程序,給出了自己的程序優(yōu)化方案,使程序運行速度、可讀性等方面得到了提高。

        【關鍵詞】動態(tài)規(guī)劃;水資源優(yōu)化配置;MATLAB

        0.引言

        動態(tài)規(guī)劃是解決多階段決策過程最優(yōu)化問題的一種方法,該方法是由美國數(shù)學家貝爾曼(R.Bellman)等人在20世紀50年代提出。他們針對多階段決策問題的特點,提出了解決這類問題的最優(yōu)化原理,并成功解決了生產(chǎn)管理、資源分配等方面的許多實際問題,從而建立了運籌學的分支——動態(tài)規(guī)劃[1]。MATLAB是一個功能強大的用于矩陣運算的數(shù)值計算軟件,是決策系統(tǒng)優(yōu)化計算和設計的有力工具,將MATLAB運用到動態(tài)規(guī)劃中可以達到計算簡便的目的[2]?,F(xiàn)在利用MATLAB解決動態(tài)規(guī)劃問題的程序不少,但是,如何充分利用MATLAB的特點來優(yōu)化程序確實一個值得深思的問題。

        1.MATLAB程序設計

        MATLAB有2種工作方式:一是交互式的命令工作方式,直接在Command Window中輸入指令求解。另一種是M腳本文件的工作方式,這種工作方式用來解決指令較多和所用指令結構較為復雜的問題[3]。

        由于動態(tài)規(guī)劃問題的特殊性,其涉及的實際問題均需要反復的計算求解,所以在使用MATLAB語言編程中采用最多的是循環(huán)結構。MATLAB提供了2種實現(xiàn)循環(huán)結構的語句——for語句和while語句[4]。

        2.應用實例

        有一引水渠,其設計最大流量為6m3/s,為甲、乙、丙、丁4個地區(qū)供水。據(jù)統(tǒng)計,在給四個地區(qū)供水時,不同的供水量產(chǎn)生的效益見表1(效益單位為萬元)。那么,如何分配供水量可以使產(chǎn)生的總效益最大。(本實例取自文獻[5])

        表1 供水量與增產(chǎn)效益的關系

        2.1逆序法計算

        采用逆序法表格計算,可以得到最優(yōu)分配方案有3個,分別是(1,2,1,2),(1,2,2,1),(2,2,1,1),最大效益為19萬元。

        2.2 MATLAB編程計算

        2.2.1思路分析

        由于本例較為簡單,所以不采用M腳本文件的工作方式,直接在Command Window中輸入指令即可。

        Step1.輸入?yún)?shù)

        建立A、B、C、D 4個數(shù)組,分別來儲存供給甲、乙、丙、丁4個地區(qū)不同水量時產(chǎn)生的效益。考慮到在動態(tài)規(guī)劃時,某個城市的供水量可以為0,對應的效益也為0,所以A、B、C、D四個數(shù)組都應該加入一個元素0。這里采用單下標表示法,分別用i、j、k、

        l表示數(shù)組A、B、C、D中元素的下標。A(3)=2,表示當i=3時,A中元素為2,即向A供水2m3/s。Step2.找出所有可行解,儲存其分配方法和對應的效益,要找出所有的可行解,最簡便的的方法是采用循環(huán)結構枚舉。

        ①確定循環(huán)條件:

        循環(huán)的限制條件應該是最大設計流量。由于最大設計流量是6 m3/s,現(xiàn)在任意假設一例分配方法以確定循環(huán)條件。假設所有的水量全部供給了丁,即l=7,那么此時可有i=j=k=1,得i+j+k+l=10。由于無論是那種分配方法都要滿足最大設計流量的限制,所以i+j+k+l=10即為循環(huán)條件。由于循環(huán)次數(shù)是已知的,所以采用for語句循環(huán)。

        ②儲存分配方法:

        建立一個二維數(shù)組E,采用全下標的方法將分配方法存入其中,每一行為一種分配方式。

        ③儲存效益:

        建立一個數(shù)組d,常用單下標的方式將所有分配方法對應的效益存入其中。

        Step3.確定最大效益的值

        所有方案的效益都存儲在數(shù)組d中,所以傳統(tǒng)的方法就是采用循環(huán)結構遍歷數(shù)組d中的所有元素以找到最大值。但是在編程中應該盡量避免使用循環(huán)結構。因為在循環(huán)結構中,要反復進行存儲變量間的“存放”操作和算符調用操作,消耗計算時間。MATLAB中為用戶提供了大量的現(xiàn)成函數(shù),盡可能多的采用現(xiàn)成函數(shù)編程可以使所編程序更可靠、更快速、可讀性更好[6]。

        ①采用循環(huán)結構確定最大效益

        程序如下:

        MAX=d(1);

        for n=1:length(d)

        if d(n)>MAX

        MAX=d(n);

        end

        end

        ②采用max函數(shù)確定最大效益

        由于max(X)求的是數(shù)組X中各列的最大值,所以應該先對數(shù)組d轉置。

        程序如下:

        MAX=max(d')

        可以清楚的看到,采用matlab中現(xiàn)成的max函數(shù)比用循環(huán)結構更好,不僅使程序的輸入得到了簡化,同時也使程序的可讀性更好。

        Step4.確定最大效益所對應的分配方法

        數(shù)組E中的橫坐標和數(shù)組d中的下標是一一對應的,即數(shù)組E中橫坐標為a的行產(chǎn)生的總效益儲存在數(shù)組d中下標為a的元素中。所以可以采用循環(huán)遍歷的方法,找到數(shù)組d中所有值等于MAX的元素的下標n,在把數(shù)組E中對應的第n行輸出,即可得到最優(yōu)分配方法。當然,我們也可以利用matlab中現(xiàn)成的函數(shù)find來代替這個循環(huán)結構。

        ①采用循環(huán)結構確定最大值

        程序如下:

        for n=1:length(d)

        if d(n)==MAX

        E(n,:)-1

        end

        end

        ②采用find函數(shù)確定最大值

        程序如下:

        n=find(d==MAX);

        E(n,:)-1

        2.2.2完整MATLAB程序

        為了突出MTALAB語言編程在動態(tài)規(guī)劃中的優(yōu)越性,這里分別在程序的開頭和結尾加入tic和ti=toc,以記錄下程序運行需要的時間。但應當注意的是,ti的值受到電腦配置、matlab版本和該程序是否首次運行等因素的影響。

        優(yōu)化后的完整程序如下:

        clear all

        tic

        m=1;

        A=[0 3 5.5 7.5 9 10 10];

        B=[0 3 6 8 9.5 10.5 11];

        C=[0 4 6.5 8.5 9 9 9];

        D=[0 3.5 6 7.5 8.5 9 9];

        for i=1:7

        for j=1:7

        for k=1:7

        for l=1:7

        if i+j+k+l==10

        d(m)=A(i)+B(j)+C(k)+D(l);

        E(m,1)=i;

        E(m,2)=j;

        E(m,3)=k;

        E(m,4)=l;

        m=m+1;

        end

        end

        end

        end

        end

        MAX=max(d')

        n=find(d==MAX);

        E(n,:)-1

        ti=toc

        按回車后可以得到以下結果:

        MAX =

        19

        ans =

        1 2 1 2

        1 2 2 1

        2 2 1 1

        ti =

        0.0255

        運行結果表示有三個最優(yōu)水資源分配方案,即(1,2,1,2)、(1,2,2,1)、(2,2,1,1),最大效益為19萬元,程序運行時間為0.0255 s。

        2.2.3小結

        從本例可以看出,運用MATLAB解決動態(tài)規(guī)劃問題比逆序法更具有可操作性。因為實際工作中要解決的問題往往比本例復雜得多,運用MATLAB編程可以避免繁瑣的人工計算。同時,相比之前學者的程序而言,優(yōu)化后的程序盡量回避了循環(huán)結構,充分利用了MATLAB中現(xiàn)成的函數(shù),不僅使程序可讀性更好,輸入更簡便,還大大提高了程序運行速度。經(jīng)筆者測試,若是采用沒有優(yōu)化的方案編程,程序運行時間為0.0401s,相比之下,優(yōu)化后的程序運行速度提高了36%,程序代碼也由原來的36行減少到了27行。在實際工作的運用中,特別是在復雜的實例中,這種優(yōu)點將得到更大的體現(xiàn)。

        3.結語

        本文結合一簡單實例,詳細說明了MATLAB編程的思路與方法,并給出了程序優(yōu)化方案。從本例的計算結果可以看出,運用MAYLAB編程解決動態(tài)規(guī)劃問題是實際可行的,而優(yōu)化后的程序在運算速度、可讀性等方面都有提高,這為解決實際工作中的動態(tài)規(guī)劃問題提供了新的思路。但是,如何利用MATLAB的向量化計算特點來做到更深層次的優(yōu)化還值得更多的思考與探討。 [科]

        【參考文獻】

        [1]孫趙杰.運籌學[M].北京:機械工業(yè)出版社,2006.

        [2]趙云,王希云.基于MATLAB的動態(tài)規(guī)劃常用算法的實現(xiàn)[J].太原師范大學學報(自然科學版),2008,7(4):26-30.

        [3]劉衛(wèi)國.科學計算與MATLAB語言[M].北京:中國鐵道出版社,2000.

        [4]樓順天.MATLAB程序與語言[M].西安:西安電子科技大學出版社,1997.

        [5]左兼金.水利水電施工組織管理與系統(tǒng)分析[M].北京:水利水電出版社,1993.

        [6]張志涌,楊祖櫻.MATLAB教程R2012a[M].北京:北京航空航天大學出版社,2013,129.

        猜你喜歡
        動態(tài)規(guī)劃
        動態(tài)規(guī)劃在投資理財問題中的應用
        商情(2017年28期)2017-09-04 23:41:16
        模板匹配問題的動態(tài)規(guī)劃算法實現(xiàn)
        軟件導刊(2017年6期)2017-07-12 20:19:12
        電梯運行模式的設計和優(yōu)化
        生產(chǎn)與存儲成本研究
        多階段投資組合的動態(tài)規(guī)劃模型
        商情(2016年44期)2017-03-05 00:24:15
        ACM—ICPC競賽趣味學習系統(tǒng)設計
        大學生經(jīng)濟旅游優(yōu)化設計模型研究
        中國市場(2016年33期)2016-10-18 14:23:52
        動態(tài)規(guī)劃最優(yōu)控制在非線性系統(tǒng)中的應用
        動態(tài)規(guī)劃案例教學設計
        大學教育(2016年1期)2016-01-19 07:08:52
        產(chǎn)品最優(yōu)求解問題中運籌學方法的應用
        国产一级片内射在线视频| 女主播国产专区在线观看| 中文字幕一区二区三在线| 国产黄色一级大片一区二区| 麻豆精品在线视频观看| 国产性感午夜天堂av| 人妻诱惑中文字幕在线视频 | 男女性杂交内射妇女bbwxz| 精品国产sm捆绑最大网免费站| 中文字幕一区二区人妻出轨| 国产丝袜高跟美腿一区在线| 熟女人妻一区二区三区| 日日麻批免费40分钟无码| 99在线精品免费视频九九视| 午夜亚洲国产理论片亚洲2020| 亚洲免费成年女性毛视频| 亚洲图文一区二区三区四区 | 人妻无码一区二区在线影院| 国产在线观看网址不卡一区| 亚州av高清不卡一区二区 | 国产精品电影久久久久电影网| 性感的小蜜桃在线观看| 激情久久黄色免费网站| 91超精品碰国产在线观看| 亚洲国产av无码精品| 97人妻人人做人碰人人爽| 最新国产乱人伦偷精品免费网站| 人妻精品一区二区三区视频| 亚洲日本人妻中文字幕| 91成人国产九色在线观看| 把女人弄爽特黄a大片| 欧美熟妇色ⅹxxx欧美妇| 亚洲成AV人久久| 在线国产丝袜自拍观看| 国产精品亚洲片在线观看不卡| 久久亚洲私人国产精品| 亚洲熟妇在线视频观看| 国产成人精品中文字幕| 一区二区视频在线观看地址| 国产综合色在线精品| 免费无码毛片一区二区三区a片|