matlab線性規劃求解優化問題
用matlab優化工具箱解線性規劃
命令:x=linprog(c,a,b)
命令:x=linprog(c,a,b,aeq,beq)
注意:若沒有不等式: 存在,則令a=[ ],b=[ ]. 若沒有等式約束, 則令aeq=[ ], beq=[ ].
命令:[1] x=linprog(c,a,b,aeq,beq, vlb,vub)
[2] x=linprog(c,a,b,aeq,beq, vlb,vub, x0)
注意:[1] 若沒有等式約束, 則令aeq=[ ], beq=[ ]. [2]其中x0表示初始點
4、命令:[x,fval]=linprog(…)
返回最優解x及x處的目標函式值fval.
例1解編寫m檔案小xxgh1.m如下:
c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6];
a=[0.01 0.01 0.
01 0.03 0.03 0.
03;0.02 0 0 0.05 0 0;0 0.
02 0 0 0.05 0;0 0 0.03 0 0 0.
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)
例2 解: 編寫m檔案xxgh2.m如下:
c=[6 3 4];
a=[0 1 0];
b=[50];
aeq=[1 1 1];
beq=[120];
vlb=[30,0,20];
vub[x,fval]=linprog(c,a,b,aeq,beq,vlb,vub
例3 (任務分配問題)某車間有甲、乙兩台工具機,可用於加工三種工件。
假定這兩台車床的可用臺時數分別為800和900,三種工件的數量分別為400、
600和500,且已知用三種不同車床加工單位數量不同工件所需的臺時數和加工
費用如下表。問怎樣分配車床的加工任務,才能既滿足加工工件的要求,又使
加工費用最低
解設在甲車床上加工工件1、2、3的數量分別為x1、x2、x3,在乙車床上
加工工件1、2、3的數量分別為x4、x5、x6。可建立以下線性規劃模型:
編寫m檔案xxgh3.m如下:
f = [13 9 10 11 12 8];
a = [0.4 1.1 1 0 0 0
0 0 0 0.5 1.2 1.3];
b = [800; 900];
aeq=[1 0 0 1 0 0
0 1 0 0 1 0
0 0 1 0 0 1];
beq=[400 600 500];
vlb = zeros(6,1);
vub=;
[x,fval] = linprog(f,a,b,aeq,beq,vlb,vub)
例4.某廠每日8小時的產量不低於1800件。為了進行質量控制,計畫聘請兩種不同水平的檢驗員。一級檢驗員的標準為:
速度25件/小時,正確率98%,計時工資4元/小時;二級檢驗員的標準為:速度15小時/件,正確率95%,計時工資3元/小時。檢驗員每錯檢一次,工廠要損失2元。
為使總檢驗費用最省,該工廠應聘一級、二級檢驗員各幾名?
解設需要一級和二級檢驗員的人數分別為x1、x2人,
編寫m檔案xxgh4.m如下:
c = [40;36];
a=[-5 -3];
b=[-45];
aeq=;
beq=;
vlb = zeros(2,1);
vub=[9;15];
%呼叫linprog函式:
[x,fval] = linprog(c,a,b,aeq,beq,vlb,vub)
結果為:
x = 9.0000
0.0000
fval =360
即只需聘用9個一級檢驗員。
4.控制引數options的設定
options中常用的幾個引數的名稱、含義、取值如下:
(1) display: 顯示水平.取值為』off』時,不顯示輸出; 取值為』iter』時,顯示每次迭代的資訊;取值為』final』時,顯示最終結果.預設值為』final』.
(2) maxfunevals: 允許進行函式評價的最大次數,取值為正整數.
(3) maxiter: 允許進行迭代的最大次數,取值為正整數
控制引數options可以通過函式optimset建立或修改。命令的格式如下:
(1) options=optimset(『optimfun』)
建立乙個含有所有引數名,並與優化函式optimfun相關的預設值的選項結構options.
(2)options=optimset(『param1』,value1,』param2』,value2,...)
建立乙個名稱為options的優化選項引數,其中指定的引數具有指定值,所有未指定的引數取預設值.
(3)options=optimset(oldops,『param1』,value1,』param2』,
value2,...)
建立名稱為oldops的引數的拷貝,用指定的引數值修改oldops中相應的引數.
例:opts=optimset(『display』,』iter』,』tolfun』,1e-8)
該語句建立乙個稱為opts的優化選項結構,其中顯示引數設為』iter』, tolfun引數設為1e-8.
用matlab解無約束優化問題
一元函式無約束優化問題
常用格式如下:
(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(...)
其中(3)、(4)、(5)的等式右邊可選用(1)或(2)的等式右邊。
函式fminbnd的演算法基於**分割法和二次插值法,它要求目標函式必須是連續函式,並可能只給出區域性最優解。
例1 求在0 0,且a11 > a12;
同理, p2 = b2 - a21 x1- a22 x2 ,b2,a21,a22 > 0
2.成本與產量成負指數關係
甲的成本隨其產量的增長而降低,且有乙個漸進值,可以假設為
負指數關係,
總利潤為: z(x1,x2)=(p1-q1)x1+(p2-q2)x2
若根據大量的統計資料,求出係數b1=100,a11=1,a12=0.1,b2=280,
a21=0.2,a22=2,r1=30,λ1=0.015,c1=20, r2=100,λ2=0.02,c2=30,則
問題轉化為無約束優化問題:求甲,乙兩個牌號的產量x1,x2,使總利潤z最大.
為簡化模型,先忽略成本,並令a12=0,a21=0,問題轉化為求:
z1 = ( b1 - a11x1 ) x1 + ( b2 - a22x2 ) x2
的極值. 顯然其解為x1 = b1/2a11 = 50, x2 = b2/2a22 = 70,
我們把它作為原問題的初始值.
模型求解
1.建立m-檔案fun.m:
function f = fun(x)
y1=((100-x(1)- 0.1*x(2))-(30*exp(-0.015*x(1))+20))*x(1);
y2=((280-0.2*x(1)- 2*x(2))-(100*exp(-0.02*x(2))+30))*x(2);
f=-y1-y2;
2.輸入命令:
x0=[50,70];
x=fminunc(『fun』,x0),
z=fun(x)
3.計算結果:
x=23.9025, 62.4977, z=6.4135e+003
即甲的產量為23.9025,乙的產量為62.4977,最大利潤為6413.5.
線性規劃問題
為了更好地解決高中數學中線性規劃問題,筆者進行了簡單總結。一 利用線性規劃求最值 一 目標函式為一次函式形式 求的最大值,最小值。分析 一般的直線的規劃區域只要求出區域的交點座標 最大值,最小值存在 將座標點代入目標函式就可以。線性規劃區域的邊界點座標分別為 3,1 7,9 1,3 代入目標函式可以...
線性規劃應用問題
1 某工廠有甲 乙兩種產品,計畫每天的產量各不少於15噸。已知生產甲產品1噸,需煤9噸,電力4,勞力3個 生產乙產品1噸,需煤4噸,電力5,勞力10個 甲產品每1噸的利潤是7萬元,乙產品每1噸的利潤是12萬元 但每天用煤不超過300噸,電力不超過200,勞力至多300個。問每天各生產甲 乙兩種產品多...
52非線性規劃問題
實驗5.2 非線性規劃問題 5.2.1實驗目的 1.學習非線性規劃的基本理論與建模方法。2.學習matlab軟體中非線性規劃問題的求解方法。5.2.2實驗背景知識介紹 1.非線性規劃問題的數學模型 在數學規劃問題中,若目標函式或約束條件中至少有乙個是非線性函式,這類問題稱之為非線性規劃問題,簡記為n...