我试图为强制解决方案的优化问题制定约束(产品的组合,由二进制数表示,表示是否被选中)以便按顺序拥有某个属性。
因此,假设选择了产品1,2和5,该解决方案由[1,1,0,0,1]表示。这些产品具有必须按顺序排列的另一个属性(位置)。用于检查的Python函数是:
var core_1 = require('@angular/core');
core_1.Component({})
(这是有效的,因为他们永远不会在同一个地方)
然而,它变得更难。最大位置是99,环绕:所以[98,99,0]也是一个有效的解决方案。
总会选择三种产品。
感谢您提供的任何帮助,我一直在努力解决这个问题。现在我列举所有可能的配置,导致100个约束(这使得事情变得缓慢)。
JR
答案 0 :(得分:1)
我最终用元解决方案解决了这个问题,我的一个朋友提出了这个问题。
由于选择位置X的产品推断其他允许的选择(即X + 1和X + 2),因此优化产品组而不是单个产品是有意义的。我已经建立了它并且它的工作非常好。
感谢您的回复!
答案 1 :(得分:0)
您正在寻找的条件是
return abs( mod( max(locations) - min(locations) +50,100)-50) <=2
或以一般形式:
abs(mod( distance + range/2,range)-range/2)
这给出了圆形空间中的最小距离。它通常用于计算圆中2个给定点的角距离,其中范围为2*pi
,距离为angle2-angle1