EDA365电子论坛网

标题: 基于matlab约束优化之惩罚函数法 [打印本页]

作者: mutougeda    时间: 2021-3-29 11:22
标题: 基于matlab约束优化之惩罚函数法
) T. U; {8 U  R  U  H, L% Q6 v& d5 }
一、算法原理
! ^6 Z1 i, v& A8 s+ M# ]3 e. c1 G& {1、问题引入5 U5 _, k9 J* {
之前我们了解过的算法大部分都是无约束优化问题,其算法有:黄金分割法,牛顿法,拟牛顿法,共轭梯度法,单纯性法等。但在实际工程问题中,大多数优化问题都属于有约束优化问题。惩罚函数法就可以将约束优化问题转化为无约束优化问题,从而使用无约束优化算法。, ?, t% p) [  w+ d6 [/ J6 ~
: y' |' H2 C# W1 e7 b" k# U: e
2、约束优化问题的分类
' ?7 J& z8 m3 {- \约束优化问题大致分为三类:等式约束、不等式约束、等式+不等式约束。
. o  ]9 b8 h) [1 v5 `# n" {9 L+ n( Q/ j
其数学模型为:, c7 v6 a1 u: e, _% ~) _
  M8 {8 g: a. a! H1 w( p$ @4 _# u
等式约束
' v: o, `( M) P1 Q0 B
* x4 G- F4 e' Y( J/ N8 `8 imin f(x),x\in R^n
5 i: L: O! E% C8 y8 R5 J$ U# d* W0 |5 g5 R; S
s.t hv(x)=0,v=1,2,…,p<n$ U( Y: F) {4 K& B. `
2 T0 H: ?4 J( |+ t
不等式约束
- }9 H" C% N: v9 W
2 z# A. H. s& a/ R5 q# ], Mmin f(x),x\in R^n8 p0 v3 n# c6 I, l3 R
9 r% C. X3 j2 w% B" L
s.t gu(x)\leqslant 0,u=1,2,…,p<n$ d# O; A8 p3 g, L" w

" K+ M  u5 }0 h等式+不等式约束问题0 y+ J4 y3 R" S

, e% A: E' O2 `+ e# nmin f(x),x\in R^n
' C0 l1 r  Q" G1 `% B1 @; t
& _3 r' s9 F, @2 {1 G" j0 ^8 Qs.t hv(x)=0,v=1,2,…,p<n
' f9 D2 ~9 t& ?
' T" D: n8 X5 V8 ?s.t gu(x)\leqslant 0,u=1,2,…,p<n
4 @$ O: J! f, V1 S3 ~/ q/ B
+ i4 d# i# z; r7 l3 @3、惩罚函数法定义
1 y8 d5 P9 r& L% u* K惩罚函数法(SUMT法)又称序列无约束极小化技术,将等式约束与不等式约束的条件,经过适当定义的复合函数加到原目标函数上构造了惩罚函数,从而取消了约束,转而求解一系列无约束优化问题。
* E2 m- Y0 K. G2 G. o9 J( z/ X  i
+ r; m' d+ P3 o) W# o按照惩罚函数再优化过程中的迭代点是否在约束条件的可行域内,又分为内点法、外点法和混合法. {3 \4 P5 @+ Z* ^

$ A( K+ x4 q) Y" A! B3 E7 H" q内点法:迭代点再约束条件的可行域之内,只用于不等式约束。
1 L% u$ }2 Y5 T: Q
( {& p! m( M* ~4 K" s外点法:迭代点再约束条件的可行域之外,既用于不等式约束又可用于等式约束。# f$ X. |7 E- l8 Y0 `" l! I& @
9 I% e+ g9 I) q5 A; D" R2 \4 U
4、外点惩罚函数法
: i3 \; |" j# q8 H: M4 g. z# e7 Z等式约束:
1 ]* A, E- n# `: ~0 D* S5 c% V9 @/ Q( H, O( _
min f=x1.2+x2.2,x\in R^n0 g; ]* |1 i4 ?) `9 h$ E
4 b7 H8 \$ \- r% P1 O' g1 s
s.t h1(x)=x1-2=0,h2(x)=x2+3=00 R; u! r, p& U( t
8 @. ^1 L' C7 ~8 k! G% k5 Z# w
算法步骤
9 m5 Q5 ^" i% w2 A1 b8 }% o' h1 F1 q0 w* Y- ~
a、构造惩罚函数:F=f+M * { [ h1(x) ]^2 + [ h2(x) ]^2 } ,式中M为初始惩罚因子;; X( B7 d+ L  G( @5 e; k# [1 v
" E3 o4 G- n2 C3 g  v2 H
b、然后用无约束优化极值算法求解(牛顿法);+ b6 l, ]" W) ?, n  {+ Y( j2 X7 m/ j- A
! {- e3 l9 f9 O( c3 [& z- }
c、 如果相邻两次惩罚函数无约束最优点之间的距离足够小【norm(x1-x0)<eps】,则收敛;9 m7 o! a* s! K; E

. i1 I6 j+ W5 ?: t$ K  I* v    否则放大惩罚因子M=C*M,式中C为 罚因子放大系数;
. a9 ~7 I6 M& z
' k& L2 I$ l& g1 J# C2 M8 d$ N% q- f8 _% Z

, }) u5 i' h' Y5 ]8 p9 Y9 |. ?3 s! m
二、源代码
5 i3 a* b3 C0 J% j8 i0 ]   
# R; `: b+ b1 t; F
) F% D! w; c2 Y
3 o7 a7 I$ |2 B. r/ _. z' _* R2 q2 ]; O

- l( f1 @9 h+ b  {& f9 B8 }
& C/ x4 r8 ^+ D. S9 N2 z& a9 B5 b4 D0 n! m; q# S8 r, G. o
    : V" u5 e- M% m3 s
3 w7 h* M, R- W6 O1 A* s! |$ j

9 y( o9 o0 B, o   
( M  G# H0 T# p0 k- U0 V" j6 s$ r. {# M6 {$ b* X1 P
' U& {7 z, Q+ o" q2 r! g9 f

作者: yin123    时间: 2021-3-29 13:11
基于matlab约束优化之惩罚函数法




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2