《非線性規(guī)劃問題數(shù)學(xué)建模》由會(huì)員分享,可在線閱讀,更多相關(guān)《非線性規(guī)劃問題數(shù)學(xué)建模(22頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、非線性規(guī)劃問題天津理工大學(xué)理學(xué)院天津理工大學(xué)理學(xué)院 趙瑞趙瑞非線性規(guī)劃非線性規(guī)劃 1. 首先建立首先建立M文件文件fun.m,定義目標(biāo)函數(shù)定義目標(biāo)函數(shù)F(X):function f=fun(X);f=F(X);一般非線性規(guī)劃一般非線性規(guī)劃 其中其中X為為n維變?cè)蛄?,維變?cè)蛄?,G(X)與與Ceq(X)均為非線性函數(shù)組均為非線性函數(shù)組成的向量,其它變量的含義與線性規(guī)劃、二次規(guī)劃中相同成的向量,其它變量的含義與線性規(guī)劃、二次規(guī)劃中相同.用用Matlab求解上述問題,基本步驟分三步:求解上述問題,基本步驟分三步:3. 建立主程序建立主程序.非線性規(guī)劃求解的函數(shù)是非線性規(guī)劃求解的函數(shù)是fmincon
2、,命令的基本格命令的基本格式如下:式如下: (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,exit
3、flag,output= fmincon(.)輸出極值點(diǎn)M文件迭代的初值參數(shù)說明變量上下限1先建立先建立M文件文件 fun4.m,定義目標(biāo)函數(shù)定義目標(biāo)函數(shù): function f=fun4(x); f=exp(x(1) *(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);) 12424()(22122211xxxxxexfx x1+x2=0 s.t. 1.5+x1x2 - x1 - x2 0 -x1x2 10 0例例2再建立再建立M文件文件mycon.m定義非線性約束:定義非線性約束: function g,ceq=mycon(x) g=1.5+x(1)*x(2)-
4、x(1)-x(2);-x(1)*x(2)-10; ceq=;3主程序主程序youh3.m為為:x0=-1;1;A=;b=;Aeq=1 1;beq=0;vlb=;vub=;x,fval=fmincon(fun4,x0,A,b,Aeq,beq,vlb,vub,mycon)3. 運(yùn)算結(jié)果為運(yùn)算結(jié)果為: x = -1.2247 1.2247 fval = 1.8951 例 100 , 50 07 025 . .2min 21222122221121xxxxXgxxXgtsxxXf1先建立先建立M-文件文件fun.m定義目標(biāo)函數(shù)定義目標(biāo)函數(shù): function f=fun(x); f=-2*x(1)-x
5、(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; ceq=;3. 主程序主程序fxx.m為為: x0=3;2.5; VLB=0 0;VUB=5 10; x,fval =fmincon(fun,x0,VLB,VUB,mycon2)4. 運(yùn)算結(jié)果為運(yùn)算結(jié)果為: x = 4.0000 3.0000fval =-11.0000作業(yè):作業(yè):1. 供應(yīng)與選址供應(yīng)與選址 某公司有6個(gè)建筑工地要開工,每個(gè)工地的位置(用平面坐標(biāo)系a,b表示,距離單位:千米 )及水泥日
6、用量d(噸)由下表給出。目前有兩個(gè)臨時(shí)料場位于A(5,1),B(2,7),日儲(chǔ)量各有20噸。假設(shè)從料場到工地之間均有直線道路相連。 (1)試制定每天的供應(yīng)計(jì)劃,即從A,B兩料場分別向各工地運(yùn)送多少噸水泥,使總的噸千米數(shù)最小。(線性規(guī)劃的作業(yè)) (2)為了進(jìn)一步減少噸千米數(shù),打算舍棄兩個(gè)臨時(shí)料場,改建兩個(gè)新的,日儲(chǔ)量各為20噸,問應(yīng)建在何處,節(jié)省的噸千米數(shù)有多大?(本次作業(yè))工地位置(a,b)及水泥日用量 d 1 2 3 4 5 6 a 1.25 8.75 0.5 5.75 3 7.25 b 1.25 0.75 4.75 5 6.5 7.25 d 3 5 4 7 6 11 無約束問題Matlab
7、函數(shù)中只有處理極小值的指令。函數(shù)中只有處理極小值的指令。求的是局部極值求的是局部極值1.一元函數(shù)極值一元函數(shù)極值x,fval=fminbnd(fun,x1,x2)%x1、x2表示被研究區(qū)間的左右邊界。表示被研究區(qū)間的左右邊界。%x返回極小值點(diǎn),返回極小值點(diǎn),fval返回該點(diǎn)的函數(shù)值。返回該點(diǎn)的函數(shù)值。2.多元函數(shù)極值多元函數(shù)極值x,fval=fminsearch(fun,x0)%求多元函數(shù)極值點(diǎn)指令,求多元函數(shù)極值點(diǎn)指令,x0為初始值為初始值x,fval=fminunc(fun,x0)%擬牛頓法求多元函數(shù)極值點(diǎn)指令,擬牛頓法求多元函數(shù)極值點(diǎn)指令,x0為初始值為初始值%fun均是用字符串表示函數(shù)
8、均是用字符串表示函數(shù)x,fval=fminbnd(sin(x),-pi,pi)%求求sinx在在-,的極小值點(diǎn)的極小值點(diǎn)x = -1.5708fval = -1.0000 x,fval=fminsearch( (x(1)-1)2+(x(2)-x(1)2)2,0,0)x = 1.0000 1.0000fval = 2.6131e-010 x,fval=fminunc(x(1)2+x(2)2-x(1)*x(2)+2*x(1)-4*x(2),2,2) x = 0 2 fval = -4 作業(yè):作業(yè):2. 求一元函數(shù)求一元函數(shù)y=x2-2x-5極小值點(diǎn)極小值點(diǎn)3.多元函數(shù)多元函數(shù)y=(x1-1)2+(x2-2)2極小值點(diǎn)極小值點(diǎn)趙老師郵箱趙老師郵箱