优化设计-外点惩罚函数法-MATLAB编程

  • 优化设计-内点惩罚函数法-MATLAB编程
    • 外点惩罚函数法介绍
    • MATLAB程序编程
      • 无约束优化环节采用梯度法
    • 无约束优化环节采用单纯型法

优化设计-内点惩罚函数法-MATLAB编程

有关于外点惩罚法原理的详细介绍可参考:
《结构优化设计概论》[M]国防工业出版社,1997.谢祚水,或者其他优化设计有关书籍
(谢祚水先生的书很经典,所以放这了)

外点惩罚函数法介绍

外点法是将惩罚函数定义在可行域之外,并在整个Rn中进行参数寻优。初始点x0可以在Rn中任选,既可在可行域中,亦可在域外,这给设计人员和实际计算带来极大的便利。由于外点法是从约束可行域外逐步逼近约束极值点的,故它很适合于具有等式约束或不等式约束条件的优化问题。

其算法步骤可以总结为:

MATLAB程序编程

与内点惩罚法一样,程序在利用无优化约束方法求取极值点这一环节,个人用了两种方法,一种是传统的梯度法求解,但是编写的程序适用于二维变量求解,且在矩阵求逆环节计算速度较慢,于是采用了第二种方法:单纯型法,可对多维变量函数求解,有关于单纯型法的编程,可详见此文:
https://blog.csdn.net/Randall_crow_J/article/details/106305624

无约束优化环节采用梯度法

MATLAB程序:

clear all;clc
syms x1 x2 x;
f=x1^2+x2^2-x1*x2-10*x1-4*x2+60;%原函数
g1=x1-6;g2=x2-8;g3=x1+x2-11;%约束条件转换函数
e1=0.001;%梯度法最优值收敛精度
e2=0.001;%外点法收敛精度
D=1;%差值
k=1;
A(k)=0;B(k)=0;%A,B分别记录x1,x2点,初始点为[0,0]
r(k)=1;a=2;%r为惩罚因子,a为递增系数
%% 循环
while  D>e2 %罚因子迭代收敛条件x1=A(k);x2=B(k);
%判断点在不在可行域内,来选择惩罚函数
if x1-6>0u1=1;
elseu1=0;
end
if x2-8>0u2=1;
elseu2=0;
end
if x1+x2-11>0u3=1;
elseu3=0;
end
%约束问题转换后的新目标函数
F=f+r(k)*u1*g1^2+r(k)*u2*g2^2+r(k)*u3*g3^2;
%梯度法求F的最优解xr
Fx1=diff(F,'x1');Fx2=diff(F,'x2');Fx1x1=diff(Fx1,'x1');Fx1x2=diff(Fx1,'x2');Fx2x1=diff(Fx2,'x1');Fx2x2=diff(Fx2,'x2');%求偏导、海森元素。
for n=1:100 %梯度法求最优值。
F1=subs(Fx1); %求解梯度值和海森矩阵
F2=subs(Fx2);
F11=subs(Fx1x1);
F12=subs(Fx1x2);
F21=subs(Fx2x1);
F22=subs(Fx2x2);
if(double(sqrt(F1^2+F2^2))<=e1) %梯度法最优值收敛条件
A(k+1)=double(x1);B(k+1)=double(x2);
break;
else
X=[x1 x2]'-([F11 F12;F21 F22])\[F1 F2]';
x1=X(1,1);x2=X(2,1);
end
end
D=double(sqrt((A(k+1)-A(k))^2+(B(k+1)-B(k))^2));
r(k+1)=a*r(k);
k=k+1;
end
A(k)
B(k)
double(subs(f))

无约束优化环节采用单纯型法

MATLAB程序如下:

clear all;clc
syms x1 x2 x;
f=x1^2+x2^2-x1*x2-10*x1-4*x2+60;%原函数
g1=x1-6;g2=x2-8;g3=x1+x2-11;%约束条件转换函数
e1=0.001;%梯度法最优值收敛精度
e2=0.001;%外点法收敛精度
D=1;%差值
k=1;
A(k)=0;B(k)=0;%A,B分别记录x1,x2点,初始点为[0,0]
r(k)=1;a=2;%r为惩罚因子,a为递增系数
%% 循环
while  D>e2 %罚因子迭代收敛条件x1=A(k);x2=B(k);
%判断点在不在可行域内,来选择惩罚函数
if x1-6>0u1=1;
elseu1=0;
end
if x2-8>0u2=1;
elseu2=0;
end
if x1+x2-11>0u3=1;
elseu3=0;
end
%约束问题转换后的新目标函数
F=f+r(k)*u1*g1^2+r(k)*u2*g2^2+r(k)*u3*g3^2;
%单纯形法求F的最优解xr
minx=minfunction(F,x1,x2,e1);
A(k+1)=minx(1,1);B(k+1)=minx(2,1);
D=double(sqrt((A(k+1)-A(k))^2+(B(k+1)-B(k))^2));
r(k+1)=a*r(k);
k=k+1;
end
A(k)
B(k)
double(subs(f))

对于此案例运算的结果为:(6.0002,4.9972),外点法运行结果还是不错的!

优化设计-外点惩罚函数法-MATLAB编程相关推荐

  1. matlab 约束函数,【优化求解】MATLAB约束优化之惩罚函数法

    一.算法原理 之前我们了解过的算法大部分都是无约束优化问题,其算法有:黄金分割法,牛顿法,拟牛顿法,共轭梯度法,单纯性法等.但在实际工程问题中,大多数优化问题都属于有约束优化问题.惩罚函数法就可以将约 ...

  2. matlab外罚函数实验报告,外罚函数法matlab

    罚函数法 37页 1下载券 罚函数法 11页 1下载券 罚函数法MATLAB程序 5页 2下载券 1120 罚函数法 (罚函数法... 52页 1下载券 ...... c Ax ? b . 3 算法的 ...

  3. 乘子法罚函数法matlab实例,罚函数法(罚函数法与乘子法合订).ppt

    罚函数法(罚函数法与乘子法合订) 收敛性定理 5 算法评价(优缺点) 二.内点罚函数法(碰壁函数法)-内点法 2 罚函数的特点 3. 算法实现 收敛性定理 构造新的辅助函数 2. 算法实现 乘子法是由 ...

  4. 罚函数法外点matlab,内点罚函数法matlab

    罚函数的算法与实例 例3.24 Matlab 的使用 u=0; [x,y]=me... 5.6 约束变尺度法 7.2 乘子(罚函数)法信息与计算科学系 邵建峰邵建峰 本节内容: ? 一. 等式约束问题 ...

  5. 优化设计-有约束复合型法-MATLAB编程求解

    优化设计-复合型法-MATLAB编程求解 优化设计-有约束复合型法-MATLAB编程求解 有约束复合型法迭代步骤(计算流程图) MATLAB主程序 约束条件判断子函数 运算结果与可行域 优化设计-有约 ...

  6. Algorithm之PrA:PrA之nLP非线性规划算法经典案例剖析+Matlab编程实现

    Algorithm之PrA:PrA之nLP整数规划算法经典案例剖析+Matlab编程实现 目录 有约束非线性规划案例分析 1.投资决策问题 2.利用Matlab实现求解下列非线性规划​ 无约束极值问题 ...

  7. 最优化方法外罚函数法Matlab,最优化方法 第三篇(罚函数法).pdf

    一 简介 罚 函 二 外点法 数 三 内点法 法 四 混合法 一.罚函数法简介 f x min   xRn s.t . g x  0,i I 1, ,m , i    e  h x ...

  8. matlab编程与最优化设计应用,MATLAB编程与最优化设计应用

    MATLAB编程与最优化设计应用 出版时间:2013年08月 定 价:59.00 I S B N :9787121210525 所属分类: 计算机•网络 &nbsp计算机•网络  >   ...

  9. Matlab编程与数据类型 -- 单元数组

    Matlab编程与数据类型 – 单元数组

  10. matlab 天线设计 泰勒加权_微带天线设计尺寸MATLAB编程及其仿真验证

    龙源期刊网 http://www.qikan.com.cn 微带天线设计尺寸 MATLAB 编程及其仿真 验证 作者:杨小敏 母玉泽 严月 郭小康 马波 张栋 莫骄弟 来源:<中国科技博览> ...

最新文章

  1. Python爬虫项目--爬取某宝男装信息 附带源码
  2. Linux命令工具基础02 文件及目录管理
  3. elixir开发的项目_我对Elixir的介绍:学习另一种编程语言如何使您成为更好的开发人员...
  4. c#和java_C#和Java接口对比
  5. 直播平台搭建与相关资料
  6. 为什么8位有符号数的范围为“-128 — +127”?(转载加补充)
  7. 使用com.aspose.words将word模板转为PDF乱码解决方案(window下正常)
  8. Java设计模式开篇
  9. 基于python的毕业设计仓库库存管理系统
  10. python装饰器讲解_Python装饰器讲解的不能再通俗易懂了(建议收藏)
  11. m序列产生原理及其性质
  12. 「POJ2826」An Easy Problem?!【计算几何】
  13. 确定有限状态自动机(deterministic finite automaton --> DFA)
  14. 【197期】华为OD两轮技术面试记录,给后来人一个参考!
  15. 史上超全免费photoshop实训零基础视频教程,新手学习PS软件教程资源下载
  16. 独家连载 | 深度学习“四大天王”,你知道几个?
  17. 2015年 网络工程师试卷答案及详解
  18. pg_hint_plan 使用hint固定SQL执行计划
  19. 凤凰金融张震:互联网金融将进入3.0时代
  20. MarkDown图片居中

热门文章

  1. MAXHUB会议平板的无线投屏怎么用?
  2. QNX 系统日志设计
  3. 做电脑技术员几年的心得
  4. idea打包jar的多种方式
  5. 高斯消元法python编程_割圆术计算圆周率与矩阵高斯消元法(Python)
  6. Unity3D 串口连接
  7. 微信小程序:老人疯狂裂变引流视频推广微信小程序
  8. Java线程状态及其转移
  9. linux扫描仪如何使用方法,怎样在linux下设置和使用扫描仪.doc
  10. 基于JDK1.8的JVM 内存结构【JVM篇三】