我正在使用单个仓库处理车辆路径问题.问题定义如下.有n个vechiles需要前往m个站点.每个站点都有其特定的限制,例如只有具有一定容量的车辆才能为站点提供服务,有些站点需要在一天中的特定时间提供服务.此外,车辆将具有不同的容量并且将具有不同的开始和结束时间.
我们的想法是尽量减少从车厂出发的车辆的行程时间.
我正在构建问题的成本矩阵.虽然不是图论的专家,但我知道如果它陷入经典的旅行商问题,我可以使用哈密顿循环来解决问题.但是,因为它涉及多个旅行推销员问题,我想知道如何使用哈密顿循环解决问题,或者是否有另一个专门针对问题设计的流程?
任何帮助将非常感激.
我目前正在研究一个使用进化算法模拟吉他效果的专业项目,并希望使用 Python 和 CSound 来完成此任务。
我的想法是在Python中的算法中生成效果参数,将它们发送到CSound并将过滤器应用于音频文件,然后将新的音频文件发送回Python以执行频率分析以与目标音频文件进行比较(这将是循环完成,直到音频文件与目标音频文件足够相似,因此 CSound 和 Python 之间的发送/接收将会完成很多)。
简而言之,如何让Python将数据发送到CSound(.csd文件),如何读取.csd文件中的数据,以及如何将.wav文件从CSound发送到Python?还优选的是,这可以自行动态地工作,直到满足音频文件的标准。
提前致谢
我想生成位于n维环面上的随机点.我找到了如何在三维环面上生成点的公式:
x = (c + a * cos(v)) * cos(u)
y = (c + a * cos(v)) * sin(u)
z = a * sin(v)
Run Code Online (Sandbox Code Playgroud)
u,v∈[0,2*pi]; c,a> 0.
我的问题是:如何将此公式扩展到n维.任何有关此事的帮助将不胜感激.
我目前正在实施Kenneth Stanley开发的NEAT算法,并以原始论文为参考。
在描述交叉方法的部分中,有一件事使我感到困惑。
因此,上图说明了NEAT的交叉方法。为了确定一个基因是从哪个父母那里继承的,论文说:
匹配的基因是随机继承的,而不相交的基因(中间不匹配的基因)和多余的基因(最后不匹配的基因)则是从更合适的父母那里继承的。
对于匹配的基因(1-5),很容易理解。您只是从Parent1或Parent2中随机继承(两者都有50%的机会)。但是,对于不相交的(6-8)和多余的(9-10)基因,您不能从更适合的父母那里继承,因为您只能在Parent1或Parent2中拥有那些基因。
例如:
Parent1的适应度高于Parent2的适应度。不相交的基因6仅存在于Parent2中(当然,因为不相交和多余的基因仅在一个亲代中发生),因此,您不能决定从更适合的亲本继承该基因。所有其他不相交和多余的基因也是如此。您只能从它们所在的父级继承它们。
所以我的问题是:您是否可能从更合适的父母那里继承所有匹配的基因,然后接管不相交和多余的基因?还是我在这里误会了什么?
提前致谢。
neural-network genetic-algorithm evolutionary-algorithm crossover
我正在为uni选择项目.我真的很感兴趣的是结合遗传算法和计算机安全性.
因此我的问题是,是否可以在计算机安全的任何方面使用GA ?例如?.我想的是一种能够自我保护/抑制威胁的进化防火墙/防病毒软件.这样的事情有道理吗?
我真的很感谢你们的意见,建议,评论.
当阅读关于遗传算法的交叉部分时,书籍和论文通常指的是简单地交换要再现的两个所选候选者的数据中的比特的方法.
我还没有看到用于实际行业应用的实现遗传算法的实际代码,但我发现很难想象它足以在简单的数据类型上运行.
我总是想象遗传算法的各个阶段将在涉及复杂数学运算的复杂对象上执行,而不是仅仅在单个整数中交换一些位.
甚至维基百科也只是为交叉列出了这些类型的操作.
我错过了一些重要的东西,或者这些交叉方法真的是唯一使用的东西吗?
algorithm optimization search genetic-algorithm evolutionary-algorithm
在得到一些帮助后,理解我试图编译代码的问题,在这个问题中(麻烦理解GHC关于模糊性的抱怨)Ness会建议我重新设计我的类型类以避免我不满意的解决方案.
有问题的类型是这些:
class (Eq a, Show a) => Genome a where
crossover :: (Fractional b) => b -> a -> a -> IO (a, a)
mutate :: (Fractional b) => b -> a -> IO a
develop :: (Phenotype b) => a -> b
class (Eq a, Show a) => Phenotype a where
--In case of Coevolution where each phenotype needs to be compared to every other in the population
fitness :: [a] -> a -> Int
genome …Run Code Online (Sandbox Code Playgroud) 关于遗传算法的书籍和教程解释说,使用格雷码在二进制基因组中编码整数通常比使用标准基数 2 更好。给出的原因是编码整数中 +1 或 -1 的变化,只需要一位翻转对于任何数字。换句话说,相邻整数在格雷码中也是相邻的,格雷编码中的优化问题至多具有与原始数值问题一样多的局部最优值。
与标准基数 2 相比,使用格雷码还有其他好处吗?
我正在学习机器人强化学习中采用的方法,并遇到了进化策略的概念。但我无法理解 RL 和 ES 有何不同。谁能解释一下?
robotics reinforcement-learning evolutionary-algorithm deep-learning
我正在尝试使用 NSGA 2 解决具有 3 个目标和 2 个决策变量的多目标优化问题。下面给出 NSGA2 算法和终止标准的 pymoo 代码。我的 pop_size 是 100,n_offspring 是 100。该算法迭代了 100 代。我想将所有 100 代的每一代中考虑的决策变量的所有 100 个值存储在一个数据框中。
pymoo 代码中的 NSGA2 实现:
from pymoo.algorithms.nsga2 import NSGA2
from pymoo.factory import get_sampling, get_crossover, get_mutation
algorithm = NSGA2(
pop_size=20,
n_offsprings=10,
sampling=get_sampling("real_random"),
crossover=get_crossover("real_sbx", prob=0.9, eta=15),
mutation=get_mutation("real_pm", prob=0.01,eta=20),
eliminate_duplicates=True
)
from pymoo.factory import get_termination
termination = get_termination("n_gen", 100)
from pymoo.optimize import minimize
res = minimize(MyProblem(),
algorithm,
termination,
seed=1,
save_history=True,
verbose=True)
Run Code Online (Sandbox Code Playgroud)
我尝试过的(我的参考:stackoverflow问题):
import pandas as pd
df2 = pd.DataFrame …Run Code Online (Sandbox Code Playgroud)