MATLAB优化设计实验.ppt_第1页
MATLAB优化设计实验.ppt_第2页
MATLAB优化设计实验.ppt_第3页
MATLAB优化设计实验.ppt_第4页
MATLAB优化设计实验.ppt_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

* 优化设计实验课件 现代工程计算 - MATLAB * 目录 第1章 MATLAB基础 第2章 优化计算 * 第1章 MATLAB基础 1.1 MATLAB环境简介 1.2 数据表示 1.3 矩阵运算 1.4 MATLAB的图形系统简介 1.5 源文件(M文件) * 1.1 MATLAB窗口 启动MATLAB 其窗口如右 * 1.1 MATLAB窗口 1、Command Window(命令窗口) 一行可写入一个或多个命令,命令之间用逗号或分号隔开,如果 命令尾带分号将不显示该命令的执行结果;如果命令有返回 结果,如果不赋给自定义变量,将默认赋给变量ans;变量还 可有续行;最后用回车提交命令。 命令窗口常用键 键显示前个命令 键显示后个命令 Esc键取消输入 Ctrl+x剪切 Ctrl+c复制 * 1.1 MATLAB窗口 2、Workspace(工作区) 程序运行中的自定义变量和默认变量都包含在工作 区中。可通过工作区观察变量的大小、类型,双击变量 名可查看数值大小。 也可用who和whos命令查看 3、Command History(命令记录) 记录了Command Window 中的每一条命令,双击 Command History中的命令,即可重复那条命令。 * 1.1MATLAB的帮助系统 4. 帮助命令: help 文件名 或 函数名 帮助菜单: 演示命令:demo 总体看,matlab可以被视为一个计算工具、绘图工具 、编程工具 * 1.2 数据表示 1.2.1数据类型 有整型、实型、复型、字符串四种类型 1、常数 1)整型常数:10 0 10 2)实型常数:0.3 .3 3. 3914e-2 (表示范围约10308) 3)复型常数:12i 3.56.18i 13.2i 4)字符串常数: MATLAB I cant do. (两个连写的单撇号表示一个单撇号) 注意:没有逻辑型,但与C语言那样,非0为真,0为假 * 1.2.1数据类型 2、变量 变量用标识符表示(字母打头、字母、数字、下划 线组成,长度19)。可以合法出现而定义。区分大 小写字母,以当前值定义其类型。 3、函数名 函数名用标识符表示。 4、特殊常数 ANS、PI等。 * 1.2.1数据的输出格式 输出格式 : SHORT 按5位小数(含小数点、下同)输出 LONG 按15位小数(含小数点、下同)输出 SHORT e 按5位小数、科学记数方式输出 LONG e 按15位小数、科学记数方式输出 HEX 按16进制输出 * 1.2.1数据的输出格式 在MATLAB中,数据的存储和运算都以双精度进行, 但输出结果可指定格式。 指定输出格式的方法有两种: 1 菜单命令法 V6.1中,选择File中的Preferences命令,在General、 Command Window等项目中设置。 2 使用Format命令法 格式: Format 格式串 * 1.2.1数据的输出格式 例如: format long e 5/3 ans = 1.66666666666667e + 000 format rat 0.75 ans = 3/4 * 1.2.2数组 1.2.2 数组 分为行向量、列向量、矩阵。普通变量可看成11数组 。 1、创建数组的基本方法 1)直接列表定义数组 变量元素值1 元素值2 元素值n 变量元素值1,元素值2 ,元素值n 变量行1各元素;行2各元素;行n各元素 例如: x=1 2 3 4 5 6 7 8 9 0 y=1,2,3,4,5,6,7,8,9,0 z=1,2,3,4,5;2,3,4,5,6,7 * 1.2.2数组 2)域表定义数组 变量初值:增量:终值初值:终值 变量(初值:增量:终值)常数 例如: x=0:0.02:10 y=1:80 z=(1:0.1:7)*10e-5 * 1.2.2数组 3)利用函数定义数组 变量linspace(初值,终值,元素个数) 如:x = linspace(0,pi,11) 的结果为: x = Columns 1 through 4 0 0.3142 0.6283 0.9425 Columns 5 through 8 1.2566 1.5708 1.8850 2.1991 Columns 9 through 11 2.5133 2.8274 3.1416 * 1.2.2数组 2、 数组的访问(一维) 数组名 表示全体元素 数组名(k) 表示第k元素 数组名(k1:k2) 表示第k1到k2元素 数组名(k1:k2:k3) 表示第k1、k1+k2、 k1+2k2, 到k3元素 数组名(k1,k2,kn) 表示第k1,k2,kn元素 其中:kp也可为初值:终值或初值:增量:终值的形式 。 * 1.2.2数组 例如:a = 1:2:15 则: 1 3 a(2) 5 a(3:5) 7 a(5:-1:2) 9 a(2,6,8) 11 13 15 a的值 * 1.2.3 数组运算 1、数组的基本运算 设有数组 变量或常量 1)一维数组拼接 u = a x 结果为a1an x1xm 或u = a c1 c2 ck 结果为 a1an c1 c2 ck 2)转置 a. 点转置 a 共轭转置 * 1.2.3数组运算 2. 纯量与数组的算术运算 a c1 或 c1 a 其中可为、 结果为a1c1 a2c1 anc1 或c1a1 c1a2 c1an 3. 数组加(减) 使两数组的对应各元素相加(减) a+b 结果为a1+b1 a2+b2an+bn ab 结果为a1b1 a2b2anbn (a与b的维数必须相同) * 1.2.3 数组运算 4. 数组点乘 使两数组的对应元素相乘a.*b 结果为a1b1 a2b2anbn (a与b的维数必须相同) 5. 数组点正除(右除) 使两数组的对应元素正除 a./b 结果为: (a、b维数必须相同) * 1.2.3 数组运算 6. 数组点反除(左除)a.b 结果为: 显然:a./b = b.a (a、b维数必须相同) 7. 数组的幂运算 a.c1 结果为a1c1 a2c1anc1 c1.a 结果为c1a1 c1a2c1an a.b 结果为a1b1 a2b2anbn * 1.2.3 数组运算 8、 1数组和0数组 1) 1数组 ones(n) 建立nn全为1的数组 ones(r,c) 建立r行c列的1数组 2) 0数组 zeros(n) 建立nn全为0的数组 zeros(r,c) 建立r行c列的0数组 * 1.2.3 数组运算 9. 用逻辑数组操作一个数组 对数组的逻辑运算产生逻辑数组,且结果中用1 表示真,0表示假 如: x = 3:3 x = 3 2 1 0 1 2 3 t = abs(x) 1 t为逻辑数组 t = 1 1 0 0 0 1 1 y = x(t) 提取t中为真对应的x元素 y = 3 2 2 3 * 1.2.3 数组运算 对数组有以下的逻辑运算: l 比较运算符: = = 两数组对应元素相比较,或一个数组的各元素与一个纯量相比较 ,结果为逻辑数组。显然相比较的数组必须具有相同大小 l 逻辑运算符 (与) (或) (非) XOR(异或) 两相同大小的数组进行(与)、(或)、XOR(异或)运 算是对应元素的运算(也允许一个数组与一纯量进行这些运算 )。对任一数组都可以进行(非)运算 如: A4,5,6;7,8,9; 插入:A(2,6) = 10 插入后,A变成3行6列矩阵,未定义的新元素值内 定为0。即 * 1.3 矩阵运算 3. 重排 如对A = 1,2,3;4,5,6;7,8,9; B = A(3:1:1,:) 或B = A(3:1:1,1:3) 将把A的各列元素倒排生成B B= 7 8 9 4 5 6 1 2 3 * 1.3 矩阵运算 4. 提取 如: A(:,1 3) %提取A的第1、3列 A(1:2,2:3) %提取A中前两行的后两列 设 C = 1 3 则: A(C,C) %提取A第1、3行中第1、3列各元素,效果与 A(1 3,1 3)相同. * 1.3 矩阵运算 5. 置空(删去某行或某列) 如: A = 1,2,3;4,5,6;7,8,9; B = A; B(:,2) = ; 将B的第2列删掉 B = A; B(1,:) = ; 删去B的第1行 * 1.3 矩阵运算 6. 置零 如:A(2,:) = 0,0,0 将把A的第2行置零。注意:不能写成 A(2,:) = 0 7. 数组的规模 s = size(A) 生成行向量s,值为A的行数,列数 r,c = size(A) 返回A的行数r,列数c r = size(A,1) 返回A的行数r c = size(A,2) 返回A的列数 * 1.3 矩阵运算 8. 矩阵乘 设gmn和hnm,则 gh 结果为mm矩阵 hg 结果为nn矩阵 注意:矩阵乘()与数组乘(.)的区别 9. 矩阵除 矩阵正除(右除):A/B 矩阵反除(左除):AB 由于在MATLAB中是根据关系式: BA = (A/B) 所以 AB相当于A1B * 1.3 矩阵运算 10. 矩阵乘方 矩阵的标量乘方 Ap 当p为整数时,A应为方阵: p0 则 Ap = AAA p次 p=0 则 Ap = A0 等于与A同维的单位矩阵 p0 则Ap=inv(Aabs(p) 即求A自乘|p|次后的逆矩阵 * 1.3 矩阵运算 11. 逆矩阵 利用inv函数可以求得逆矩阵 例:A=1 2 ;3 2 x=inv(A) 则 x=-0.5 0.5;0.75 -0.25 若 I=inv(A)*A 则 I=1 0 ;0 1 12. 特征向量 利用eig函数可以求得矩阵的特征向量 * 1.3 矩阵运算 练习输入数组 计算 2*a、a+b、a-b、a.*b、a、a,b、a.2、a./b 练习求解线性方程组 提示:将方程组化为 的矩阵形式,利用矩阵运算求解 * 1.4MATLAB图形系统简介 1.PLOT命令 PLOT命令用来绘制二维图形 例:在命令窗口输入 X=0:0.1:1 Y=0:0.3:3 Plot(x,y) 2.LINE命令 LINE命令用来根据点画线 例:在命令窗口输入 X=5,6,7;y=8,12,6 Line(x,y) * 1.4MATLAB图形系统简介 3.GRID ON命令 用来显示绘图网格 4. 编辑图形对象属性 点击工具栏上的箭头按钮(edit plot),选中绘制的图 形,单击右键,选“properties”命令。 line styleline width line color marker style marker size marker color 5.添加辅助说明 点击工具栏上的A(insert text)和右箭头(insert arrow)按 钮,在图形中添加辅助说明的箭头和文字 * 1.4MATLAB图形系统简介 6.PATCH命令 PATCH 命令用来绘制二维面 例:在命令窗口输入 X=5,6,7;y=8,12,6;z=5,4,3 Patch(y,z,4); patch(x,y,3) 7.图表生成命令 pie命令用来生成饼图;bar命令用来生成直方图 例:在命令窗口输入 X=5,6,7; y=8,12,6;z=5,4,3 Pie(x); bar(x,z) * 1.5 源文件(M文件) 分为两类:函数文件和非函数文件。都用扩展名.M 1.5.1函数文件(相当于子程序) 格式1(无返回值函数) Function 函数名(输入表) %称为函数头 函数体 例如:function box(opt_box); 格式2(有返回值函数) function 输出表函数名(输入表) 函数体 * 1.5.1 函数文件 其中:输出表 是函数的返回值,若输出表中只有一项 , 则方括号可省略。 例如:function ab = getobj(HG) 注意: 函数名必须与定义它的文件名主名相同 函数体是对各参数、局部变量和全局变量的操作。 输入、输出变量间用逗号隔开。 函数体内必须对输出表中的变量赋值。 函数头与函数体之间可以有多个以符号“”开始的注 释行,说明函数的功能和使用方法。 语句后加分号,则在命令窗口中显示其计算结果。 * 1.5.2 非函数文件 实例:见例3.7.1 文件objfun.m为函数文件; 文件main.m为非函数文件 1.5.2非函数文件 是无函数头的M文件,由若干命令和注释构成。相当于 批处理文件或主程序 如: %Filename is a sine.m x = 0:0.1:2*pi; y = sin(x); plot(x,y) %可包含汉字注释 * 1.5.3 M-文件的操作 1、建立新M-文件 在命令窗中选 File/New/M-file命令, 打开编辑窗口可同时 打开多个M文件 2、保存M文件 在文本编辑器中选 File/Save As 命令 * 1.5.3 M-文件的操作 3、编辑M文件 在命令窗口/文本编辑器中选 File/ Open 命令 4 运行M文件 在文本编辑器中选Debug/Run 命令 或按F5键 或在命令窗口使用命令行调用,格式为: 文件名 * 第2章优化计算 2.1线性规划及其优化工具箱函数 2.2无约束非线性及其优化函数 2.3约束及其优化函数 2.4综合应用 * 2.1线性规划及其优化函数 线性规划问题是目标函数和约束条件均为线性函数的问 题,MATLAB解决的线性规划问题的标准形式为 : 其中: 。 * 2.1线性规划及其优化函数 函数 linprog 格式 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() * 2.1线性规划及其优化函数 说明 f: 是优化参数x的系数矩阵; lb,ub: 设置优化参数x的上下界; fval: 返回目标函数在最优解x点的函数值; exitflag:返回算法的终止标志; output: 返回优化算法信息的一个数据结构。 * 2.1线性规划及其优化函数 应用举例 求使函数 取最小值的x值, 且满足约束条件: * 2.1线性规划及其优化函数 代码f = -5; -4; -6; A = 1 -1 1;3 2 4;3 2 0; b = 20; 42; 30; lb = zeros(3,1); x,fval = linprog(f,A,b,lb) 结果 x = 0.0000 15.0000 3.0000 fval = -78.0000 * 练习解下面线性规划问题 某车间生产甲、乙两种产品。生产甲种产品每件需要材 料9Kg、3个工时、4KW电,可获利60元。生产乙种产品 每件需要材料4Kg、10个工时、5KW电,可获利120元。 若每天能供应材料360Kg,有300个工时,能供200KW 电,问每天生产甲、乙两种产品各多少件,才能获得最 大的利润。 2.1线性规划及其优化函数 提示: * 2.2无约束非线性及其优化函数 函数 fminsearch 格式 x = fminsearch(fun,x0) x = fminsearch(fun,x0,options) x,fval = fminsearch() x,fval,exitflag = fminsearch() x,fval,exitflag,output = fminsearch() * 2.2无约束非线性及其优化函数 说明 fun 是目标函数 options 设置优化选项参数 fval 返回目标函数在最优解 x点的函数值 exitflag 返回算法的终止标志 output 返回优化算法信息的一个数据结构 * 2.2无约束非线性及其优化函数 应用举例求函数 取最小值时的值。 代码%首先编写f(x)的.m 文件 function f=myfun(x) f=sin(x)+3; %然后调用函数fminsearch x0=2 ; %起始点 x,fval=fminsearch(myfun,x0) 结果 x = 4.7124 fval = 2.0000 * 练习 的最小值 提示: x,fval = fminsearch(fun,x0)的基本格式不能动 。因此x和x0应为12向量,目标函数可写成 2.2无约束非线性及其优化函数 或 * 2.2无约束非线性及其优化函数 函数fminunc 格式x = fminunc(fun,x0) x = fminunc(fun,x0,options) x,fval = fminunc() x,fval,exitflag = fminunc() x,fval,exitflag,output = fminunc() x,fval,exitflag,output,grad = fminunc() x,fval,exitflag,output,grad,hessian = fminunc() * 2.2无约束非线性及其优化函数 说明 fun 是目标函数 options 设置优化选项参数 fval 返回目标函数在最优解x点的函数值 exitflag 返回算法的终止标志 output 返回优化算法信息的一个数据结构 grad 返回目标函数在最优解x点的梯度 hessian 返回目标函数在最优解x点的Hessian矩阵 值 * 2.2无约束非线性及其优化函数 应用举例 的最小值 代码%首先编写目标的.m文件 function f=myfun(x) f=3*x(1)2+2*x(1)*x(2)+x(2)2 %然后调用函数 fminunc %起始点 x0=1,1; x,fval=fminunc(myfun,x0) * 2.2无约束非线性及其优化函数 结果 x = 1.0e-008 * -0.7512 0.2479 fval = 1.3818e-016 * 2.3约束及其优化函数 函数 fminbnd 格式 x = fminbnd(fun,x1,x2) x = fminbnd(fun,x1,x2,options) x,fval = fminbnd() x,fval,exitflag = fminbnd() x,fval,exitflag,output = fminbnd() 应用背景给定区间x1xx2,求函数f(x)的最小值。X可以 是多元向量 * 2.3约束及其优化函数 说明 fun 是目标函数 x1,x2 设置优化变量给定区间的上下界 options 设置优化选项参数 fval 返回目标函数在最优解x点的函数值 exitflag 返回算法的终止标志 output 是一个返回优化算法信息的结构 * 2.3约束及其优化函数 应用举例 求函数 在区间(0,5)内的最小值 代码 %首先编写目标函数的.m文件 function f=myfun(x) f=(x-3).2-1; %调用函数fminbnd x,fval=fminbnd(myfun,0,5) 结果 x = 3 fval = -1 * 2.3约束及其优化函数 函数 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() * 2.3约束及其优化函数 x,fval,exitflag,output,lambda = fmincon() x,fval,exitflag,output,lambda,grad = fmincon() x,fval,exitflag,output,lambda,grad,hessian = fmincon() 说明fun 是目标函数 options 设置优化选项参数 fval 返回目标函数在最优解x点的函数值 exitflag 返回算法的终止标志 output 返回优化算法信息的一个数据结构 grad 返回目标函数在最优解x点的梯度 hessian 返回目标函数在最游解x点Hessian矩阵值 * nonlcon:函数由每一个输入变量x计算出c和 ceq,用于估计给定x点的非线性不等式 和非线性 等式 。 和 见综合应用例。 应用背景约束条件如下,求解函数f(x)的最小值 其中A、Aeq是矩阵,b、x、beq、lb、ub均是向量 * 2.3约束及其优化函数 应用举例计算使函数 取最小值时的x值 , ,约束条件为 分析:将约束条件化为两个不等式 : 从而可将它们写成矩阵不等式的形式: 其中A=-1,-2,-2;1,2,2,b=0;27 * 2.3约束及其优化函数 代码:%首先编写目标函数的.m文件 function f=myfun(x) f=-x(1)*x(2)*x(3); x0=10;10;10%起始点 A=-1,-2,-2;1,2,2; b=0;27; x,fval=fmincon(myfun,x0,A,b) * 2.3约束及其优化函数 解得 x = 1.0e+006 * 2.0057 -0.5014 -0.5014 fval = -5.0426e+017 * 2.4综合应用 一、基础 1、options:设置优化选项参数,它是一个结构参数, 主要参数如下: Display 设置显示算法返回值的类别,“off”表示不显示 结果,“iter”表示每次迭代都显示返回值,“final”表示 只显示最后返回值; MaxFunEval 设置算法中函数估计的最大数目; MaxIter 设置算法迭代的最大次数; Tolx 设置使算法终止的x值。 Tolfun 设置使算法终止的f(x)值 LargeScale 是采用large-scale算法还是medium-scale算法 * 2.4综合应用 2、optimget函数 功能 获取优化算法的特征参数值。 工程应用背景 优化函数的语法中都带有一个参数options,它是一个结 构参数,可以通过调用optimget函数来获取指定的 options结构成员参数的值。 语法 val=optimget(options, param); val=optimget(options,param,default); * 2.4综合应用 说明 一般来说,调用optimget函数时指定的param参数应该在 options中有定义;如果param 参数在options中没有定 义,则返回default指定的参数值。 实例分析 要返回某一优化函数的options的Display的值。 分析: val=optimget(options,Display); * 2.4综合应用 3、optimset函数 功能 设置或编辑优化算法的特征参数值。 工程应用背景 在实际应用中,可能需要对优化算法的特征结构参数 options的某些成员参数进行具体设置或编辑以达到 预期的效果,这时可以应用optimset函数 语法 options=optimset(param1,value1, param2,value2,.) options=optimset(optimfun) options=optimset(oldoptions, param1,value1,.) * 2.4综合应用 options=optimset(oldoptions,newoptions) 说明 param 是options的成员特征参数,value是其所要设置的 值,oldoptions代表以前的优化参数,newoptions代表 另一个优化参数,从而用newoptions的非空参数值代 替oldoptions中相应的参数的值。 实例分析 (1)设置options 的Display属性为iter,TolFun的属性值 为1e-8: options=optimset(Display, iter, TolFun,1e-8) * 2.4综合应用 (2)将oldoptions的值复制给newoptions: newoptions=optimset(oldoptions) (3)将oldoptions的值复制给 newoptions,同时改变其中 的TolX属性值为1e-8: newoptions=optimset(oldoptions, TolX,1e-8) * 2.4综合应用 二、范例 1、已知函数 求 且满足非线形约束: 边界约束: * 2.4综合应用 分析 这样的非线性约束优化问题可以用MATLAB优化 工具箱中的fmincon函数来求解,因为约束为非线性 约束,所以不能将约束条件信息直接包含在函数的 输入中,必须编写函数返回在每一点

温馨提示

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

评论

0/150

提交评论