matlab 矩阵线性规划,matlab线性规划-线性规划,matlab
本教程分享:《matlab線性規劃》,
如何用MATLAB處理線性規劃問題
利用linprog()函數就可以了,下面是我做的一個題,給你參考一下:
求解線性規劃問題:
min z=-0.9*x1-0.45*x2+0.05*x3-1.4*x4-0.95*x5-0.45*x6-1.9*x7-1.45*x8-0.95*x9
s.t.
x1+x2+x3<=2000;
x4+x5+x6<=2500;
x7+x8+x9<=1200;
-0.4*x1+0.6*x2+0.6*x3<=0;
-0.2*x1-0.2x4+0.8*x7<=0;
-0.7*x2+0.3*x5+0.3*x8<=0;
-0.5*x2-0.5*x5+0.8*x8<=0;
-0.6*x3-0.6*x6+0.4*x9<=0;
現在用matlab求解這個問題得到的結果是:
Optimization terminated.
x =
1.0e+003 *
0.5800
1.4200
0.0000
0.2862
2.2138
0.0000
0.1005
1.0995
0.0000
fval =
5.4500e+003
源程序如下:
f=[-0.9;-0.45;0.05;-1.4;-0.95;-0.45;-1.9;-1.45;-0.95];
A=[1 1 1 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 1 1 1
-0.4 0 0 0.6 0 0 0.6 0 0
-0.2 0 0 -0.2 0 0 0.8 0 0
0 -0.7 0 0 0.3 0 0 0.3 0
0 -0.5 0 0 -0.5 0 0 0.5 0
0 0 -0.6 0 0 -0.6 0 0 0.4];
B=[2000;2500;1200;0;0;0;0;0];
lb=zeros(9,1); %生成一個9*1的零矩陣,來作為X的取值直下界(lower bound)
[x,fval]=linprog(f,A,B,[],[],lb) %兩個中括號表示條件中無等號的約束,如果有等號約束SX=D,在第一個中括號中填入S,第二個填入D即可。lb是X的下界約束,如果還有上界約束ub,將函數寫成[x,fval]=linprog(f,A,B,[],[],lb,ub)就可以了。
說明:此題的最優解是fval,是當變量取值為x時取得的。需要補充一點的是,matlab中默認的LP問題標準形式是min z=CX,AX<=b,但是對X的取值可以自選為lb
Matlab中線性規劃x的上界和下界及初始值怎么確
在MATLAB中,用于LP的求解函數為linprog.其調用格式為:
[x,fval,lambda]=linprog
(f,A,b,Aeq,beq,vlb,vub,x0,options)
其中f,A,b,是不可缺省的輸入變量,x是不可缺省的輸出變量,它是問題的解.vlb,vub均是向量,分別表示x的下界和上界,x0為x的起始點,options為optimset函數中定義的參數的值,fval是目標函
數在解x處的值,lambda為在解x處的lagrange乘子.lambda.lower對應于vlb,lambda.upper對應于ulb,lambda.ineqlin是對應于線性不等式約束的,lambda.eqlin是對應于線性等式約束的.
下面舉一個小例子看看函數的作用:
minZ=-4a+b+7c
s.t.
a+b-c=5 3a-b+c<=4
a+b-4c<=-7 a,b>=0
問a,b,c分別取何值時,Z有最小值
編寫M文件
c=[-4 1 7];
A=[3 -1 1;1 1 -4];
b=[4; -7];
Aeq=[1 1 -1];
beq=[5];vlb=[0, 0];
vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)
結果:x = 2.2500 6.7500 4.0000fval = 25.7500
即a,b,c分別取2.2500 6.7500 4.0000時,Z有最小值25.7500
用MATLAB求解線性規劃問題怎么編程。。
maxz=2x1+5x2s.t.x1+x3=42x1+x4=123x1+2x2+x5=18x1,x2,x3,x4,x5>0比如說這個問題怎么編程,最好能解釋一下各個程序語言是什么意思我是剛剛接觸MATLAB軟件。。。5555.。。。。基本都不...
max z=2x1+5x2
s.t. x1+x3=4
2x1+x4=12
3x1+2x2+x5=18
x1,x2,x3,x4,x5>0
比如說這個問題怎么編程,最好能解釋一下各個程序語言是什么意思
我是剛剛接觸MATLAB軟件。。。5555.。。。。基本都不懂
感激不盡。。。。。
基本是利用linprog函數,簡單給你介紹一下這個函數:
首先將線性規劃問題化為標準型:
min z=cx
s.t. A1x<=b1 A2x=b2 v1<=x<=v2
然后利用指令[x,fv,ef,out,lambda]=linprog(c,A1,b1,A2,b2,v1,v2,x0,opt)
即可。不需要設置的部分可以省略。
針對你的問題,對應標準型的矩陣設置為:
z=-[2 5 0 0 0];
%A1和b1不需要設置
A2=[1 0 1 0 0;2 0 0 1 0;3 2 0 0 1];
b2=[4 12 18];
v1=[0 0 0 0 0];
%v2設置的大一點就行
v2=[1e10 1e10 1e10 1e10 1e10];
取初值,比如x0=[0 0 0 0 0];
然后[x,fv,ef,out,lambda]=linprog(c,[],[],A2,b2,v1,v2,x0,[]);
就行了。
我臨時編的,沒編譯,有問題直接告訴我就行。。。
有兩個問題,第一個,你的問題里要求最大值,但是標準型是求取最小值,所以把c向量取你題中的相反數,這樣得到的最優解不變,但是結果目標函數要變成相反數。
第二個,不知道你的問題里為什么只有等式約束,看看你是不是抄錯了。
更多追問追答
追問
>> z=-[2 5 0 0 0];
A2=[1 0 1 0 0;2 0 0 1 0;3 2 0 0 1];
b2=[4 12 18];
v1=[0 0 0 0 0];
v2=[1e10 1e10 1e10 1e10 1e10];
x0=[0 0 0 0 0];
[x,fv]=linprog([],[],A2,b2,v1,v2,x0,[])
??? Error using ==> linprog at 179
The number of rows in A must be the same as the length of b.
運行出來是這個樣子的。。。那個等式約束是我自己變得,呵呵
還有V1,A1,V2都是什么??為什么X0要賦初值呢??
追答
V1,v2是對x向量的上下限限制,你的題里下限就是[0 0 0 0 0],上限是正無窮。
A1和b1對應不等式約束,換算成我上面寫的標準形式的。
還有我寫錯了不好意思,最后一句改成[x,fv]=linprog(z,[],[],A2,b2,v1,v2,x0,[])
就行了
追問
嗯嗯,求出來了!!
大神,如果您有時間的話,能求您幫忙編個MATLAB程序嗎??
追答
額。。你先說關于啥的吧。。。如果我會的話我盡量給你個思路。。。
另外,這個問題給分呀~~~~~~~
追問
嗯嗯,我直接發給你吧,您先看看。。。分數不是問題,我也沒用
matlab怎么做線性規劃模型
§1線性規劃模型;一、線性規劃課題:;實例1:生產計劃問題;假設某廠計劃生產甲、乙兩種產品,現庫存主要材料有;建立數學模型:;設x1、x2分別為生產甲、乙產品的件數;maxf=70x1+120x2;s.t9x1+4x2≤3600;4x1+5x2≤2000;3x1+10x2≤3000;x1,x2≥0;歸結出規劃問題:目標函數和約束條件都是變量x的線;形如:(1
§1 線性規劃模型
一、線性規劃課題:
實例1:生產計劃問題
假設某廠計劃生產甲、乙兩種產品,現庫存主要材料有A類3600公斤,B類2000公斤,C類3000公斤。每件甲產品需用材料A類9公斤,B類4公斤,C類3公斤。每件乙產品,需用材料A類4公斤,B類5公斤,C類10公斤。甲單位產品的利潤70元,乙單位產品的利潤120元。問如何安排生產,才能使該廠所獲的利潤最大。
建立數學模型:
設x1、x2分別為生產甲、乙產品的件數。f為該廠所獲總潤。
max f=70x1+120x2
s.t 9x1+4x2≤3600
4x1+5x2≤2000
3x1+10x2≤3000
x1,x2≥0
歸結出規劃問題:目標函數和約束條件都是變量x的線性函數。
形如: (1) min f T X
s.t A X≤b
Aeq X =beq
lb≤X≤ub
其中X為n維未知向量,f T=[f1,f2,…fn]為目標函數系數向量,小于等于約束系數矩陣A為m×n矩陣,b為其右端m維列向量,Aeq為等式約束系數矩陣,beq為等式約束右端常數列向量。lb,ub為自變量取值上界與下界約束的n維常數向量。
二.線性規劃問題求最優解函數:
調用格式: x=linprog(f,A,b)
x=linprog(f,A,b,Aeq,beq)
x=linprog(f,A,b,Aeq,beq,lb,ub)
x=linprog(f,A,b,Aeq,beq,lb,ub,x0)
x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
[x,fval]=linprog(…)
[x, fval, exitflag]=linprog(…)
[x, fval, exitflag, output]=linprog(…)
[x, fval, exitflag, output, lambda]=linprog(…)
說明:x=linprog(f,A,b)返回值x為最優解向量。
matlab求線性規劃最大值
maxcz1+2*z2+7*z3+z4+2*z5>=7*c2*z1+7*z2+6*z3+5*z4+6*z5<=65*z1+4*z2+6*z3+2*z4+2*z5<=6z1,z2,z3,z4,z5,c>=0這個用MATLAB該怎么寫...
max c
z1+2*z2+7*z3+z4+2*z5>=7*c
2*z1+7*z2+6*z3+5*z4+6*z5<=6
5*z1+4*z2+6*z3+2*z4+2*z5<=6
z1,z2,z3,z4,z5,c>=0
這個用MATLAB該怎么寫
求線性規劃最大值只需要將原來函數的系數全部改為負數即可,并且如果在約束條件中有大于某一值的約束條件,也需要將約束的系數和資源限量(就是右邊的約束值)改為負數(相當于將原來大于的約束公式兩邊取反)
在matlab求解線性規劃問題中zeros是什么作用?
如 [x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));中為什么要用zeros(3,1)生成3行1列的零向量??這里不是應該約束決策向量的上下界嗎??
最后一個是約束x的,zeros(3,1)代表x1,x2,x3都大于0
matlab做線性規劃程序對,結果亂了
我的程序是這個c=[12;8;35];A=[3212;112;211];b=[30;7;14];vlb=[0;0;0];aeq=[000];beq=0[x,fval]=linprog(c,A,b,aeq,beq,vlb)結果是x=1.0e-14*0.04890.20010.0514fval=3.9869e-14實際...
我的程序是這個
c=[12;8;35];A=[3 2 12;1 1 2;2 1 1];
b=[30;7;14];vlb=[0;0;0];
aeq=[0 0 0];beq=0
[x,fval]=linprog(c,A,b,aeq,beq,vlb)
結果是
x =
1.0e-14 *
0.0489
0.2001
0.0514
fval =
3.9869e-14
實際結果
x =
4.0000
0.0000
1.5000
fval =
100.5000
你的線性規劃問題出錯原因是,沒有分清問題是求極大值還是極小值。從你的答案分析,你的問題應該是求極大值問題。即 max?12x1+8x2+35x3
所以,其代碼應該這樣來寫。
c=[-12 -8 -35];
A=[3 2 12;1 1 2;2 1 1];
b=[30;7;14];
vlb=[0;0;0];
aeq=[];beq=[];
[x,fval]=linprog(c,A,b,aeq,beq,vlb)
運行結果
x1 = 4.0000;x2 = 0.0000;x3 = 1.5000
fval = -100.5000 ? %最大值為100.5,因為極小值問題的相反就是極大值問題。
matlab中線性規劃的aeq和beq是什么意思?
當線性規劃的約束中有aiXi=bi的條件時,用Aeq和beq來保證等號的成立,就是說aiXi=bi那個xi對應的Aeq位子取ai,其他取0,beq取值是有幾個aiXi=bi就取幾個bi。
求個matlab用圖解法解線性規劃問題程序,題目在下面
目標函數是 maxz=40*x1+90*x2約束條件是 9*x1+7*x2<=56;7*x1+20*x2<=70;x1,x2>=0;x1,x2為整數程序可以發郵箱 525005158@qq.com不錯的可以加分,求不糊弄,而且是要有圖,比較...
目標函數是 max z=40*x1+90*x2
約束條件是 9*x1+7*x2<=56;7*x1+20*x2<=70;x1,x2>=0;x1,x2為整數
程序可以發郵箱 525005158@qq.com 不錯的可以加分,求不糊弄,而且是要有圖,比較詳細的程序
c=[40;90];
a=[9?7;7?20];
b=[56?70];
[xl,yl]=IntLp(-c,a,b,[],[],[0;0])
line([0?56/9],[56/7;?0]);hold?on;
line([0?70/7],[70/20?0]);
line([0?-yl/40],[-yl/90?0],'color','r');
plot(xl(1),xl(2),'*');
text(xl(1),xl(2)-0.5,['('?num2str(xl)?')']);
用matlab進行線性規劃的時候出現問題了 求解決
在進行線性規劃的時候出了問題 目標函數中只有y但是限制條件中出現了x x與y是有關系的,但是也不能完全用y表示x 這樣還能用matlab做么
>> f=[0;0;0;-0.77;-0.63;-0.70;-0.575];
A=[-1 0 0 0 0 0 0
1 0 0 0 0 0 0
0 -1 -1 0 0 0 0
0 1 1 0 0 0 0
0.2 0.85 1 0 0 0 0
0 0 0 7.5 6.1 9.0 7.35
0 0 0 1.4 0 1.65 0];
b=[0;8.2;0;3.5;9;96.5;7.5];
Aeq=[1 1 0 -1 -1 0 0
1 0 -1 0 0 1 1];
beq=[-2.5;8.2];
[x,fval,exitflag,output] = linprog(f,A,b,Aeq,beq)
Exiting: One or more of the residuals, duality gap, or total relative error
has stalled:
the dual appears to be infeasible (and the primal unbounded).
(The primal residual < TolFun=1.00e-008.)
x =
1.0e+021 *
0.0000
4.9454
-4.9454
4.9454
-0.0000
-4.1961
-0.7493
fval =
-4.3984e+020
exitflag =
-3
output =
iterations: 19
algorithm: 'large-scale: interior point'
cgiterations: 0
message: [1x217 char]
constrviolation: 9.1668e+005
firstorderopt: 8.7498e+019
應該還加個x,y>0
否則解有點問題
代碼如下
>> f=[0;0;0;-0.77;-0.63;-0.70;-0.575];
A=[-1 0 0 0 0 0 0
1 0 0 0 0 0 0
0 -1 -1 0 0 0 0
0 1 1 0 0 0 0
0.2 0.85 1 0 0 0 0
0 0 0 7.5 6.1 9.0 7.35
0 0 0 1.4 0 1.65 0];
b=[0;8.2;0;3.5;9;96.5;7.5];
Aeq=[1 1 0 -1 -1 0 0
1 0 -1 0 0 1 1];
beq=[2.5;8.2];
lb=zeros(7,1);
[x,fval,exitflag,output] = linprog(f,A,b,Aeq,beq,lb)
Optimization terminated.
x =
8.2000
3.5000
0.0000
5.3571
8.8429
0.0000
0.0000
fval =
-9.6960
exitflag =
1
output =
iterations: 8
algorithm: 'large-scale: interior point'
cgiterations: 0
message: 'Optimization terminated.'
constrviolation: 4.4409e-014
firstorderopt: 1.2641e-009
max w+2=9.6960
w=7.6960
總結
以上是生活随笔為你收集整理的matlab 矩阵线性规划,matlab线性规划-线性规划,matlab的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: PBRT笔记(11)——光源
- 下一篇: 3dmax疯狂模渲大师软件有什么使用指南
