机械优化设计惩罚函数内点法

合集下载

大学期末考试机械优化设计复习题

大学期末考试机械优化设计复习题

一、填空题1.组成优化设计数学模型的三要素是 设计变量 、 目标函数 、 约束条件 。

2.函数()22121212,45f x x x x x x =+-+在024X ⎡⎤=⎢⎥⎣⎦点处的梯度为120-⎡⎤⎢⎥⎣⎦,海赛矩阵为2442-⎡⎤⎢⎥-⎣⎦3.目标函数是一项设计所追求的指标的数学反映,因此对它最基本的要求是能用来评价设计的优劣,,同时必须是设计变量的可计算函数 。

4.建立优化设计数学模型的基本原则是确切反映 工程实际问题,的基础上力求简洁 。

5.约束条件的尺度变换常称 规格化,这是为改善数学模型性态常用的一种方法.6。

随机方向法所用的步长一般按 加速步长 法来确定,此法是指依次迭代的步长按一定的比例 递增的方法。

7。

最速下降法以 负梯度 方向作为搜索方向,因此最速下降法又称为 梯度法,其收敛速度较 慢 。

8.二元函数在某点处取得极值的必要条件是()00f X ∇= , 充分条件是该点处的海赛矩阵正定9.拉格朗日乘子法的基本思想是通过增加变量将等式约束 优化问题变成 无约束优化问题,这种方法又被称为 升维 法.10改变复合形形状的搜索方法主要有反射,扩张,收缩,压缩11坐标轮换法的基本思想是把多变量 的优化问题转化为 单变量 的优化问题12.在选择约束条件时应特别注意避免出现 相互矛盾的约束, ,另外应当尽量减少不必要的约束 。

13.目标函数是n 维变量的函数,它的函数图像只能在n+1, 空间中描述出来,为了在n 维空间中反映目标函数的变化情况,常采用 目标函数等值面 的方法。

14。

数学规划法的迭代公式是 1k k k k X X d α+=+ ,其核心是 建立搜索方向, 和 计算最佳步长 . 15协调曲线法是用来解决 设计目标互相矛盾 的多目标优化设计问题的。

16。

机械优化设计的一般过程中, 建立优化设计数学模型 是首要和关键的一步,它是取得正确结果的前提. 1. 优化设计问题的基本解法有 解析法 法和 数值法2. 无约束优化问题取得极值的充分必要条件是 一阶导数等于零 和 二阶导数大于零。

机械优化设计复习资料

机械优化设计复习资料

1、优化问题的三要素:设计变量,约束条件,目标函数。

2、机械优设计数学规划法的核心:一、建立搜索方向,二、计算最佳步长因子3、外推法确定搜索区间,函数值形成高-低-高区间4、数值迭代法的公式:X k+1=X K+αk·S k5、若n维空间中有两个非零向量d0,d1,满足(d0)T Gd1=0,则d0、d1之间存在__共轭____关系与负梯度成锐角的方向为函数值下降方向,与梯度成直角的方向为函数值不变方向。

6、外点;内点的判别7、那三种方法不要求海赛矩阵:最速下降法共轭梯度法变尺度法8、那种方法不需要要求一阶或二阶导数:坐标轮换法9、拉格朗日乘子法是升维法 P3710、惩罚函数法又分为外点惩罚函数法、内点惩罚函数法、混合惩罚函数法三种二、解答题1、试述两种一维搜索方法的原理,它们之间有何区别搜索的原理是:区间消去法原理区别:(1)、试探法:给定的规定来确定插入点的位置,此点的位置确定仅仅按照区间的缩短如何加快,而不顾及函数值的分布关系,如黄金分割法(2)、插值法:没有函数表达式,可以根据这些点处的函数值,利用插值方法建立函数的某种近似表达式,近而求出函数的极小点,并用它作为原来函数的近似值。

这种方法称为插值法,又叫函数逼近法。

2、在变尺度法中,为使变尺度矩阵H与1 k G近似,并具有容易计算的特点,k Hk必须附加哪些条件?(1)必须是对称正定的(2)要求有简单的迭代形式(3)必须满足拟牛顿条件3、共轭梯度法是利用梯度求共轭方向的,那共轭方向与梯度之间有什么关系课本P904、惩罚函数法求解约束优化问题的基本原理是什么?基本原理是将优化问题的不等式和等式约束函数经过加权转化后,和原目标函数结合形成新的目标函数——惩罚函数∑∑==++=mj lk k j x h H r x g G r x f r r x 112121)]([)]([)(),,(φ求解该新目标函数的无约束极值,以期得到原问题的约束最优解三、计算题: 极值法求解:例2-3 求函数 的极值。

机械优化设计3

机械优化设计3
式中 β-收缩系数,一般取 0.7
若 f xk f xH ,收缩成功,用 xk 取代 xH 构成新的复合形。
4、压缩
若上述方法均无效,还可采用将复合形各顶点向最好点 拢,压缩后各顶点计算公式为:
xL 靠
x j x L 0.5 x L x j
j 1, 2, , k ; j L
约束允差下,按允差中心δ /2作线性内插,得到将 xt 2 调整到 约束面上的步长。
0.5 gk xt1 s 0 gk xt 2 gk xt1
本次迭代步长取为 五、收敛条件 1、设计点
k M t s
x k 及约束允差满足
f x k T d k 2
g x k 与 d k 夹角大于 90 ,则 若 x k 在一个约束面上,
g x k d k 0
T
g x k 与 d k 夹角大于 90 ,则 若 x k 在J个约束面上,
2、下降条件:
g j x d k 0 j 1, 2,, J
xk 1 xk k d k
关键的三要素:
0 初始点 x 、可行搜索方向 d k 、合适步长 ak 。
适用范围:仅含不等式约束的问题。 特点:1会出现多个局部最优解 2目标函数有定义 3在可行域内进行
二、间接解法(惩罚函数法,增广乘子法) 基本思路:
将约束条件中的约束函数进行特别处理后,与目标函数 结合起来构成新的目标函数序列,从而变成一系列的无约束 优化问题。
j 1, 2, , m f xR f xH
R C
2、扩张
若求得反射点
xR 为可行点,且目标函数值下降较多( f x f x )

优化设计5惩罚函数法

优化设计5惩罚函数法
惩罚函数法
目前,人们对无约束问题的最优化方法要比对约束优化方法研 究的更为深入和成熟,并且形成了有效的、可靠的解法。因 此,在求解约束化问题时,自然会想到是否可以利用某种方法 将约束优化问题转化为无约束最优化问题来解决,显然这种转化 必须在一定的前提条件下进行。一方面这种转化不能破坏原约 束问题的约束条件;另一方面还必须使它归结到原约束优化问 题的同一最优解上去。这种将约束优化问题转化成无约束化问 题,然后用无约束最优化方法进行求优的途径就是约束优化问 题求优的间接解.
4
内点惩罚函数法
内点惩罚函数法的基本原理
内点惩罚函数法(简称内点法)将新目标函数定义在可行城内.这样 它的初始点以及后面产生的迭代点序列也必在可行城内,它是求解 不等式约束优化问题的一种十分有效的方法。下面我们选用一个简 单的例子来说明内点法的一些几何概念和基本原理。 设数学模型为:
min F(x) x X D R1 D: g(X) x 1 0 用内点法来求解此约束问题先构造泛函,取
适用于不等式约束函数比较简单的情况
然后构造罚函数,并求无约束极小值
5
代替计算机无约束搜索求优,惩罚函数无约束最优点序列
6
7
8
9
可以看出内点惩罚函数法就是以不同的加权参数(罚因子)来构造一 序列无约束的新目标函数,求这一序列惩罚函数法的无约束极值 点 X • (r(k) ) ,使它逐渐逼近原约束问题的最优解,而不论原约束问题 最优解在可行域内还是在可行域的边界上,其整个搜索过程都在约束 区域内进行。
k 0
r(ห้องสมุดไป่ตู้) 1
u1
G[gu(X)]
0
的满足要求。
12
13
采用内点法应注意几个问题

惩罚函数

惩罚函数

综合等式约束和不等式约束情况,可以得到一
般约束优化问题的外点罚函数公式为:
实际计算中,因为惩罚因子 不可能达到无 穷大,故所得的最优点也不可能收敛到原问题 的最优点,而是落在它的外面,显然,这就不
能严格满足约束条件。为了克服外点惩罚函数 法的这一缺点,对那些必须严格满足的约束 (如强度、刚度等性能约束)引入约束裕 度 ,即将这些约束边界向可行域内紧缩, 移动一个微量,得到
一、惩罚函数介绍
如何把它转化为无约束求解
二维约束问题
对于机械优化设计一般式
外点惩罚函数
外点惩罚函数法的一般形式:

考虑不等式约束优化设计时:对 构造一般形式的外点惩罚函数为:
其中: (1)当满足所有约束条件时惩罚项为,即
考虑等式约束优化问题:
构造点罚函数:
同样,若X满足所有等式约束则惩罚项为0,;若 不能满足,则 且随着惩罚因 子的增大而增大。
这样用重新定义的约束函数来构造惩罚函数,
得到最优设计方案。
内点惩罚函数法
外点法和内点的区别
内点法将惩罚函数定义于可行域内且求解无
约束优化问题的搜索点总是保持在可行域内,一 般只用于不等式约束情况;外点法即可用于求解 不等式约束优化问题,又可用于求解等式约束优 化问题,主要特点是惩罚函数定义在可行域的外 部,从而在求解系列无约束优化问题的过程中, 从可行域外部逐渐逼近原约束优化问题最优解。
结论: (1)一般的优化方法,如惩罚函数法,当优化 变量的初始值取值范围不同时,往往会直接 影响优化结果,在使用当中应该加以注意和改 进。 (2)二次优化的惩罚函数法,将整个优化过程 分为连续变量惩罚函数法的初始优化、带离 散变量的惩罚函数再优化和网格法检验三步 进行,消除了优化变量初始值对优化结果的 影响,使优化结果更为准确、合理,是一种 很有参考价值的实用优化方法。

最优化方法 第三章(罚函数法)

最优化方法  第三章(罚函数法)

这种惩罚策略,对于在无约束的求解过程中企图违反约
束的迭代点给予很大的目标函数值,迫使无约束问题的 极小点或者无限地向可行域D靠近,或者一直保持在可 行域D内移动,直到收敛到原来约束最优化问题的极小 点。
不改变可行域局部极小值,可以将 约束域之外的局部极小值变大。
p ( x) 0, x D p ( x) 0, x D
k k
k 1
k 1
xk 1是F x, M k 1 的最优解.
k 1 k k 1 k 0 M k 1 M k p ( x ) p ( x ) p ( x ) p ( x )
M k 1 M k
(3) f ( x k 1 ) M k p( x k 1 ) F ( x k 1 , M k ) F ( x k , M k ) f ( x k ) M k p( x k )
gi ( x) gi ( x) max gi ( x), 0 = 罚函数p(x)的构造 2 m l p( x) (max gi ( x), 0) 2 h 2 j ( x)
i 1 j 1
(1) p(x)连续 (2) p( x) 0, x D (3) p( x) 0, x D
二、外点法 外点罚函数法算法步骤 1:给定初始点 x 0 ,初始罚因子M1 0 (可取M1 1 ), 精度 0, k : 1. 2:以 x k 1初始点,求解无约束优化问题
min F ( x, M k ) f ( x) M k p( x)
得到极小点 x* ( M k ),记为 x k , 其中
p( x) (max gi ( x), 0) h 2 j ( x)
2 i 1 j 1 m l

(完整版)机械优化设计习题参考答案孙靖民第四版机械优化设计

(完整版)机械优化设计习题参考答案孙靖民第四版机械优化设计
1.Fibonacci法—理想方法,不常用。
2.黄金分割法(0.618法)
原理:提高搜索效率:1)每次只插一个值,利用一个前次的插值;2)每次的缩短率λ相同。左右对称。
程序:p52
(四)插值方法
1.抛物线法
原理:任意插3点:
算得: ; ;
要求:
设函数 用经过3点的抛物线 代替,有
解线代数方程
解得:
程序框图p57
网格法 ,缩小区间,继续搜索。
Monte Carlo方法 , ,随机数。
比较各次得到的 得解
遗传算法(专题)
(二)区间消去法(凸函数)
1.搜索区间的确定:高—低--高( )则区间内有极值。
2.区间消去法原理:在区间[a, b]内插两个点a1, b1保留有极值点区间,消去多余区间。
缩短率:
(三)0.618法
可行方向—约束允许的、函数减小的方向。(图)约束边界的切线与函数等高线的切线方向形成的区域。
数学模型
用内点法或混合法,取 ,
直接方法
(一)随机方向法
1.在可行域产生一个初始点 ,因 (约束),则
--(0,1)的随机数。
2.找k个随机方向,每个方向有n个方向余弦,要产生kn个随机数 , , ,随机方向的单位向量为
3.取一试验步长 ,计算每个方向的最优点
4.找出可行域中的最好点 得搜索方向 。以 为起点, 为搜索方向得 。最优点必须在可行域内或边界上,为此要逐步增加步长。

穷举下去得递推公式
3.算例
p73
4.框图p72
5.特点
作业:1. 2.
(六)变尺度法
1.引言
坐标变换
二次函数
令 为尺度变换矩阵

机械优化设计第五节约束优化-惩罚函数法3-5

机械优化设计第五节约束优化-惩罚函数法3-5

外点法求解时,惩罚函数的形式为:
(k ) ( x, r ) f ( x) r max 0, gu ( x) r hv ( x) u 1 v 1
(k ) (k ) m p 2 2
k 1, 2
r
(1) ( 2)
(k )
内点法对企图从内部穿越可行域的点施以惩 g x 0 时,则障碍项的 罚。设计点离边界越近 值急剧增大,并趋向无穷大,于是惩罚越大,于是惩 罚函数 ( x r ( k ) )亦随之急剧增大至无穷大.
u
就好像在可行域的边界上设置很高的障 碍,从而保障迭代点一直在可行域内而又趋向 于约束最优点。当 k r ( k ) 0时,才能求得 原约束问题的最优解。 参数的选取和确定:
(0)
(2)初始惩罚因子 r
(0)
的选择
) . 初始惩罚因子 r ( 0的选择对于计算效率影响很大
若r x, 项)的作用就会很小,
x, r ( k )
( 0 ) 值得太小,则在惩罚函数中障碍项(惩罚

r
(k )
f ( x)

这时求惩罚函数 的无约束极值点。 犹如求原目标函数 f ( x)本身的无约束极值点而 这个极值点 x又不大可能接近 f ( x) 的约束极值点,
D.收敛条件: 同时满足:(1)相邻两次惩罚函数值相对变化 足够小; (2)相邻两次惩罚函数无约束最优 点的距离足够小。
(k ) x r


* (k ) ( k 1) ( k 1) , r x r , r 1 * ( k 1) ( k 1) x r , r
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<n;i++)
x3[i]=x1[i];
f3=f1;
for(i=0;i<n;i++)
x1[i]=x2[i];
f1=f2;
for(i=0;i<n;i++)
x2[i]=x3[i];
f2=f3;
}
for(i=0;i<n;i++)
x3[i]=x2[i]+(double)h*s[i];
f3=f(x3,r0);
return s;
}
double f(double x[],double r)
{
double s,t,t2;
//t=1-x[0];
t=1-x[0];t2=2-x[1];
// s=yuanhansu(x)-r*log(fahansu(t));
s=yuanhansu(x)-r*log(fahansu(t))-r*log(fahansu(t2));
{
if(fn[0]<=fn[i])
{
fn[0]=fn[i];
r=i;
}
}
f0=f(x0,r0);
f1=f(x1,r0);
f2=f(x2,r0);
if(f2>=f0||((double)f0-(double)2*f1+(double)f2)*((double)f0-(double)f1-(double)fn[0])*((double)f0-(double)f1-(double)fn[0])>=0.5*fn[0]*(double)(f0-f2)*(double)(f0-f2))
#include <stdio.h>
#include <math.h>
#define m 12
double f(double x[],double r);
void jintuifa(double ab[m][m],int n,double x0[],double h,int ij,double a[],double b[],double r0);
{
int i,j,k,r,sum,p,e;
double x1[m],x2[m],abc[m],kr[m],f0,f1,f2,fn[m],c[m],q,wo;
k=0;
double ab[m][m];
for(i = 0; i < n; i ++)
{
for(j = 0; j < n; j ++)
{
if(i==j)
{
x0[e]=x1[e];
}
fn[p]=(double)(q-f(x1,r0));
}
k=k+1;
for(i=0;i<n;i++)
x2[i]=(double)2*x1[i]-x0[i];
for(i=0;i<n;i++)
c[i]=(double)x1[i]-x0[i];
r=0;
for(i=0;i<n;i++)
x[i]=(double)(b[i]+a[i])/2.0;
break;
}
else
{
for(i=0;i<n;i++)
x1[i]=b[i]-(double)0.618*(b[i]-a[i]);
for(i=0;i<n;i++)
x2[i]=a[i]+(double)0.618*(b[i]-a[i]);
if(f(x1,r0)>f(x2,r0))
void hongjinfa(int n,double a[],double b[],double flag,double x[],double r0);
void baoweifa(int n,double x0[],double h,double flag,double a[],double b[],double x[],double r0);
return s;
}
void jintuifa(double ab[m][m],int n,double x0[],double h,int ij,double a[],double b[],double r0)
{
int i,j,z;
double x1[m],x2[m],x3[m],f1,f2,f3;
while(f3<f2)
{
h=2*h;
for(i=0;i<n;i++)
x1[i]=x2[i];
f1=f2;
for(i=0;i<n;i++)
x2[i]=x3[i];
f2=f3;
for(i=0;i<n;i++)
x3[i]=x2[i]+(double)h*s[i];
f3=f(x3,r0);
}
for(i=0;i<n;i++)
for(i=0;i<n;i++)
a[i]=x1[i];
else
for(i=0;i<n;i++)
b[i]=x2[i];
}
}
}
void baoweifa(int n,double x0[],double h,double flag,double a[],double b[],double x[],double r0)
{
if(x1[i]<x3[i])
{
a[i]=x1[i];
b[i]=x3[i];
}
else
{
a[i]=x3[i];
b[i]=x1[i];
}
}
}
void hongjinfa(int n,double a[],double b[],double flag,double x[],double r0)
{
int i;
ab[i][j] = 1;
else
ab[i][j] =0;
}
}
while(1)
{
wo=f(x0,r0);
for(p=0;p<n;p++)
{
q=f(x0,r0);
jintuifa(ab,n,x0,h,p,a,b,r0);
hongjinfa(n,a,b,flag,x1,r0);
for(e=0;e<n;e++)
double s[m];
for(i = 0; i < n; i ++)
{
s[i]=ab[i][ij];
}
for(i=0;i<n;i++)
{
x1[i]=x0[i];
x2[i]=x0[i]+(double)h*s[i];
}
f1=f(x1,r0);
f2=f(x2,r0);
if(f2>=f1)
{
h=(-1)*h;
double x1[m],x2[m],f1,f2;
while(1)
{
for(i=0;i<n;i++)
x1[i]=b[i];
f1=f(x1,r0);
for(i=0;i<n;i++)
x2[i]=a[i];
f2=f(x2,r0);
if(fabs((f2-f1)/f2)<=flag)
{
for(i=0;i<n;i++)
double fahansu(double tt)
{
double ty;
if(tt<0) ty=-tt;else ty=0;
return ty;
}doubleຫໍສະໝຸດ yuanhansu(double x[])
{
double s;
//s=x[0]*x[0]+x[1]*x[1];
s=x[0]*x[0]+x[1]*x[1]+x[2]*x[2]+x[3]*x[3];
相关文档
最新文档