无约束优化算法:单纯形法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单纯形法
1. 算法原理
单纯形法的基本思想是:
设(0)(1)(),,...,n x x x 是n R 中的1n +个点,构成一个当前的单纯形,max min ,x x 定义如下:
{}(0)(1)()max ()max (),(),...,()n f x f x f x f x =
{}(0)(1)()min ()min (),(),...,()n f x f x f x f x = 记x 为这个单纯形除去max x 外的所有顶点的形心,
()max 01n i i x x x n =⎛⎫=- ⎪⎝⎭
∑ 取max x 关于x 的反射点(1)n x +,(1)max ()n x x x x +=+-构成新的单纯形,反复上述过程,直到达到停止条件。
2. 函数min f search
1) 函数语法
min (,0)x f search fun x =
min (,0,)
[,]min (...)
[,,]min (...)
[,,,]min (...)
x f search fun x options x fval f search x fval exitflag f search x fval exitflag output f search ====
函数输入: fun :目标函数
0x :迭代初始点
options :函数参数设置
函数输出:
x :最优点
fval :最优点对应的函数值
exitflag :函数停止信息
1:函数收敛正常停止
0:迭代次数,目标函数计算次数达到最大数
-1:算法被输出函数停止
output :函数运算信息
2)函数使用
BanaFun m
(1)目标函数程序.
function f BanaFun x
=不含导数解析式
()()
f x x x
=-+-
100*((2)(1)^2)^2(1(1))^2
-函数不需要导数信息。
Nelder Mead Simplex
SimplexUnc m
(2)算法参数设置:.
('arg','','','','',250,'','') =
options optimset L eScale off gradobj off MaxFunEvals display iter
SimplexUnc m
(3)函数调用运算:.
=
('arg','','','','',250,'','') options optimset L eScale off gradobj on MaxFunEvals display iter
x=-
[ 1.9,2]
x fval exitflag output f search BanaFun x options
=
[,,,]min(@,,)
3)计算结果
Iteration Func-count min f(x) Procedure
0 1 267.62
1 3 236.4
2 initial simplex
2 5 67.2672 expand
3 7 12.2776 expand
4 8 12.2776 reflect
5 10 12.277
6 contract inside
6 12 6.76772 contract inside
7 13 6.76772 reflect
8 15 6.76772 contract inside
9 17 6.76772 contract outside
10 19 6.62983 contract inside
11 21 6.55249 contract inside
12 23 6.46084 contract inside
13 24 6.46084 reflect
14 26 6.46084 contract inside
15 28 6.45544 contract outside
16 30 6.42801 expand
17 32 6.40994 expand
18 34 6.32449 expand
19 36 6.28548 expand
20 38 6.00458 expand
21 39 6.00458 reflect
22 41 5.43287 expand
24 44 4.63434 expand
25 45 4.63434 reflect
26 47 4.63434 contract inside
27 49 4.63434 contract outside
28 51 4.31027 expand
29 53 4.31027 contract inside
30 55 4.00991 expand
31 56 4.00991 reflect
32 58 3.55664 expand
33 59 3.55664 reflect
34 61 3.23438 reflect
35 63 3.23438 contract inside
36 65 2.9515 expand
37 67 2.82878 reflect
38 69 2.56426 reflect
39 71 2.54453 contract outside
40 73 2.43615 reflect
41 75 2.34358 reflect
42 77 2.28129 reflect
43 79 2.21473 reflect
44 81 2.08627 reflect
45 82 2.08627 reflect
46 84 1.86677 reflect
47 86 1.86677 contract inside
48 88 1.80424 reflect
49 90 1.58432 expand
50 91 1.58432 reflect
51 93 1.27128 expand
52 94 1.27128 reflect
53 96 1.05673 reflect
54 98 1.05673 contract inside
55 100 0.816708 expand
56 102 0.816708 contract inside
57 104 0.816708 contract inside
58 106 0.760575 reflect
59 108 0.601009 expand
60 110 0.601009 contract inside
61 112 0.516477 reflect
62 114 0.516477 contract inside
63 115 0.516477 reflect
64 117 0.416316 expand
65 119 0.416316 contract inside
66 120 0.416316 reflect