百木园-与人分享,
就是让自己快乐。

Python小白的数学建模课-12.非线性规划

  • 非线性规划是指目标函数或约束条件中包含非线性函数的规划问题,实际就是非线性最优化问题。
  • 从线性规划到非线性规划,不仅是数学方法的差异,更是解决问题的思想方法的转变。
  • 非线性规划问题没有统一的通用方法,我们在这里学习的当然不是数学方法,而是如何建模、如何编程求解。
  • 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛达人。

1. 从线性规划到非线性规划

本系列的开篇我们介绍了线性规划 (Linear Programming) 并延伸到整数规划、0-1规划,以及相对复杂的固定费用问题、选址问题。这些问题的共同特点是,目标函数与约束条件都是线性函数。如果目标函数或约束条件中包含非线性函数,则是非线性规划。

通常,非线性问题都比线性问题复杂得多,困难得多,非线性规划也是这样。非线性规划没有统一的通用方法、算法来解决,各种方法都有特定的应用范围和适用条件。另一方面,很多非线性规划问题在实践中不能获得全局最优解,只能得到局部最优解或近似最优解。

这意味着什么?对于数学研究来说,这也许意味着存在新的课题和挑战,可以研究更有效的算法。确实如此,即便线性规划问题的研究也在不断前进,非线性规划问题的研究更是丰富多彩。但热闹是他们的,我什么也没有。

我所想到的,是数学建模学习/课程/竞赛的根本目的是什么?是掌握各种算法的推演,努力编程以实现,还是练习分析问题建立模型的能力,使用软件和工具求解问题的能力?显然是后者。可是,为什么培训课上老师讲的都是算法呢?到了例题例程,不是一带而过,就是跳步骤讲。听课时津津有味,下课了题目还是不会做,程序还是调不通。于是,...

不过,到了非线性规划这一课,我们发现老师也不再不厌其烦地讲算法了,不知道是讲不下去还是讲不过来了: 20世纪50年代,H.W.Kuhn 和 A.W.Tucker 提出了非线性规划的基本定理,为非线性规划奠定了理论基础 ;50、60 年代出现了许多解非线性规划问题的有效算法;80年代后,随着计算机技术的快速发展,非线性规划方法取得了长足进步,在信赖域法、稀疏拟牛顿法、并行计算、内点法和有限存储法等领域取得了丰硕的成果。

所以,没关系的,都一样——参见章北海文集。

这意味着什么呢?这意味着对于学习数学建模的小白,学会把问题简化为非线性规划的标准方程,学会按照本文的方法使用求解工具包的函数,才能求解非线性规划问题,才能完赛。

2. Scipy 库求解非线性规划问题

2.1 非线性规划问题的描述

首先,我们回顾线性规划问题的标准形式:

\\[\\begin{align}
& min\\;f(x) = \\sum_{j=1} ^n c_j x_j\\\\
& s.t.:\\begin{cases}
\\sum_{j=1} ^n a_{ij} x_j = b_i, \\\\
x_j \\geq 0
\\end{cases}
\\end{align}
\\]

来源:https://www.cnblogs.com/youcans/p/15064686.html
图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » Python小白的数学建模课-12.非线性规划

相关推荐

  • 暂无文章