求解器的可行解存在一个允许的误差范围

在模型计算中,由于浮点计算的存在,包括数学建模当中常用的大M法等,都可能会使得结果存在轻微偏离预期的情况。然而,对于一些一定范围内的轻微偏移,我们常常是能够接受的,因为这些轻微的偏移能通过简单的调整变成合理的结果,且这些允许的轻微偏移,往往能够使得求解器的效率更高。

在求解器中,对可行解最优解等,都会有一个容忍误差,这个误差使得结果的轻微偏移并不改变相应的性质,这种对精度的放松也是求解器提高效率的一个技巧,以下对求解器的几种容忍误差进行解释:

  1. 整数值的容忍误差:倘若一个变量 x x x 被要求是整数类型,则容忍该变量值在取整数值的一定小的范围内视为是整数。公式为满足:
    a b s ( x − f l o o r ( x + 0.5 ) ) ≤ I n t e a s T o l abs(x-floor(x+0.5))\leq InteasTol abs(xfloor(x+0.5))InteasTol 时,视变量为整数值;
  2. 可行解的容忍误差:满足所有约束的解为可行解,但仅轻微地违背部分约束的解有时也可以被视为可行解,这取决于对约束违背量的容忍度,例如对于约束 a x ≤ b ax\leq b axb,则只要 a x − b ≤ F e a s i b i l i t y T o l ax-b\leq FeasibilityTol axbFeasibilityTol,则视为约束是成立的,在这个范围内的解也被视为是可行的,如下例子所示,用Gurobi求解一个明显无可行解的问题,但求解器最终还是给出了一个“可行解”:

min ⁡ 0 s . t . x ≤ 0 x ≥ 1 0 − 10 \begin{aligned} \min&0\\ s.t.& x\leq 0\\ & x\geq 10^{-10} \end{aligned} mins.t.0x0x1010

import gurobipy as grbmodel = grb.Model()
x = model.addVar(vtype=grb.GRB.INTEGER, name='x')
model.addConstr(x <= 0)
model.addConstr(x >= 10e-10)
model.setObjective(0, sense=grb.GRB.MINIMIZE)
model.optimize()
Solution count 1: 0Optimal solution found (tolerance 1.00e-04)
Best objective 0.000000000000e+00, best bound 0.000000000000e+00, gap 0.0000%
目标函数值: 0.0
参数 x = -0.0
  1. 最优值的容忍误差:根据强对偶定理,线性问题取到最优解时原问题的最优值 c c c 和对偶问题的最优值 a y ay ay 是重合的,对于最小化的优化问题, a y ≤ c ay\leq c ayc,当两个值的差距达到容忍误差范围内时,认为达到了最优,即 a y − c ≤ O p t i m a l i t y T o l ay-c\leq OptimalityTol aycOptimalityTol

这些容忍误差使得在搜索空间中,存在一个模糊的区域,这些区域的值基于一定的误差被我们接受,甚至于稍微不可行的解也可以被视为是可行的,因此对于不同的求解器而言,可能存在不同的容忍水平,使得问题的求解结果出现一定的差异。

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

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

相关文章

听力句子100

[ 30 ] Now, you are going to be working on / writing a series of music lessons / for very young children. 现在&#xff0c;你将为年幼的孩子们编写一系列音乐课程 As before, youll be basing / the degin of your lessons / on the existing research / into how c…

苏州和数荣获苏州市软件行业协会“杰出贡献理事单位”

2023年12月14日&#xff0c;苏州市软件行业协会第五届第五次理事会议在金螳螂大厦顺利召开。 苏州市工信局副局长万资平&#xff0c;苏州市工信局大数据处处长卢剑荣&#xff0c;苏州市工信局大数据处丁天龙&#xff0c;江苏省软件行业协会副秘书长夏冰莹&#xff0c;苏州市软…

【SpringBoot快速入门】(2)SpringBoot的配置文件与配置方式详细讲解

之前我们已经学习的Spring、SpringMVC、Mabatis、Maven&#xff0c;详细讲解了Spring、SpringMVC、Mabatis整合SSM的方案和案例&#xff0c;上一节我们学习了SpringBoot的开发步骤、工程构建方法以及工程的快速启动&#xff0c;从这一节开始&#xff0c;我们开始学习SpringBoot…

SpringSecurity深度解析与实践(1)

目录 引言1. SpringSecurity1.1 SpringSecurity简介1.2 SpringSecurity工作原理1.3.特点 2. SpringSecurity的快速使用总结 引言 SpringSecurity作为Spring框架中的一个重要组成部分&#xff0c;扮演着保护应用程序安全的重要角色。本文将深入探讨SpringSecurity的原理、使用方…

logging模块

【 一 】前言 logging 模块是 Python 中用于记录日志信息的标准库模块。通过使用 logging 模块&#xff0c;你可以在应用程序中设置日志记录以追踪代码执行、错误报告等信息。 debug : 打印全部的日志( notset 等同于 debug )info : 打印 info, warning, error, critical 级别的…

Playground AI刚刚推出了它的新宠儿——Playground V2,去试试?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Vue 异步组件:提升应用性能与加载速度

Vue.js 是一款流行的 JavaScript 框架&#xff0c;其中异步组件是优化大型应用性能的重要工具之一。通过异步组件&#xff0c;我们可以按需加载和渲染组件&#xff0c;提高应用的加载速度和用户体验。本文将深入探讨 Vue 异步组件的概念、使用方法以及如何在实际项目中有效地应…

react useState异步问题

1. useState执行后 不能立马拿到新的数据&#xff0c;下次更新绘图就可以拿到了 然后当执行完第一次render时候&#xff0c;比如去点击按钮啥的执行某个方法这个时候就可以拿到数据了 例子&#xff1a; const UseState () > { // 函数组件中没有this const [count, setCou…

vlan的通信(hcia)

有两种情况 第一种 vlanif的接口 VLANIF接口&#xff1a;VLANIF接口是一种三层的逻辑接口。在VLANIF接口上配置P地址 后&#xff0c;没备会在MAC地址表中添加VLANIF接口的MAC地址VD表项&#xff0c;并且为表项的 三层转发标志位置位。当报文的目的MAC地址匹配该表项后&a…

Linux-----17、软件包管理

# 软件包管理 # 1、软件包分类 # ㈠ 软件包类型 二进制包源码包 # ① 二进制包 什么是二进制包&#xff1f;有什么特点&#xff1f; 二进制包&#xff0c;指的是已经 1 好了的软件包&#xff0c;只需要直接安装就可以使用。二进制包&#xff0c;不需要编译&#xff0c;直接…

1280:【例9.24】滑雪

【解题思路】 1. 状态定义 状态定义&#xff1a;dp[i][j]&#xff1a;从(i,j)出发的所有路线中&#xff0c;长度最长的路线的长度。 2. 状态转移方程 记第(i,j)位置的高度为a[i][j]。 集合&#xff1a;从(i,j)出发的所有路线 分割集合&#xff1a;根据下一步可以到达的位置分割…

.locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

尊敬的读者&#xff1a; .locked1、locked勒索病毒&#xff0c;一股数字时代的黑暗势力&#xff0c;以其狡猾手法而令人闻风丧胆。这种勒索软件通过各种途径悄悄渗透用户计算机&#xff0c;随后迅速将重要的数据文件加密&#xff0c;使其变成数字迷宫的密码锁。随后&#xff0…

计算机msvcr120.dll文件丢失怎样修复,只需简单3步即可

在使用电脑过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中最常见的就是“缺少某个.dll文件”&#xff0c;“找不到msvcr120.dll文件”。那么&#xff0c;msvcr120.dll文件到底是什么呢&#xff1f;当我们遇到这个问题时应该如何解决呢&#xff1f;本文将详细介…

VTK显示六棱柱

这个就是稍微复杂一点的程序&#xff0c;但是vtk的和qt的图形视图框架十分类似&#xff0c;qt里有视图、图元、场景&#xff0c;而vtk里恰好也有这些 #include "vtkSmartPointer.h" #include "vtkRenderWindow.h" #include "vtkRenderer.h" #in…

力扣题目学习笔记(OC + Swift) 13. 罗马数字转整数

罗马数字转整数 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两个并列的 1 。12 写做 XII &#xff0c;…

5252D 5G基站测试仪

01 5252D 5G基站测试仪 产品综述&#xff1a; 5252D多通道综测仪打破了信号发生器进行信号发射、频谱分析仪进行观看频域波形的测试方案&#xff0c;将信号收发融为一体&#xff0c;推动无线通信测试进入全新时代。其独具的多通道收发一体、高性能、全方位测试能力及直观操作…

凯斯西储大学轴承数据解读

文章目录 一、凯斯西储大学轴承数据基础知识&#xff1f;1.1 故障种类1.2 故障点尺寸&#xff08;单点故障&#xff09;1.3 载荷和转速 二、数据解读2.1 文件2.2 以12k Drive End Bearing Fault Data为例2.3 以&#xff08;0.007&#xff0c;inner race)为例。 3 Normal Baseli…

爬虫scrapy管道的使用

爬虫scrapy管道的使用 学习目标&#xff1a; 掌握 scrapy管道(pipelines.py)的使用 之前我们在scrapy入门使用一节中学习了管道的基本使用&#xff0c;接下来我们深入的学习scrapy管道的使用 1. pipeline中常用的方法&#xff1a; process_item(self,item,spider): 管道类中…

计算机组件操作系统BIOS的相关知识思维导图

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、运维实施工程师需要具备的知识 1、运维工程师、实施工程师是啥&#xff1f; 2、运维工程师、实施工…

whisper深入-语者分离

文章目录 学习目标&#xff1a;如何使用whisper学习内容一&#xff1a;whisper 转文字1.1 使用whisper.load_model()方法下载&#xff0c;加载1.2 使用实例对文件进行转录1.3 实战 学习内容二&#xff1a;语者分离&#xff08;pyannote.audio&#xff09;pyannote.audio是huggi…