外点罚函数优化实例一、优化问题如图1所示,为某一桁架的一部分,杆2距O点30cm处有一支点C。为了固定桁架,现欲在杆1和2上设置支点A和B,用来连接杆3(可拆卸)。已知当桁架固定时,杆1和2成直角;而且,杆1右边有一段长为20cm的重要部位,不能设置支点。卸去杆3、收起桁架时,支点A的位置不能高于BC段中点D。求取支点A、B的位置,使得杆3的长度尽量小,以节省材料。图1桁架结构示意图二、数学模型设A、B两点距离O点的长度分别为和,而桁架固定时杆1和2成直角。所以杆3的长度为。由图1可知,且,即且。设,取。因此,数学模型为:极小化目标函数约束条件三、求解数学模型(1)外点罚函数法求解构造外点法罚函数,如下:程序流程图如图2所示:图2外点罚函数法程序流程图程序步骤:①选择适当的初始罚因子、初始点、收敛精度和罚因子系数c。在本程序中分别取,,,c=8。令迭代步数k=0。②采用牛顿法求无约束问题的极值点。③检验迭代终止准则,若满足及k=0i=0求与Hessian矩阵()()*)(ikXXM输出和YN)()]([)(1)()()1(iiiiXHXXXi=i+1k=k+1YN结束牛顿法求的极值点给定、、c、则停止迭代计算,输出最优点;否则,转入步骤④。④取,,k=k+1,转入步骤②继续迭代。具体程序请看附一。运行结果:X*=[20.0000,10.0000]f(X*)=500.0000因此,A、B两支点与O的距离分别为20cm、10cm,杆3的最小长度为cm。目标函数曲线图与目标函数等值线图分别如图3和图4所示。优化路径如图4所示。图3目标函数曲线图图4目标函数等值线图(2)Matlab优化工具fmincon求解利用Matlab文件编辑器为目标函数编写M文件(goalfun.m):functionf=goalfun(x)f=x(1)^2+x(2)^2;编写约束条件的M文件(confun.m):function[c,ceq]=confun(x)c=[2*x(1)-x(2)-30;20-x(1)];ceq=[];编写主函数的M文件(opt.m):closeallclearallclcx0=[20,20];lb=[];ub=[];options=optimset('LargeScale','off','display','iter','tolx',1e-6);[x,fval,exitflag,output]=fmincon('goalfun',x0,[],[],[],[],[],[],'confun',options);xfval运行结果:x=[20,10]fval=500同样地,利用Matlab优化工具解得,支点A、B与O的距离分别为20cm、10cm,杆3的最小长度为cm。四、结论分析(1)罚因子系数c对外点罚函数法的影响本次程序中,c取值为8,运行步数k=11。若取c=4,则运行步数k=16;取c=16,则运行步数k=9;取c=32,则运行步数k=8;取c=64,则运行步数k=7。由此可知,罚因子系数c的大小会影响程序的迭代次数k。c的值...