当前位置:文档之家› 第10章-Matlab软件简介 - 复制 (5)

第10章-Matlab软件简介 - 复制 (5)

MCM 17
19:11:02
如我们求解模型:
min x (x 2+2)x 3
x
2 1
2 2 s.t. x1 +x 3 5
x1x 2 x 3 100 1 x1 ,x 2 ,x 3 10
首先编写目标函数的函数M文件opt3.m: function f=myfun(x) f=(x(1))^2*(x(2)+2)*x(3); 再编写非线性约束的函数M文件mynonlcon.m
>> H=[1 -1;-1 2];f=[-2;-6]; %目标函数系数。 >> A = [1 1; -1 2; 2 1];b = [2; 2; 3];lb = [0;0]; %不等式约束及下界。
然后调用quadprog函数:
>> [x,fval]=quadprog(H,f,A,b,[],[],lb,[]) %无等式约束条件。 x = 0.6667 1.3333 fval = -8.2222
[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) %从初值x0开始搜索函数fun的最小值点和对应的最小值,并返 回最小值点x和对应的最小值fval;x0需事先给定,格式同自 变量x; A、b、Aeq、beq、lb、ub即标准形式中对应的向量或 矩阵;fun为目标函数的文件名句柄或目标函数的表达式字符 串。nonlcon为存放非线性约束条件中C(x)和Ceq(x)的文件名 句柄,该文件有固定的格式;若无某些约束条件,调用时对应 位置的参数均用[ ]代替,例如无A.x≤b ,则调用时的第3、4 个参数均用[ ]代替。
二次规划问题是指目标函数为二次函数而约束条件为 线性函数的规划问题, MATLAB 解决的线性规划问题的标准 形式为:
1 x H x f x min 2
s.t. A x b
Aeq x beq lb x ub
其中 f 、 x 、 b 、 beq 、 lb 、 ub 为列向量, A 、 Aeq 为矩阵, H 为 对 称 矩 阵 , A.x≤b 为 线 性 不 等 式 约 束 条 件 , Aeq.x=beq 为线性等式约束条件, 1b ≤x ≤ub为变量 x 的 取值范围。
MCM
2
19:11:02
函数fminbnd是用来寻找单变量函数在固定区间内的最 min f (x) s.t.x1<x<x2 小值点及最小值,标准数学模型为: x ( s.t. 为 subject to 的缩写,其引导的部分称为约束条件; “s.t.”之前需我们寻找最小值的函数f(x)一般称为目标函 数)。MATLAB各工具箱的每个函数,包括这里的优化工具箱 函数,都有多种不同的调用格式。本节中我们只介绍常用 的调用格式,其它调用格式请使用在线帮助系统查询。 函数fminbnd最常用的调用格式为: [x,fval] = fminbnd(fun,x1,x2) %返回函数fun在区间上的最小值点x和对应的 最小值fval,fun为目标函数的文件名句柄或 目标函数的表达式字符串。
如求解二次规划问题: 1 2 x1 x 2 min 2 x1 x 2 2x1 6x 2 2 s.t. x1 x2 2 x1 2 x2 2 2 x1 x2 3 0 x1 , 0 x2
MCM 14
19:11:02
-2 1 -1 首先计算出目标函数中的矩阵 H= 和向量f= -6 , -1 2 然后输入规划所涉向量或矩阵:
[x,fval] = fminsearch(fun,x0) % 从初值x0开始搜索函数fun 的最小值点和对应的最小值,并返回最小 值点x和对应的最小值fval;x0需事先给 定,格式同自变量x;fun同前。 [x,fval] = fminunc(fun,x0) % 同fminsearch。
MCM
6
MCM
18
19:11:02
function [c,ceq]=myfun(x) %固定格式:返回两个向量c、ceq, 分别存放非线性约束中的不等式约束函数及等式约束函数。 c(1)=5-(x(1))^2-(x(3))^2; %两个非线性不等式约束;均要化为 标准形式。 c(2)=x(1)*x(2)*x(3)-100; ceq=[]; %无非线性等式约束。
MCM
7
19:11:02
>> [x,fval]=fminunc(@opt2,[0,0])
% 从初值[0,0]开始搜索 最小值点。
x =
-0.2941 -0.2791 fval = 2.3771 >> [x,fval]=fminsearch(@opt2,[0,0]) x = -0.2936 fval = 2.3771 -0.2798
minf x
s.t. A x b
Aeq x beq lb x ub
MCM 9
19:11:02
其中 f 、 x 、 b 、 beq 、 lb 、 ub 为列向量, A 、 Aeq 为矩阵, A.x≤b为线性不等式约束条件, Aeq.x=beq 为线性等式约 束条件, 1b ≤x ≤ub为变量 x 的取值范围。其它形式的线 性规划问题经过适当的变换均可以化为此标准形式。 MATLAB提供解决此标准形式的线性规划的函数为 linprog, 其最常用的调用格式为:
MCM
10
19:11:02
如求解线性规划问题: max 2x1 3x 2 6x3 5x 4 s.t. x1 x 2 2x 3 4x 4 0
x 2 x3 x 4 0 x1 x 2 x 3 x 4 1 0 x1 , 0 x 2 , 0 x 3 , 0 x 4
19:11:02
MATLAB软件简介
§ 10.1
§ 10.2 § 10.3 § 10.4 § 10.5
基本操作
向量、矩阵及其运算 MATLAB程序设计 MATLAB图形处理 优化工具箱
MCM 1
19:11:02
§ 10.5
优化工具箱
开发 MATLAB 软件的初衷只是为了方便矩阵运算,随着 其作为商业软件的推广,它不断吸收各学科各领域权威人 士编写的实用程序,形成了一系列规模庞大、覆盖面极广 的工具箱( Toolbox ), 如优化、图形处理、信号处理、 神经网络、小波分析、概率统计、偏微分方程、系统识别、 鲁棒控制、模糊逻辑等工具箱,极大地方便了我们进行科 学研究和工程应用。由于数学建模中很多问题都可以转化 为优化问题,本节我们简单地介绍一下优化工具箱 ( Optimization Toolbox )中的部分函数,为大家今后熟 练使用MATLAB各工具箱函数奠定基础。
MCM
%注意此处使用 而不是“myfun”。
5
19:11:02
如果目标函数的表达式较为简单,我们也可以使用表 达式的字符串而不必编写目标函数。如上例我们也可以使 用[x,fval]=fminbnd('(log(x^2+1))/x',-3,2)实现。 fminsearch和fminunc都是用来求无约束多元函数的最 n x R min f (x) 小值的函数,标准数学模型为: 。两函数的 x 调用格式相同,常用格式为:
% 从初值[0,0]开始搜 索最小值点。
MCM
8
19:11:02
可以看到虽然两函数均从[0,0]开始搜索,得到的最小 值点却不同,这是由于两函数各自的搜索方向不同造成的, 这也说明这两个函数可能只能得到初值点附近的局部最小 值(点),而不一定得到全局最小值(点)。事实上,前 述的 fminbnd 及后面我们要介绍的 fmincon 均可能只得到局 部最小值(点)。 线性规划问题是指目标函数和约束条件均为线性函数 的问题,MATLAB解决的线性规划问题的标准形式为:
15
MCM
19:11:02
MATLAB 还提供了求解有非线性约束多元函数的最小值 的函数fmincon,标准数学模型为:
min f (x)
s.t. C ( x) 0
x
Ceq ( x) 0 A x b Aeq x beq lb x ub
MCM
16
19:11:02
其中:x、b、beq、lb、ub是列向量,A、Aeq为矩阵, C(x) 、 Ceq(x) 是返回向量的函数, f(x) 为目标函数, C(x) 、 Ceq(x)一般为非线性函数。C(x)≤0一般为非线性不等式约 束条件, Ceq(x)=0一般为非线性等式约束条件,A.x≤b为 线性不等式约束条件,Aeq.x=beq为线性等式约束条件,1b ≤x≤ub为变量x的取值范围。最常用的调用格式为:
MCM
3
19:11:02
如求解函数在区间内的最小值及最小值点,使用如下 命令即可:
>> [x,fval]=fminbnd(@sin,0,2*pi) %符号“@”表明目标函数为 MATLAB自定义的正弦函数sin.m。 x = 4.7124 %最小值点赋值给x。 fval = -1.0000 %最小值赋值给fval。
function f=myfun(x) %编写函数M文件时,此行的”myfun” 并不一定与文件名相同。
f=(log(x^2+1))/x; 然后调用fminbnd函数: >> [x,fval]=fminbnd(@opt1,-3,2) “opt1” x = -1.9803 fval = -0.8047
的最小值,首先编写目标函数的函数M文件opt2.m:
function f=myfun(x) %注意此处只有一个形式参数x,形参可 以是向量或矩阵。 f=(exp(x(1)))*(4*x(1)^2+2*x(2)^2+3*x(1)*x(2)+2*x(2)+3);
相关主题