我是一名研究基于模型的遗传算法的新手研究员,主要使用数据建模在离散和连续空间中进行链接学习。我想问你关于优化背景下的 Ising Spin Glass (ISG) 问题。我已经看到很多论文针对这个特定问题运行基准测试。我用谷歌搜索了它,检查了 wiki,但最终什么也没理解:/
- 这个问题的直观定义是什么,使其非常适合优化?
- 在论文中提到 ISG 问题时,研究人员会想到哪些特定的模型?
- 如何在优化的背景下制定这个问题?(编码,适应度评估)
我不问也不期待一个现成的解决方案,一些大方向就足够了,因为我觉得有点失落。
更新 1
我在github上找到了一些 python 存储库。它通过以下方式计算能量:
import numpy as np
def totalEnergy(J, configuration):
"""
calculate the energy for a given configuration.
Parameters:
>>> J:
nSpin*nSpin matrix, J[i,j] is the interation between spin i and j.
>>> configuration:
1*nSpin vector, configuration[i] stores the spin at site i.
Returns:
the total energy of this configuration.
"""
# 0.5 for double counting
return 0.5*np.dot(configuration,np.dot(J,configuration))
更新 2
找了几篇论文:
- 帕尔,KF(1996 年)。Edwards-Anderson Ising 自旋玻璃的基态能量与混合遗传算法。物理学 A:统计力学及其应用,223(3-4),283-292。doi:10.1016/0378-4371(95)00348-7
- Prügel-Bennett, A., & Shapiro, JL (1997)。简单随机 Ising 系统的遗传算法动力学。物理学 D:非线性现象,104(1),75-114。doi:10.1016/s0167-2789(96)00163-7
- 用分层 BOA 和遗传算法寻找 Sherrington-Kirkpatrick 自旋玻璃的基态
- 交叉算子在磁模型遗传优化中的作用
- 用基于树键的表示搜索伊辛自旋玻璃的基态
一旦我通过了它们,我会将它编码到我的基准测试包中。如果有人感兴趣,我将在几周后在pypi上发布它。
回答
在无参数人口金字塔( P3 )存储库中有一个ISG实例列表。
-140 1110100000000101010100001011011001010010111011010111000110101010111010101111100010101010100001101010
200
0 1 1
1 2 1
2 3 -1
3 4 -1
它是这样工作的:
-140- 全局最优
111010...- 最佳基因组
200- 依赖数量
从记录3开始,您就获得了指定的依赖项。
例子
让我们以基因组为例1 0 1 1 1 0 1。值0必须替换为-1。因为问题是二进制,它只是与下面的数据类型相关的 repo 中的约定。
转化后我们有以下基因组1 -1 1 1 1 -1 1:让我们假设以下依赖项:
0 1 1
1 2 1
2 3 -1
我们遍历每一行。我们坐第一排0 1 1。前 2 个值是索引。你在那个位置获取基因值。在这些指数 (0, 1) 处的基因组1 -1 1 1 1 -1 1值是1和-1。我们将这些值相乘。我们得到-1. 此元组 ( ) 中的第三个值0 1 1表示乘数。你把你以前的分数-1乘以那个因素1。我们得到-1. 您对每个依赖项重复该过程。要获得整体健康,您只需总结所有子分数。
基因组:1 -1 1 1 1 -1 1
依赖项:
0 1 1 = 1 * -1 * 1 = -1
1 2 1 = -1 * 1 * 1 = -1
2 3 -1 = 1 * 1 * -1 = -1
fitness = sum(-1, -1, -1)