在线性规划中将条件约束转换为线性约束

2023-12-19

我有两个变量:x>= 0 和 y 二进制(0 或 1),并且我有一个常数 z >= 0。如何使用线性约束来描述以下条件:

If x = z then y = 1 else y = 0.

我试图通过定义另一个二元变量 i 和一个足够大的正常数 U 并添加约束来解决这个问题

y - U * i = 0;
x - U * (1 - i) = z;

它是否正确?


实际上,您要询问两类约束:

  1. If y=1, then x=z。对于一些大常数M,您可以添加以下两个约束来实现此目的:
x-z <= M*(1-y)
z-x <= M*(1-y)

If y=1那么这些约束等价于x-z <= 0 and z-x <= 0, 意义x=z, 而如果y=0,那么这些约束是x-z <= M and z-x <= M,如果我们选择足够大的值,则不应具有约束力M value.

  1. If y=0 then x != z。从技术上讲,您可以通过添加另一个二进制变量来强制执行此约束q控制是否x > z (q=1) or x < z (q=0)。然后您可以添加以下约束,其中m是一些小的正值并且M是一些大的正值:
x-z >= mq - M(1-q)
x-z <= Mq - m(1-q)

If q=1那么这些约束约束x-z到范围[m, M], 而如果q=0那么这些约束约束x-z到范围[-M, -m].

在实践中,当使用求解器时,这通常不能真正确保x != z,因为通常允许小的边界违规。因此,我建议不要向模型添加任何约束来强制执行此规则,而不是使用这些约束。然后,如果你得到最终的解决方案y=0 and x=z,你可以调整x获取价值x+epsilon or x-epsilon对于某个无穷小的值epsilon.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在线性规划中将条件约束转换为线性约束 的相关文章

  • 一点到这条曲线的最短距离

    我需要找到多个点到以下形式的曲线的距离 f x a k bx 我的第一个选择是使用它的导数 使用导数的倒数形式的线 给出它的坐标Point并将其与原始曲线相交 最后 我们用简单的几何计算点之间的距离 这就是我通常遵循的数学过程 我需要节省时
  • 如何在 Numpy/MatplotLib 中可视化线性规划(具有任意不等式)的可行区域?

    我需要实现线性规划问题的求解器 所有限制都是 5x 10y 这些限制可以是任意数量的 另外 x gt 0 y gt 0 隐式 我需要找到最佳解决方案 最大值 并在 matplotlib 中显示可行区域 我通过实施单纯形法找到了最佳解决方案
  • Pyomo 无法找到 GLPK 解算器

    我正在尝试将 GLPK 解算器与 Pyomo 一起使用 我有一个已经过测试的工作模型 但不断收到错误消息 提示无法找到 GLPK 警告 无法找到解算器 glpk 所需的 glpsol 可执行文件 我已经成功安装glpk 我还将目录添加到路径
  • 求解大数的模线性同余

    我正在寻找一种比我在 stackoverflow 上找到的算法更好的算法来处理 4096 字节数 我正在达到最大递归深度 来自 stackoverflow 帖子的代码 我复制 粘贴了它 但丢失了原始链接 def linear congrue
  • 整数线性规划 (ILP) 的运行时间复杂度是多少?

    运行时间复杂度是多少整数线性规划 ILP 问题时 有N变量的数量和R约束数量 出于编码目的 我使用 Matlabintlinprog功能 任何参考都会有帮助 整数规划是 NP 完全的 如中所述这个链接 中使用的一些启发式方法intlinpr
  • 如何在 matlab 中以规范表示形式求解线性规划? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 是否可以在matlab中输入这样的字符串 MAX 140 x1 160 x2 x
  • 在线性规划中将条件约束转换为线性约束

    我有两个变量 x gt 0 和 y 二进制 0 或 1 并且我有一个常数 z gt 0 如何使用线性约束来描述以下条件 If x z then y 1 else y 0 我试图通过定义另一个二元变量 i 和一个足够大的正常数 U 并添加约束
  • 线性规划 - 等于表达式符号的变量

    我正在尝试编写一个线性程序 需要一个等于 x c 符号的变量 z 其中 x 是另一个变量 c 是常数 我考虑过z x c x c 不幸的是 如果 x c 则会除以 0 我不能使用 z x c 因为我不想通过 x 和 c 之间的差异大小来对其
  • 为什么 scipy.optimize.linprog 返回不满足约束的解决方案?

    我做错了什么还是这是一个错误 c np array 1 0 0 0 0 0 0 0 0 A ub np array 1 724 911 551 555 896 478 80 293 1 566 42 937 233 883 392 909
  • Scipy:稀疏矩阵的线性规划

    我想用 python 求解线性规划 变量的数量 从现在起我将其称为 N 非常大 50000 并且为了以这种方式表述问题scipy optimize linprog需要它 我必须构造两个 N x N 矩阵 A and B以下 LP 可以写为
  • 为什么解决背包问题不被视为线性规划?

    为什么背包问题不属于线性规划算法尽管背包问题陈述看起来与中的问题相似线性规划 背包可以写成整数线性规划程序 与普通的线性规划不同 该问题要求解中的变量是整数 已知线性规划可在多项式时间内求解 而整数线性规划是 NP 完全的 读者练习 证明
  • .NET / C# 的线性编程库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要求解欠定线性方程组和约束 然后找到最小化成本函数的特定解决方案 这需要通过在 NET 和 Mon
  • cplex boolVarArray 给出双精度值

    我一直在尝试使用 CPLEX Java 实现 ILP 并且长期以来一直被一个问题困扰 以下是 ILP 的几个变量 IloIntVar above new IloIntVar numRect IloIntVar below new IloIn
  • scipy.optimize.minimize(COBYLA 和 SLSQP)忽略 for 循环内发起的约束

    我正在使用 scipy optimize minimize 来求解复杂的油藏优化模型 SQSLP 和 COBYLA 因为问题受到边界和约束方程的约束 每天有一个决策变量 蓄水量 水库的释放量是根据目标函数内蓄水量变化的函数来计算的 然后应用
  • 熊猫,融化,未融化保存指数

    我有一张客户表 铜 和资产分配表 资产 A 1 2 3 4 5 6 idx coper1 coper2 coper3 cols asset1 asset2 df pd DataFrame A index idx columns cols 所
  • 如何从一组 N 个对象中选择 n 个对象,最大化它们之间的成对距离之和

    您有一组 N 400 个对象 每个对象在 19 维空间中都有自己的坐标 您计算 欧几里德 距离矩阵 所有成对距离 现在您想要选择 n 50 个对象 使得所选对象之间所有成对距离的总和最大 我设计了一种通过线性编程来解决这个问题的方法 下面的
  • 使 K 不同(基数) google OR-TOOLS

    我想知道 google or tools 中是否存在 Solver AllDifferent x 的泛化 允许指定我允许的不同元素的数量 因此 如果 len x 4 则 AllDifferent x 意味着 len set x 4 但是 如
  • 我应该使用哪些库在 python 中进行线性编程? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 快速搜索 python 线性编程 会出现很多搜索结果 例如this one http wiki pyt
  • 在等式约束的情况下求解线性规划

    我问了一个问题 可以在这里找到 计算最优组合 https stackoverflow com questions 17232596 computing the optimal combination 并有人建议线性规划 我查阅了线性规划和单
  • R:单纯形错误:在下标赋值中不允许使用 NA

    对于以下具有目标函数和约束的最小化 boot simplex返回错误 Error in tab pr lt tab pr tab pr pc pv o tab pr NAs are not allowed in subscripted as

随机推荐

  • 如何使用Python将BLOB插入Oracle?

    我正在尝试使用 cx Oracle 6 3 将大量 BLOB 每个 2 到 20 MB 插入到 Oracle 12 中 经过大量的谷歌搜索和实验 我得到了以下代码 我是 Python 新手 想知道 该方法有效吗 有更快的方法吗 usr lo
  • 使用 Get-Help cmdlet 以相同格式显示基于注释的帮助

    我尝试使用 Get Help cmdlet 以与显示从 XML 文件生成的 cmdlet 帮助主题相同的格式显示基于注释的帮助 执行此操作的能力记录在about Comment based Help http technet microso
  • Tridion GUI Extensions CommandSet 如何映射到 js 方法?

    Tridion GUI 扩展配置如何将名称映射到 JS 文件 例如 我正在使用 Jaime 的你好世界帖子 http jaimesantosalcon blogspot com 2011 02 sdl tridion 2011 ga gui
  • 如何在 C#/Win32 api 中找到 Windows 应用程序执行别名的目标?

    Microsoft Windows 终端 通过 Microsoft Store 安装 创建 0 字节wt exe文件是一个Windows 执行别名 https www tiraniddo dev 2019 09 overview of wi
  • 如何计算(数学)字符串表达式,vb.net

    我不确定我使用的术语是否正确 但我有一个字符串表达式 我希望计算它 这是一个例子 Dim S 4 4 dim result evaluate S some sort of treatment that return 8 我不确定这将如何运作
  • 与 MinGW-64 的静态链接

    我正在尝试使用 64 位 MinGWhttp sourceforge net projects mingw w64 files Toolchains 20targetting 20Win64 Automated 20Builds http
  • java.net.SocketException:连接由对等方重置:服务文件时套接字写入错误

    我正在尝试使用套接字实现 HTTP 服务器 如果客户端 例如浏览器 请求目录 服务器将显示可用文件的列表 当客户端请求文件时就会出现问题 我收到以下错误 java net SocketException Connection reset b
  • 如何在Angular 2中实现AOP

    我是 Angular 2 的新手 但我在 Angular 1 x 方面有很好的经验 我收到错误 找不到模块 aspect js dist lib aspect 下面是我的代码 日志记录 aspect ts import Injectable
  • Android OpenGL图像处理——不使用SurfaceView

    我想使用 OpenGL ES 2 和着色器进行一些背景图像处理 但不绘制到表面 即仅离屏渲染到帧缓冲区 虽然我已经在 iOS 上做到了这一点 但我在 Android 上却遇到了困难 我想我已经接近创建一个工作 OpenGL 上下文 但还没有
  • C++:生成函数调用树

    我想解析项目中当前的 C 文件并列出其中的所有方法 函数 然后生成函数调用和调用者树 F g 您可以参考 doxygen 如何生成调用树 我已经检查了 gccxml 但它没有列出从另一个函数调用的函数 请建议我一些我可以使用的轻量级工具 开
  • 检查数字的递归函数

    编写一个递归函数来检查数字中有多少位可以除以它们后面的数字 例子 84963应该返回 2 因为 8 可以除以 4 6 可以除以 3 我的函数似乎根本没有输出任何内容 include
  • 如何更改表列数据类型[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有以下专
  • 如何建立/模拟持续的 TCP 连接?

    看起来 WCF TCP 连接不是持久的 第一次 ping 回复需要一段时间 但后续过程花费的时间更少 过了一会儿 又需要很长时间 再次重新连接 服务器 gt 在 net tcp 0 0 0 0 999 上启动 CLIENT gt Conne
  • CSS 只适用于 Safari?

    是否可以添加一个我只想在 Safari 中显示而不是在其他浏览器中显示的 css 块 下面是一个示例 如果您的浏览器是 Safari 或 Chrome 两者共享通用的 Webkit 渲染引擎 则将网站的字体颜色设置为绿色 media scr
  • 自动调整 WebView 大小以适应内容

    我正在开发一个 Xamarin Forms PCL 项目 该项目以 WebView 的形式显示帖子 因此我添加了可点击的内容 例如主题标签 我遇到的问题是 WebView 无法适应其内容的大小 WebView 不加载实际站点我使用以下方法将
  • APC 不记得 CLI 中的缓存

    我正在使用以下命令设置 APC 缓存数组 apc add ips ips 通过命令行 可以通过以下方式检索此缓存数组 apc fetch ips 在同一个脚本中 但是 无法从后续 CLI 脚本或通过 Apache 调用的 PHP 访问它 虽
  • 什么时候 `new Error()` 比 `Error()` 更好?

    ES5 语言规范明确指出 http www ecma international org ecma 262 5 1 sec 15 11 1 that Error foo 做同样的事情new Error foo 但我注意到在野外 时间越长ne
  • 发布一对多关系

    我正在尝试通过 Django REST 框架向我的 Django 模型公开 API 我有一个对象Observation 一个观察可以包含多个已观察到的事物 所以我这样表示 class Observation models Model pho
  • 如何验证 EWS Java API

    我们正在使用 EWS Java API 在 Java 应用程序上使用 Outlook 日历 我在 EWS 上遇到身份验证问题 我在机架空间提供的云 Outlook 帐户上尝试了该应用程序 一切正常 因此我知道凭据是准确的 这是代码 impo
  • 在线性规划中将条件约束转换为线性约束

    我有两个变量 x gt 0 和 y 二进制 0 或 1 并且我有一个常数 z gt 0 如何使用线性约束来描述以下条件 If x z then y 1 else y 0 我试图通过定义另一个二元变量 i 和一个足够大的正常数 U 并添加约束