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

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(使用前将#替换为@)

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

  • Pyomo 无法找到 GLPK 解算器

    我正在尝试将 GLPK 解算器与 Pyomo 一起使用 我有一个已经过测试的工作模型 但不断收到错误消息 提示无法找到 GLPK 警告 无法找到解算器 glpk 所需的 glpsol 可执行文件 我已经成功安装glpk 我还将目录添加到路径
  • 尽管显然存在可行的答案,但 scipy.optimize.linprog 无法找到可行的起点

    向量 k 似乎满足所有约束 我在这里缺少什么吗 谢谢 import numpy as np from scipy optimize import linprog A ub 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  • PyInstaller .exe 文件不执行任何操作

    3天后 我无法将python程序打包成 exe文件 我尝试过 py2exe 它不断错过模块 和 PyInstaller 这是复杂的部分 我的程序使用了很多额外安装的模块 coopr pyomo openpyxl glpk cbc pyuti
  • 如何在 matlab 中以规范表示形式求解线性规划? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 是否可以在matlab中输入这样的字符串 MAX 140 x1 160 x2 x
  • 线性规划 - Google ortool - 错误的决策变量最终值

    我正在尝试解决线性规划问题 以下是问题的具体情况 我有一个网络流问题已转换为线性规划问题 因此 所有流量约束 例如容量 流量守恒等 都必须强制执行 我的目标是最小化成本 决策变量 我通过定义字典并在这 128 个位置中的每个位置添加决策变量
  • 如何在 DOCPLEX (Python) 上使用连续变量进行 IF-THEN 约束?

    我使用 DOCPLEX 构建混合整数线性规划 MILP 问题 然后通过 Python 上的 CPLEX 解决该问题 但是 在尝试使用 IF THEN 约束解决 MILP 问题时 我收到以下错误 DOcplexException Model
  • SCIP 中的 LP 松弛

    我正在尝试使用 SCIP 命令行解决 MIP 并以 CPLEX LP 格式输入问题 然而 由于变量较多 优化需要花费大量时间 有没有办法计算 SCIP 中相同 MIP 的 LP 松弛解 或者任何其他方法来获得近似的 有些次优的解决方案 如果
  • gurobipy 中的反向指标约束

    我是 gurobipy 的初学者 我想添加一个反向指标约束 指标约束只不过取决于约束是否成立的二元变量 在 gurobipy 中 这写为 model addConstr x 1 gt gt y z lt 5 其中 x 是二进制变量 y 和
  • 为什么解决背包问题不被视为线性规划?

    为什么背包问题不属于线性规划算法尽管背包问题陈述看起来与中的问题相似线性规划 背包可以写成整数线性规划程序 与普通的线性规划不同 该问题要求解中的变量是整数 已知线性规划可在多项式时间内求解 而整数线性规划是 NP 完全的 读者练习 证明
  • 使用现有的线性规划工具找到所有替代的基本解决方案

    我必须找到一些微小线性规划问题的所有基本解决方案 这是一个示例 采用 lp solve 格式 max x1 x2 x1 x2 lt 1 x1 lt 0 8 x2 lt 0 8 所有 2 个基本解决方案 x1 0 2 x2 0 8 x1 0
  • 在整数规划中使用最小/最大运算符

    我正在尝试使用整数规划优化目标函数 我必须使用Max我的函数中的运算符 我想知道有什么办法可以处理这个问题吗 其实我的问题类似于使用最小 最大within整数线性规划 https stackoverflow com questions 10
  • 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 并有人建议线性规划 我查阅了线性规划和单
  • 我如何限制 COIN-CBC 的运行时间,因为 maxSeconds 参数似乎对我不起作用?

    我想使用 COIN CBC 或 PuLP 提供的任何其他免费 MIP 求解器 求解一个小型混合整数程序 但时间限制为 10 秒 但是 maxSeconds 参数似乎对我不起作用 举个例子 我这 样调用没有时间限制的求解器 prob solv
  • 最佳开源混合整数优化求解器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 CPLEX 来解决巨大的优化模型 超过 100k 个变量 现在我想看看是否可以找到开源替代
  • 如何在不使用 exec 的情况下生成 PuLP 变量和约束?

    我使用 PuLP 库编写了以下 Python 代码 用于使用整数规划公式解决背包问题 我使用字符串生成 LpVariable 命令并添加约束 然后使用 eval 执行它们 有没有办法在不使用 eval 的情况下做到这一点 from pulp

随机推荐

  • 如何使用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 并添加约束