我对任何逻辑都是新手,希望执行以下任务。我在GIS环境中有几种类型的固定代理,希望通过网络将它们连接起来。连接的条件如下:让代理类型A有4个代理,代理类型B有20个代理。我想根据最短(直线)距离连接B和A。也就是说,B型代理将连接到最近的A型代理。
非常感谢。
在您的特定情况下,这是您在模型开始时想要的:
// For each of your Bs
for (Agent B : populationOfB) {
// Find the nearest A (using a straight line) and connect.
B.connections.connectTo(B.getNearestAgent(populationOfAgentA));
}
更一般地说,如果您希望aB
连接到多个与特定条件集匹配的代理,并且需要在运行中(或在模型开始时)执行此操作,则可以执行以下操作:
// For each B
for (Agent B : populationOfB) {
// Find all A agents that it could possibly connect with.
// Every time we take an agent from this collection, it will shrink to ensure we don't keep trying to connect to the same A.
List<Agent> remainingOptions = filter(
// We start with the full population of A
populationOfAgentA,
// We don't want B to connect with any A it's already connected to, so filter them out.
A -> B.connections.isConnectedTo(A) == false
// You might want other conditions, such as maximum distance, some specific attribute such as affordability, etc.; simply add them here with a "&&"
/* && <Any other condition you want, if you want it.>*/
);
// If B ideally wants N connections total, we then try to get it N connections. We don't start i at zero because it may already have connections.
for (int i = B.connections.getConnectionsNumber(); i < N; i += 1) {
// Find the nearest A. (You can sort based on any property here, but you'd need to write that logic yourself.)
Agent nearestA = B.getNearestAgent(remainingOptions);
// Connect to the nearest A.
B.connections.connectTo(nearestA);
// The A we just connected to is no longer a valid option for filling the network.
remainingOptions.remove(nearestA);
// If there are no other remaining viable options, we need to either quit or do something about it.
if (remainingOptions.isEmpty()) {
traceln("Oops! Couldn't find enough As for this B: " + B);
break;
}
}
}
还要注意,我经常使用连接:如果你需要多个收藏,例如工作、学校和社交网络,你可以用它来代替更具体的网络。
这道题是 LeetCode 72 题。 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数。你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 动态规划 解决两个字符串的动态规划问题,一般都是用两个指针 i,j 分别指向两个字符串的最后,然后一步步往前走,缩小问题的规模。 定义状态:dp[i][j] 表示 s1、s2 长
例如,我有两个实体列表和一个测量它们之间距离的函数。假设是姓名和电子邮件。在下面的表格中,我测量了每封电子邮件到每个名字的距离。 现在我想在名称中找到每个电子邮件的最小距离对。但是,请注意,如果两封电子邮件具有相同的最小距离名称候选人,则赢得距离最小的人。在这种情况下,另一个电子邮件应该选择第二接近的候选名称,并再次检查。 因此,在这种情况下,结果应为: 解释表: 速度很重要。。它可以以数据帧或d
本文向大家介绍Ruby实现的最短编辑距离计算方法,包括了Ruby实现的最短编辑距离计算方法的使用技巧和注意事项,需要的朋友参考一下 利用动态规划算法,实现最短编辑距离的计算。
问题内容: 我目前正在将数据读入如下所示的数据框中。 我想根据此数据创建一个欧几里得距离矩阵,该矩阵显示所有城市对之间的距离,因此我得到一个结果矩阵,如下所示: 我的实际数据框中还有更多城市和坐标,因此我需要能够以某种方式遍历所有城市对并创建一个距离矩阵,就像上面显示的那样,但是我不确定如何配对所有城市一起引用并应用欧几里德距离公式?任何帮助,将不胜感激。 问题答案: 我认为您对distance_
本文向大家介绍编辑距离相关面试题,主要包含被问及编辑距离时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 概念 编辑距离的作用主要是用来比较两个字符串的相似度的 编辑距离,又称Levenshtein距离(莱文斯坦距离也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,如果它们的距离越大,说明它们越是不同。许可的编辑操作包括将一个字符替换成另一个字符,
本文向大家介绍Spring基于ProxyFactoryBean创建AOP代理,包括了Spring基于ProxyFactoryBean创建AOP代理的使用技巧和注意事项,需要的朋友参考一下 Spring 通知类型 通过前面的学习可以知道,通知(Advice)其实就是对目标切入点进行增强的内容,Spring AOP 为通知(Advice)提供了 org.aopalliance.aop.Advice 接