首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误: Gecode:浮动::线性:超出限制的数字

错误: Gecode:浮动::线性:超出限制的数字
EN

Stack Overflow用户
提问于 2020-12-07 23:18:45
回答 1查看 198关注 0票数 0

我正在Minizinc 2.5.3 (最新版本)和Gecode 6.3.0上构建一个简单的模型,试图组织一个武器生产操作。运行代码时,会出现以下错误:

代码语言:javascript
复制
Error: Gecode: Float::linear: Number out of limits

我一直在阅读Gecode对浮动变量的一些限制,但我不知道问题是与求解者有关还是与我的代码有关(附后)。我尝试将所有变量更改为整数变量,但所需的资源是浮点参数。我也尝试过改变求解器,但是没有一个有效(没有MIP求解器可用)。

代码语言:javascript
复制
enum WEAPONS; %product
enum RESOURCES; %resources

array [RESOURCES] of float: capacity; %resource constraints
array [WEAPONS] of float: pwr; %profit/objective
array [WEAPONS,RESOURCES] of float: consumption; %consumption of resources for each product unit
array [WEAPONS] of var int: amt; %amount to produce

constraint forall(i in WEAPONS)(amt[i]>=0); %non-negative
constraint forall(r in RESOURCES)(sum(i in WEAPONS)(consumption[i,r]*amt[i])<=capacity[r]); %availability of resources must not be exceeded

solve maximize sum(i in WEAPONS)(pwr[i]*amt[i]);

output ["\(i): \(amt[i])\n" | i in WEAPONS];

我使用以下数据文件:

代码语言:javascript
复制
%Product
WEAPONS = {AXE, SWORD, PIKE, SPEAR, CLUB};
%Resoruces
RESOURCES = {IRON, WOOD, BLACKSMITHHR, CARPENTERHR};
%capacity
capacity = [5000, 7500, 4000, 3000];
%consumption: [Product,Resources]
consumption = [| 1.5, 1, 1, 1 
               | 2, 0, 2, 0 
               | 1.5, 0.5, 1, 1 
               | 0.5, 1, 0.9, 1.5 
               | 0.1, 2.5, 0.1, 2.5 |];
%profit
pwr = [11, 18, 15, 17, 11];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-07 23:49:12

造成问题的原因是Gecode中的浮点变量仅限于32位。这意味着MiniZinc (支持64位浮点数)中可能出现的一些问题无法由Gecode解决。

在你的问题上,这是由

代码语言:javascript
复制
constraint forall(r in RESOURCES)(sum(i in WEAPONS)(consumption[i,r]*amt[i])<=capacity[r]); %availability of resources must not be exceeded

sum表达式可以通过两种方式大于32位:

  • --它取决于可能很大的消费数字(在示例输入中,情况似乎并非如此)。
  • 依赖于目前尚未设置的amt域。这意味着和的域也将跨越整个64位。

因此,解决问题的方法是为amt变量设置初始域。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65190862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档