距离 - 冷却公式

时间:2018-01-20 09:36:21

标签: javascript java node.js math

我正在尝试编写一个程序,我想要的是存储1.距离和2.我的数据库中的冷却时间。我从?dist 1.8254,25.212398 2.34235,25.232412中的用户输入字符串中获取输入。

我有一个nodejs应用程序,它计算距离并将输出打印为The distance is 57.53 Km。但我也希望显示冷却时间,在这种情况下为60km - < 22 minutes,因此我的程序输出为The distance is 57.53Km and the cooldown time is 20 minutes。我说了20分钟,因为60公里是<22分钟,所以1分钟的差异可以接受。

我可以使用简单的if / else来匹配以下条件,但我想将所有距离值(1-1500)与其冷却时间一起存储在db中。如何生成/计算冷却时间?根据给定的场景我可以使用什么公式?

我将使用sqlite作为db。

我想了一会儿,但我似乎无法找到解决方案。如果我错过了为我的帖子标记适当的标签,那么请重新标记它。

请帮忙。提前谢谢。

Distance Cooldown

2 个答案:

答案 0 :(得分:0)

您可以为距离和冷却时间之间的所需关系获取一组对象。结构采用具有相同单位的正规化数据,例如 km 的距离和 m (分钟)的时间。

.cards

要查找包含数据的数组元素,Array#find会返回第一个元素,如果条件为[ { distance: 1, cooldown: 1 }, { distance: 3, cooldown: 2 }, // ... { distance: 1500, cooldown: 120 } ] 或任何其他truthy值。为防止异常,将对象视为默认值,将其作为logical OR ||的部分。该对象是必要的,因为true属性具有以下访问权限。

cooldown

它使用cooldown = (data.find(({ distance: d }) => distance <= d) || {}).cooldown; // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ find object // ^^^^^^^^^^^^^^^ destructuring // ^^^^^^^^^^^^^ condition // ^^ default value // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ check result // ^^^^^^^^ final value destructuring assignment新名称{ distance: d },因为属性名称已用作函数参数。

d

答案 1 :(得分:0)

我将您的数据放入Excel并创建了一个xy-scatter图。我尝试了几条不同的趋势线,但我认为幂律最合适。协议更贴近;预计在较大距离处冷却时间较长(例如,预测在1500公里处冷却134分钟,比120分钟数据长14分钟)。

cooling time (min) = 1.3962*(distance km)^0.6247

它简单,易于可视化,适用于数据值之间的所有距离。连续功能最好。

JavaScript函数很容易编写:

function getCooldownTimeMinutes(distanceKm) {
    return 1.3962*Math.pow(distance, 0.6247);
}

我会留给你添加所有其他有意义的检查:

  1. 距离不能为空
  2. 距离是一个数字
  3. 距离是正定数;没有否定。
  4. 如果您愿意,可以稍微改善一下。直到250公里,电力法律工作正常。除此之外我看起来是线性的。你可以按照自己的意愿精心制作。

    您对自己的数据有多大信心?

    一定要不断地从用户那里获取数据并将其存储在数据库中。您可以使用最小二乘回归和您选择的函数定期重新拟合数据。

    enter image description here