我试图在遗传算法中实现非均匀概率分布.
在遗传程序的实施中,我有一个实验,其中有3个结果,每个结果都有不同的概率.比方说,一个结果的可能性是0.85,另一个是0.01,最后一个是0.14?
PS:我最近才知道它被称为概率的非均匀分布.我用Java实现它,任何人都能说出非均匀概率背后的理论.分发以及实现它的任何Java包.
如果您需要有关此问题的更多信息,请随时向我询问!
提前致谢!
probability genetic-programming probability-theory genetic-algorithm
是的,在SO上有很多这样的问题.我看到遗传算法是最常见的答案.
但是,我担心GA的这些特征
我希望该程序能够被用户轻松推向相互冲突的标准和不可能的解决方案 .
因此,我想要一种方法
有100000个尽可能详尽的时间表.
我四处搜索,发现像模拟退火这样的元启发式算法是一个很好的选择.那么动态编程算法呢?
对于这样的数据集,蛮力方法是否合适?
什么是符合标准的好算法?
language-agnostic algorithm artificial-intelligence dynamic-programming genetic-algorithm
我正在写一个 GA,我不确定在选择父母时我是否想通过我的人口循环找到每个使用锦标赛选择的父母,或者我是否打算为每个解决方案使用比赛选择找到两个父母在我的人口中。
哪一个?
模式究竟如何帮助遗传算法获得最优解?模式意味着模板是否意味着人口中的每个人都具有相同的模式?
artificial-intelligence genetic-algorithm evolutionary-algorithm
嘿,我有一个任务要执行,这基本上是以某种方式检索与特定领域有关的powerpoint演示文稿或pdf文档.假设我想要检索有关生物信息学领域的ppt和pdf讲义.我想知道是否可以通过使用神经网络训练的神经机器人的方法来实现这个任务?我想在进一步实施之前确认这种方法并非完全错误.
如果有人想知道为什么在这种情况下需要神经网络或任何学习算法,这里是我的计划(这可能是错误的或者可能有更简单的方法来实现这一点,所以请随时纠正我):
我生成由神经网络训练的神经机器人(不确定这种训练是如何发生的,我假设通过使用某些ppt和pdf文件的样本训练集的监督学习)然后这些机器人检索与他们通过他们学到的相似的页面他们的训练.
那么上述方法是完成此任务的正确方法吗?
information-retrieval machine-learning web-crawler neural-network genetic-algorithm
我想使用遗传算法来解决具有两个变量的两个线性方程的简单系统.这主要是为了帮助我更好地理解它们的工作原理.
一切看起来都很简单,但我不确定如何在染色体中编码可能的解决方案来解决这个问题.
我将有两个变量,我想在染色体中编码以代表一个解决方案.如果每个变量都可以表示为8位数,那么我是否会制作一个16位二进制编码的染色体(1和0的字符串).
我不太确定这是怎么回事.如果选择两个亲本进行育种,如何从二进制字符串中随机选择基因会产生更好的解决方案?这就是为什么我不认为二进制字符串可以工作,所以任何答案都将非常感谢!
我正在使用DEAP库来最大化度量,我注意到每当我重新启动算法(它应该创建一个二进制值的随机列表--1和0)时,它产生相同的初始值.
我开始怀疑并在这里复制了他们的基本DEAP示例,并再次重新运行算法:
import array, random
from deap import creator, base, tools, algorithms
creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", array.array, typecode='b', fitness=creator.FitnessMax)
toolbox = base.Toolbox()
toolbox.register("attr_bool", random.randint, 0, 1)
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_bool, 10)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
def evalOneMax(individual):
return sum(individual),
toolbox.register("evaluate", evalOneMax)
toolbox.register("mate", tools.cxTwoPoints)
toolbox.register("mutate", tools.mutFlipBit, indpb=0.05)
toolbox.register("select", tools.selTournament, tournsize=3)
population = toolbox.population(n=10)
NGEN=40
for gen in range(NGEN):
offspring = algorithms.varAnd(population, toolbox, cxpb=0.5, mutpb=0.1)
fits = toolbox.map(toolbox.evaluate, offspring)
for fit, ind in zip(fits, offspring):
ind.fitness.values = fit …Run Code Online (Sandbox Code Playgroud) 我已经使用自己的GA一段时间,我使用随机选择和精英(前10%左右)来获得50%的人口.然后我进行交叉以产生接下来的50%,然后进行突变.这听起来很奇怪,但它让我在我的问题上足以让我满意它.
我想开始使用更精细的选择方法,特别是排名选择.我也想采用交叉概率.
我的问题是:
我已经开始实现自己的遗传算法,并且正处于决定如何为新一代选择父母的阶段。我读了一些书,看来有很多不同的方法可以解决这个问题。
我知道各种选择技巧(比赛,轮盘赌),但我似乎找不到的信息就是应该选择多少个父母。
我要处理的初始人口规模介于50-75个人之间。我当时正在考虑为下一代选择一半的人口,因此每一代人口都将减少一半,不确定这是否是最好的选择。
任何建议都很好。
我qsort在C中为函数编写比较函数时遇到了麻烦.这就是我目前所拥有的:
int cmpfunc(const void *a, const void *b) {
return (*(Individual*)a->fitness - *(Individual*)b->fitness);
}
Run Code Online (Sandbox Code Playgroud)
我知道比较函数是如何工作的,但我不明白如何在我的结构中引用一个整数值Individual.这是个人的结构.
typedef struct {
PPM_IMAGE image;
double fitness;
} Individual;
Run Code Online (Sandbox Code Playgroud)
我想比较结构中的适应度值.