minizinc的内在产品

时间:2017-11-26 14:45:21

标签: minizinc inner-product

在两个向量V1(x11,x12)κα2V(x21,x22)中,我们可以将它们的内积计算为V1•V2。=(x11 * x21 + x12 * x22)。

我尝试将最小内积计算为(x1i x2j | i-j |,i.j坐标位置为V1,V2。     每个咕咕声都会在总和条件下使用一次。

vector1 = [-2, 3];
vector2 = [-4, 5];
sumTotal = -22;
----------
==========

我期待:

vector1=[ -2 3 ];
vector2=[ -4 5 ];
sumTotal=-40;
----------
==========

但我接受:

not String.IsNullOrEmpty(u)

1 个答案:

答案 0 :(得分:1)

我担心我不理解你的模型的含义,但它确实包含了一些容易修复的约束错误:

  • 如果数组由VEC, LEN索引,那么第二个索引应该始终是该集合的一部分。
  • sum是它自己的循环结构;它不需要forall表达式。

结果约束为:

constraint sumTotal = sum(i,j in LEN)(
    vector[1,i] * vector[2,j] * abs(i,j)
);

这仍然留下一个相当奇怪的模型,所以你可能想看看以下内容:

  • sumTotal是您唯一的变量,但它是由参数定义的。它无法优化,因为它只有一个解决方案。
  • ij应该能够采用相同的值吗?如果没有,那么您应该使用i,j in LEN where i < j
  • 您是否期望除sumTotal以外的任何结果?