资源描述:
《运筹学与matlab编程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、一、MATLAB中的优工具箱利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。1.1优化工具箱中的函数优化工具箱中的函数包括下面几类:1.1.1最小化函数表1-1最小化函数表函数描述fgoalattain多目标达到问题fminbnd有边界的标量非线性最小化fm
2、incon有约束的非线性最小化fminimax最大最小化fminsearch,fminunc无约束非线性最小化fseminf半无限问题linprog线性课题quadprog二次课题1.1.2方程求解函数表1-2方程求解函数表函数描述线性方程求解fsolve非线性方程求解fzero标量非线性方程求解1.1.3最小二乘(曲线拟合)函数表1-3最小二乘函数表函数描述线性最小二乘lsqlin有约束线性最小二乘lsqcurvefit非线性曲线拟合lsqnonlin非线性最小二乘lsqnonneg非负线性最小二乘1.1.4.实用函数表9-4实用函数表函数描述opt
3、imset设置参数optimget 1.1.5.大型方法的演示函数表9-5大型方法的演示函数表函数描述circustent马戏团帐篷问题—二次课题molecule用无约束非线性最小化进行分子组成求解optdeblur用有边界线性最小二乘法进行图形处理1.1.6.中型方法的演示函数表9-6中型方法的演示函数表函数描述bandemo香蕉函数的最小化dfildemo过滤器设计的有限精度goaldemo目标达到举例optdemo演示过程菜单tutdemo教程演示 模型输入时需要注意的问题使用优化工具箱时,由于优化函数要求目标函数和约束条件满足一定的格式,所以需要用
4、户在进行模型输入时注意以下几个问题:1.目标函数最小化优化函数fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax和lsqnonlin都要求目标函数最小化,如果优化问题要求目标函数最大化,可以通过使该目标函数的负值最小化即-f(x)最小化来实现。近似地,对于quadprog函数提供-H和-f,对于linprog函数提供-f。2.约束非正优化工具箱要求非线性不等式约束的形式为Ci(x)≤0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的目的,如Ci(x)≥0形式的约束等价于-Ci
5、(x)≤0;Ci(x)≥b形式的约束等价于-Ci(x)+b≤0。3.避免使用全局变量1.2相关函数的介绍1.2.1fminbnd函数功能:找到固定区间内单变量函数的最小值。调用格式:x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2,options)x=fminbnd(fun,x1,x2,options,P1,P2,...)[x,fval]=fminbnd(...)[x,fval,exitflag]=fminbnd(...)[x,fval,exitflag,output]=fminbnd(...)描述:fminbnd求取固定区间
6、内单变量函数的最小值。x=fminbnd(fun,x1,x2)返回区间{x1,x2}上fun参数描述的标量函数的最小值x。x=fminbnd(fun,x1,x2,options)用options参数指定的优化参数进行最小化。x=fminbnd(fun,x1,x2,options,P1,P2,...)提供另外的参数P1,P2等,传输给目标函数fun。如果没有设置options选项,则令options=[]。[x,fval]=fminbnd(...)返回解x处目标函数的值。[x,fval,exitflag]=fminbnd(...)返回exitflag值描述f
7、minbnd函数的退出条件。[x,fval,exitflag,output]=fminbnd(...)返回包含优化信息的结构输出。变量:函数的输入变量在表9-7中进行描述,输出变量在表9-8中描述。与fminbnd函数相关的细节内容包含在fun,options,exitflag和output等参数中,如表9-10所示。参数描述表参数描述fun需要最小化的目标函数。fun函数需要输入标量参数x,返回x处的目标函数标量值f。可以将fun函数指定为命令行,如x=fminbnd(inline('sin(x*x)'),x0)同样,fun参数可以是一个包含函数名的字符
8、串。对应的函数可以是M文件、内部函数或MEX文件。若fun='my