单纯形法(算法分析)

目录

基本概念:

基本思想:

反射运算:

紧缩运算:

收缩运算:

单纯形法算法步骤:

例题解析:

总结:


基本概念:

在研究单纯形法之前,我们先将单纯形定义:

定义:n 维空间 R^{n} 中有 n+1 个顶点的凸多边形。

(如:一维空间中线段,二维空间中的三角形,三维空间中的四面体等,都是相应空间中的单纯形。)


基本思想:

在 维空间中构造一个单纯形,求出它各个顶点的函数值,比较得到最好顶点和最坏顶点,然后通过反射、扩展、压缩等方法求出一个较好点,用这个点取代最坏点,构成新的单纯形,直到满足停止条件为止。

定义:(正规单纯形)对于 n 维空间中单纯形,它的任意两个顶点之间的距离都相等。

(如:二维空间中等边三角形,三维空间中等边四边形。)


下面来仔细研究反射、紧缩、扩展、收缩方法:

反射运算:

步骤1:将单纯形的顶点重新排列,使得 f(x_{0})\leq f(x_{1})\leq...\leq f(x_{n-1})\leq f(x_{n}) 这样,最好的顶点 x_{0} ,最坏的顶点 x_{n} ;

步骤2:去掉最坏顶点 x_{n} ,求出单纯形的重心:x_{n+1}=\frac{\sum_{j=0}^{n-1}x_{j}}{n} ;

步骤3:求出最坏顶点 x_{n} 关于重心的反射点:x_{n+2}=x_{n+1}+(x_{n+1}-x_{n})=2x_{n+1}-x_{n};

步骤4:如果反射点比最坏顶点好,则用反射顶点替换最坏顶点,构成新的单纯形。

紧缩运算:

如果 f(x_{n+2})\geq f(x_{n-1}),可能最好顶点 x_{0} 接近最优解则可将所有顶点向 x_{0} 方向收缩。

x_{j}=x_{0}+\theta (x_{j}-x_{0}),其中 0\leq \theta \leq 1紧缩系数

扩展运算:

当 f(x_{n+2})\leq f(x_{0}) ,即反射点比最好顶点还好,可以在 x_{n+2} 和 x_{n+1} 连线的延长线上求一个拓展点。

 x_{n+3}=x_{n+1}+\gamma (x_{n+2}-x_{n+1}),其中 \gamma > 1 扩展系数

收缩运算:

当 f(x_{n+2})\leq f(x_{0}) ,将 x_{n+2} 和 x_{n} 之间目标函数较小的记为 x_{n},另一个记为 x_{n+2} ,并在 x_{n} 与 x_{n+1} 的连线上靠近 x_{n} 处求一个收缩点。

 x_{n+4}=x_{n+1}+\beta (x_{n}-x_{n+1}),其中 \beta > 1 收缩系数


单纯形法算法步骤:


例题解析:


总结:

需要说明的是,当变量多的时候,例如 n\geq 10,单纯形法效果不好。

(行文中若有纰漏,希望大家指正)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

背对人潮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值