在 MiniZinc 中我该如何解决这个错误?

2023-12-26

在 MiniZinc 中,如何编译此代码而不出现错误“未找到具有此签名的函数或谓词:‘round(var float)’”?

var int: D = 1;
var int: F;
constraint F = round (D / 2);

该消息仅意味着 MiniZinc 不支持带有决策变量的 round(),即“round(var float)”。它仅支持“round(float)”,即固定浮点值。与ceil()和floor()相同,只支持固定的浮点值。

MiniZinc 2.0 自动将参数除法 (/) 转换为决策变量的浮点除法(因此不支持)。但是,由于您正在使用 var int,因此您可以尝试使用整数除法(“D div 2”),这会得到 F = 0。

对于 MiniZinc 2.0 以及支持 var float 的求解器(例如 G12/mip、JaCoP、Gecode 和 ECLiPSe):如果您将 F 定义为“var float: F”,则 F 将为 0.5。请注意,G12/fd 不支持 var 浮点数。

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

在 MiniZinc 中我该如何解决这个错误? 的相关文章

  • 是否有 IEEE-754 操作的开源 c/c++ 实现? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 IEEE 754 操作的参考实现 有这样的事吗 我相信 C 库软浮点 http www j
  • 如何除以零而不出错

    我需要获得 float NaN 和无穷大 但我不能使用这样的结构 0 0 1 0 因为它会导致编译时间 错误 C2124 除以零或模除以零 编辑 很高兴知道在哪里可以得到这个数字 每个 1 但是有可能除以零吗 您可以简单地返回 NaN 或无
  • Google Sheet 产生无穷小数作为整数/整数的余数

    我有这个工作表 我需要在其中创建一个检查器来确定一个数字 两个数字之和除以另一个值 DIVISOR 的结果 是否是整数 没有小数 运行上述检查器后 它大部分工作得很好 但似乎检测到一些项目不是整数 尽管它们是除数的精确倍数 https do
  • System.InvalidCastException:“无法将类型为“System.Double”的对象转换为类型为“System.Single”。”

    为什么 我在 obj Add new data 行上收到此错误 这是我的代码 SqlCommand com new SqlCommand sp get a con CommandType CommandType StoredProcedur
  • 如何使用“typedef NS_ENUM”在一个 .h 文件中定义多个变量类型

    我用过typedef NS ENUM重新组织旧代码中的数据常量 使用方法在这里找到 https stackoverflow com a 42009056 2348597 every typedef被声明在一个单一的 h可以导入到项目中任何类
  • c中的double和float可以存储多大的数字?

    我试图弄清楚我可以使用多大的数字作为浮点数double 但除了整数值之外 它并没有按照我预期的方式存储 double应该保存 8 个字节的信息 足以保存变量 a 但它保存得不正确 表明1234567890123456768其中最后 2 位数
  • 是否可以在不诉诸任意精度数据类型的情况下消除浮点错误?

    我想知道在特定条件下是否可以在不诉诸任意精度数据类型的情况下消除浮点错误 问题是常见的 语言是 Ruby 但它适用于任何语言 f 1829 82 gt 1829 82 f 12 0 gt 152 485 f 12 0 round 2 gt
  • C浮点精度[重复]

    这个问题在这里已经有答案了 可能的重复 浮点比较 https stackoverflow com questions 7011184 floating point comparison 我对 C C 中浮点数的准确性有疑问 当我执行下面的程
  • 浮点计算根据编译器的不同而变化

    当我运行在 Windows 和 Solaris 上编译的完全相同的代码执行完全相同的浮点计算 使用双精度 时 我得到的结果略有不同 我知道由于舍入误差 结果并不准确 然而 我本以为舍入误差是与平台无关的 从而在两个平台上给出相同的 稍微不正
  • 对浮点数求反总是安全的吗

    考虑 double f foo double g f where foo 可以返回分配给的任何内容f is double g f 在 C 和 C 中安全吗 对于 IEEE 754 类型 显然是这样 但 C 和 C 并不限制浮点实现 与 Ja
  • 如何使用 cout 以全精度打印双精度值?

    In my 先前的问题 https stackoverflow com questions 553974 why does int55 54 in c我正在打印一个double using cout当我没有预料到的时候 它就被四舍五入了 我
  • 安全浮点除法

    我的代码中有一些地方我想确保 2 个任意浮点数 32 位单精度 的除法不会溢出 目标 编译器不保证 足够明确 对 INF INF 的良好处理 并且 不完全保证 IEEE 754 的异常值 可能未定义 并且目标可能会改变 另外 我无法对这几个
  • 将 Boolean FlatZinc 转换为 CNF DIMACS

    为了解决一个布尔方程组 http arxiv org abs 1108 2830 我正在尝试Constraint Programming Solver MiniZinc http www minizinc org 使用以下输入 Solve
  • 截断浮点数而不向上舍入

    我有一个浮点数 我想将其截断为 3 位 但我不想向上舍入 例如 转换1 0155555555555555 to 1 015 not 1 016 我将如何在 Ruby 中做到这一点 您还可以转换为 BigDecimal 并对其调用 trunc
  • 在matlab中设置图例符号的精度

    我有这个 leg2 strcat Max Degree num2str adet 1 1 ch l leg3 strcat Min Degree num2str adet 1 2 ch l leg4 strcat Max Request n
  • 是否可以用 Rust 编写 Quake 的快速 InvSqrt() 函数?

    这只是为了满足我自己的好奇心 是否有这样的实现 float InvSqrt float x float xhalf 0 5f x int i int x i 0x5f3759df i gt gt 1 x float i x x 1 5f x
  • 单元测试(有时)会因为浮点不精确而失败

    我有课Vector代表 3 维空间中的一个点 这个向量有一个方法normalize self length 1 将矢量缩小 放大为length vec normalize length length 该方法的单元测试有时由于浮点数的不精确性
  • Python 丰富比较的行为(或者,当 Decimal('100.0') < .01 时)

    所以我有一个班轮 import decimal h decimal Decimal 100 0 h gt 01 h lt 01 h gt 01 h lt 01 它所做的只是创建一个包含 100 0 的 Decimal 对象 并以各种方式将其
  • 二进制浮点加法算法

    我试图理解二进制级别的 IEEE 754 浮点加法 我遵循了一些在网上找到的示例算法 并且大量测试用例与经过验证的软件实现相匹配 我的算法目前只处理正数 但是 我没有得到与此测试用例的匹配 0000100011110011011001001
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x

随机推荐