使用OptaPlanner中的HardSoftDoubleScore,使用DRL Score规则对损坏进行评分

时间:2017-03-31 01:04:35

标签: drools corruption optaplanner

Hellow。

我尝试使用optaplanner解决一些优化问题,发生了一些错误。

版本:Optaplanner 6.5.1 - 快照

分数类型:硬软双分

分数方法:DRL

var viewMatrix = Matrix.LookAtLH(camera.Position, camera.Target, Vector3.UnitY);
var projectionMatrix = Matrix.PerspectiveFovRH(0.78f, (float)bmp.PixelWidth / bmp.PixelHeight, 0.01f, 1.0f);  var worldMatrix = Matrix.RotationYawPitchRoll(mesh.Rotation.Y, mesh.Rotation.X, mesh.Rotation.Z) * Matrix.Translation(mesh.Position);
var transformMatrix = worldMatrix * viewMatrix * projectionMatrix;
var point = Project(vertex, transformMatrix);

这是我的班级图

ClassDiagram

使用上面的设置,在构造启发式步骤中,发生以下错误

Vector3 target = new Vector3(10,20,30);

我的修正点在哪里?

请帮帮我~~ ^^

1 个答案:

答案 0 :(得分:0)

这两者之间有什么区别?

  • 0.0hard / -34.78590672782873soft
  • 0.0hard / -34.785906727828745soft

答案:由浮点运算引起的舍入误差。

HardSoftDoubleScore的Javadoc:

  

警告:不建议使用由此引起的错误   分数腐败。例如,这打印为false:   System.out.println((0.01 + 0.05) == (0.01 + 0.02 + 0.03));

请参阅文档部分Avoid Floating Point Numbers in Score Calculation,了解如何解决该问题。