- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精品Word文档,知识共享!
外点罚函数优化实例
一、优化问题
如图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所示:
给定、
给定、、c、
k=0
i=0
求与Hessian矩阵
输出和
Y
N
i=i+1
k=k+1
Y
N
结束
牛顿法求的极
值点
图2 外点罚函数法程序流程图
程序步骤:
①选择适当的初始罚因子、初始点、收敛精度和罚因子系数c。在本程序中分别取,,,c=8。令迭代步数k=0。
②采用牛顿法求无约束问题的极值点。
③检验迭代终止准则,若满足
及
则停止迭代计算,输出最优点;否则,转入步骤④。
④取,,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):
function f=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):
close all
clear all
clc
x0=[20,20];
lb=[];
ub=[];
options=optimset('LargeScale','off','display','iter','tolx',1e-6);
[x,fval,exitflag,output]=fmincon('goalfun',x0,[],[],[],[],[],[],'confun',options);
x
fval
运行结果:
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的值取得越大,运行步数k越小,程序收敛速度越快,效率越高。但对于c的其他一些取值,如5、7、9等,会导致罚函数形态变坏,使迭代出现问题,导致程序运行失败。因此,需选取合适的罚因子系数c。
(2)外点罚函数法与Matlab优化工具fmincon的比较
通过opt.m的运行结果可知,fmincon的运行步数k=3,这一运行效率明显比外点法函数法的效率高。对于相同的收敛精度和初始点,虽然优化结果相同,但是M文件WaiDianNiuDun.m中外点罚函数法的运行效率仍有待提高。
附一 外点罚函数matlab程序
close all
clear all
clc
syms x1 x2 M; %M为罚因子。
m(1)=1;
c=8; %c为递增系数。赋初值。
a(1)=20;
b(1)=20;
f=x1^2+x2^2+M*((20-x1)^2+(2*x1-x2-30)^2);%外点罚函数
f0(1)=500;
%求偏导、Hessian元素
fx1=diff(f,'x1');
fx2=diff(f,'x2');
fx1
您可能关注的文档
- 机械制造基础形成性考核完整小抄-已排版.doc
- 基于JAVA的医院门诊信息管理系统设计与实现(含源文件).doc
- 基于matlab的电力电子技术仿真设计.doc
- 基于Multisim的电路仿真.doc
- 基于PLC彩灯控制系统设计.doc
- 基于单片机的多参数采集系统毕业论文.doc
- 基于单片机的光强检测报警器.doc
- 基于单片机的智能窗帘控制器的设计.doc
- 计量经济学论文12篇.doc
- 技术交底资料 2.基础工程-钢筋混凝土预制桩打桩.doc
- 2023年-2024年一级造价师之建设工程造价管理真题精选附答案 .pdf
- 2024年新疆师范高等专科学校单招职业技能测试题库及答案解析.docx
- 2024年湖南商务职业技术学院单招职业技能测试题库及答案解析.docx
- 2024年长沙环境保护职业技术学院单招职业技能测试题库及答案解析.docx
- 2024年云南交通运输职业学院单招职业技能测试题库及答案解析.docx
- 2024《临床医学概论》全套课件完整版 .pdf
- 市场调查与预测考试试题 .pdf
- 2024年四川水利职业技术学院单招职业技能测试题库及答案解析.docx
- 2024年菏泽医学专科学校单招职业技能测试题库及答案解析.docx
- 2024年肇庆医学高等专科学校单招职业技能测试题库及答案解析.docx
文档评论(0)