首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用"If语句“- OZ

使用"If语句“- OZ
EN

Stack Overflow用户
提问于 2015-03-29 15:35:07
回答 1查看 560关注 0票数 0

我在莫扎特中使用"if语句“有问题。程序启动,但只给出的结果是: 1#_。我想知道为什么现在起作用了。

代码语言:javascript
复制
declare PSO

proc{PSO W}
  X1 X2 X3 X4
  Y1 Y2 Y3 Y4
in   
   X1::1#6
   X2::1#6
   X3::1#6
   X4::1#6
   Y1::1#6
   Y2::1#6
   Y3::1#6
   Y4::1#6

   if X1 > 1 then Y1 =: 2 else Y2=:3
   end

   W=w(x1:X1 y1:Y1 x2:X2 y2:Y2 x3:X3 y3:Y3 x4:X4 y4:Y4)

   {FD.distribute ff W}   
end
{ExploreOne PSO}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-29 18:22:37

问题是:您正在尝试评估X > 1,尽管X目前还没有完全确定。所以这个过程在这一点上就被阻止了。

您可以在distribute之后移动违规语句。

代码语言:javascript
复制
W=w(x1:X1 y1:Y1 x2:X2 y2:Y2 x3:X3 y3:Y3 x4:X4 y4:Y4)
{FD.distribute ff W}   

if X1 > 1 then Y1 =: 2 else Y2=:3
end

distribute之后,所有变量都有具体的值。

或者用逻辑编程结构替换if-else语句:

代码语言:javascript
复制
choice
   X1 >: 1
   Y1 =: 2
[] X1 =<: 1
   Y2 =: 3
end

后者通常在约束编程问题上更有效。

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

https://stackoverflow.com/questions/29331073

复制
相关文章

相似问题

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