机械优化设计惩罚函数内点法
《机械优化设计》试卷及答案 新 全

《机械优化设计》复习题及答案一、选择题1、下面 方法需要求海赛矩阵。
A 、最速下降法B 、共轭梯度法C 、牛顿型法D 、DFP 法2、对于约束问题()()()()2212221122132min 44g 10g 30g 0f X x x x X x x X x X x =+-+=--≥=-≥=≥根据目标函数等值线和约束曲线,判断()1[1,1]T X =为 ,()251[,]22TX =为 。
A .内点;内点B. 外点;外点C. 内点;外点D. 外点;内点3、内点惩罚函数法可用于求解__________优化问题。
A 无约束优化问题B 只含有不等式约束的优化问题C 只含有等式的优化问题D 含有不等式和等式约束的优化问题4、对于一维搜索,搜索区间为[a ,b],中间插入两个点a 1、b 1,a 1<b 1,计算出f(a 1)<f(b 1),则缩短后的搜索区间为___________。
A [a 1,b 1]B [ b 1,b]C [a1,b]D [a,b1]5、_________不是优化设计问题数学模型的基本要素。
A设计变量B约束条件C目标函数D 最佳步长6、变尺度法的迭代公式为x k+1=x k-αk H k▽f(x k),下列不属于H k必须满足的条件的是________。
A. H k之间有简单的迭代形式B.拟牛顿条件C.与海塞矩阵正交D.对称正定7、函数)(Xf在某点的梯度方向为函数在该点的。
A、最速上升方向B、上升方向C、最速下降方向D、下降方向8、下面四种无约束优化方法中,__________在构成搜索方向时没有使用到目标函数的一阶或二阶导数。
A 梯度法B 牛顿法C 变尺度法D 坐标轮换法9、设)f在R上为凸函数的(X(Xf为定义在凸集R上且具有连续二阶导数的函数,则)充分必要条件是海塞矩阵G(X)在R上处处。
A 正定B 半正定C 负定D 半负定10、下列关于最常用的一维搜索试探方法——黄金分割法的叙述,错误的是,。
惩罚函数法

k k 1
r k 1 cr k
否
X 0 X *(rk )
开始
输入 X 0、r0、c、
k←0
求 min(X , rk )
满足收敛条件? 是
X * X *(rk ) f ( X *) f X *(rk )
结束
3.外点惩罚函数法
求解策略
外点惩罚函数法简称外点法。这种方法和内点相反,
3.外点惩罚函数法
外点法程序框图:
Yes
X * X *(rk )
Yes
f ( X *) f X *(rk )
结束
开始
输入 X 0, r0, c,1,2
k 0
求 min ( X , rk ) 得X *(rk )
Q max g j ( X *(rk ))
Q 1 ?
No
X * (r k ) X * (r k1) 2
(X , r) f (X ) rmax 0, g j (X ) rhk (X )
j 1
k 1
式中:r为惩罚因子,它是由小到大,且趋近于∞的数列
3.外点惩罚函数法
l
2m
2
即 r0<r1<r2<··· ,hk (X ) 、max 0, g j (X )分别对
应为对应于不等式约束和等k式1 约束函数j1的惩罚项, 其中
当 r , lim(1 1 ) 1。
r 4r
当逐步增大r值,直至趋近于无穷时,逼近原问题的约束最优
解,当r=0.25,0.5,1,2时,惩罚函数 (X , r) 的等值线图
下如
3.外点惩罚函数法
当r逐渐增大时,极值
点 X *(r)的序列将沿一直线轨 迹 ( X *(r), r) 1 X *(r) 在可 行域外逐步逼近2 最优2 点。
《机械优化设计》复习题-答案

《机械优化设计》复习题解答一、填空题1、用最速下降法求f (X)=100(x 2— x 12) 2+(1— x 1) 2的最优解时,设X (0)=[—0。
5,0。
5]T ,第一步迭代的搜索方向为 [—47,-50]T 。
2、机械优化设计采用数学规划法,其核心一是寻找搜索方向,二是计算最优步长。
3、当优化问题是凸规划的情况下,任何局部最优解就是全域最优解.4、应用进退法来确定搜索区间时,最后得到的三点,即为搜索区间的始点、中间点和终点,它们的函数值形成 高-低-高 趋势。
5、包含n 个设计变量的优化问题,称为 n 维优化问题。
6、函数C X B HX X T T++21的梯度为B 。
7、设G 为n×n 对称正定矩阵,若n 维空间中有两个非零向量d 0,d 1,满足(d 0)TGd 1=0,则d 0、d 1之间存在共轭关系.8、 设计变量 、 目标函数 、 约束条件 是优化设计问题数学模型的基本要素.9、对于无约束二元函数),(21x x f ,若在),(x 20100x x 点处取得极小值,其必要条件是,充分条件是(正定 。
10、 K —T 条件可以叙述为在极值点处目标函数的梯度为起作用的各约束函数梯度的非负线性组合。
11、用黄金分割法求一元函数3610)(2+-=x x x f 的极小点,初始搜索区间]10,10[],[-=b a ,经第一次区间消去后得到的新区间为 [—2.36 10] 。
12、优化设计问题的数学模型的基本要素有设计变量、 目标函数 、 约束条件。
13、牛顿法的搜索方向d k = ,其计算量大 ,且要求初始点在极小点 附近 位置。
14、将函数f(X )=x 12+x 22—x 1x 2-10x 1-4x 2+60表示成C X B HX X T T++21的形式 .15、存在矩阵H,向量 d 1,向量 d 2,当满足d 1T Hd 2=0,向量 d 1和向量 d 2是关于H 共轭. 16、采用外点法求解约束优化问题时,将约束优化问题转化为外点形式时引入的惩罚因子r 数列,具有单调递增特点。
罚函数法(SUMT法)(ppt文档)

( NP) 求解 min( X , M ) 设其最优解为 X*(M), XRn
研究 X*(M) 与(NP)的最优解 X* 之间的关系
线性规划3-6
一.外点法迭代原理
(NP) min f (X )
m
( X , M ) f ( X ) M [min( 0, gi ( X ))]2
i 1
gi (X ) 0 gi (X )
30 若 gi ( X (k ) ( Mk )) , i 1,2, ,m, 则迭代终止,X X (k ) ( M k ) 否则取Mk+1=C Mk , 其中C = 5~10
D
X
X(k)(Mk )
gi (X ) 0
令 k:= k+1 转20
M4 1000 X (4) (1000)
D
g2(X ) 0
g1( X ) 0
X(k)(Mk )
X
x1
线性规划3-6
一.外点法迭代原理
(NP) min f (X )
s.t. gi ( X ) 0
线性规划3-6
第三章 非线性规划
一.外点罚函数法(外点法)
( NP) min f (X )
s.t
.
gi hj
( (
X X
) )
0, 0,
i j
1, 2, 1, 2,
,m ,p
外点法迭代原理 外点法迭代步骤 外点法举例 外点法的优缺点
二.外点法迭代步骤
(NP) min f (X )
通过迭代逐渐增大罚因子M:
(NP)min f (X )
s.t. gi ( X ) 0
机械 机械优化设计复习题

山东理工大学成人高等教育机械优化设计复习题一、填空题1、搜索区间的确定最常用的是 法,在一维探索时,首先保证探索区间函数具有____________性。
2、工程设计优化问题通常把高维问题转化为 问题求解,采用 方法来近似原目标函数。
3、复合形各顶点的选择和替换,不仅要满足目标函数的 ,还应当满足 。
4、内点惩罚函数法整个迭代过程限制在 ,迭代点均为 。
5、函数在x (k)点的最速下降方向是 方向,最速上升方向是 方向,它们都是函数的 性质。
6、工程设计优化问题可以描述为:在满足给定的 下,选择适当的 ,使目标函数值达到最优。
7、惩罚函数法包括: 法和 法两种。
8、可行方向法的探索路线有三种 :(1) ,(2) ,(3) 。
9、黄金分割法的基本思想是通过计算和比较单峰区间内 ,不断 ,使搜索区间 ,直至极小点所在的区间 ,得到近似最优解。
10、可行域内的任一设计点都代表一个 ,这样的点叫做 点。
二、计算题1. 对于约束极值问题,试运用K-T 条件判明目标函数在约束条件下点X*=[2,0]T 是否为约束极值点。
2、求函数()5221222122141+-++-=x x x x x x X f 的极值点,极值并判断其性质。
3、求函数121222122123)(x x x x x x f --+=的无约束极值点,并判断它们是极小点、极大()()22213min x x X f +-=..t s ()()()000413222211≤-=≤-=≤-+=x X g x X g x x X g点还是鞍点?三、简答题1、试述黄金分割法首轮搜索区间插入点具有什么特点?2、试述随机方向法的搜索过程3、Powell 是如何对其基本算法进行修正的?4、试述随机方向法的计算过程5、修正Powell 法是如何确定下一轮迭代的方向组的?6、变尺度法的基本思想是什么?7、修正Powell 法是如何确定下一轮迭代的方向组的?8、无约束优化方法属于间接解法的有哪些?四、分析题1、试用牛顿法列出求解 ()8723241234+---=x x x x X f 近似极小的程序框图。
(完整word版)机械优化设计实验报告(word文档良心出品)

《机械优化设计》实验报告目录1.进退法确定初始区间 (3)1.1 进退法基本思路 (3)1.2 进退法程序框图 (3)1.3 题目 (3)1.4 源程序代码及运行结果 (3)2.黄金分割法 (4)2.2黄金分割法流程图 (4)2.3 题目 (5)2.4 源程序代码及结果 (5)3.牛顿型法 (5)3.1牛顿型法基本思路 (6)3.2 阻尼牛顿法的流程图 (6)3.3 题目 (6)3.4 源程序代码及结果 (6)4.鲍威尔法 (7)4.1 鲍威尔法基本思路 (7)4.2 鲍威尔法流程图 (7)4.3 题目 (8)4.4 源程序代码及结果 (8)5. 复合形法 (15)5.1 复合行法基本思想 (15)5.3 源程序代码及结果 (15)6. 外点惩罚函数法 (23)6.1解题思路: (23)6.2 流程框图 (23)6.3 题目 (23)6.4 源程序代码及结果 (23)7.机械设计实际问题分析 (29)7.2计算过程如下 (29)7.3 源程序编写 (30)8.报告总结 (32)1.进退法确定初始区间1.1 进退法基本思路:按照一定的规则试算若干个点,比较其函数值的大小,直至找到函数值按“高-低-高”变化的单峰区间。
1.2 进退法程序框图1.3 题目:用进退法求解函数()2710=-+的搜索区间f x x x1.4 源程序代码及运行结果#include <stdio.h>#include <math.h>main(){float h,h0,y1,y2,y3,a1=0,a2,a3,fa2,fa3;scanf("h0=%f,y1=%f",&h0,&y1);h=h0;a2=h;y2=a2*a2-7*a2+10;if (y2>y1){h=-h;a3=a1;y3=y1;loop:a1=a2;y1=y2;a2=a3;y2=y3;}a3=a2+2*h;y3=a3*a3-7*a3+10;if (y3<y2){goto loop;}elseprintf("a1=%f,a2=%f,a3=%f,y1=%f,y2=%f,y3=%f\n",a1,a2,a3,y1,y2,y3);} 搜索区间为0 62.黄金分割法2.1黄金分割法基本思路:通过不断的缩短单峰区间的长度来搜索极小点的一种有效方法。
惩罚函数求解matlab,matlab内点惩罚函数法
惩罚函数求解matlab,matlab内点惩罚函数法x1 ? x 2 ? 1 2、将例⼦程序改写为⼀个较为通⽤的罚函数 法程序。
(考虑要提供哪些参数) 2. 内点法(障碍函数法) min f ( x) s.t. g i ( x) ...操作系统为 Windows 2000 及以上的电脑,并装有 matlab 软件 四、实验操作⽅法和步骤 根据外点罚函数法的步骤,读懂下列的程序,并⽤该程序求解所给多维函数极值。
...[1 1]; b ? 1 ,则每⼀步迭代需求解的罚函数为: f (t , s) ? 0.5t 2 ? 0.25s 2 ? 0.05*2i (t ? s ?1)2 在 MATLAB 命令窗⼝中输⼊:......罚函数的算法与实例 例3.24 Matlab 的使⽤ u=0; [x,y]=me...5.6 约束变尺度法 7.2 乘⼦(罚函数)法信息与计算科学系 邵建峰邵建峰 本节内容: ? ⼀. 等式约束问题 ? ⼆.不等式约束问题 ? 三. 约束优化问题的Matlab求解......3.能够熟练编制和调试最优化⽅法的程序,奠定解决实际中的优化问题的基础 实验内容: 理解外点罚函数法并编写相关程序求其极⼩值点。
机械优化设计⽇ 期 成绩评定 ......三、主要仪器设备 操作系统为 Windows 2000 及以上的电脑,并装有 matlab 软件。
四、实验操作⽅法和步骤 根据外点罚函数法的步骤设计程序,并⽤该程序求解所给......直接搜索法 ?以梯度法为基础的间接法 ?⽆约束规划的Matlab求解函数 ?数学建模案例分析(截断切割,飞机排队) (1)间接法在⾮线性最优化问题当中,如果⽬标函 数能......转2。
内点罚函数法优点迭代总在可⾏域内进⾏,每⼀个中间结果都是 可⾏解,可以作为近似解。
内点罚函数法缺点 选取初始可⾏点较困难,且只适⽤于含不等式 ......实验三:外罚函数法 ⼀、实验⽬的 1、通过上机利⽤ Matlab 数学软件进⾏外罚函数编程,并学会对具体问题具体分 析; 2、熟悉外罚函数并编制程序; 3、培养 Matlab ......x1 ?1 ? 0 ⼆)实验⽬的 2 通过内点法的学习让我们掌握利⽤罚函数解决线...探讨了在 MAT⼩⽣境遗传算法 ; 罚函数 ;matlab LAB 环境中实现该算法各算⼦的编程⽅法 , 并通过数值实验说明基于罚函数的⼩⽣境遗传算法具有较好的多峰搜索能⼒......中函计量荸院学报15(4):0290~0293,2004JournalofChinaJiliangUniversity 【⽂章编号1 1004—1540(2004)04—0290—04 遗传算法与惩罚函数法在机械优化设计中的应⽤......< Mk < …, 从⽽构成⼀系列⽆约束⾮线性规划问题 min F(x,Mk) = f(x) + Mk∑[min (0,gj(x))] 2. 内部罚函数(内点法) 对于仅带不等式约束的⾮......实⽤最优化⽅法——matlab ——matlab 编程作业 题⼀、 初值为[ 初值为[-1;1] 其中g0、g1分别为不同x值下得导数,f0、f1为函数值 其中g0、g1分别为不同......外点法可⽤于求解不等式约束优化问题, ⼜可⽤于求解等式约束优化 问题,主要特点是惩罚函数定义在可⾏域的外部,从⽽在求解系列⽆ 约束优化问题的过程中, 从可⾏域......罚函数法指导⽼师:包能胜教授导师:赵永杰副教授学⽣:张鹏学号:**********:04主要内容1.概念2.基本原理3.算法与实例4.总结 5.Matlab算法......实验⽬的 问题描述 2 – x1 + x2 ≥ 0 熟练掌握外点法、内点法原理并可以在 matlab 熟练运⾏。
大学期末考试机械优化设计复习题教程文件
一、填空题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 XX d α+=+ ,其核心是 建立搜索方向, 和 计算最佳步长 。
15协调曲线法是用来解决 设计目标互相矛盾 的多目标优化设计问题的。
16.机械优化设计的一般过程中, 建立优化设计数学模型 是首要和关键的一步,它是取得正确结果的前提。
1. 优化设计问题的基本解法有 解析法 法和 数值法2. 无约束优化问题取得极值的充分必要条件是 一阶导数等于零 和 二阶导数大于零。
最新《机械优化设计》复习题-答案
《机械优化设计》复习题解答一、填空题1、用最速下降法求f(X)=100(x2- X12) 2+(1- x i) 2的最优解时,设X( °)=[-0.5,0.5]T,第一步迭代的搜索方向为[-47,-50]T。
2、机械优化设计采用数学规划法,其核心一是寻找搜索方向,二是计算最优步长。
3、当优化问题是凸规划的情况下,任何局部最优解就是全域最优解。
4、应用进退法来确定搜索区间时,最后得到的三点,即为搜索区间的始点、中间点和终点,它们的函数值形成—高一低一高_______________ 趋势。
5、包含n个设计变量的优化问题,称为 ________ n _____ 维优化问题。
16、函数—X T HX B T X C的梯度为B。
2 _7、设G为n>n对称正定矩阵,若n维空间中有两个非零向量d0,d1,满足(d0)T Gd1=0, 则d0、d1之间存在共轭关系。
& 设计变量___________________ 、目标函数、 __________ 约束条件 ____ 是优化设计问题数学模型的基本要素。
9、对于无约束二元函数f(X1,X2),若在X0(X10,X20)点处取得极小值,其必要条件是]叫曲=0|| __________________ ,充分条件是_E知脚切)=0|[正定。
10、K-T 条件可以叙述为在极值点处目标函数的梯度为起作用的各约束函数梯度的非负线性组合。
11、用黄金分割法求一元函数f (x) x2 10x 36的极小点,初始搜索区间[a,b] [10,10],经第一次区间消去后得到的新区间为_ [-2.36 10] _。
12、优化设计问题的数学模型的基本要素有设计变量、—目标函数_、—约束条件。
113、牛顿法的搜索方向d k= H k g k ,其计算量大_,且要求初始点在极小点附近_位置。
114、将函数f(X)=x 12+X22-X1X2-10X1-4X2+60表示成—X T HX B T X C 的形式215、存在矩阵H,向量d1,向量d2,当满足d1T Hd2=0,向量d1和向量d2是关于H共轭。
机械优化设计方法第六章 约束最优化方法
定在(-1,+1)区间的随机数取得。 有些计算机具有直接调用的功能,但有些计算机则无此 功能,需要另编程序。如可获得(0,1)区间内服从均匀 分布的随机数数列ri(i=1,2,…,n),则可通过下式 yi= ai+ ri(bi- ai) (i=1,2,…,n) 转化成在(ai,bi)区间内服从均匀分布的随机数数列。 以ai=-1,bi=1代入上式,可得(-1,+1)区间内服从 均匀分布的随机数数列 yi= 2 ri-1 由于yi在区间(-1,+1)内产生,因此所构成的随机方向单 位向量端点一定位于n维的超球面上。
现以图6-5所示二维不等式约束优化问题来作
进—步说明。
其数学模型为 min f X
X D R 2
D:g1(X)≥0 g2(X)≥0 a1≤x1≤b1 a2≤x2≤b2 其中, g1(X)≥0,g2(X)≥0可称 为隐式约束条件,而边 界约束a1≤x1≤b1, a2≤x2≤b2可称为显式约 束条件。
需要指出,这样产生的初始点X(0)=[x1(0), x2(0),…, xn(0)]T
虽能满足设计变量的边界条件,但不一定能满足所有 约束条件(如点)。 因此这样产生的初始点还须经过可行性条件的检验, 如能满足,才可作为一个可行的初始点。否则,应重 新随机选初始点,直到满足所有的约束条件。
三、随机搜索方向的产生
6-2 约束随机方向搜索法
一、基本原理
基本原理可用
图6-1所示二维 最优化问题进 行说明。
在约束可行区域D内,任意选择一个初始点X(0),以给
定的初始步长α=α0沿着随机方向S(1)取得探索点 X=X(0)+αS(1) 若该点同时符合下降性(即f(X) < f(X(0))和可行性(即 X∈D)要求,则表示X点探索成功。 并以它作为新的起始点,即X→X(0),继续按上面的迭 代公式在S(1)方向上获取新的探索成功点。 重复上述步骤,迭代点可沿S(1)方向前进,直至到达某 搜索点不能同时符合下降性和可行性要求时停止。 此时废弃该搜索点并退回到前一个搜索成功点作为S(1) 方向搜索中的最终成功点,记作X(1)。 此后,将X(1)点置为新的始点X(1)→X(0),再产生另一随 机方向S(2),以步长α重复以上过程,得到沿S(2)方向的 最终成功点X(2)。 经若干循环,点列{ X(k)( k=1,2,…) }必最后逼近约束最 优点X*。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include #include #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); 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); 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]; 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)); 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; double s[m]; for(i = 0; i < n; i ++) { s[i]=ab[i][ij]; } for(i=0;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; for(i=0;ix3[i]=x1[i]; f3=f1; for(i=0;ix1[i]=x2[i]; f1=f2; for(i=0;ix2[i]=x3[i]; f2=f3; } for(i=0;ix3[i]=x2[i]+(double)h*s[i]; f3=f(x3,r0); while(f3{ h=2*h; for(i=0;ix1[i]=x2[i]; f1=f2; for(i=0;ix2[i]=x3[i]; f2=f3; for(i=0;ix3[i]=x2[i]+(double)h*s[i]; f3=f(x3,r0); } for(i=0;i{ if(x1[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; double x1[m],x2[m],f1,f2; while(1) { for(i=0;ix1[i]=b[i]; f1=f(x1,r0); for(i=0;ix2[i]=a[i]; f2=f(x2,r0); if(fabs((f2-f1)/f2)<=flag) { for(i=0;ix[i]=(double)(b[i]+a[i])/2.0; break; } else { for(i=0;ix1[i]=b[i]-(double)0.618*(b[i]-a[i]); for(i=0;ix2[i]=a[i]+(double)0.618*(b[i]-a[i]); if(f(x1,r0)>f(x2,r0)) for(i=0;ia[i]=x1[i]; else for(i=0;ib[i]=x2[i]; } } } void baoweifa(int n,double x0[],double h,double flag,double a[],double b[],double x[],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) ab[i][j] = 1; else ab[i][j] =0; } } while(1) { wo=f(x0,r0); for(p=0;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{ x0[e]=x1[e]; } fn[p]=(double)(q-f(x1,r0)); } k=k+1; for(i=0;ix2[i]=(double)2*x1[i]-x0[i]; for(i=0;ic[i]=(double)x1[i]-x0[i]; r=0; for(i=0;i{ 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)) { if(f1for(i=0;ix0[i]=x1[i]; else for(i=0;ix0[i]=x2[i]; } else { int ij; ij=n-1; for(i=0;ikr[i]=x1[i]; for(i = 0; i < n; i ++) { for(j = 0; j < n-1; j ++) { if(j>=r) ab[i][j] = ab[i][j+1]; } ab[i][n-1]=c[i]; } jintuifa(ab,n,kr,h,ij,a,b,r0); hongjinfa(n,a,b,flag,x1,r0); for(i=0;ix0[i]=x1[i]; } if((fabs(f(x0,r0)-wo))/f(x0,r0)<=flag) break; } for(i=0;ix[i]=x0[i]; } int main() { int v,i,n; double h,flag,x0[m],a[m],b[m],x[m]; double fom,fxo,c,r0; c=0.5; r0=100.0; fom=100; printf("请输入维数:\n"); scanf("%d",&n); printf("请输入初始点:"); for(i=0;i{ printf("\nx0[%d]=",i); scanf("%lf",&x0[i]); } printf("\n请输入精度:\n"); scanf("%lf",&flag); do { h=1.0; baoweifa(n,x0,h,flag,a,b,x,r0); fxo = f(x,r0); if(fabs(fom-fxo)>flag) {fom=fxo; r0=c*r0; for(v=0;vx0[v]=x[v]; } else {printf("输出最优点及其目标函数值:\n"); for(i=0;iprintf("x[%d]=%lf\n",i,x[i]); printf("\n极小值为:\n%lf\n",yuanhansu(x)); return 0 ; } }while(1); }
浙江理工大学 2011326690223 赵志伟 机控学院