内点

更新时间:2023-04-18 04:53:38 阅读: 评论:0


2023年4月18日发(作者:白玫瑰歌词)一、内点法
1. 基本原理
内点法的特点是将构造的新的无约束目标函数——惩罚函数定义在可行域内,并在可行
域内求惩罚函数的极值点,即求解无约束问题时的探索点总是在可行域内部,这样,在求解
内点惩罚函数的序列无约束优化问题的过程中,所求得的系列无约束优化问题的解总是可行
解,从而在可行域内部逐步逼近原约束优化问题的最优解。
内点法是求解不等式约束最优化问题的一种十分有效方法,但不能处理等式约束。因为
构造的内点惩罚函数是定义在可行域内的函数,而等式约束优化问题不存在可行域空间,
此,内点法不能用来求解等式约束优化问题。
对于目标函数为
min
f(X)
s.t. u=1,2,3,m
g(X)0
u
的最优化问题,利用内点法进行求解时,构造惩罚函数的一般表达式为

(X,r)f(X)r
(k)(k)
1


g(X)
u1
u
mm
m
或者

(X,r)f(X)rlng(X)f(X)rlng(X)

kkk

uu
u朋友失恋了怎么安慰 1u1

而对于受约束于的最优化问题,其惩罚函数的一般形式为
f(X)
g(X)0(u1,2,,m)
u青春手抄报

kk

(X,r)f(X)r

1


g(X)
u1
u
m

(X,r)f(X)rlng(X)
式中,-----惩罚因子,是递减的正数序列,即
r

k

kk


u1
m
u

rrrrr0

012kk1

limr0

k

k
通常取
r1.0,0.1,0.01,0.001,

k
上述惩罚函数表达式的右边第二项,称为惩罚项,有时还称为障碍项。
说明:
当迭代点在可行域内部时,有=1234,…m,而,则惩罚
g(X)0
u
u
r0

k
项恒为正值,当设计点由可行域内部向约束边界移动时,惩罚项的值要急剧增大并趋向无穷
大,于是惩罚函数的值也急剧增大直至无穷大,起到惩罚的作用,使其在迭代过程中始终不

会触及约束边界。
2. 内点法的迭代步骤
1)取初始惩罚因子,允许误差
r0
(0)

0

0
2)在可行域内取初始点,令
D
X
3)构造惩罚函数,从点出发用无约束优化方法求解惩罚函数

(X,r)

k
k1
X
(k1)

(X,r)X(r)

kk
的极值点

4)检查迭代终止准则:如果满足
X(r)X(r)1010
57

kk1

1



(X,r)(X,r祝子杰 )


kk1
34

1010

2

k1


(X,r)

则停止迭代计算,并以为原目标函数的约束最优解,否则转入下一步;
X(r)

k
f(X)
根据情况,终止准则还可有如下的形式:
f(X)f(X)

kk1



r


k
1



g(X)
u1
u
m
rlng(X)
5)取,转向步骤3
rCr,XX(r),kk1

k1k0k

k

u
u1
m



递减系数,常取0.1,亦可取0.02
C0.10.5
采用内点法应注意的几个问题:
1)初始点的选取
X
初始点必须严格在可行域内,满足所有的约束条件,避免为约束边界上的点。
X

0

0
如果约束条件比较简单,可以直接人工输入;若问题比较复杂,可采用随机数的方式产
生初始点,具体方程参照复合形法介绍。
X

0

2)关于初始惩罚因子的选择。实践经验表明,初始惩罚因子选的恰当与否,
rr
(0)(0)
会显著地影响内点法的收敛速度,甚至解题的成败。
值选得太小,则在新目标函数即惩罚函数中惩罚项的作用就会很小,
r

0

(X,r)

k

k
这时求的无约束极值,犹如原目标函数本身的无约束极值,而这个极值点

(X,r)
f(X)

0
又不大可能接近的约束极值点,且有跑出可行域的危险。相反,若值取得过大,
f(X)
r
则开始几次构造的惩罚函数的无约束极值点就会离约束边界很远,将使计算效率

(X,r)
降低。可取150,但多数情况是取
rr1
清明节儿童画
00

k

0
通常,当初始点是一个严格的内点时,则应使惩罚项在新目标函
Xr

k0

0
1


0
)g(X
u1
u
m
中所起的作用与原目标函数的作用相当,于是得

(X,r)f(X)
r

0
f(X)

m

1


0
)g(X会计转正申请书
u1
u
0
倘若约束区域是非凸的且初始点亦不靠近约束边界,的取值可更小,约为上式算
Xr
得值的0.10.5倍。

00

开始
r,,,C
(0)


1
在可行域内选取
X
(0)
k=1
点出发求解
X
(k1)

min(X,r),X(风险评价 r)

(k)*(k)
f(X)f(X)

kk1

X(r)X(r)


kk1

1

XX(r)
**(k)

f(X)f(X(r))
*(k)*
停止
rCr
(k1)(k)

kk1


内点法的计算程序框图


例题:用内点法求
22
min
f(X)xx
12
s.t. u=1,2,3,m
g(X)1x0
1
的约束最优解。(取0.001


解:构造内点惩罚函数为

(X,r)f(X)rlng(X)xxrln(1x)
用极值条件进行求解

kk


u1
m
u121
22(k)




r

(k)
2x0
2

2x0
1
x
2
xx1
11
联立上式求得
112r
(k)
*(k)
x(r)

x(r)0
2
2
*(k)
1
由于约束条件的限制,可得无约束极值点为

112r
(k)
*(k)
X(r),0


2


10.1,0.01,…→0时,可得最优解为
r
(k)
T
X[1,0]f(X)1
*T*

编程方式实现:
1. 惩罚函数
function f=fun(x,r)
f歧途的反义词 =x(1,1)^2+x(2,1)^2-r*log(x(1,1)-1);
2. 步长的函数
function f=fh(x0,h,s,r)
%h为步长
%s为方向
%r为惩罚因子
x1=x0+h*s;
f=fun(x1,r);
3. 步长寻优函数
function h=farchh(x0,r,s)
%利用进退法确定高低高区间,利用黄金分割法进行求解
h1=0;%步长的初始点
st=0.001; %步长的步长
h2=h1+st;
f1=fh(x0,h1,s,r);
f2=fh(x0,h2,s,r);
if f1>f2
h3=h2+st;
f3=fh(x0,h3,s,r);
while f2>f3
h1=h2;
h2=h3;
h3=h3+st;
f2=f3;
f3=fh(x0,h3,s,r);
end

el
st=-st;
v=h1;
h1=h2;
h2=v;
v=f1;
f1=f2;
f2=v;
h3=h2+st;
f3=fh(x0,h3,s,r);
while f2>f3
h1=h2;
h2=h3;
h3=h3+st;
f2=f3;
f3=fh(x0,h3,s,r);
end
end
%得到高低高的区间
a=min(h1,h3);
b=max(h1,h3);
%利用黄金分割点法进行求解
h1=1+0.382*(b-a);
h2=1+0.618*(b-a);
f1=fh(x0,h1,s,r);
f2=fh(x0,h2,s,r);
while abs感冒上火 (a-b)>0.0001
if f1>f2
a=h1;
h1=h2;
f1=f2;
h2=a+0.618*(b-a);
f2=fh(x0,h2,s,r);
el
b=h2;
h2=h1;
f2=f1;
h1=a+0.382*(b-a);
f1=fh(x0,h1,s,r);
end
end
h=0.5*(a+b);
4. 迭代点的寻优函数
function f=farchx(x0,r,epson)

x00=x0;
m=length(x0);
s=zeros(m,1);
for i=1:m
s(i)=1;
h=farchh(x0,r,s);
x1=x0+h*s;
s(i)=0;
x0=x1;
end
while norm(x1-x00)>epson
x00=x1;
for i=1:m
s(i)=1;
h=farchh(x0,r,s);
x1=x0+h*s;
s(i)=0;
x0=x1;
end
end
f=x1;
5. 主程序
clear
clc
x0=[2;2]; %给定初始点
r=1;
c=0.1;
epson=0.001;
x1=farchx(x0,0.1,epson);
while norm(x0-x1)>epson
x0=x1;
r=r*c;
x1=farchx(x0,r,epson) ;
end
disp '函数的最优解为'
x1

运行结果:
函数的最优解为
x1 =
1.0475
-0.0005



本文发布于:2023-04-18 04:53:38,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/501865.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:贝塔函数
标签:内点
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图