优化|一类二元二次规划的凸重构和外近似

news2024/11/18 8:36:20

在这里插入图片描述

论文解读者:范若岭

1. 文章优化问题:

对于下列问题,$ \mathbb{B} = {0, 1}, \mathbb{R} 是实数集合。 是实数集合。 是实数集合。Q 是由实数组成的 是由实数组成的 是由实数组成的n \times n 对称矩阵。 对称矩阵。 对称矩阵。A 是由实数组成的 是由实数组成的 是由实数组成的m \times n 对称矩阵。 对称矩阵。 对称矩阵。c 和 和 b 分别是长度为 分别是长度为 分别是长度为n 和 和 m 的实数列向量。其中 的实数列向量。其中 的实数列向量。其中\mathbb{N}= {1, 2, …, n}, I_1, I_2, …, I_k$ 定义了 N \mathbb{N} N的分区,其中索引集合 K = 1 , 2 , . . . , k \mathbb{K} ={1, 2, ..., k} K=1,2,...,k。对于每一个 k ∈ K , I k ⊂ N k \in \mathbb{K}, I_k \subset \mathbb{N} kK,IkN,对于每一对 k , l ∈ K , I k ∩ I l = ∅ k, l\in \mathbb{K}, I_k \cap I_l = \emptyset k,lK,IkIl=.

1.1 二元二次规划重构为混合整数非线性规划

对于问题 B Q P P BQP_P BQPP中的损失函数,可以将其改写成下列形式:

对于任意 i , j ∈ I ( k ) , x ( i ) x ( j ) = 0 i, j \in I(k),x(i)x(j) = 0 i,jI(k)x(i)x(j)=0, 因此目标函数的二次部分可以用区分交互成本而不是单个变量的二次成本表示。所以文章引入一个新的连续变量 y i k l y_{ikl} yikl,其中 k , ℓ ∈ K , k ≠ l , i ∈ I ( k ) k, ℓ \in \mathbb{K}, k \ne l, i \in I(k) k,K,k=l,iI(k)来表示 i i i之间的交互成本和 I l I_l Il的分区。
两个分区之间的二次成本可以通过以下公式进行计算。

所以,对于二元二次规划的混合整数非线性方程, 其重构形式如下:

其中,

针对该模型,文章证明了两个理论:

定理一:MINLP1 是 二元二次规划 B Q P P BQP_P BQPP的重新表述.

本文展示如何将 MINLP1转换为凸 MINLP,其中在凸区域和完整性要求的交集上最小化凸目标。为此,我们在连续变量 x ∈ X ∩ P x \in X \cap P xXP中定义一个新的凸函数 ψ : X ∩ P → R + \psi: X \cap P \to \mathbb{R}^+ ψ:XPR+,描述如下:

定理二:对于任意一个整数解 x ^ ∈ X ∩ P ∩ B n \hat{x} \in X \cap P \cap \mathbb{B}^n x^XPBn,都满足 ψ ( x ^ ) = ϕ ( x ^ ) \psi(\hat{x}) = \phi(\hat{x}) ψ(x^)=ϕ(x^)

根据定理 2,我们可以用 ψ ( x ) , x ∈ X ∩ P ∩ B n \psi(x), x \in X \cap P \cap \mathbb{B}^n ψ(x),xXPBn代替 MINLP1 中的 ϕ ( x ) \phi(x) ϕ(x),得到如下凸 MINLP:

1.2 二元二次规划重构为混合整数线性规划

对于二元二次规划重构为整数混合线性规划问题,文章主要集中在 RLT (reformulation–linearization technique)的特殊应用方面。RLT全称为重构线性化技术切割,利用切割平面来求解某些二次规划问题以获得最优解。这其中包含两个步骤:1)重构表达式步骤:通过组合原始问题的约束条件从而生成非线性有效不等式,2)线性化步骤:将问题中的每个乘积变成单个的连续变量。因此方程 ( 2 ) (2) (2)将变成一下形式:

上述规划问题将改写成:

可以证明,
定理三: R L T P RLT_P RLTP是二元二次规划 B Q P P BQP_P BQPP的重新表述.

1.3 MINLP2与 RLT P \text{RLT}_P RLTP比较

对于提出的两种等价混合整数模型 MINLP2 \text{MINLP2} MINLP2 RLT P \text{RLT}_P RLTP,文章证明了

定理四:假设 C R L T P CRLT_P CRLTP C M I N L P 2 CMINLP_2 CMINLP2 分别代表 R L T P RLT_P RLTP M I N L P 2 MINLP_2 MINLP2的连续松弛问题.那么 C R L T P CRLT_P CRLTP C M I N L P 2 CMINLP_2 CMINLP2是等价的.

2. 算法设计

在介绍了两种混合整数模型之后,文章着重探讨求解混合整数非线性规划MINLP2。

2.1 求解MINLP2: 外近似切平面法

请注意,定义 x 约束足以确保方程可行性; ψ ( x ) \psi(x) ψ(x)是有界的。此外,如果 ( x , η ) (x, \eta) (x,η) 是 MINLP3 的最优解,则 x x x对于 B Q P P BQP_P BQPP 来说是最优的。同时,由于函数 ψ ( x ) \psi(x) ψ(x)是凸函数,并且 MINLP3 的目标函数是线性的,因此问题的最优解始终位于可行集凸包的边界上。这使我们能够使用剖切面技术来解决问题。更准确地说,对于任何给定的(可能是非整数) x ˉ ∈ X ∩ P ⊂ [ 0 , 1 ] n \bar{x} \in X \cap P \subset [0,1]^n xˉXP[0,1]n,由于 ψ ( x ) \psi(x) ψ(x)是凸函数,因此可以通过 x ˉ \bar{x} xˉ中的支撑超平面来寻找最优解。令 s ˉ ∈ ∂ ψ ( x ) \bar{s} \in \partial \psi(x) sˉψ(x) ψ ( x ) \psi(x) ψ(x) x ˉ \bar{x} xˉ处的梯度。然后,根据广义 Benders 分解和外近似,我们可以在一组点 P = { x ˉ 1 , x ˉ 2 , … , x ˉ M } \mathcal{P} = \{\bar{x}_1, \bar{x}_2, \dots, \bar{x}_M \} P={xˉ1,xˉ2,,xˉM}中对 x ˉ \bar{x} xˉ周围的凸函数 ψ ( x ) \psi(x) ψ(x)进行线性化从而产生以下问题:

如果 M P ( P ) MP(\mathcal{P}) MP(P)包含一组合适的点,则它具有与MINLP2 相同的最优解。因此,外近似算法的主要目标是构建这个等效的MILP。然而,求解 M P ( P ) MP(\mathcal{P}) MP(P)是不切实际的,原因在于必须首先枚举所有可行解 x ˉ ∈ X ∩ P ∩ B n \bar{x} \in X \cap P \cap \mathbb{B}^n xˉXPBn。所以,我们通过分支切割算法将求解 M P ( P ) MP(\mathcal{P}) MP(P)转为求解为MILP,其中 (25) 是通过下列过程动态生成的。每一项 ψ ( x ) \psi(x) ψ(x)都是通过求解子问题来计算的。更准确地说,对于 M P ( P ) MP(\mathcal{P}) MP(P)的给定解 x ˉ \bar{x} xˉ,我们用 x = x ˉ x= \bar{x} x=xˉ求解子问题 ψ ( x ) \psi(x) ψ(x),以获得最优解 y y y。因为约束 (14) 与 x ˉ \bar{x} xˉ无关,所以每个 i ∈ N i \in N iN 的梯度由下式给出

那么函数的梯度割可以写成,

梯度切割 (26) 是沿着分支切割树识别的。从根节点处的一组梯度割开始,在搜索树的每个节点处求解 M P ( P ) MP(\mathcal{P}) MP(P)的线性规划松弛,如果违反则添加梯度切割不等式 (26)。否则,算法将通过对具有非二进制值的二进制变量进行分支来继续进行。

2.2 修正的多切割重构和次梯度计算

鉴于(13)和(14)中定义的函数 ψ ( x ) \psi(x) ψ(x)是可分离的凸函数,我们可以将其重写为每个 k k k的凸函数 ψ k l ( x ) \psi_{kl}(x) ψkl(x)的组合之和 k , l ∈ K , k ≠ l k,l \in \mathcal{K}, k \ne l k,lK,k=l

y ˉ \bar{y} yˉ为该问题的最优解,并且$\bar{s}{kl} = \sum{i \in I_k}\bar{s}i 是 是 \psi{kl}(x) 对于每个 对于每个 对于每个k,l \in \mathcal{K}, k \ne l$的梯度。

然后,对于每个 x ˉ ∈ X ∩ P ∩ B n \bar{x} \in X \cap P \cap \mathbb{B}^n xˉXPBn,梯度切割 (25) 被替换为

尽管新的梯度割的数量远大于 M P ( P ) MP(\mathcal{P}) MP(P)中的数量,但文中的计算实验表明,分支割算法解决问题实例所需的总体计算时间明显更短。对于每个 k , l ∈ K , k ≠ l k,l \in \mathcal{K}, k \ne l k,lK,k=l以及对于任何 x ∈ X ∩ P x \in X \cap P xXP,子问题 (27)是一个线性程序,可以通过最先进的求解器有效求解。然而,我们可以利用子问题(27)的结构比使用 LP 求解器更有效地获得次梯度割(28):

定理5
对于 x ˉ ∈ X ∩ P ⊂ [ 0 , 1 ] n \bar{x} \in X \cap P \subset [0,1]^n xˉXP[0,1]n,对于每个 k , l ∈ K , k ≠ l k,l \in \mathcal{K}, k \ne l k,lK,k=l,(27)的可行解可以通过下列计算得到

此外,如果 x ˉ \bar{x} xˉ是一个整数,那么(29)和(30)可以计算出(27)的最优解。

3. 数值结果

3.1 单一分配 p-Hub 问题

单一分配p_Hub问题可以描述为下列形式:

其中目标函数衡量总运输成本,包括非枢纽-枢纽和枢纽-非枢纽的收集和配送成本以及枢纽到枢纽的传输成本。约束 (32) 强制将每个节点精确地分配给一个中心节点。约束 (33) 规定,如果选择节点 i i i作为集线器,则 k k k只能分配给节点 i i i。约束 (34) 强制开放的枢纽数量为 p p p。为了使用外近似方法,需要定义

从表1和表2可以看出,文中OABC (outer approxi-mation–based branch-and-cut algorithm)算法在中型到大型实例上的性能非常有前景。当基于主流算法和OABC算法都可以在时限内解决实例的最优问题时,OABC算法大约比主流算法快九倍。此外,OABC算法可以解决所有实例的最优问题,而基于主流算法的 Gurobi 仅解决了 16 个实例中的 8 个。请注意,对于最大的实例,主流算法模型的 LP 松弛问题无法在规定时间内得到可行的解。

表1: SApHMP 的 AP 数据集的中小型实例上,将基于 RLT 和流的模型与OABC 算法进行比较

表2: SApHMP 的 AP 数据集的中大型实例上,将基于流的模型与OABC 算法进行比较

3.2 二次半赋值问题(QSAP问题)

有两个集合 V = { 1 , 2 , . . . , p } V=\{1,2,...,p \} V={1,2,...,p} M   =   { 1 , 2 ,   . . . ,   m } M = \{1,2, ..., m\} M = {1,2, ..., m},分别由 p p p个对象和 m m m个位置组成。令 c i k c_{ik} cik表示将对象 k ∈ V k \in V kV分配给位置 i ∈ M i \in M iM的成本, q i j k l q_{ijkl} qijkl表示同时将对象 k k k分配给位置 i i i和对象 l l l分配给位置 j j j的成本。二次半分配问题寻求以最小的总成本将每个对象精确地分配到一个位置。在这里,如果对象 k ∈ V k \in V kV被分配到位置 i ∈ M i \in M iM,我们定义二元变量 x i k x_{ik} xik等于1,否则定义为零,以获得以下二元二次公式:

为了使用外近似方法,定义

从表4和表5中我们可以看出,本文中的OABC算法在整体计算时间方面有明显优势;当两种方法都可以在规定时间内解决实例的最优问题时,OABC算法的速度大约是原来的六倍。此外,OABC算法可以解决所有实例的最优性,而对于C01类的最大实例,Gurobi 达到了两个小时的时间限制,最优性差距为 2.9   % 2.9 \% 2.9 %


表4: 在一组随机生成的 QSAP 实例上基于 RLT 的模型与本文OABC算法进行比较的结果


表5: 真实 TAP 实例上基于 RLT的模型与本文算法比较

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

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

相关文章

NSIDC定义的海冰相关概念

文章目录 相关概念Matlab绘图结果展示 相关概念 NSIDC 表示 “National Snow and Ice Data Center”,即美国国家雪和冰数据中心。NSIDC 是一个位于美国科罗拉多大学波尔得分校的研究中心,致力于收集、管理和分发全球雪和冰的科学数据。 Matlab绘图 cl…

智能井盖传感器:破解井盖安全隐患

万宾科技:智能井盖传感器 随着城市的不断发展,井盖成为城市道路的一部分,但也伴随着一些安全隐患。近年来,由于井盖倾斜或翻转导致的意外事件频发,引起了广泛关注。为了解决这一问题,万宾科技推出了智能井…

3、TCP状态

TCP状态 1、TCP通信时序 三次握手成功后,服务器和客户端进入了状态ESTABLISHED 当处于Time_WAIT状态后,不会马上变成CLOSE状态,会经历2MSL(约40秒),之后才会进入CLOSE状态。 总结: 主动发起…

主动配电网故障恢复的重构与孤岛划分matlab程序

微❤关注“电气仔推送”获得资料(专享优惠) 参考文档: A New Model for Resilient Distribution Systems by Microgrids Formation; 主动配电网故障恢复的重构与孤岛划分统一模型; 同时考虑孤岛与重构的配电网故障…

java 电动车销售管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 电动车销售管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql…

深度学习_2_数据处理

import os是一个Python的内置模块,用于与操作系统进行交互。通过导入os模块,你可以使用其中提供的函数和方法来执行各种与操作系统相关的任务。 import osos.makedirs(os.path.join(.., date), exist_okTrue)##将创建一个名为date的文件夹,位…

基于全景运动感知的飞行视觉脑关节神经网络全方位碰撞检测

https:/doi.org/10.1155/2023/5784720 摘要: 生物系统有大量的视觉运动检测神经元,其中一些神经元可以优先对特定的视觉区域做出反应。然而,关于如何使用它们来开发用于全向碰撞检测的神经网络模型,很少有人做过工作。为此&#…

相同的 key, Nacos 配置一定会覆盖 application.yaml 吗?

一,背景: 之前在使用 Nacos 的时候有个疑问,同样的 key,在 Nacos 配置了,在 application 也配置了,到底会有哪个呢?一直没空查,后来在网上看到过文章,说 Nacos 是在 app…

【Redis】Hash 哈希相关的命令

命令 HSET 设置hash中指定的字段(field)的值(value)。 HSET key field value [field value ...]HGET 获取hash中指定字段的值。 HGET key fieldHEXISTS 判断hash中是否有指定的字段。 HEXISTS key fieldHDEL 删除hash中指定…

第十一章-用户进程

Ⅰ.为什么需要任务状态段TSS 1.LDT简介 已经不使用LDT加载任务了。因为当前运行的任务,其 LDT 位于 LDTR 指向的地址,这样 CPU 才能从中拿到任务运行所需要的资源(指令和数据)。因此,每切换一个任务时,需…

Android Jetpack Compose之生命周期与副作用

文章目录 1.概述2.Composeable生命周期3.Compose副作用及API3.1.Compose副作用API3.1.1 DisposableEffect3.1.2 SideEffect 3.2 Compose异步处理副作用API3.2.1 LaunchedEffect3.2.2 rememberCoroutineScope3.2.3 rememberUpdateState3.2.4 snapshotFlow 3.3 状态创建副作用API…

什么是C++?

1.什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机 界提出了OOP(object o…

一种管理KEIL工程输出文件的方法

开发语言:python; 针对工程:适配ARM公司的KEIL-V5软件的工程 管理的输出文件类型:BIN文件、HEX文件 脚本使用方法:直接放置到keil的设置项下; 脚本执行位置:程序编译之后 脚本功能&#xff1a…

C++智能指针(一)——shared_ptr初探

文章目录 1. 普通指针存在的问题2. Class shared_ptr2.1 使用 shared_ptr2.1.1 初始化 shared_ptr2.1.2 reset2.1.3 访问数据2.1.4 use_count() 3. Deleter3.1 定义一个 Deleter3.2 处理数组 1. 普通指针存在的问题 智能指针的引入,是为了解决普通指针在使用过程中…

Android 13.0 SystemUI修改状态栏电池图标样式为横屏显示

1.概述 在13.0的产品定制化开发中,对于原生系统中SystemUId 状态栏的电池图标是竖着显示的,一般手机的电池图标都是横屏显示的 可以觉得样式挺不错的,所以由于产品开发要求电池图标横着显示和手机的样式一样,所以就得重新更换SystemUI状态栏的电池样式了 如图: 2.SystemUI…

区块链金融的开发流程

区块链金融应用的开发流程与一般的软件开发流程有许多相似之处,但它还涉及到智能合约的编写、区块链网络集成和加密货币处理等特定方面的工作。以下是一般区块链金融应用的开发流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件…

如何查自己名下有多少个微信号?

99%的人都不知道微信有这个功能通过微信可以查自己名下绑定了多少个微信账号再也不担心身份证被别人用来绑定微信了姐妹们快去查一下吧! ①打开微信,点击【我】→点击【设置】 ②点击【通用】→ 点击【辅助功能】→ 点击【微信支付】 ③点击【帮助中心】…

MDK自动生成带校验带SVN版本号的升级文件

MDK自动生成带校验带SVN版本号的升级文件 获取SVN版本信息 确保SVN安装了命令行工具,默认安装时不会安装命令行工具 编写一个模板头文件 svn_version.temp.h, 版本号格式为 1_0_0_SVN版本号 #ifndef __SVN_VERSION_H #define __SVN_VERSION_H#define SVN_REVISIO…

性能分析工具的使用(超详细)

数据库服务器的优化步骤 整个流程划分成了观察(Show status)和行动(Action)两个部分。字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行…

Linux下设备树、pinctrl和gpio子系统、LED灯驱动实验

文章目录 设备树常用的of函数pinctrl子系统gpio子系统LED灯驱动实验修改设备树文件编写驱动代码执行结果在LED驱动代码中加入内核定时器 设备树 描述设备树的文件叫做DTS(Device Tree Source),这个DTS文件采用树形结构描述板级设备,也就是开发板上的设备…