当前位置: 首页 > 知识库问答 >
问题:

如何在节点上实现模拟退火(TSP)

暨承平
2023-03-14
public Amount(int a)
{
    amount = new ArrayList<Node>();
    ak = a;
    rand = new Random();

    int i = 0;
    while(i < ak)
    {
        Node k = new Node();
        amount.add(k);
        i++;
    }

    this.connect();
}
public ArrayList<Node> giveAmount()
{
    return amount;
}
public void connect()
{
    for(int i=0;i<ak;i++) //We gradually go through all the nodes and add neighbors to it        {
        for(int j=0;j<ak;j++) // We go through all the nodes again and add them with 20% probability as neighbors from the current node i
        {
            int k = rand.nextInt(10);
            if(k < 2 && i != j) //20% chance of connection, not possible with himself                {
                if(amount.get(i).showNeighbor().contains(amount.get(j)) == false) // Double neighborhood is avoided
                {
                    amount.get(i).newNeighbor(amount.get(j)); // j is stored as the neighbor of i                    }
                if(amount.get(j).showNeighbor().contains(amount.get(i)) == false) // Double neighborhood is avoided
                {
                    amount.get(j).newNeighbor(amount.get(i)); // i is stored as the neighbor of j                    }
            }
        }
    }
}

我知道我需要这样的东西prob=math.exp(-(promission-current)/pertension)

有人能给我一个这个的示例代码吗?。谢谢

共有1个答案

孔君浩
2023-03-14

您希望阅读并尝试https://stackabuse.com/simulated-annealing-optimization-algorithm-in-java/

的确,概率部分是

    public static double probability(double f1, double f2, double temp) {
        if (f2 < f1) return 1;
        return Math.exp((f1 - f2) / temp);
    }

是示例的一部分。

 类似资料:
  • 本文向大家介绍模拟退火,蚁群对比相关面试题,主要包含被问及模拟退火,蚁群对比时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 模拟退火算法:退火是一个物理过程,粒子可以从高能状态转换为低能状态,而从低能转换为高能则有一定的随机性,且温度越低越难从低能转换为高能。就是在物体冷却的过程中,物体内部的粒子并不是同时冷却下来的。因为在外围粒子降温的时候,里边的粒子还会将热量传给外围粒子,就可能导致局

  • 我有这样的东西: 我想使用JUnit测试SomeClass中的execute()方法。由于someMethod(String someArg1,String someArg2)调用了REST API,所以我想模拟someMethod来返回一些预定义的响应。但不知何故,实际的somethod被调用,而不是返回预定义的响应。我如何让它工作? 以下是我尝试使用Mockito和PowerMockito的内

  • 我正在尝试检查StackPane中节点的冲突检测。下面是我的代码: 在这里,如果我使用AnchorPane,碰撞检测就会工作。但在StackPane的情况下,我无法做到这一点。我猜这是因为堆栈窗格的坐标系统(如果我错了,请纠正我)。 所以请帮我实现上述两个矩形的碰撞检测。另外,如果我想更改节点的坐标,请提供一些建议(如果您知道),以便在StackPane内的节点上实现此类冲突检测。

  • 我试图模拟一个外部模块(jwt_decode),对于感兴趣的人来说,我已经看到了许多如何使用Jest模拟外部节点模块的示例,无论是在测试套件中的所有测试,还是在每个测试的基础上。 我已经能够模拟依赖项,以便它模拟套件中所有测试的返回值,尽管缺省函数是我真正关心的全部。 这工作得很好,只是我想测试一个返回的令牌已经过期的场景,这样我就可以验证在出现这种情况时是否调度了某些Redux操作。 我想修改单

  • null 以下是我到目前为止所尝试的: 专业人士 在第一次调用后恢复到原始实现 null null null 代码: 专业人士 完全控制模拟结果 null null 代码:

  • 本文向大家介绍怎么在单节点上实现分布式锁?相关面试题,主要包含被问及怎么在单节点上实现分布式锁?时的应答技巧和注意事项,需要的朋友参考一下 SET resourcename myrandom_value NX PX 30000 主要依靠上述命令,该命令仅当 Key 不存在时(NX保证)set 值,并且设置过期时间 3000ms (PX保证),值 myrandomvalue 必须是所有 client