線性規劃問題教程

2021-03-04 08:06:06 字數 4021 閱讀 1311

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...