当前位置:文档之家› 最优化方法的matlab实现

最优化方法的matlab实现

最优化方法的matlab实现
最优化方法的matlab实现

第九章最优化方法的Matlab实现

在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。

用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:

1)建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。

2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。

最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。

9.1 概述

利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。

9.1.1 优化工具箱中的函数

优化工具箱中的函数包括下面几类:

1.最小化函数

表9-1 最小化函数表

2.方程求解函数

表9-2 方程求解函数表

3.最小二乘(曲线拟合)函数

表9-3 最小二乘函数表

4.实用函数

表9-4 实用函数表

5.大型方法的演示函数

表9-5 大型方法的演示函数表

6.中型方法的演示函数

表9-6 中型方法的演示函数表

9.1.3 参数设置

利用optimset函数,可以创建和编辑参数结构;利用optimget函数,可以获得options 优化参数。

● optimget函数

功能:获得options优化参数。

语法:

val = optimget(options,'param')

val = optimget(options,'param',default)

描述:

val = optimget(options,'param') 返回优化参数options中指定的参数的值。

只需要用参数开头的字母来定义参数就行了。

val = optimget(options,'param',default) 若options结构参数中没有定义指

定参数,则返回缺省值。注意,这种形式的函数主要用于其它优化函数。

举例:

1.下面的命令行将显示优化参数options返回到my_options结构中:

val = optimget(my_options,'Display')

2.下面的命令行返回显示优化参数options到my_options结构中(就象前面

的例子一样),但如果显示参数没有定义,则返回值'final':

optnew = optimget(my_options,'Display','final');

参见:

optimset

● optimset函数

功能:创建或编辑优化选项参数结构。

语法:

options = optimset('param1',value1,'param2',value2,...)

optimset

options = optimset

options = optimset(optimfun)

options = optimset(oldopts,'param1',value1,...)

options = optimset(oldopts,newopts)

描述:

options = optimset('param1',value1,'param2',value2,...) 创建一个称为

options的优化选项参数,其中指定的参数具有指定值。所有未指定的参数都设

置为空矩阵[](将参数设置为[]表示当options传递给优化函数时给参数赋缺省

值)。赋值时只要输入参数前面的字母就行了。

optimset函数没有输入输出变量时,将显示一张完整的带有有效值的参数列表。

options = optimset (with no input arguments) 创建一个选项结构options,

其中所有的元素被设置为[]。

options = optimset(optimfun) 创建一个含有所有参数名和与优化函数optimfun

相关的缺省值的选项结构options。

options = optimset(oldopts,'param1',value1,...) 创建一个oldopts的拷贝,

用指定的数值修改参数。

options = optimset(oldopts,newopts) 将已经存在的选项结构oldopts与新的

选项结构newopts进行合并。newopts参数中的所有元素将覆盖oldopts参数中

的所有对应元素。

举例:

1.下面的语句创建一个称为options的优化选项结构,其中显示参数设为

'iter',TolFun参数设置为1e-8:

options = optimset('Display','iter','TolFun',1e-8)

2.下面的语句创建一个称为options的优化结构的拷贝,改变TolX参数的

值,将新值保存到optnew参数中:

optnew = optimset(options,'TolX',1e-4);

3.下面的语句返回options优化结构,其中包含所有的参数名和与fminbnd

函数相关的缺省值:

options = optimset('fminbnd')

4.若只希望看到fminbnd函数的缺省值,只需要简单地键入下面的语句就行

了:

optimset fminbnd

或者输入下面的命令,其效果与上面的相同:

optimset('fminbnd')

参见:

optimget

9.1.4 模型输入时需要注意的问题

使用优化工具箱时,由于优化函数要求目标函数和约束条件满足一定的格式,所以需要用户在进行模型输入时注意以下几个问题:

1.目标函数最小化

优化函数fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax和lsqnonlin 都要求目标函数最小化,如果优化问题要求目标函数最大化,可以通过使该目标函数的负值最小化即-f(x)最小化来实现。近似地,对于quadprog函数提供-H和-f,对于linprog函数提供-f。

2.约束非正

优化工具箱要求非线性不等式约束的形式为C i(x)≤0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的目的,如C i(x)≥0形式的约束等价于- C i(x)≤0;C i(x)≥b形式的约束等价于- C i(x)+b≤0。

3.避免使用全局变量

9.1.5 @(函数句柄)函数

MATLAB6.0中可以用@函数进行函数调用。@函数返回指定MATLAB 函数的句柄,其调用格式为:

handle = @function

利用@函数进行函数调用有下面几点好处: ● 用句柄将一个函数传递给另一个函数; ● 减少定义函数的文件个数; ● 改进重复操作;

● 保证函数计算的可靠性。

下面的例子为humps 函数创建一个函数句柄,并将它指定为fhandle 变量。 fhandle = @humps;

同样传递句柄给另一个函数,也将传递所有变量。本例将刚刚创建的函数句柄传递给fminbnd 函数,然后在区间[0.3,1]上进行最小化。

x = fminbnd (@humps, 0.3, 1) x =

0.6370

9.2 最小化问题

9.2.1 单变量最小化 9.2.1.1 基本数学原理

本节讨论只有一个变量时的最小化问题,即一维搜索问题。该问题在某些情况下可以直接用于求解实际问题,但大多数情况下它是作为多变量最优化方法的基础在应用,因为进行多变量最优化要用到一维搜索法。该问题的数学模型为:

21

)

(min x x x x f x

<<

其中,x ,x1,和x2为标量,f (x )为函数,返回标量。 该问题的搜索过程可用下式表达:

d x x k k *+=+α1

其中x k 为本次迭代的值,d 为搜索方向,α为搜索方向上的步长参数。所以一维搜索就是要利用本次迭代的信息来构造下次迭代的条件。

求解单变量最优化问题的方法有很多种,根据目标函数是否需要求导,可以分为两类,即直接法和间接法。直接法不需要对目标函数进行求导,而间接法则需要用到目标函数的导

数。

1.直接法

常用的一维直接法主要有消去法和近似法两种。

(1)消去法 该法利用单峰函数具有的消去性质进行反复迭代,逐渐消去不包含极小点的区间,缩小搜索区间,直到搜索区间缩小到给定的允许精度为止。一种典型的消去法为黄金分割法(Golden Section Search)。黄金分割法的基本思想是在单峰区间内适当插入两点,将区间分为三段,然后通过比较这两点函数值的大小来确定是删去最左段还是最右段,或同时删去左右两段保留中间段。重复该过程使区间无限缩小。插入点的位置放在区间的黄金分割点及其对称点上,所以该法称为黄金分割法。该法的优点是算法简单,效率较高,稳定性好。

(2)多项式近似法 该法用于目标函数比较复杂的情况。此时寻找一个与它近似的函数代替目标函数,并用近似函数的极小点作为原函数极小点的近似。常用的近似函数为二次和三次多项式。

二次内插涉及到形如下式的二次函数数据拟合问题:

c

b a m q ++=ααα2)(

其中步长极值为:

a b 2-=

然后只要利用三个梯度或函数方程组就可以确定系数a 和b ,从而可以确定α*

。得到该值以后,进行搜索区间的收缩。在缩短的新区间中,重新安排三点求出下一次的近似极小点α*

,如此迭代下去,直到满足终止准则为止。其迭代公式为:

)()()()()()(213122311233122311231x f x f x f x f x f x f x k βββ++++=

+

其中

22j

i ij x x -=β

j

i ij x x -=γ

二次插值法的计算速度比黄金分割法的快,但是对于一些强烈扭曲或可能多峰的函数,该法的收敛速度会变得很慢,甚至失败。

2.间接法

间接法需要计算目标函数的导数,优点是计算速度很快。常见的间接法包括牛顿切线法、对分法、割线法和三次插值多项式近似法等。优化工具箱中用得较多的是三次插值法。

三次插值的基本思想与二次插值的一致,它是用四个已知点构造一个三次多项式P 3(x),用它逼近函数f(x),以P 3(x)的极小点作为f(x)的近似极小点。一般讲,三次插值法比二次插值法的收敛速度要快些,但每次迭代需要计算两个导数值。

三次插值法的迭代公式为

2121

2212212)()()()

(βββ+?-?-+?--=+x f x f x f x x x x k

其中

2

121211)()(3

)()(x x x f x f x f x f ---?+?=β

2

/121212))()((x f x f ??-=ββ

如果函数的导数容易求得,一般来说首先考虑使用三次插值法,因为它具有较高的效率。

对于只需要计算函数值的方法中,二次插值法是一个很好的方法,它的收敛速度较快,尤其在极小点所在区间较小时尤其如此。黄金分割法则是一种十分稳定的方法,并且计算简单。由于以上原因,Matlab 优化工具箱中使用得较多的方法是二次插值法、三次插值法、二次、三次混合插值法和黄金分割法。

9.2.1.2 相关函数介绍

fminbnd

功能:找到固定区间内单变量函数的最小值。 语法:

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 求取固定区间内单变量函数的最小值。

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 值描述fminbnd 函数的退出条件。

[x,fval,exitflag,output] = fminbnd(...)返回包含优化信息的结构输出。

变量:

函数的输入变量在表9-7中进行描述,输出变量在表9-8中描述。与fminbnd 函数相关的细节内容包含在fun,options,exitflag 和output 等参数中,如表9-10所示。

表9-10 参数描述表

算法:

fminbnd是一个M文件。其算法基于黄金分割法和二次插值法。文献[1]中给出了

实现同样算法的Fortran程序。

局限性:

1.目标函数必须是连续的。

2.f minbnd函数可能只给出局部最优解。

3.当问题的解位于区间边界上时,fminbnd函数的收敛速度常常很慢。此时,

fmincon函数的计算速度更快,计算精度更高。

4.f minbnd函数只用于实数变量。

参见:

fminsearch, fmincon, fminunc, optimset, inline

文献:

[1]Forsythe, G.E., M.A. Malcolm, and C.B. Moler, Computer Methods for

Mathematical Computations, Prentice Hall, 1976.

9.2.1.3 应用实例

[例一]在区间(0,2π)上求函数sin(x)的最小值:

x = fminbnd(@sin,0,2*pi)

x =

4.7124

所以区间(0,2π)上函数sin(x)的最小值点位于x=4.7124处。

最小值处的函数值为:

y = sin(x)

y =

-1.0000

磁盘中该问题的M文件名为opt21_1.m。

[例三]对边长为3m的正方形铁板,在四个角处剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?

假设剪去的正方形的边长为x,则水槽的容积为

x

x

x

f2)

2

3(

)

(-

=

现在要求在区间(0,1.5)上确定一个x,使

)

(x

f

最大化。因为优化工具

箱中要求目标函数最小化,所以需要对目标函数进行转换,即要求

)

(x

f

-

小化。

首先编写M文件opt21_3o.m:

function f = myfun(x)

f = -(3-2*x).^2 * x;

然后调用fminbnd函数(磁盘中M文件名为opt21_3.m):

x = fminbnd(@opt21_3o,0,1.5)

得到问题的解:

x =

0.5000

即剪掉的正方形的边长为0.5m时水槽的容积最大。

水槽的最大容积计算:

y = optim2(x)

y =

-2.0000

所以水槽的最大容积为2.0000m3。

9.2.2 线性规划

9.2.2.1 基本数学原理

线性规划是处理线性目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于

军事、经济、工业、农业、教育、商业和社会科学等许多方面。线性规划问题的标准形式是:

?

???

????

?≥???=+???++????????????????????????????????????=+???++=+???+++???++=0,,,min 21221122222121112

121112211n m n mn m m n n n n n n x x x b x a x a x a b x a x a x a b

x a x a x a x c x c x c z

????????

?

??

=≥===∑∑==n j x m i b x a x c z j n

j i j ij n j j j ,...,2,1,0,...,2,1,min 1

1

写成矩阵形式为:

???

??≥==0min X b AX CX

z

其中,0为n 维列向量。

线性规划的标准形式要求目标函数最小化,约束条件取等式,变量非负。不符合这几个条件的线性模型要首先转化成标准形。

线性规划的求解方法主要是单纯形法(Simple Method ),该法由Dantzig 于1947年提出,以后经过多次改进。单纯形法是一种迭代算法,它从所有基本可行解的一个较小部分中通过迭代过程选出最优解。其迭代过程的一般描述为:

1. 将线性规划化为典范形式,从而可以得到一个初始基本可行解x (0)

(初始顶点),将它

作为迭代过程的出发点,其目标值为z(x (0)

)。

2. 寻找一个基本可行解x (1),使z(x (1))≤z(x (0))。方法是通过消去法将产生x (0)

的典范形

式化为产生x (1)

的典范形式。

3. 继续寻找较好的基本可行解x (2),x (3),…,使目标函数值不断改进,即z(x (1))≥z(x (2)

)

≥z(x (3)

) ≥…。当某个基本可行解再也不能被其它基本可行解改进时,它就是所求的最优解。

Matlab 优化工具箱中采用的是投影法,它是单纯形法的一种变种。 9.2.2.2 相关函数介绍

linprog 函数

功能:求解线性规划问题。

数学模型:

其中f,x,b,beq,lb和ub为向量,A和Aeq为矩阵。

语法:

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(...)

描述:

x = linprog(f,A,b)求解问题 min f'*x,约束条件为A*x <= b。

x = linprog(f,A,b,Aeq,beq)求解上面的问题,但增加等式约束,即Aeq*x = beq。

若没有不等式存在,则令A=[]、b=[]。

x = linprog(f,A,b,Aeq,beq,lb,ub)定义设计变量x的下界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(...) 返回解x处的目标函数值fval。

[x,lambda,exitflag] = linprog(...)返回exitflag值,描述函数计算的退出条件。

[x,lambda,exitflag,output] = linprog(...) 返回包含优化信息的输出变量output。

[x,fval,exitflag,output,lambda] = linprog(...) 将解x处的拉格朗日乘子返回到lambda参数中。

变量:

lambda参数

lambda参数是解x处的拉格朗日乘子。它有以下一些属性:

●lambda.lower –lambda的下界。

●lambda.upper –lambda的上界。

●lambda.ineqlin –lambda的线性不等式。

●lambda.eqlin –lambda的线性等式。

其它参数意义同前。

算法:

大型优化算法大型优化算法采用的是LIPSOL法,该法在进行迭代计算之前首先

要进行一系列的预处理。

中型优化算法 linprog函数使用的是投影法,就象quadprog函数的算法一样。

linprog函数使用的是一种活动集方法,是线性规划中单纯形法的变种。它通过

求解另一个线性规划问题来找到初始可行解。

诊断:

大型优化问题算法的第一步涉及到一些约束条件的预处理问题。有些问题可能

导致linprog函数退出,并显示不可行的信息。在本例中,exitflag参数将被设

为负值以表示优化失败。

若Aeq参数中某行的所有元素都为零,但Beq参数中对应的元素不为零,则显示

以下退出信息:

Exiting due to infeasibility: an all zero row in the constraint matrix

does not have a zero in corresponding right hand size entry.

若x的某一个元素没在界内,则给出以下退出信息:

Exiting due to infeasibility: objective f'*x is unbounded below.

若Aeq参数的某一行中只有一个非零值,则x中的相关值称为奇异变量。这里,x

中该成分的值可以用Aeq和Beq算得。若算得的值与另一个约束条件相矛盾,则

给出以下退出信息:

Exiting due to infeasibility: Singleton variables in equality

constraints are not feasible.

若奇异变量可以求解但其解超出上界或下界,则给出以下退出信息:

Exiting due to infeasibility: singleton variables in the equality

constraints are not within bounds.

9.2.2.3 应用实例

[ [例二]生产决策问题

某厂生产甲乙两种产品,已知制成一吨产品甲需用资源A 3吨,资源B 4m3;制成一吨产品乙需用资源A 2吨,资源B 6m3,资源C 7个单位。若一吨产品甲和乙的经济价值分别为7万元和5万元,三种资源的限制量分别为90吨、200m3和210个单位,试决定应生产这两种产品各多少吨才能使创造的总经济价值最高?

令生产产品甲的数量为x1,生产产品乙的数量为x2。由题意可以建立下面的模型:

????

?

????≥≥≤≤+≤++=0,021*********

2357max 212212121x x x x x x x x x z

该模型中要求目标函数最大化,需要按照Matlab 的要求进行转换,即目标函数为

2157min x x z --=

首先输入下列系数:

f = [-7;-5]; A = [3 2 4 6 0 7];

b = [90; 200; 210]; lb = zeros(2,1);

然后调用linprog 函数:

[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb) x =

14.0000 24.0000 fval =

-218.0000 exitflag = 1 output =

iterations: 5 cgiterations: 0

algorithm: 'lipsol' lambda =

ineqlin: [3x1 double] eqlin: [0x1 double] upper: [2x1 double] lower: [2x1 double]

由上可知,生产甲种产品14吨、乙种产品24吨可使创建的总经济价值最高。最高经济价值为218万元。exitflag=1表示过程正常收敛于解x 处。

磁盘中本问题的M 文件为opt22_2.m 。

[例三] 投资问题

某单位有一批资金用于四个工程项目的投资,用于各工程项目时所得到得净收益(投入资金的百分比)如下表所示:

表9-11 工程项目收益表

由于某种原因,决定用于项目A 的投资不大于其它各项投资之和;而用于项目B 和C 的投资要大于项目D 的投资。试确定使该单位收益最大的投资分配方案。

用x 1、x 2、x 3和x 4分别代表用于项目A 、B 、C 和D 的投资百分数,由于各项目的投资百分数之和必须等于100%,所以

x 1+x 2+x 3+x 4=1 据题意,可以建立下面的数学模型:

????

??

?=≥=+++≥-+≤---+++=4,...,2,1,010012.008.01.015.0max 432143243214321j x x x x x x x x x x x x x x x x z j

将它转换为标准形式:

????

??

?=≥=+++≤+--≤-------=4,...,2,1,010012.008.01.015.0min 432143243214321j x x x x x x x x x x x x x x x x z j

然后进行求解:

首先输入下列系数:

f = [-0.15;-0.1;-0.08;-0.12]; A = [1 -1 -1 -1 0 -1 -1 1]; b = [0; 0]; Aeq=[1 1 1 1]; beq=[1];

lb = zeros(4,1);

然后调用linprog 函数:

[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb); x =

0.5000 0.2500

0.0000 0.2500 fval = -0.1300 exitflag = 1

可见,四个项目的投资百分数分别为0.50、0.25、0.00和0.25时可使该单位获得最大的收益。最大收益为13%。过程正常收敛。 磁盘中本问题的M 文件为opt22_3.m 。

[例四] 工件加工任务分配问题

某车间有两台机床甲和乙,可用于加工三种工件。假定这两台机床的可用台时数分别为700和800,三种工件的数量分别为300、500和400,且已知用三种不同机床加工单位数量的不同工件所需的台时数和加工费用(如表 所示),问怎样分配机床的加工任务,才能既满足加工工件的要求,又使总加工费用最低?

表9-12 机床加工情况表

设在甲机床上加工工件1、2和3的数量分别为x 1、x 2和x 3,在乙机床上加工工件1、2和3的数量分别为x 4、x 5和x 6。根据三种工种的数量限制,有

x 1+x 4=300 (对工件1) x 2+x 5=500 (对工件2) x 3+x 6=400 (对工件3)

再根据机床甲和乙的可用总台时限制,可以得到其它约束条件。以总加工费用最少为目标函数,组合约束条件,可以得到下面的数学模型:

??

?

??

??

?

???=≥≤++≤++=+=+=++++++=6,...,2,1,08003.12.15.07001.14.04005003008121110913min 654321635241654321j x x x x x x x x x x x x x x x x x x x z j

首先输入下列系数:

f = [13;9;10;11;12;8];

A = [0.4 1.1 1 0 0 0

0 0 0 0.5 1.2 1.3];

b = [700; 800];

Aeq=[1 0 0 1 0 0

0 1 0 0 1 0

0 0 1 0 0 1];

beq=[300 500 400];

lb = zeros(6,1);

然后调用linprog函数:

[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb);

x =

0.0000

500.0000

0.0000

300.0000

0.0000

400.0000

fval =

1.1000e+004

exitflag =

1

可见,在甲机床上加工500个工件2,在乙机床上加工300个工件1、加工400个工件3可在满足条件的情况下使总加工费最小。最小费用为11000元。收敛正常。

磁盘中本问题的M文件为opt22_4.m。

[例五]裁料问题

在某建筑工程施工中需要制作10000套钢筋,每套钢筋由2.9m、2.1m和1.5m三种不同长度的钢筋各一根组成,它们的直径和材质不同。目前在市场上采购到的同类钢筋的长度每根均为7.4m,问应购进多少根7.4m长的钢筋才能满足工程的需要?

首先分析共有多少种不同的套裁方法,该问题的可能材料方案如表9-13所示。

表9-13 材料方案表

设以x i (i=1,2,…,8)表示按第i 种裁料方案下料的原材料数量,则可得该问题的数学模型为:

??

??

????

?=≥=+++++=++++=++++++++++=8,...,2,1,010000432310000232100002min 87643176532432187654321j x x x x x x x x x x x x x x x x x x x x x x x x z j

首先输入下列系数:

f = [1;1;1;1;1;1;1;1]; Aeq=[2 0 0 0 0 0 0 0 0 2 1 0 3 2 1 0 1 0 1 3 0 2 3 4]; beq=[10000 10000 10000]; lb = zeros(8,1);

然后调用linprog 函数:

[x,fval,exitflag,output,lambda] = linprog(f,[],[],Aeq,beq,lb); x =

1.0e+003 * 5.0000 0.0000 0.0000 0.0000 1.6667

2.5000 0.0000 0.0000 fval =

9.1667e+003

所以最节省的情况需要9167根7.4m 长的钢筋,其中第一种方案使用5000根,第五种方案使用1667根,第六种方案使用2500根。

磁盘中本问题的M 文件为opt22_5.m 。

[例六] 工作人员计划安排问题

某昼夜服务的公共交通系统每天各时间段(每4小时为一个时间段)所需的值班人数如表 所示,这些值班人员在某一时段开始上班后要连续工作8个小时(包括轮流用膳时间),问该公交系统至少需要多少名工作人员才能满足值班的需要?

表9-14 各时段所需值班人数表

设x i 为第i 个时段开始上班的人员数,据题意建立下面的数学模型:

??

?

???

???

?

???=≥≥+≥+≥+≥+≥+≥++++++=6,...,2,1,0302050607060min 655443322116654321j x x x x x x x x x x x x x x x x x x x z j

需要对前面六个约束条件进行形式变换,是不等式为非正不等式。只需要在不等式两侧

取负即可。

首先输入下列系数: f = [1;1;1;1;1;1]; A=[-1 0 0 0 0 -1 -1 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 -1];

b=[-60;-70;-60;-50;-20;-30]; lb = zeros(6,1);

然后调用linprog 函数:

[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb); x =

41.9176 28.0824 35.0494 14.9506

9.8606 20.1394 fval = 150.0000 exitflag = 1

可见,只要六个时段分别安排42人、28人、35人、15人、10人和20人就可以满足值班的需要。共计150人。计算收敛。 磁盘中本问题的M 文件为opt22_6.m 。

[例七] 厂址选择问题

考虑A 、B 、C 三地,每地都出产一定数量的原料,也消耗一定数量的产品(见表9-15)。已知制成每吨产品需3吨原料,各地之间的距离为:A-B :150km ,A-C :100km ,B-C :200km 。假定每万吨原料运输1km 的运价是5000元,每万吨产品运输1km 的运价是6000元。由于地区条件的差异,在不同地点设厂的生产费用也不同。问究竟在哪些地方设厂,规模多大,才能使总费用最小?另外,由于其它条件限制,在B 处建厂的规模(生产的产品数量)不能超过5万吨。

表9-15 A 、B 、C 三地出产原料、消耗产品情况表

令x ij 为由i 地运到j 地的原料数量(万吨),y ij 为由i 地运往j 地的产品数量(万吨),i,j=1,2,3(分别对应A 、B 、C 三地)。根据题意,可以建立问题的数学模型(其中目标函数包括原材料运输费、产品运输费和生产费):

?????????

???

???==≥≠=≥≤+=++=++≤++--+≤-++-+≤--++++++++++++++=2,1;3,2,1,0;3,2,1,,0513724331633203322016012021024015010010050507575min 22

2132221231

211132312313323132232112222131211312121132312221121132

2331132112j i y j i j i x y y y y y y y y x x x x y y x x x x y y x x x x y y y

y y y y y x x x x x x z ij

ij

首先输入下列系数:

f = [75;75;50;50;100;100;150;240;210;120;160;220];

A=[1 -1 1 -1 0 0 3 3 0 0 0 0

-1 1 0 0 1 -1 0 0 3 3 0 0

0 0 -1 1 -1 1 0 0 0 0 3 3

0 0 0 0 0 0 0 0 1 1 0 0];

b=[20;16;24;5];

Aeq=[0 0 0 0 0 0 1 0 1 0 1 0

0 0 0 0 0 0 0 1 0 1 0 1];

beq=[7;13];

lb = zeros(12,1);

然后调用linprog函数:

[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb);

x =

0.0000

1.0000

0.0000

0.0000

0.0000

0.0000

7.0000

0.0000

0.0000

5.0000

0.0000

8.0000

fval =

3.4850e+003

exitflag =

1

要使总费用最小,需要B地向A地运送1万吨,A、B、C三地的建厂规模分别为7万吨、5万吨和8万吨。最小总费用为3485元。

磁盘中本问题的M文件为opt22_7.m。

[例八]确定职工编制问题

某厂每日八小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度 25件/小时,正确率 98%,计时工资 4元/小时;二级检验员的标准为:速度 15件/小时,正确率 95%,计时工资 3元/小时。检验员每错检一次,工厂要损失2元。现有可供厂方聘请的检验员人数为一级8人和二级10人。为使总检验费用最省,该工厂应聘一级、二级检验员各多少名?

Matlab优化工具箱函数简介

Matlab优化工具箱函数简介 一维搜索问题fminbnd 无约束极小值fminunc, fminsearch 约束极小值fmincon 线性规划linprog 二次规划quadprog 1.一维搜索问题 优化工具箱函数fminbnd 对应问题:min f(x) x10表示计算收敛,exitflag=0表示超过了最大的迭代次数,exitflag<0表示计算不收敛,返回值output有3个分量,其中iterations是优化过程中迭代次数,funcCount是代入函数值的次数,algorithm是优化所采用的算法。 例: clear fun='(x^5+x^3+x^2-1)/(exp(x^2)+sin(-x))' ezplot(fun,[-2,2])

Matlab频谱分析程序

Matlab频谱分析程序

Matlab 信号处理工具箱 谱估计专题 频谱分析 Spectral estimation (谱估计)的目标是基于一个有限的数据集合描述一个信号的功率(在频率上的)分布。功率谱估计在很多场合下都是有用的,包括对宽带噪声湮没下的信号的检测。 从数学上看,一个平稳随机过程n x 的power spectrum (功率谱)和correlation sequence (相关序列)通过discrete-time Fourier transform (离散时间傅立叶变换)构成联系。从normalized frequency (归一化角频率)角度看,有下式 ()()j m xx xx m S R m e ωω∞ -=-∞ = ∑ 注:()() 2 xx S X ωω=,其中 ()/2 /2 lim N j n n N N X x e N ωω=-=∑ πωπ -<≤。 其matlab 近似为X=fft(x,N)/sqrt(N),在下文中()L X f 就是指matlab fft 函数的计算结果了 使用关系2/s f f ωπ=可以写成物理频率f 的函数,

其中s f 是采样频率 ()()2/s jfm f xx xx m S f R m e π∞ -=-∞ = ∑ 相关序列可以从功率谱用IDFT 变换求得: ()()()/2 2//2 2s s s f jfm f j m xx xx xx s f S e S f e R m d df f πωππ ωωπ- -= =?? 序列n x 在整个Nyquist 间隔上的平均功率可以 表示为 ()()() /2 /2 02s s f xx xx xx s f S S f R d df f ππ ωωπ- -= =?? 上式中的 ()()2xx xx S P ωωπ = 以及()()xx xx s S f P f f = 被定义为平稳随机信号n x 的power spectral density (PSD)(功率谱密度) 一个信号在频带[]1 2 1 2 ,,0ωωωω π ≤<≤上的平均功率 可以通过对PSD 在频带上积分求出 []()()2 1 121 2 ,xx xx P P d P d ωωωωωω ωωωω-- = +?? 从上式中可以看出()xx P ω是一个信号在一个无 穷小频带上的功率浓度,这也是为什么它叫做功率谱密度。

五种最优化方法

五种最优化方法 1.最优化方法概述 1.1最优化问题的分类 1)无约束和有约束条件; 2)确定性和随机性最优问题(变量是否确定); 3)线性优化与非线性优化(目标函数和约束条件是否线性); 4)静态规划和动态规划(解是否随时间变化)。 1.2最优化问题的一般形式(有约束条件): 式中f(X)称为目标函数(或求它的极小,或求它的极大),si(X)称为不等式约束,hj(X)称为等式约束。化过程就是优选X,使目标函数达到最优值。 2.牛顿法 2.1简介 1)解决的是无约束非线性规划问题; 2)是求解函数极值的一种方法; 3)是一种函数逼近法。 2.2原理和步骤

3.最速下降法(梯度法) 3.1最速下降法简介 1)解决的是无约束非线性规划问题; 2)是求解函数极值的一种方法; 3)沿函数在该点处目标函数下降最快的方向作为搜索方向; 3.2最速下降法算法原理和步骤

4.模式搜索法(步长加速法) 4.1简介 1)解决的是无约束非线性规划问题; 2)不需要求目标函数的导数,所以在解决不可导的函数或者求导异常麻烦的函数的优化问题时非常有效。 3)模式搜索法每一次迭代都是交替进行轴向移动和模式移动。轴向移动的目的是探测有利的下降方向,而模式移动的目的则是沿着有利方向加速移动。 4.2模式搜索法步骤

5.评价函数法 5.1简介 评价函数法是求解多目标优化问题中的一种主要方法。在许多实际问题中,衡量一个方案的好坏标准往往不止一个,多目标最优化的数学描述如下:min (f_1(x),f_2(x),...,f_k(x)) s.t. g(x)<=0 传统的多目标优化方法本质是将多目标优化中的各分目标函数,经处理或数学变换,转变成一个单目标函数,然后采用单目标优化技术求解。常用的方法有“线性加权和法”、“极大极小法”、“理想点法”。选取其中一种线性加权求合法介绍。 5.2线性加权求合法 6.遗传算法 智能优化方法是通过计算机学习和存贮大量的输入-输出模式映射关系,进

最新matlab优化工具箱介绍

m a t l a b优化工具箱介 绍

matlab优化工具箱介绍 分类: Matlab2007-11-03 20:27 6405人阅读评论(0) 收藏举报在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容: 1)建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 9.1 概述 利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问

5.大型方法的演示函数

9.1.3 参数设置 利用optimset函数,可以创建和编辑参数结构;利用optimget函数,可以获得options优化参数。 ● optimget函数 功能:获得options优化参数。 语法: val = optimget(options,'param') val = optimget(options,'param',default) 描述: val = optimget(options,'param') 返回优化参数options中指定的参数的 值。只需要用参数开头的字母来定义参数就行了。 val = optimget(options,'param',default) 若options结构参数中没有定义 指定参数,则返回缺省值。注意,这种形式的函数主要用于其它优化 函数。 举例:

计算方法_全主元消去法_matlab程序

%求四阶线性方程组的MA TLAB程序 clear Ab=[0.001 2 1 5 1; 3 - 4 0.1 -2 2; 2 -1 2 0.01 3; 1.1 6 2.3 9 4];%增广矩阵 num=[1 2 3 4];%未知量x的对应序号 for i=1:3 A=abs(Ab(i:4,i:4));%系数矩阵取绝对值 [r,c]=find(A==max(A(:))); r=r+i-1;%最大值对应行号 c=c+i-1;%最大值对应列号 q=Ab(r,:),Ab(r,:)=Ab(i,:),Ab(i,:)=q;%行变换 w=Ab(:,c),Ab(:,c)=Ab(:,i),Ab(:,i)=w;%列变换 n=num(i),num(i)=num(c),num(c)=n;%列变换引起未知量x次序变化for j=i:3 Ab(j+1,:)=-Ab(j+1,i)*Ab(i,:)/Ab(i,i)+Ab(j+1,:);%消去过程 end end %最后得到系数矩阵为上三角矩阵 %回代算法求解上三角形方程组 x(4)=Ab(4,5)/Ab(4,4); x(3)=(Ab(3,5)-Ab(3,4)*x(4))/Ab(3,3); x(2)=(Ab(2,5)-Ab(2,3)*x(3)-Ab(2,4)*x(4))/Ab(2,2); x(1)=(Ab(1,5)-Ab(1,2)*x(2)-Ab(1,3)*x(3)-Ab(1,4)*x(4))/Ab(1,1); for s=1:4 fprintf('未知量x%g =%g\n',num(s),x(s)) end %验证如下 %A=[0.001 2 1 5 1; 3 -4 0.1 -2 2;2 -1 2 0.01 3; 1.1 6 2.3 9 4]; %b=[1 2 3 4]'; %x=A\b; %x1= 1.0308 %x2= 0.3144 %x3= 0.6267 %x4= -0.0513

信号检测与估值matlab仿真报告

信号检测与估值 仿真报告 题目信号检测与估值的MATLAB仿真学院通信工程学院 专业通信与信息系统 学生姓名 学号 导师姓名

作业1 试编写程序,画出相干移频键控、非相干移频键控(无衰落)和瑞利衰落信道下非相干移频键控的性能曲线。 (1)根据理论分析公式画性能曲线; (2)信噪比范围(0dB-10dB),间隔是1dB; (3)信噪比计算SNR=10lg(Es/N0) 一、脚本文件 1、主程序 %******************************************************** %二元移频信号检测性能曲线(理论分析) %FSK_theo.m %******************************************************** clear all; clc; SNRindB=0:1:20; Pe_CFSK=zeros(1,length(SNRindB)); Pe_NCFSK=zeros(1,length(SNRindB)); Pe_NCFSK_Rayleigh=zeros(1,length(SNRindB)); for i=1:length(SNRindB) EsN0=exp(SNRindB(i)*log(10)/10); Es_aveN0=exp(SNRindB(i)*log(10)/10); Pe_CFSK(i)=Qfunct(sqrt(EsN0));%相干移频键控系统 Pe_NCFSK(i)=0.5*exp(-EsN0/2);%非相干移频键控系统(无衰落) Pe_NCFSK_Rayleigh(i)=1/(2+Es_aveN0);%非相干移频键控系统(瑞利衰落)end semilogy(SNRindB,Pe_CFSK,'-o',SNRindB,Pe_NCFSK,'-*',SNRindB,Pe_NCFSK_Rayleigh ,'-'); xlabel('Es/No或平均Es/No(dB)'); ylabel('最小平均错误概率Pe'); legend('相干移频','非相干移频(无衰落)','非相干移频(瑞利衰落)'); title('二元移频信号检测性能曲线'); axis([0 20 10^-7 1]); grid on; 2、调用子函数 %******************************************************** %Q函数 %Qfunct.m %********************************************************

常用最优化方法评价准则

常用无约束最优化方法评价准则 方法算法特点适用条件 最速下降法属于间接法之一。方法简便,但要计算一阶偏导 数,可靠性较好,能稳定地使函数下降,但收敛 速度较慢,尤其在极点值附近更为严重 适用于精度要求不高或用于对 复杂函数寻找一个好的初始 点。 Newton法属于间接法之一。需计算一、二阶偏导数和Hesse 矩阵的逆矩阵,准备工作量大,算法复杂,占用 内存量大。此法具有二次收敛性,在一定条件下 其收敛速度快,要求迭代点的Hesse矩阵必须非 奇异且定型(正定或负定)。对初始点要求较高, 可靠性较差。 目标函数存在一阶\二阶偏导 数,且维数不宜太高。 共轭方向法属于间接法之一。具有可靠性好,占用内存少, 收敛速度快的特点。 适用于维数较高的目标函数。 变尺度法属于间接法之一。具有二次收敛性,收敛速度快。 可靠性较好,只需计算一阶偏导数。对初始点要 求不高,优于Newton法。因此,目前认为此法是 最有效的方法之一,但需内存量大。对维数太高 的问题不太适宜。 适用维数较高的目标函数 (n=10~50)且具有一阶偏导 数。 坐标轮换法最简单的直接法之一。只需计算函数值,无需求 导,使用时准备工作量少。占用内存少。但计算 效率低,可靠性差。 用于维数较低(n<5)或目标函 数不易求导的情况。 单纯形法此法简单,直观,属直接法之一。上机计算过程 中占用内存少,规则单纯形法终止条件简单,而 不规则单纯形法终止条件复杂,应注意选择,才 可能保证计算的可靠性。 可用于维数较高的目标函数。

常用约束最优化方法评价标准 方法算法特点适用条件 外点法将约束优化问题转化为一系列无约束优化问题。 初始点可以任选,罚因子应取为单调递增数列。 初始罚因子及递增系数应取适当较大值。 可用于求解含有等式约束或不等 式约束的中等维数的约束最优化 问题。 内点法将约束优化问题转化为一系列无约束优化问题。 初始点应取为严格满足各个不等式约束的内点, 障碍因子应取为单调递减的正数序列。初始障碍 因子选择恰当与否对收敛速度和求解成败有较大 影响。 可用于求解只含有不等式约束的 中等维数约束优化问题。 混合罚函数法将约束优化问题转化为一系列无约束优化问题, 用内点形式的混合罚函数时,初始点及障碍因子 的取法同上;用外点形式的混合罚函数时,初始 点可任选,罚因子取法同外点法相同。 可用于求解既有等式约束又有不 等式约束的中等维数的约束化问 题。 约束坐标轮换法由可行点出发,分别沿各坐标轴方向以加步探索 法进行搜索,使每个搜索点在可行域内,且使目 标函数值下降。 可用于求解只含有不等式约束, 且维数较低(n<5),目标函数的 二次性较强的优化问题。 复合形法在可行域内构造一个具有n个顶点的复合形,然 后对复合形进行映射变化,逐次去掉目标函数值 最大的顶点。 可用于求解含不等式约束和边界 约束的低维优化问题。

music 方位估计 实验报告三 MATLAB 代码

实验报告三 实验目的: 实现常规波束形成及基于MUSIC 方法的方位估计。 实验内容: 1)若干阵元的接收阵,信号频率为10KHz ,波束主轴12度,仿真给出常规波束形成的波束图。 2)16个阵元的均匀线列阵,信号频率为10KHz ,信号方位为12度,用MUSIC 方法完成目标定向,信噪比-5dB ,0dB ,5dB 。 i) 波束形成时的阵型设计为两种,一种是均匀线列阵,阵元16个;一种是均匀圆阵,阵元数为16个,比较这两种阵型的波束图。 ii )比较不同信噪比下MUSIC 方法估计的性能(统计100次)。 实验原理: i)常规波束形成: 如图所示,基阵的输出),(θt v 。 ∑∑=*=* ==M m i i M m i i w t x t x w t v 1 1 ) ()()()(),(θθθ 采用向量符号则有, )()()()(),(H H θθθw x x w t t t v == 式中,x(t)和w(q )分别为观测数据向量和加权系数向量, ) ,(θt v 图 1 波束形成器基本原理图

T M 21])()()([)(t x t x t x t Λ=x T M 21])()()([)(θθθθw w w Λ =w 基阵输出端的空间功率谱表示为: ) ()( )()]()([)( )]()()()([ )],(),([ ] ),([)(H H H H H *2 θθθθθθθθθθRw w w x x w w x x w =====t t E t t E t v t v E t v E P 式中,R 为观测数据的协方差矩阵。 ii )基于MUSIC 方法的方位估计: )()()()(1 t n t s a t x i d i +=∑=θ T M 21])()()([)(t x t x t x t Λ =x )()()()(t n t s A t x +=θ 假设: (1 ) 信号源的数目d 是已知的, 且d < M ; (2 ) 各信号的方向矢量是相互独立的, 即)(θA 是一个列满秩矩阵; (3 ) 噪声)(t n 是空间平稳随机过程, 为具有各态历经性的均值为零、方差为σ2n 的高斯过程; (4 ) 噪声各取样间是统计独立的。 在上述假设条件下, 基阵输出的协方差矩阵可表示为: I A AR t x t x E R H s H 2])()([α+== 其中, R s 为信号的协方差矩阵;I 为单位矩阵。对R 进行特征分解, 并以特 征值降值排列可得 H m m M d m m H m m d m m e e e e R ∑∑+==+ =1 1λ λ 信号子空间与噪声子空间正交。 若噪声子空间记为E N , 即 ∑+== M d m H m m N e e E 1

最优化方法及其应用 - 更多gbj149 相关pdf电子书下载

最优化方法及其应用 作者:郭科 出版社:高等教育出版社 类别:不限 出版日期:20070701 最优化方法及其应用 的图书简介 系统地介绍了最优化的理论和计算方法,由浅入深,突出方法的原则,对最优化技术的理论作丁适当深度的讨论,着重强调方法与应用的有机结合,包括最优化问题总论,线性规划及其对偶问题,常用无约束最优化方法,动态规划,现代优化算法简介,其中前八章为传统优化算法,最后一章还给出了部分优化问题的设计实例,也可供一般工科研究生以及数学建模竞赛参赛人员和工程技术人员参考, 最优化方法及其应用 的pdf电子书下载 最优化方法及其应用 的电子版预览 第一章 最优化问题总论1.1 最优化问题数学模型1.2 最优化问题的算法1.3 最优化算法分类1.4

组合优化问題简卉习题一第二章 最优化问题的数学基础2.1 二次型与正定矩阵2.2 方向导数与梯度2.3 Hesse矩阵及泰勒展式2.4 极小点的判定条件2.5 锥、凸集、凸锥2.6 凸函数2.7 约束问题的最优性条件习题二第三章 线性规划及其对偶问题3.1线性规划数学模型基本原理3.2 线性规划迭代算法3.3 对偶问题的基本原理3.4 线性规划问题的灵敏度习题三第四章 一维搜索法4.1 搜索区间及其确定方法4.2 对分法4.3 Newton切线法4.4 黄金分割法4.5 抛物线插值法习题四第五章 常用无约束最优化方法5.1 最速下降法5.2 Newton法5.3 修正Newton法5.4 共轭方向法5.5 共轭梯度法5.6 变尺度法5.7 坐标轮换法5.8 单纯形法习題五第六章 常用约束最优化方法6.1外点罚函数法6.2 內点罚函数法6.3 混合罚函数法6.4 约束坐标轮换法6.5 复合形法习题六第七章 动态规划7.1 动态规划基本原理7.2 动态规划迭代算法7.3 动态规划有关说明习题七第八章 多目标优化8.1 多目标最优化问题的基本原理8.2 评价函数法8.3 分层求解法8.4目标规划法习题八第九章 现代优化算法简介9.1 模拟退火算法9.2遗传算法9.3 禁忌搜索算法9.4 人工神经网络第十章 最优化问题程序设计方法10.1 最优化问题建模的一般步骤10.2 常用最优化方法的特点及选用标准10.3 最优化问题编程的一般过程10.4 优化问题设计实例参考文献 更多 最优化方法及其应用 相关pdf电子书下载

常用无约束最优化方法(一)

项目三 常用无约束最优化方法(一) [实验目的] 编写最速下降法、Newton 法(修正Newton 法)的程序。 [实验学时] 2学时 [实验准备] 1.掌握最速下降法的思想及迭代步骤。 2.掌握Newton 法的思想及迭代步骤; 3.掌握修正Newton 法的思想及迭代步骤。 [实验内容及步骤] 编程解决以下问题:【选作一个】 1.用最速下降法求 22120min ()25[22]0.01T f X x x X ε=+==,,,. 2.用Newton 法求 22121212min ()60104f X x x x x x x =--++-, 初始点 0[00]0.01T X ε==,,. 最速下降法 Matlab 程序: clc;clear; syms x1 x2; X=[x1,x2]; fx=X(1)^2+X(2)^2-4*X(1)-6*X(2)+17; fxd1=[diff(fx,x1) diff(fx,x2)]; x=[2 3]; g=0; e=0.0005; a=1; fan=subs(fxd1,[x1 x2],[x(1) x(2)]); g=0; for i=1:length(fan) g=g+fan(i)^2; end g=sqrt(g); step=0; while g>e step=step+1; dk=-fan; %点x(k)处的搜索步长

ak=((2*x(1)-4)*dk(1)+(2*x(2)-6)*dk(2))/(dk(1)*dk(2)-2*dk(1)^2-2*dk(2)^2); xu=x+ak*dk; x=xu; %输出结果 optim_fx=subs(fx,[x1 x2],[x(1) x(2)]); fprintf(' x=[ %d %d ] optim_fx=%d\n',x(1),x(2),optim_fx); %计算目标函数点x(k+1)处一阶导数值 fan=subs(fxd1,[x1 x2],[x(1) x(2)]); g=0; for i=1:length(fan) g=g+fan(i)^2; end g=sqrt(g); end %输出结果 optim_fx=subs(fx,[x1 x2],[x(1) x(2)]); fprintf('\n最速下降法\n结果:\n x=[ %d %d ] optim_fx=%d\n',x(1),x(2),optim_fx); c++程序 #include #include #include #include float goldena(float x[2],float p[2]) {float a; a=-1*(x[0]*p[0]+4*x[1]*p[1])/(p[0]*p[0]+4*p[1]*p[1]); return a; } void main() {float a=0,x[2],p[2],g[2]={0,0},e=0.001,t; int i=0; x[0]=1.0; x[1]=1.0;

Matlab频谱分析程序

Matlab 信号处理工具箱 谱估计专题 频谱分析 Spectral estimation (谱估计)的目标是基于一个有限的数据集合描述一个信号的功率(在频率上的)分布。功率谱估计在很多场合下都是有用的,包括对宽带噪声湮没下的信号的检测。 从数学上看,一个平稳随机过程n x 的power spectrum (功率谱)和correlation sequence (相关序列)通过discrete-time Fourier transform (离散时间傅立叶变换)构成联系。从normalized frequency (归一化角频率)角度看,有下式 ()()j m xx xx m S R m e ωω∞ -=-∞ = ∑ 注:()() 2 xx S X ωω=,其中( )/2 /2 lim N j n n N n N X x e ωω=-=∑ πωπ-<≤。其matlab 近似为X=fft(x,N)/sqrt(N),在下文中()L X f 就是指matlab fft 函数的计算结果了 使用关系2/s f f ωπ=可以写成物理频率f 的函数,其中s f 是采样频率 ()()2/s jfm f xx xx m S f R m e π∞ -=-∞ = ∑ 相关序列可以从功率谱用IDFT 变换求得: ()()()/2 2//2 2s s s f jfm f j m xx xx xx s f S e S f e R m d df f πωπ π ωωπ--= =? ? 序列n x 在整个Nyquist 间隔上的平均功率可以表示为 ()()() /2 /2 02s s f xx xx xx s f S S f R d df f π π ωωπ--= =? ?

《最优化方法与应用》实验指导书

《最优化方法与应用》 实验指导书 信息与计算科学系编制

1 实验目的 基于单纯形法求解线性规划问题,编写算法步骤,绘制算法流程图,编写单纯形法程序,并针对实例完成计算求解。 2实验要求 程序设计语言:C++ 输入:线性规划模型(包括线性规划模型的价值系数、系数矩阵、右侧常数等) 输出:线性规划问题的最优解及目标函数值 备注:可将线性规划模型先转化成标准形式,也可以在程序中将线性规划模型从一般形式转化成标准形式。 3实验数据 123()-5-4-6=Min f x x x x 121231212320 324423230,,03-+≤??++≤??+≤??≥? x x x x x x st x x x x x

1 实验目的 基于线性搜索的对分法、Newton 切线法、黄金分割法、抛物线法等的原理及方法,编写算法步骤和算法流程图,编写程序求解一维最优化问题,并针对实例具体计算。 2实验要求 程序设计语言:C++ 输入:线性搜索模型(目标函数系数,搜索区间,误差限等) 输出:最优解及对应目标函数值 备注:可从对分法、Newton 切线法、黄金分割法、抛物线法中选择2种具体的算法进行算法编程。 3实验数据 2211 ()+-6(0.3)0.01(0.9)0.04 = -+-+Min f x x x 区间[0.3,1],ε=10-4

实验三 无约束最优化方法 1实验目的 了解最速下降法、牛顿法、共轭梯度法、DFP 法和BFGS 法等的基本原理及方法,掌握其迭代步骤和算法流程图,运用Matlab 软件求解无约束非线性多元函数的最小值问题。 2实验要求 程序设计语言:Matlab 针对实验数据,对比最速下降法、牛顿法、共轭梯度法、DFP 法和BFGS 法等算法,比较不同算法的计算速度和收敛特性。 3实验数据 Rosenbrock's function 222211()(100)+(1-)=-Min f x x x x 初始点x=[-1.9, 2],,ε=10-4

(完整版)MATLAB模拟2ASK调制误码率与信噪比关系曲线的程序

%模拟2ASK % Pe=zeros(1,26); jishu=1; for snr=-10:0.5:15 max = 10000; s=round(rand(1,max));%长度为max的随机二进制序列 f=100;%载波频率 nsamp = 1000;每个载波的取样点数 tc=0:2*pi/999:2*pi;tc的个数应与nsamp相同 cm=zeros(1,nsamp*max); cp=zeros(1,nsamp*max); mod=zeros(1,nsamp*max); for n=1:max; if s(n)==0; m=zeros(1,nsamp); b=zeros(1,nsamp); else if s(n)==1; m=ones(1,nsamp); b=ones(1,nsamp); end end c = sin(f*tc); cm((n-1)*nsamp+1:n*nsamp)=m; cp((n-1)*nsamp+1:n*nsamp)=b; mod((n-1)*nsamp+1:n*nsamp)=c; end tiaoz=cm.*mod;%2ASK调制 t = linspace(0,length(s),length(s)*nsamp); tz=awgn(tiaoz,snr);%信号tiaoz中加入白噪声,信噪比为SNR=10dB jiet = 2*mod.*tz; %相干解调 [N,Wn]=buttord(0.2,0.3,1,15); [b,a]=butter(N,Wn); dpsk=filter(b,a,jiet);%低通滤波 % 抽样判决,判决门限为0.5 depsk = zeros(1,nsamp*max); for m = nsamp/2:nsamp:nsamp*max; if dpsk(m) < 0.5; for i = 1:nsamp depsk((m-500)+i) = 0; end

最优化方法及应用

陆吾生教授是加拿大维多利亚大学电气与计算机工程系 (Dept. of Elect. and Comp. Eng. University of Victoria) 的正教授, 且为我校兼职教授,曾多次来我校数学系电子系讲学。陆吾生教授的研究方向是:最优化理论和小波理论及其在1维和2维的数字信号处理、数字图像处理、控制系统优化方面的应用。 现陆吾生教授计划在 2007 年 10-11 月来校开设一门为期一个月的短期课程“最优化理论及其应用”(每周两次,每次两节课),对象是数学系、计算机系、电子系的教师、高年级本科生及研究生,以他在2006年出版的最优化理论的专著作为教材。欢迎数学系、计算机系、电子系的研究生及高年级本科生选修该短期课程,修毕的研究生及本科生可给学分。 上课地点及时间:每周二及周四下午2:00开始,在闵行新校区第三教学楼326教室。(自10月11日至11月8日) 下面是此课程的内容介绍。 ----------------------------------- 最优化方法及应用 I. 函数的最优化及应用 1.1 无约束和有约束的函数优化问题 1.2 有约束优化问题的Karush-Kuhn-Tucker条件 1.3 凸集、凸函数和凸规划 1.4 Wolfe对偶 1.5 线性规划与二次规划 1.6 半正定规划 1.7 二次凸锥规划 1.8 多项式规划 1.9解最优化问题的计算机软件 II 泛函的最优化及应用 2.1 有界变差函数 2.2 泛函的变分与泛函的极值问题 2.3 Euler-Lagrange方程 2.4 二维图像的Osher模型 2.5 泛函最优化方法在图像处理中的应用 2.5.1 噪声的消减 2.5.2 De-Blurring 2.5.3 Segmentation ----------------------------------------------- 注:这是一门约二十学时左右的短期课程,旨在介绍函数及泛函的最优化理论和方法,及其在信息处理中的应用。只要学过一元及多元微积分和线性代数的学生就能修读并听懂本课程。课程中涉及到的算法实现和应用举例都使用数学软件MATLAB 华东师大数学系

MATLAB优化工具箱应用简介

MATLAB优化工具箱 1 工具箱概述 1.1 功能 (1)求解无约束条件非线性极小值; (2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题和半无限极小值问题; (3)求解二次规划和线性规划问题; (4)非线性最小二乘逼近和曲线拟合; (5)非线性系统的方程求解; (6)约束条件下的线性最小二乘优化; (7)求解复杂结构的大规模优化问题。 1.2 工具箱的新特色 MATLAB R2008b使用的是4.1版本的优化工具箱,较3.x的变化在于: (1)fmincon、fminimax和fgoalattain中引入了并行机制,加快梯度计算速度; (2)函数gatool和pserchtool整合到优化工具箱GUI中; (3)函数fmincon的求解器中新增内点算法; (4)提供了KNITRO优化库的接口; (5)函数lsqcurvefit、lsqnonlin和fsolve的优化选项参数PrecondBandWinth默认值由0变为inf; (6)优化选项参数TolConSQP的默认值改为1e-6; (7)输出结构中引入了参数constrviolation。 2 工具箱函数 常用函数: 输入参数中可以用options,用于所有函数,其中包括有一下参数。 (1)Display:结果显示方式,off不显示,iter显示每次迭代的信息,final为最终结果,notify只有当求解不收敛的时候才显示结果。 (2)MaxFunEvals:允许函数计算的最大次数,取值为正整数。 (3)MaxIter:允许迭代的最大次数,正整数。 (4)TolFun:函数值(计算结果)精度,正整数。 (5)TolX:自变量的精度,正整数。 而且可以用函数optimset创建和修改。 模型输入时需要注意问题: (1)目标函数最小化;

(整理)matlab16常用计算方法.

常用计算方法 1.超越方程的求解 一超越方程为 x (2ln x – 3) -100 = 0 求超越方程的解。 [算法]方法一:用迭代算法。将方程改为 01002ln()3 x x =- 其中x 0是一个初始值,由此计算终值x 。取最大误差为e = 10-4,当| x - x 0| > e 时,就用x 的值换成x 0的值,重新进行计算;否则| x - x 0| < e 为止。 [程序]P1_1abs.m 如下。 %超越方程的迭代算法 clear %清除变量 x0=30; %初始值 xx=[]; %空向量 while 1 %无限循环 x=100/(2*log(x0)-3); %迭代运算 xx=[xx,x]; %连接结果 if length(xx)>1000,break ,end %如果项数太多则退出循环(暗示发散) if abs(x0-x)<1e-4,break ,end %当精度足够高时退出循环 x0=x; %替换初值 end %结束循环 figure %创建图形窗口 plot(xx,'.-','LineWidth',2,'MarkerSize',12)%画迭代线'.-'表示每个点用.来表示,再用线连接 grid on %加网格 fs=16; %字体大小 title('超越方程的迭代折线','fontsize',fs)%标题 xlabel('\itn','fontsize',fs) %x 标签 ylabel('\itx','fontsize',fs) %y 标签 text(length(xx),xx(end),num2str(xx(end)),'fontsize',fs)%显示结果 [图示]用下标作为自变量画迭代的折线。如P0_20_1图所示,当最大误差为10-4时,需要迭代19次才能达到精度,超越方程的解为27.539。 [算法]方法二:用求零函数和求解函数。将方程改为函数 100()2ln()3f x x x =-- MATLAB 求零函数为fzero ,fzero 函数的格式之一是 x = fzero(f,x0) 其中,f 表示求解的函数文件,x0是估计值。fzero 函数的格式之二是 x = fzero(f,[x1,x2])

Matlab各工具箱功能简介(部分)

Toolbox工具箱 序号工具箱备注 一、数学、统计与优化 1 Symbolic Math Toolbox 符号数学工具箱 Symbolic Math Toolbox?提供用于求解和推演符号运算表达式以及执行可变精度算术的函数。您可以通过分析执行微分、积分、化简、转换以及方程求解。另外,还可以利用符号运算表达式为MATLAB?、Simulink?和Simscape?生成代码。 Symbolic Math Toolbox 包含MuPAD?语言,并已针对符号运算表达式的处理和执行进行优化。该工具箱备有MuPAD 函数库,其中包括普通数学领域的微积分和线性代数,以及专业领域的数论和组合论。此外,还可以使用MuPAD 语言编写自定义的符号函数和符号库。MuPAD 记事本支持使用嵌入式文本、图形和数学排版格式来记录符号运算推导。您可以采用HTML 或PDF 的格式分享带注释的推导。 2 Partial Differential Euqation Toolbox 偏微分方程工具箱 偏微分方程工具箱?提供了用于在2D,3D求解偏微分方程(PDE)以及一次使用有限元分析。它可以让你指定和网格二维和三维几何形状和制定边界条件和公式。你能解决静态,时域,频域和特征值问题在几何领域。功能进行后处理和绘图效果使您能够直观地探索解决方案。 你可以用偏微分方程工具箱,以解决从标准问题,如扩散,传热学,结构力学,静电,静磁学,和AC电源电磁学,以及自定义,偏微分方程的耦合系统偏微分方程。 3 Statistics Toolbox 统计学工具箱

4 Curve Fitting Toolbox 曲线拟合工具箱 Curve Fitting Toolbox?提供了用于拟合曲线和曲面数据的应用程序和函数。使用该工具箱可以执行探索性数据分析,预处理和后处理数据,比较候选模型,删除偏值。您可以使用随带的线性和非线性模型库进行回归分析,也可以指定您自行定义的方程式。该库提供了优化的解算参数和起始条件,以提高拟合质量。该工具箱还提供非参数建模方法,比如样条、插值和平滑。 在创建一个拟合之后,您可以运用多种后处理方法进行绘图、插值和外推,估计置信区间,计算积分和导数。 5 Optimization Toolbox 优化工具箱 Optimization Toolbox?提供了寻找最小化或最大化目标并同时满足限制条件的函数。工具箱中包括了线性规划、混合整型线性规划、二次规划、非线性优化、非线性最小二乘的求解器。您可以使用这些求解器寻找连续与离散优化问题的解决方案、执行折衷分析、以及将优化的方法结合到其算法和应用程序中。 6 Global Optimization Toolbox 全局优化工具箱 Global Optimization Toolbox 所提供的方法可为包含多个极大值或极小值的问题搜索全局解。它包含全局搜索、多初始点、模式搜索、遗传算法和模拟退火求解器。对于目标

最优化方法及其应用课后答案

1 2 ( ( 最优化方法部分课后习题解答 1.一直优化问题的数学模型为: 习题一 min f (x ) = (x ? 3)2 + (x ? 4)2 ? g (x ) = x ? x ? 5 ≥ ? 1 1 2 2 ? 试用图解法求出: s .t . ?g 2 (x ) = ?x 1 ? x 2 + 5 ≥ 0 ?g (x ) = x ≥ 0 ? 3 1 ??g 4 (x ) = x 2 ≥ 0 (1) 无约束最优点,并求出最优值。 (2) 约束最优点,并求出其最优值。 (3) 如果加一个等式约束 h (x ) = x 1 ? x 2 = 0 ,其约束最优解是什么? * 解 :(1)在无约束条件下, f (x ) 的可行域在整个 x 1 0x 2 平面上,不难看出,当 x =(3,4) 时, f (x ) 取最小值,即,最优点为 x * =(3,4):且最优值为: f (x * ) =0 (2)在约束条件下, f (x ) 的可行域为图中阴影部分所示,此时,求该问题的最优点就是 在约束集合即可行域中找一点 (x 1 , x 2 ) ,使其落在半径最小的同心圆上,显然,从图示中可 以看出,当 x * = 15 , 5 ) 时, f (x ) 所在的圆的半径最小。 4 4 ?g (x ) = x ? x ? 5 = 0 ? 15 ?x 1 = 其中:点为 g 1 (x ) 和 g 2 (x ) 的交点,令 ? 1 1 2 ? 2 求解得到: ? 4 5 即最优点为 x * = ? ?g 2 (x ) = ?x 1 ? x 2 + 5 = 0 15 , 5 ) :最优值为: f (x * ) = 65 ?x = ?? 2 4 4 4 8 (3).若增加一个等式约束,则由图可知,可行域为空集,即此时最优解不存在。 2.一个矩形无盖油箱的外部总面积限定为 S ,怎样设计可使油箱的容量最大?试列出这个优 化问题的数学模型,并回答这属于几维的优化问题. 解:列出这个优化问题的数学模型为: max f (x ) = x 1x 2 x 3 ?x 1x 2 + 2x 2 x 3 + 2x 1x 3 ≤ S

最优化求解法在实际问题中的应用

本科毕业论文 (2014届) 题目:最优化求解法在实际问题中的应用学院:计算机与科学技术学院 专业:数学与应用数学 班级:10数本班 学号:1006131084 姓名:严慧 指导老师:孙钢钢

目录 1.摘要 (3) 2.关键字 (3) 3.引言 (3) 4.最优化求解法在实际问题中的应用 (4) 4.1.无约束最优化问题的求解............................................... ....... 4.2.有约束最优化问题的求解............................................... ....... 4.3.线性规划问题的求解............................................... ........... ... 4.4.非线性规划问题的求解............................................... ........... 5.结束语................................................................................................参考书目

1.摘要:本文介绍最优化及相关知识在实际生活中的应用,主要是利用运筹 学来研究解决在实际生活中所遇到的一些问题,找到最优的解决方案,帮助人们提供最好的最有科学依据的最佳方法。 2.关键字:最优化,运筹学,生活,应用。 Abstract:This paper introduced the Optimization in the real life application,this is use of Operations research to solve the problem in real life,finding the best solution,and provide the best and scientifically valid solution to the people . Key words: Optimization, Operations research, life, application. 3.引言 随着社会迅速发展,各行各业中的竞争日益激烈,我们日常生活中好多事情都会牵扯到最优化,比如运输成本问题、效益分配问题等等。 什么是数学最优化问题,就是利用合理的安排和规划在一件事情或者问题上取得利润最大,时间最少,路线最短,损失最少的方法。所以最优化解决方法对实际生活现实社会的帮助作用很大。现如今,最优化解决问题已经渗透到生活中的方方面面。 一个好的决策也许会让你绝处逢生,反败为胜,譬如中国历史上田忌赛马的故事,田忌的聪明之处在于在已有的条件下,经过策划安排,选择了最好的方案,所以最后就是自己看似劣势也能取胜,筹划是非常重要的,这就是运筹学的魅力。 我们在中国的古代史上就可以看到中国古人已经具有很好的运筹学思想了,在战争中,两兵交战,各方都会有自己的军师,历史上有很多著名的军师,比如诸葛亮,刘伯温等。他们在战争中所起到的作用就是“运筹于帷幄之中,决胜于千里之外”,运筹学二字也是来源于此,了解敌方的军情,以此做出相应的对策,筹划最佳作战计划,做到“知己知彼百战不殆”,历史上也不乏一些以少胜多以弱胜强的战争,由此可见运筹学在军事中的力量有多强大。 现代社会中运筹学不仅在军事方面发挥着重要作用,同样在企业经营管理方面也是非常重要的,最优化理论最早是在工业领域产生的,它的对象可以是产

相关主题
文本预览
相关文档 最新文档