非线性规划

这篇具有很好参考价值的文章主要介绍了非线性规划。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

  非线性规划在工业界和学术界中应用非常普遍,譬如交通运输中的路径优化、金融领域中的资产配置、5G网络切片中VNF的放置等。很多时候,我们对复杂问题进行提炼和抽象后,发现可以建模成某一种非线性规划。然而,由于非线性规划多是NP难的问题,并不容易得到最优的可行解。比如非线性规划中的整数规划,就存在着指数爆炸的问题,往往是结合近似算法、启发式算法甚至利用强化学习等方式以在短时间内给出一个较好的可行解。
  鉴于非线性规划的普遍性和重要性,以下,我们将就非线性规划中最为常见和重要的两类问题——整数规划(IP)和混合整数(MIP)问题进行介绍。

二、定义及概念

  1. 整数规划:
      所谓整数规划(Integer Programming)是指模型中所有决策变量都取整数值,可行解的区域离散。一般来说,整数规划多指线性整数规划,可用如下表达式来表征:
    min ⁡ x c T x s . t . A x ≤ b x ≥ 0 x ∈ Z n \min\limits_x c^Tx \\s.t. \quad Ax \le b \\ x \ge 0 \\ x \in Z^n xmincTxs.t.Axbx0xZn
      实际中整数规划之所以重要,就是因为生活中很多东西都是离散的,或者是仅有“yes”或“no”的二值选择。以手机制造的例子来看,由于生产出的手机数量限制在整数,这在采用线性规划的方式下很少得到的最优解恰为整数,下图就是一个典型的例子。
    非线性规划
      上图中深蓝色框内为可行解区域,而浅蓝色点为可选择的方案(整数点取值)。很明显的,最优解并不是整数,这就需要在已有的LP方案上加以限制来得到整数规划方法。

  2. 混合整数规划:
       混合整数规划(Mixed Integer Programming)是指模型中部分决策变量取值为整数,部分决策变量取值连续。相比于整数规划,区别仅仅是存在有取值连续的决策变量,其总体求解方法和整数规划相差不大。

三、主要求解方法

  那么,如何对整数规划问题进行求解呢?目前主要有以下4大类方法:
  1)精确算法:主要有割平面法,分支定界法等。其特点在于处理问题规模相对较小,且得到的解一定是最优解。
  2)近似算法:只能针对特定问题求解,采用一些特殊的技巧(贪婪、松弛等)进行设计,求解规模相对放宽,但得到的最终结果未必是最优解。
  3)启发式算法:没有严格的理论分析,通过设计经验或者观察到的性质设计出来的,得到的最终结果未必是最优解,但是能够更加适应大规模问题的情况。
  在上述求解方法中,最为基本的就是分支定界法,在此基础上结合不同的优化技巧(预处理、割平面、启发式、并行)变形得到其它的方法。其中,预处理主要是通过在分支界定前采取一些预判操作以减小问题规模和化简约束条件,而切割平面通过去除一些非整数解来进一步化简约束条件,启发式则是在搜索树的某些节点上做一些额外的工作以找到更好的当前最优解,并行计算则是针对不同子树相互独立的特性来实现并行加速。因而可以说分支界定法是整数规划最为核心的方法,以下将详细介绍这一基础方法。

四、分支定界法介绍

  分支定界法是一种利用搜索不断迭代的方法,每次选择不同的分支变量和子问题进行分支。所谓分支,是将全部可行空间分割成若干个子集;定界则是利用松弛化方法,将整形松弛化成连续变量,求得目标下界(对于最小问题而言)。对于界限超过可行解集目标值的分支则可以提前砍掉,以达到优化的效果。以下将结合一个示例来讲解一下具体的执行流程,目标函数及约束如下:

m a x i m i z e x + y + 2 z s . t . 7 x + 2 y + 3 z < = 36 5 x + 4 y + 7 z < = 42 2 x + 3 y + 5 z < = 28 x , y , z ∈ N maximize \quad x+y+2z \\s.t. \quad 7x+2y+3z<=36 \\5x+4y+7z<=42 \\2x+3y+5z<=28 \\x,y,z \in N maximizex+y+2zs.t.7x+2y+3z<=365x+4y+7z<=422x+3y+5z<=28x,y,zN
非线性规划
  由于优化目标为 m a x ( x + y + 2 z ) max(x+y+2z) max(x+y+2z),且 x , y , z ∈ N x,y,z \in N x,y,zN,所以最终值 v ≥ 0 v \ge 0 v0,现取 v = 0 v = 0 v=0。首先对求解目标进行松弛化,即,让原式中3个变量取值范围都松弛化为连续,求得目标值 11.4545 > v 11.4545>v 11.4545>v,此时obj为目标上界,而x和z都非整数,显然不符合x、y、z都为整数的要求,需要进一步分支。
  以考虑x值范围为例(也可以先考虑z的范围,这回导致生成的树形状不同,求取最优解速度也不一样),由于松弛条件下x=1.273,以此为分界线找到最近的2个整数,即考虑 x ≤ 1 x \le 1 x1 x ≥ 2 x \ge 2 x2两种情况。在Node1条件下分别加入这两个新的约束条件,解得结果分别为Node2和Node3,二者 o b j > v obj>v obj>v,说明可能存在可行的整数解,需要继续分支。
  以Node2和Node3继续下去,得到Node4~7,由于Node5和Node7无解,可以砍掉这俩分支。而Node6的解恰好都为整数,可以更新 v = 11 v=11 v=11。然而,此时Node4的解仍存在非整数,需要继续分支下去,最终得到的结果是 m a x ( x + y + 2 z ) = 11 max(x+y+2z)=11 max(x+y+2z)=11
  一些总结经验:
  1)松弛化后没有可行解,则原问题也无可行解
  2)松弛化后解恰好符合整数约束条件,则该解为子问题最优解
  3)如果子问题X松弛化后解恰好符合整数约束条件,而另一个子问题Y松弛化后解得的目标值 < X松弛化后解得的目标值 + 1,则可以直接将X剪枝掉。

参考链接

整数规划经典方法漫谈
Beyond_Linear_Programming
Branch-and-Cut 解混合整数规划(MIP)
branch and bound(分支定界)算法文章来源地址https://www.toymoban.com/news/detail-402584.html

到了这里,关于非线性规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模——非线性规划

    目录 基本概念 凸规划 判别定理 二次规划模型 非线性规划的求解 无约束极值问题 有约束极值问题 基于求解器的解法 基于问题的求解 其他 非线性规划:描述目标函数或约束条件条件的数学表达式中,至少有一个是非线性函数。 记是n维欧式空间中的一个点(n维向量),,

    2024年02月06日
    浏览(43)
  • 数学建模【非线性规划】

    一、非线性规划简介 通过分析问题判断是用线性规划还是非线性规划 线性规划:模型中所有的变量都是一次方 非线性规划:模型中至少一个变量是非线性 非线性规划在形式上与线性规划非常类似,但在数学上求解却困难很多 线性规划有通用的求解准确解的方法(单纯形法

    2024年02月19日
    浏览(48)
  • 数学建模(五)非线性规划

     课程推荐: 13 非线性规划算法在数学建模中的应用与编程实现_哔哩哔哩_bilibili 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题 。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不像线性规划有单纯形法这一通用方法,

    2024年02月11日
    浏览(48)
  • 数学建模学习---非线性规划

    目录 前言 一、非线性规划问题是什么? 二、非线性规划的数学模型 1.一般形式 三、线性规划的 Matlab 解法 Matlab 中非线性规划的数学模型: 2.Matlab 中的命令: 本篇讲述非线性规划问题极其matlab解法 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规

    2024年02月06日
    浏览(57)
  • 优化模型:MATLAB非线性规划

    1.1 非线性规划的定义 非线性规划(Nonlinear Programming,NLP) 是一种数学规划方法,用于解决含有非线性目标函数和/或非线性约束条件的优化问题。它是线性规划的一种扩展形式,更加广泛适用于复杂实际问题。 非线性规划的目标是最小化(或最大化)一个非线性目标函数,

    2024年02月04日
    浏览(45)
  • 数学建模| 非线性规划(Matlab)

    非线性规划:约束条件和目标函数存在非线性函数。简单点说,约束条件和目标函数中至少一个决策变量不是一次方,例如三角函数、对数、多次方等。 线性规划和非线性在解决上的不同:线性规划可以有通用方法,但是非线性规划的求解是没有特定算的,只能用近似的算法

    2024年02月07日
    浏览(49)
  • 数学模型:Python实现非线性规划

    上篇文章:整数规划 文章摘要:非线性规划的Python实现。 参考书籍:数学建模算法与应用(第3版)司守奎 孙玺菁。 PS:只涉及了具体实现并不涉及底层理论。学习底层理论以及底层理论实现:可以参考1.最优化模型与算法——基于Python实现 渐令 粱锡军2.算法导论(原书第3版)

    2024年02月08日
    浏览(55)
  • 三、数学建模之非线性规划

    1、定义 2、例题matlan代码求解 1.非线性规划 (Nonlinear Programming,简称NLP)是一种数学优化问题的方法,它处理的目标函数或约束条件包含非线性项。与线性规划不同,非线性规划涉及到在非线性约束下寻找最优解。在许多领域都有广泛的 应用,包括工程、经济学、物流、金

    2024年01月16日
    浏览(52)
  • 数学建模__非线性规划Python实现

    线性规划指的是目标模型均为线性,除此以外的都是非线性规划,使用scipy提供的方法对该类问题进行求解。

    2024年02月07日
    浏览(51)
  • 二次规划(QP)求解与序列二次规划(SQP)求解非线性规划问题

    二次规划(QP)是求解一种特殊的数学优化问题的过程——具体地说,是一个(线性约束)二次优化问题,即优化(最小化或最大化)多个变量的二次函数,并服从于这些变量的线性约束。二次规划是一种特殊的非线性规划。        序列二次规划(SQP,Sequental Quadratic Programming)算法是

    2024年02月02日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包