单纯形算法详细讲解(simplex)附代码

前两天上卜东波老师的课,学习了关于单纯形相关的理论,自认为我已经学的比较扎实,但是在做OJ的时候却遇到了很大的困难,前后花了差不多三天的时间才AC了。为了纪念这份来之不易,也为了方便之后的学习,所以决定写下这个学习的过程。为了更好地阐述,在本博客的阐述过程中,我决定抛弃所有的证明部分,而是直接告诉你这个结论,我觉得大部分的人只要拿到问题,知道怎么解决,怎么编程才是第一步,至于具体证明过程在之后...
摘要由CSDN通过智能技术生成

前两天上卜东波老师的课,学习了关于单纯形相关的理论,自认为我已经学的比较扎实,但是在做OJ的时候却遇到了很大的困难,前后花了差不多三天的时间才AC了。为了纪念这份来之不易,也为了方便之后的学习,所以决定写下这个学习的过程。

为了更好地阐述,在本博客的阐述过程中,我决定抛弃所有的证明部分,而是直接告诉你这个结论,我觉得大部分的人只要拿到问题,知道怎么解决,怎么编程才是第一步,至于具体证明过程在之后的使用过程中,你会逐渐发现真知,嘻嘻。

先看这样一个问题:

这是一个简单的二元规划问题,这个问题我们可以通过二维平面绘画出来,如下所示,也就是在下面这个蓝色的可行域内,去寻求一个点,使得目标函数的解最小:

然后在规划的过程中,我们会发现,最优解出现在可行域的一个顶点上。这里就引出了两个重要的概念:

1、simplex所面对的问题,其可行域大多是凸多胞体,然后在这样的可行域上求解问题的最优解,都会出现在顶点的位置。

所以针对上面这个规律,我们可以知道,我们求解最优解的过程,就是在顶点中寻找最优解的过程。

嗯,那么如何确定一个点,是顶点呢?

这个问题的答案是,将约束写成松弛形式,寻找松弛形式下系数矩阵下的一组基,就对应多胞形可行域的一个顶点。

为了让同志们看的更清楚点,再举个例子

这个可行域可以画成三维空间的一个多面体:

下面我将上述这个例子扩写为松弛形式,所谓松弛形式就是将不等式化成等式

然后看这个系数可以通过高斯变换得到一组基,以及其相应的一组解恰好就是可行域中多面体的一个顶点:

所以我们紧接着又得出了这样的结论:可行域的一

  • 15
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

与贰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值