小编Mic*_*thy的帖子

遗传算法 - 我需要什么数据结构?

我希望这里允许这样一个开放式问题。我正在研究一个简单的 GA,它将演变一个字符串输出以匹配给定的目标字符串。因此,每一代都将创建 N 个字符串的群体,每个字符串都将根据其与目标字符串的汉明距离分配一个适合度。然后我需要某种方式来存储和排序这些信息。我正在处理,但 Java 中的解决方案几乎总是可以在这种语言中使用导入。

由于我所追求的是模糊的键值结构,我的直觉是我想要某种字典,但我对使用这些的经验很少。还有一些复杂情况使我们无法理解字典的工作原理。我想做以下事情:

  1. 存储每个字符串及其关联的适应度。这两者的副本必须是可能的

  2. 按值对结构进行排序,即按其适应度的降序列出总体。

  3. 剔除底层 50% 的人口。可能最简单的方法是直接用适合人群的后代替换不适合人群。

访问时间/计算效率不是特别关注的问题。

昨晚我尝试使用 HashMap 解决这个问题,但我一直遇到问题,例如在此结构下不允许重复键,而且我找不到一种简单的方法来遍历 HashMap 并仅更改底部的 X%按值输入。

总而言之,我需要一个结构,其中每个条目都由一个 String 和一个 integer 组成,可以存储每个的重复项,该结构可以按整数值按降序排序,因此条目顶部或底部 X% 可以是在不影响其余的情况下进行手术。

非常感谢您的时间,任何帮助将不胜感激。

java processing dictionary genetic-algorithm data-structures

4
推荐指数
1
解决办法
130
查看次数

JavaScript - 为什么包含括号会导致三元表达式出错?

我有以下代码:

const showMessage = msg => console.log(msg);

let person = {
  firstName: `Mick`,
  lastName: `McCarthy`,
  firstTimeUser: true
}

(person.firstTimeUser === true) ? showMessage(`Welcome, ${person.firstName}!`): showMessage(`Glad you're back, ${person.firstName}!`)
Run Code Online (Sandbox Code Playgroud)

这导致错误:

home.js:7 Uncaught ReferenceError: Cannot access 'person' before initialization
    at home.js:7
Run Code Online (Sandbox Code Playgroud)

但是,在以下情况下(三元表达式中的括号已被删除):

home.js:7 Uncaught ReferenceError: Cannot access 'person' before initialization
    at home.js:7
Run Code Online (Sandbox Code Playgroud)

没有错误,欢迎信息显示正确。

为什么会这样?我的印象是括号在三元表达式中是可选的。我想,这是什么做的计算顺序,但由于三元表达式是在不同的线路let person = {...,我不清楚为什么发生这种情况。

事实上,在我正在学习的 JavaScript 课程展示的示例中,讲师展示了以下示例,无论是否带括号都可以完美运行:

let price = 20

(price < 10) ? showMessage('yes') : showMessage('no')
Run Code Online (Sandbox Code Playgroud)

但是,当我在自己的机器上尝试时,出现了同样的问题。他们是否可以使用行为不同的旧版 JavaScript?如果有,发生了什么变化?

非常感谢!

javascript conditional-operator operator-precedence

4
推荐指数
1
解决办法
64
查看次数