Matlab优化工具箱

更新时间:2023-10-01 13:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Matlab优化工具箱 Matlab Optimization Toolbox

优化工具箱提供了一般和大型的非线性优化函数,同时还提供了线性规划,二次规划,非线性最小二乘以及非线性方程求解的工具。

? 主要特性:

– 无约束非线性极小化问题

– 约束性线性极小化、极大极小、多目标优化,半无穷极小化问题。

– 二次规划和线性规划问题

– 非线性最小二乘和边界曲线拟合问题 – 非线性系统方程求解问题 – 约束线性最小二乘问题 – 大型问题的特殊算法

一.最小化问题Minimization

0-1 规划 (binary integer programming problems)

x = bintprog(f) x = bintprog(f, A, b)

x = bintprog(f, A, b, Aeq, beq)

x = bintprog(f, A, b, Aeq, beq, x0) x = bintprog(f, A, b, Aeq, Beq, x0, options) [x, fval] = bintprog(...) [x,fval, exitflag] = bintprog(...) [x, fval, exitflag, output] = bintprog(...) 参数描述见help

f Vector containing the coefficients of the linear objective function

A Matrix containing the coefficients of the linear inequality constraints b Vector corresponding to the right-hand side of the linear inequality constraints

Aeq Matrix containing the coefficients of the linear equality constraints beq Vector containing the constants of the linear equality constraints x0 Initial point for the algorithm

options Options structure containing options for the algorithm.

Example1: f = [-9; -5; -6; -4];

A = [6 3 5 2; 0 0 1 1; -1 0 1 0; 0 -1 0 1]; b = [9; 1; 0; 0]; x = bintprog(f,A,b) Example2:

问题求解:min 3*x(1)-2*x(2)+5*x(3) s.t.

x(1)+2*x(2)-x(3)<=2 x(1)+4*x(2)+x(3)<=4 x(1)+x(2)<=3 4*x(2)+x(3)<=6 x(1),x(2),x(3)为0,1 f=[3,-2,5]’

A=[1 2 -1;1 4 1; 1 1 0; 0 4 1] b=[2 4 3 6]’

问题求解:min 3*x(1)-2*x(2)+5*x(3) s.t.

x(1)+2*x(2)-x(3) =2 x(1)+4*x(2)+x(3) =4

线性规划linear programming problem

x = linprog(f,A,b) %求min f ' *x sub.to

A?x?b线性规

划的最优解。

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

式约束A?x?b,则A=[ ],b=[ ]。

x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范围lb?x?ub,若

没有等式约束Aeq?x?beq ,则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。 [x,lambda,exitflag] = linprog(…) % lambda为解x的Lagrange乘子。

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

[x,fval, lambda,exitflag,output] = linprog(…) % output为关于优化的一些信息

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

lambda=lower 表示下界lb,lambda=upper表示上界ub,

lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,

lambda中的非0元素表示对应的约束是有效约束;

output=iterations表示迭代次数,output=algorithm表示

使用的运算规则,output=cgiterations表示PCG迭代次数。

例 求下面的优化问题 min

?5x1?4x2?6x3

sub.to

11x1?x2?x3?2023 3x?2x?4x?42 3x?2x?30

20?x1,0?x2,0?x3

解:

>>f = [-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.0000

fval = %最优值 -78.0000

exitflag = %收敛 1 output =

iterations: 6 %迭代次数 cgiterations: 0

algorithm: 'lipsol' %所使用规则 lambda =

ineqlin: [3x1 double] eqlin: [0x1 double] upper: [3x1 double] lower: [3x1 double] >> lambda.ineqlin ans =

0.0000 1.5000 0.5000

>> lambda.lower ans =

1.0000 0.0000 0.0000

表明:不等约束条件2和3以及第1个下界是有效的

本文来源:https://www.bwwdw.com/article/tbvd.html

Top