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

更新时间:2024-03-14 作者:用户投稿原创标记本站原创 点赞:5957 浏览:20411

【摘 要】优化问题是数学建模中最常见的问题,本文全面系统的阐述各种类型优化问题的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(...);

相关论文范文