Ising Spin Glass - 优化

数据挖掘 优化 遗传算法 元启发式
2022-03-08 23:06:51

我是一名研究基于模型的遗传算法的新手研究员,主要使用数据建模在离散和连续空间中进行链接学习。我想问你关于优化背景下的 Ising Spin Glass (ISG) 问题。我已经看到很多论文针对这个特定问题运行基准测试。我用谷歌搜索了它,检查了 wiki,但最终什么也没理解:/

  1. 这个问题的直观定义是什么,使其非常适合优化?
  2. 在论文中提到 ISG 问题时,研究人员会想到哪些特定的模型?
  3. 如何在优化的背景下制定这个问题?(编码,适应度评估)

我不问也不期待一个现成的解决方案,一些大方向就足够了,因为我觉得有点失落。

更新 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

找了几篇论文:

一旦我通过了它们,我会将它编码到我的基准测试包中。如果有人感兴趣,我将在几周后在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 10必须替换为-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)
0个回答
没有发现任何回复~