Matlab数学规划问题.doc_第1页
Matlab数学规划问题.doc_第2页
Matlab数学规划问题.doc_第3页
Matlab数学规划问题.doc_第4页
Matlab数学规划问题.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB数学规划问题1. 线性规划线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB6.0解决的线性规划问题的标准形式为:minsub.to: 其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。其它形式的线性规划问题都可经过适当变换化为此标准形式。在MATLAB6.0版中,线性规划问题(Linear Programming)已用函数linprog取代了MATLAB5.x版中的lp函数。当然,由于版本的向下兼容性,一般说来,低版本中的函数在6.0版中仍可使用。函数 linprog调用格式: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) %求min f *x, sub.to 线性规划的最优解。返回值x为最优解向量。x=linprog(f, A, b, Aeq, beq) %含有等式约束,若没有不等式约束,则令A= ,b= 。x = linprog(f, A, b, Aeq, beq, lb, ub) %指定x的范围x=linprog(f, A, b, Aeq, beq, lb, ub, x0) %设置x0为初值点。x=linprog(f, A, b, Aeq, beq, lb, ub, x0, options) % options为指定的优化参数。下面将进行专门描述。x, fval = linprog() % 返回目标函数最优值,即fval= f *x。x, lambda, exitflag = linprog() % lambda为解x的Lagrange乘子。x, lambda, fval, exitflag = linprog() % exitflag为终止迭代的错误条件。x, fval, lambda, exitflag, output = linprog() % output为关于优化的一些信息。若exitflag0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflagf = -5; -4; -6;A = 1 -1 1; 3 2 4; 3 2 0;b = 20; 42; 30;lb = zeros(3,1);x,fval,exitflag,output,lambda = linprog(f,A,b,lb)结果为:x = %最优解 0.0000 15.0000 3.0000fval = %最优值 -78.0000exitflag = %收敛 1output = iterations: 6 %迭代次数 cgiterations: 0 algorithm: lipsol %所使用规则lambda = ineqlin: 3x1 double eqlin: 0x1 double upper: 3x1 double lower: 3x1 double lambda.ineqlinans = 0.0000 1.5000 0.5000 lambda.lowerans = 1.0000 0.0000 0.0000表明:不等约束条件2和3以及第1个下界是有效的2. 0-1规划对于0-1 规划问题,MATLAB7.0提供命令 bintprog 求解。 MATLAB 中0-1 规划的标准形式:min f*X s.t. A*X = b, Aeq*X = beq其中X的每个分量为 0 或者1。 (1)X = BINTPROG(f) 求解问题 min f*X (2)X = BINTPROG(f,A,b)求解 min f*X s.t. A*X = b (3)X = BINTPROG(f,A,b,Aeq,beq) 求解 min f*X s.t. Aeq*X = beq, A*X = b3. 分枝定界法求解整数线性规划问题 (待完善)%本程序是用分枝定界法求解整数线性规划问题%问题的标准形式:% min c*x% s.t. A*xUB|fval=UB FN(1)=; if isempty(FN)=1 flag=1; else k=FN(1); A=AAk; b=BBk; end else for i=1:NL if abs(x(i)-round(x(i)1e-7 kk=FN(length(FN); FN=FN,kk+1,kk+2; temp_A=zeros(1,NL); temp_A(i)=1; temp_A1=A;temp_A; AA(kk+1)=temp_A1; b1=b;fix(x(i); BB(kk+1)=b1; temp_A2=A;-temp_A; AA(kk+2)=temp_A2; b2=b;-(fix(x(i)+1); BB(kk+2)=b2; FN(1)=; k=FN(1); A=AAk; b=BBk; break; end end if i=NL UB=fval; y=x; FN(1)=; if isempty(FN)=1 flag=1; else k=FN(1); A=AAk; b=BBk; end end endendy=round(y);fval=c*y;4. MATLAB非线性规划函数在 MATLABtoolboxoptim中有两个M文件:constrm和fminum,分别包含了用于约束优化问题和无约束优化问题的两组函数下面介绍其中最有用的两个函数 1约束优化 X,OPTIONS=constr(FUN,X,OPTIONS,VLB,VUB) 此函数求解下列约束优化(非线性规划)问题:min F(X)s.t.G1(X)=0(m equalities)G2(X)=0(p inequalities)(G=G1;G2)VLB=x0,解收敛,所给出的x,fval有效;当exitflag0,x称满意解,fval称目标达到值。attainfactor是指目标达到情况。当attainfactor=0,目标达到值fval没有溢出goal;当attainfactor=50x1*2+x2*1=100x1,x2=0min f1=x1*2+x2*1min f2=-x1-x2min f3=x1s.t :x1*2+x2*1=200-x1-x2=-100-x1=0matlab程序fun=2*x(1)+x(2),-x(1)-x(2),-x(1);a=2 1;-1 -1;-1 0;b=200 -100 20;goal=200,-100,-50;weight=goal;x0=55,55;lb=0,0;x,fval,attainfactor,exitflag=fgoalattain(fun,x0,goal,weight,a,b,lb,)Optimization terminated: Search direction less than 2*options.TolXand maximum constraint violation is less than options.TolCon.Active inequalities (to

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论