问题标签 [mutation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
186 浏览

objective-c - iOS KVC DRY 突变

我正在尝试将字符串字典从 JSON 提取映射到符合 KVC 的 NSManagedObject,我可以成功使用setValue: forKey:,但我看不到如何映射类型。

例如,我不应该将日期设置为任何随机字符串:Printing description of myDate: asdfsadf 但是它起作用了。

我查看了https://stackoverflow.com/a/5345023/828859,它提供了一些有用的答案。我可以进入并为每个属性创建验证......但这似乎不是很干燥,因为每次我有一个日期时我都必须验证每个日期并分别设置输出值。

我更愿意在使用之前按类型进行变异,setValue: forKey:但我不知道如何区分属性类型。

我想做的事:

0 投票
3 回答
4557 浏览

implementation - 在遗传算法中应用变异来解决旅行商问题

我正在从事一项小型学术任务,以使用遗传算法 (GA) 解决旅行商问题 (TSP)。我正在遵循一个非常简单的经典表示,将城市和旅游存储在数组中,例如,10 个城市的旅游可以表示为 9-1-0-4-3-8-6-5-2-7 等等。对 GA 有相当基本的了解,我对您将遵循哪种方法将不同类型的突变应用于 TSP 有点困惑。假设我们的路线表示为路线,突变率用变量 m_rate 表示。

[1] 简单插入突变

假设我们有:1-2-3-4-5-6-7-8-9。然后我们选择一个随机城市,比如索引 5,然后选择一个随机插入索引,比如 2,那么突变的染色体是:1-2-6-3-4-5-7-8-9。

现在这是我正在做的应用突变:

换句话说,我正在遍历路线中的每个城市并查看突变条件是否成立 (m_rate>Math.random()),如果是,那么我会在该索引处停下来,然后随机选择一个插入点,而不使用变异概率变量。只要没有遇到数组的末尾,我就会继续将相同的东西应用于其他所有剩余的城市或索引。这是正确的方法吗?应用第一个突变后,我应该停止还是跳出循环?突变概率是否应该以某种方式参与选择插入点?虽然这对我来说似乎没有多大意义。如果有可能不止一个城市在染色体或路线上发生突变,染色体有没有可能发生突变?换句话说,如果我最终进行第二次或第三次突变将染色体反转为其初始形式(突变之前)会发生什么?

[2] 相互交换突变。

在染色体中选择一个随机城市,然后选择第二个随机城市并交换两者。例如,在路线 1-5-2-8-0-9-3-7-4-6 中。如果我们最终选择索引 2 和索引 7,那么突变的染色体是:1-5-7-8-0-9-3-2-4-6。

我正在遵循与上述插入突变类似的方法,遍历路线中的每个城市并检查概率条件,然后直接选择一个随机城市进行交换,而不应用任何类型的突变率。上面同样的问题在这里适用..

[3] 反转突变。

这是最棘手的一个。给定一个像这样的染色体:1-2-3-4-5-6-7-8-9,我们选择一个像索引 2 到索引 5 的突变切割,然后反转那个子路径 ==> 1-2-6-5- 4-3-7-8-9。

但是你如何应用这个?你是不是循环遍历路线,然后根据突变率选择一个城市,然后直接选择另一个指标来确定子路线的长度?突变一次并退出?在这种实现中,如果我们的突变切割最终是 0-9 或 0-(length-1) ,整个染色体或路线是否可以突变以反转整个事物?在这种情况下,突变率的真正价值是什么?我有点迷失在这里...

我提前道歉,因为它太长了。但我会很感激任何关于这些问题的评论,或者如果有人可以指导我到任何详细讨论这些事情的资源。我看过很多研究论文,但没有多少人接触过这种细节和细节。

谢谢你。

0 投票
1 回答
1213 浏览

graph - 寻路的遗传算法 - 交叉和变异

我想使用遗传算法在无向图中找到最短路径。关于交叉和突变,我有两个问题。我一直在研究如何在与此类似的情况下执行交叉,并且最流行的算法似乎是 PMX,我对此的理解是在 2 个父染色体之间交换部分路径以产生后代。我遇到的问题是,几乎所有后代都有很大的无效空间,不是吗?我想知道您是否可以为我确认这一点,如果我错了,请纠正我并解释一下。

在单独但相关的说明上;我确实知道如何做到这一点,但我不知道这是否是个好主意,只需选择 2 个父母,他们在他们的路径中共享相同的节点并在那时交叉,因此所有后代都保持有效。

我的第二个问题是突变;我对如何做到这一点有一个大致的想法;选择一个节点并将其删除并通过另一种方式重新链接路径是否明智?

谢谢 :)!

0 投票
2 回答
1754 浏览

path - 遗传算法 - 路径的交叉和变异算子

我想知道是否有人知道图中路径的任何直观交叉和变异算子?谢谢!

0 投票
3 回答
1813 浏览

c# - 如何在我的 GA 实现中执行双数的交叉?

简而言之,我该怎么做:

  • 从头到尾double
  • 然后做交叉(一点,两点),
  • 然后回到double

我可以开发轮盘赌选择。我看不清楚的是混合两个双打如何给我一个“更好”的双打。这是完全随机的吗?如果我的“最适者”doubles和我的“最弱者”结合起来,他们不会产生一个中点double吗?

详细说明: 从一点到这条曲线的最短距离

编辑 1:不减慢程序太多

编辑 2:我考虑使用 a byte[],但我不知道这是否会违背遗传算法部分。

0 投票
1 回答
1020 浏览

r - 如何在 rbga.bin、gena​​lg 包中设置交叉率?

我正在使用 R,特别是包 genalg,它允许快速实现遗传算法和搜索相关活动。

我能够运行示例代码,一切正常。感谢作者。

关于如何在 genalg 中设置标准 GA 的参数(突变率和交叉率),我仍然有以下问题。我在包文档中找不到这些问题的答案。

然后考虑函数调用

a) 如何在 rbga.bin 中设置交叉率?

a.1) 如果不可能 a) 在 rbga 中实现交叉,如果是这样,应用的概率是多少?

b)mutationChance 参数是否对应于 Goldberg 书中描述的简单 GA 的“突变率”?

0 投票
2 回答
398 浏览

c# - 在 n 树实现中需要帮助

我正在尝试使用 c# 实现 n 元类型的数据结构。树将有一个根节点和子数组,并且子数组中的每个子节点也将具有一组子节点。我想要做的是每当我们添加子数组时,应该将其添加到叶节点中存在的所有子节点中。我的代码是

主程序

但是这段代码会导致无限递归调用。我试过但无法弄清楚出了什么问题?请帮助我找出我做错了什么。 我已经描述了图像中的问题

解决方案: 在您的帮助下,我找到了解决此问题的方法。如果我解释根本原因,我认为这将对可能面临同样问题的其他人有所帮助。当我传递子节点数组时,问题的主要原因是作为引用而不是值传递。我已经稍微更改了我的代码,以确保相同的子数组引用不会传递给下一个递归调用。

这是我更正的代码

再次感谢 :)

0 投票
1 回答
1119 浏览

function - F# 函数不允许我改变可变值

可能是另一个愚蠢的 F# 初学者的问题......但它仍然困扰着我

我似乎无法在网上找到任何答案......可能是因为我搜索了错误的术语,但是嗯

无论如何,我的代码如下:

Visual Studio 告诉我,x它的使用方式无效,闭包无法捕获可变变量

这是为什么?我能做些什么来让我变异它?

0 投票
1 回答
59 浏览

sql-server - SQL Server 上的聚集索引突变

SQL Server 如何对聚集索引执行突变?

它是在原地完成的,因此我需要在应用程序级别执行删除/插入,还是在后台执行删除/插入,我没有什么可担心的?我读到这是后者,有人可以确认吗?

链接:http ://sqlinthewild.co.za/index.php/2011/06/21/are-all-updates-split-into-delete-insert/

0 投票
1 回答
2834 浏览

python - python中的变异列表

我想定义一个函数,它可以通过添加 1's([1,1,1,...]) 来改变输入的列表。但是,我不想使用循环来执行这个简单的操作。