当前位置:文档之家› 《金融数量分析 》第20章 非线性优化理论与方法

《金融数量分析 》第20章 非线性优化理论与方法


20.2 理论模型
20.2.1 无约束非线性优化
无约束优化的一般形式为
其中,f为非线性函数。 优化形式转换,无约束非线性最大化可以通过转换,将其转化为标准的无约束 非线性优化的一般形式:
例如,常用的BenchMark函数Banana function
20.2.2 约束非线性优化
约束非线性优化的一般形式为
函数语法:
x = fminsearch(fun,x0)
x = fminsearch(fun,x0,options) [x,fval] = fminsearch(...) [x,fval,exitflag] = fminsearch(...) [x,fval,exitflag,output] = fminsearch(...) 输入参数: ➢ fun:目标函数; ➢ x0:迭代初始点; ➢ options:函数参数设置。 输出参数: ➢ x:最优点(算法停止点); ➢ fval:最优点对应的函数值; ➢ exitflag: 函数停止信息。
输入参数: ➢ fun:目标函数一般用M文件形式给出; ➢ x0:优化算法初始迭代点; ➢ options:参数设置。 输出参数: ➢ x:最优点输出(或最后迭代点); ➢ fval:最优点(或最后迭代点)对应的函数值; ➢ exitflag:函数结束信息 (具体参见MATLAB help ); ➢ output:函数基本信息,包括迭代次数、目标函数最大计算次数、使用
1函数收敛正常停止; 0迭代次数,目标函数计算次数达到最大数; -1算法被输出函数停止(output)。 ➢ Output:函数运算信息。
20. 3.3 fmincon函数
fmincon是MATLAB最主要内置的求解约束最优化的函数,该函数的优化问 题的标准形式为
这里x、b、beq、lb、ub为向量,A与Aeq为矩阵,f (x)为目标函数,c(x)、ceq(x)为 非线性约束,A·x≤b、Aeq·x=beq为线性约束,lb≤x≤ub为可行解的区间约束。
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(...) [x,fval,exitflag,output,lambda] = fmincon(...) [x,fval,exitflag,output,lambda,grad] = fmincon(...) [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(...)
f,gi,hj:Rn其中有一个为非线性函数,gi (x)≤0为不等式约束,hj(x)=0为等式约束。 优化形式可以转换。约束非线性最大化可以通过转换,将其转化为标准的约束非 线性优化的一般形式:
例如,非线性约束优化问题实例:
20.3 MATLAB实现
20. 3.1 fminunc函数(无约束优化)
在非线性科学大规模涌现之前,人们普遍认为自然界的任何问题 都可以线性地加以解决。现在看来,线性只是局部的,非线性才是普 遍存在的,因而直接面对非线性是不可避免的。然而,非线性科学并 非是包罗万象的科学。
20.1.2 非线性优化
非线性优化的一个重要理论是1951年KuhnTucker最优条件(简称KT条件)的 建立。此后的50年代主要是对梯度法和牛顿法的研究 。以Davidon(1959)、 Fletcher和Powell(1963)提出的DFP方法为起点, 60年代是研究拟牛顿方法的活跃 时期, 同时对共轭梯度法也有较好的研究。在1970年由Broyden、Fletcher、 Goldfarb和Shanno从不同的角度共同提出的BFGS方法是目前为止最有效的拟牛 顿方法。Broyden、Dennis和More的工作使得拟牛顿方法的理论变得很完善。
70年代是非线性优化飞速发展时期, 约束变尺度(SQP)方法(Han和Powell为 代表)和Lagrange乘子法(代表人物是Powell 和Hestenes)是这一时期的主要研究 成果。80年代开始研究信赖域法、稀疏拟牛顿法、大规模问题的方法和并行计 算, 90年代研究解非线性优化问题的内点法和有限储存法。 可以毫不夸张地说, 这半个世纪是最优化发展的黄金时期。
fminunc函数是 MATLAB求解 无约束 优化问 题的主 要函数,函数主要使用 BFGS拟牛顿算法(BFGS Quas Newton method)、DFP拟牛顿算法(DFP Quasi Newton method)、最速下降法等。 函数语法: x = fminunc(fun,x0) x = fminunc(fun,x0,ounc(...) [x,fval,exitflag] = fminunc(...) [x,fval,exitflag,output] = fminunc(...) [x,fval,exitflag,output,grad] = fminunc(...) [x,fval,exitflag,output,grad,hessian] = fminunc(...)
20.1 理论背景
20.1.1 非线性问题
对于非线性的理解,可以借助于对线性概念的掌握。线性是指两 个量之间所存在的正比关系,在直角坐标系上呈直线;而非线性是指 两个量不成正比关系,在直角坐标系中呈曲线。最简单的非线性函数 是一元二次函数,其图像是抛物线。可以说,一切含有二次项以上的 多项式函数都是非线性的。线性函数关系描述的系统叫线性系统,非 线性函数描述的系统称为非线性系统。
的算法名称、计算规模; ➢ grad:最优点(或最后迭代点)的导数; ➢ hessian:最优点(或最后迭代点)的二阶导数。
20. 3.2 fminsearch函数
fminsearch是MATLAB 中求解无约束的函数之一,其使用的算法为可变多面体算法 (Neldero-Mead Simplex)
相关主题