数学建模中优化问题的计算机解法

2014-01-12 08:59张建生
商品与质量·消费研究 2014年9期
关键词:数学建模

张建生

【摘 要】优化问题是数学建模中最常见的问题,本文全面系统的阐述各种类型优化问题的MATLAB解法,包括无约束优化问题、有约束优化问题、线性优化问题、二次优化问题等。

【关键词】数学建模;优化问题;计算机求解;MATLAB语言

最优化问题就是求最大(小)值问题,是数学建模中最常见的问题,几乎每个建模问题都离不开优化。数学建模是用来解决实际问题,而在现实生产生活中,每个人、每个单位都希望自己所从事的事情能达到最化化。数学建模中的优化问题主要有四种类型,即无约束的优化问题、有约束的优化问题、线性优化(规划)问题和二次化化(规划)问题。

一、无约束最优化(fminunc)

命令 利用函数fminunc求无约束函数最小值

函数 fminunc

格式 :

x = fminunc(fun,x0) %返回给定初始点x0的最小函数值点

x = fminunc(fun,x0,options) % options为指定优化参数

[x,fval] = fminunc(…) %fval最优点x处的函数值

[x,fval,exitflag] = fminunc(…) % exitflag为终止迭代的条件,与上同。

[x,fval,exitflag,output] = fminunc(…) %output为输出优化信息

二、有约束的最优化(fmincon)

有约束的多元函数的最优化的标准形式为:

min f(x)

s.t C(x)<=0

Ceq(x)=0

A*x<=b

Aeq*x=beq

lb<=x<=ub

其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数。函数 fmincon

格式:

x = fmincon(fun,x0,A,b)

x = fmincon(fun,x0,A,b,Aeq,beq)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

[x,fval] = fmincon(…)

[x,fval,exitflag] = fmincon(…)

[x,fval,exitflag,output] = fmincon(…)

[x,fval,exitflag,output,lambda] = fmincon(…)

[x,fval,exitflag,output,lambda,grad] = fmincon(…)

参数说明:fun为目标函数,它可用前面的方法定义;

x0为初始值;

A、b满足线性不等式约束 ,若没有不等式约束,则取A=[ ],b=[ ];

B、Aeq、beq满足等式约束 ,若没有,则取Aeq=[ ],beq=[ ];

C、lb、ub满足 ,若没有界,可设lb=[ ],ub=[ ];

D、nonlcon的作用是通过接受的向量x来计算非线性不等约束 和等式约束 分别在x处的估计C和Ceq,通过指定函数柄来使用,

如: x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)

先建立非线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)

C = … % 计算x处的非线性不等约束 的函数值。

Ceq = … % 计算x处的非线性等式约束 的函数值。

lambda是Lagrange乘子,它体现哪一个约束有效。

output输出优化信息;

grad表示目标函数在x处的梯度;

hessian表示目标函数在x处的Hessiab值。

三、线性规划问题(linprog)

min f(x) x属于R

s.t: A*x<=b;

Aeq*x=beq;

lb<=x<=ub;

其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。

函数 linprog

格式:

x = linprog(f,A,b) %求min f s.t 线性规划的最优解。

x = linprog(f,A,b,Aeq,beq) %不等式约束 ,若没有不等式约束 ,则A=[ ],b=[ ]。

x = linprog(f,A,b,Aeq,beq,lb,ub)%指定x的范围 ,若没有等式约束 ,则Aeq=[ ],beq=[ ]

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,lambda,exitflag] = linprog(…) % lambda为解x的Lagrange乘子。

[x, lambda,fval,exitflag] = linprog(…) % exitflag为终止迭代的错误条件。

说明:若exitflag>0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflag<0表示函数不收敛于解x。

四、二次规划(quadprog)

标准型为:

Min Z= XTHX+cTX

s.t. AX<=b

VLB≤X≤VUB

用MATLAB软件求解,其输入格式如下:

1.x=quadprog(H,C,A,b);

2.x=quadprog(H,C,A,b,Aeq,beq);

3.x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);

4.x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0);

5.x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0,options);

6.[x,fval]=quaprog(...);

7.[x,fval,exitflag]=quaprog(...);

8.[x,fval,exitflag,output]=quaprog(...);

参考文献:

[1]孙祥、徐流美、吴清. MATLAB7.0基础教程. 清华大学出版社. 2005年

[2] 林雪松、周婧、林德新. MATLAB7.0应用集锦. 机械工业出版社. 2006年

[3]邱李华. MATLAB7及工程问题解决方案. 机械工业出版社. 2006年

猜你喜欢
数学建模
数学建模课程教学现状分析及对策研究
基于常微分方程的数学建模问题的求解
高职院校将数学建模思想融入高等数学教学必要性研究
数学建模过程中的模型优化算法
在数学建模中培养学生的提问能力
数学建模中创造性思维的培养
谈数学建模时的问题分析步骤
树立建模意识 培养学生创新思维
最小二乘法基本思想及其应用
建模思想在数学教学中的渗透研究