《运筹学与最优化MATLAB编程 教学课件 ppt 作者 吴祈宗 郑志勇 第7章》由会员分享,可在线阅读,更多相关《运筹学与最优化MATLAB编程 教学课件 ppt 作者 吴祈宗 郑志勇 第7章(17页珍藏版)》请在金锄头文库上搜索。
1、第7章 约束优化算法,7.1 罚函数法(内点法) 7.2 拉格朗日乘子法 7.3 乘子法MATLAB程序及其使用 7.4 Fmincon函数,7.1 罚函数法(内点法),罚函数法(内点法)的主要思想是:在可行域的边界上筑起一道很高的“围墙”,当迭代点靠近边界时,目标函数陡然增大,以示惩罚 ,阻止迭代点穿越边界,这样就可以将最优解“挡”在可行域之内了。,7.2 拉格朗日乘子法,1. PH算法:(约数为等式的情况下)引入 2. PHR算法(一般约束形式的松弛变量法和指数形式法),1. PH算法:(约数为等式的情况下)引入,步骤1: 选定初始点x(0), 初始拉格朗日乘子向量u(1), 初始罚因子1
2、及其放大系数c1, 控制误差0与常数(0, 1), 令k=1。 步骤2: 以x(k+1)为初始点, 求解无约束问题: 步骤3: 当h时, 即为所求的最优解, 停。,2. PHR算法(一般约束形式的松弛变量法和指数形式法),7.3 乘子法MATLAB程序及其使用,7.3.1 Almain函数 7.3.2 乘子法Almain函数使用方法,7.3.2 乘子法Almain函数使用方法,1.定义目标函数及约束函数 2. ALmain函数调用,1.定义目标函数及约束函数,min=-x1x2-x2x3-x3x1 s.t.x1+x2+x3-1=0 x21+x22+x23-30 目标函数m文件: (Augmen
3、ted Lagrangian Algorithms文件夹),2. ALmain函数调用,function X,FVAL=ALmain(xal,ral,Nequ,Ninequ),7.4 Fmincon函数,7.4.1 函数示例 (1) 7.4.2 函数示例 (2) 7.4.3 函数示例(3) 7.4.4 函数示例 (4) 7.4.5 函数示例 (5) 7.4.6 函数示例 (6) 7.4.7 函数示例 (7),7.4.1 函数示例 (1),min f(x)=-x1x2x30x1+2x2+2x372min f(x)=-x1x2x3-x1-2x2-2x30x1+2x2+2x372 编写目标函数M文件
4、myfun1.m function f=myfun1(x) f=-x(1)*x(2)*x(3); 调用fmincon函数M文件SolveMyfun1.m,7.4.2 函数示例 (2),fmincon函数默认的求导方法为差分求导方法。为了便于更精确地计算以及减少计算时间,可以提供目标函数导数。以下还是以函数示例(1)的优化问题为例。,7.4.3 函数示例(3),fmincon函数默认的求导方法为差分求导方法。为了便于更精确地计算以及减少计算时间,可以提供目标函数导数,fmincon函数的默认更新hesse阵的方法为BFGS。对于大规模算法,为了便于更精确地计算以及减少计算时间,可以提供目标函数hesse阵函数。以下还是以函数示例(1)的优化问题为例。,7.4.4 函数示例 (4),minf=ni=1x(i)-1i, n=100 编写目标函数M文件myfun4.m function f=myfun4(x) n=length(x); f=1; for i=1:100 f=f*(x(i)-1/i); end 调用fmincon函数m文件SolveMyfun4.m,7.4.5 函数示例 (5),7.4.6 函数示例 (6),7.4.7 函数示例 (7),