工程优化作业——成功失败法和黄金分割法
来源:互联网 发布:守望先锋源氏cos淘宝网 编辑:程序博客网 时间:2024/06/05 01:18
工程优化作业——成功失败法和黄金分割法
西电工程优化作业编程题,写篇博客是为了熟悉MarkDown公式编写的方式。
- 工程优化作业成功失败法和黄金分割法
- 搜索方法概述
- 成功失败法
- 问题
- 成功失败法的步骤
- 618法黄金分割法
- 缩短搜索区间的原则
- 代码实现上述两种方法
搜索方法概述
求多元函数的极值点常采用迭代法,基本思想是先选择
并希望点列
根据不同的原则选择不同的
一维搜索
或一维最优化
。成功失败法
问题
设问题为:
并令:
显然:
成功失败法的步骤
前进运算
先计算后退运算
若
0.618法(黄金分割法)
首先条件是
缩短搜索区间的原则
设
“去坏留好”原则
若
若
对称原则
由于在计算前不能预测
则有:
等比收缩原则
我们希望每次留下的区间长度都是上次留下的区间长度的
设:
根据计算得到:
代码实现上述两种方法
#include<iostream>#include <algorithm>#include<cmath>#include <iomanip>using namespace std;double f(double x){ return pow(x, 4) + pow(x, 3) - pow(x, 2) + 1;}//define f(x)int main(){ //成功失败法 double a; double h; cout << "input: " << endl << "a: "; cin >> a; cout << "h: "; cin >> h; double a1 = a; double a2 = a + h; double f1 = f(a1); double f2 = f(a2); double c; double d; if (f2 < f1) { h = 2 * h; a2 += h; f1 = f2; f2 = f(a2); while (f2 < f1) { a1 = a2 - h; h = 2 * h; a2 += h; f1 = f2; f2 = f(a2); }// end while c = a1; d = a2; } else { h = -h / 4; a1 = a1 + h; f2 = f1; f1 = f(a1); while (!(f2 < f1)) { a2 = a1 - h; h = h + h; a1 = a1 + h; f2 = f1; f1 = f(a1); }//end while c = a1; d = a2; }//end if-else cout << "[ " << fixed << setprecision(2) << c << " ," << fixed << setprecision(2) << d << " ]" << endl;//output //0.618法 double E = 0.01; double x_result; double _a = c; double _b = d; double x1 = _a + 0.382*(_b - _a); double x2 = _a + _b - x1; double R; double G; R = f(x1);func1: G = f(x2);func2: if (R > G) { _a = x1; if (abs(_a - _b) < E) { x_result = (_a + _b) / 2; } else { x1 = x2; x2 = _a + 0.618*(_b - _a); R = G; goto func1; } } else { _b = x2; if (abs(_b - _a) < E) { x_result = (_a + _b) / 2; } else { x2 = x1; x1 = _a + 0.382*(_b - _a); G = R; R = f(x1); goto func2; } } cout << "x*=" << fixed<<setprecision(2)<<x_result << endl; system("PAUSE"); return 0;}
1 0
- 工程优化作业——成功失败法和黄金分割法
- 最优化第二讲——一维搜索法(黄金分割法和java实现)
- 数学建模 单变量优化和求解 黄金分割法
- 工程优化学习(进退法、黄金分割法、二次插值法、三次插值法、最速下降法)
- 【最优化】黄金分割法与Fibonacci法
- 漫步最优化二十六——黄金分割搜索
- 优选法中的黄金分割法
- 黄金分割法-C语言
- 成功—失败法和0.618法结合求出局部极小值的C语言实现
- MATLAB学习笔记03——无约束一维极值问题(一)进退法和黄金分割法
- [黄金分割比] 黄金分割法求单峰函数最值
- 黄金分割的金苹果——apple设计中的黄金分割
- 黄金分割法与Fibonacci法
- 网页配色之黄金分割法
- 网页配色之黄金分割法
- 黄金分割法求函数最小值
- 网页配色之黄金分割法
- C++实现黄金分割法搜索
- UI day 20 iOS FMDB自己封装的单例类
- UI day 21 程序 进程 线程 GCD 共产党
- java并发编程学习之脏读代码示例及处理
- LeetCode 14:Longest Common Prefix
- UI day 22 block动画 CAlayer动画
- 工程优化作业——成功失败法和黄金分割法
- Android Service使用Messenger通信
- 129Sum Root to Leaf Numbers
- PHP学习练手(三)
- linux提权辅助工具 – Linux_Exploit_Suggester
- 经典SQL语句大全
- volley带参数的post请求
- Yocto tips (12): 使用Yocto帮组我们寻找难找的固件与固件放置路径
- c语言NULL和0区别及NULL详解