遗传算法是最有效的方法来优化隐藏节点的数量和在人工神经网络上完成的训练量吗?
我正在使用Matlab中的NNToolbox编写神经网络.我对优化技术的任何其他建议持开放态度,但我最熟悉GA.
matlab mathematical-optimization neural-network genetic-algorithm
酒店有没有众所周知的房间优化/排序算法?
问题是重新分配房间以最大化占用率.假设我有10个房间,每个预订的开始日期和结束日期.有些房间不能被调整,而有些房间可以(标记).
任何正确方向的提示都会很棒.谢谢.
现在,每个遗传C#库(A.Forge,遗传算法框架,GeneticSharp)似乎只评估单个Chromosome,然后使用各种选择方法之一来创建新一代.
由于我的问题涉及两个人工智能相互对抗,所以单独评估他们的健康状况有点困难.虽然游戏很简单,可以创造一些表面障碍(人工智能不会直接互动,但障碍会发送到彼此的游戏中),这样可以让我获得一些抽象的健身,但这不是"真正的"交易.
这些库似乎也没有提供另一个我可以实现这种评估方法的接口.是否有其他框架允许这样或者我需要从头开始?
我已经实施了遗传算法来解决旅行商问题(TSP).当我只使用变异时,我找到了比添加交叉时更好的解决方案.我知道正常的交叉方法对TSP不起作用,所以我实现了Ordered Crossover和PMX Crossover方法,并且都遭受了糟糕的结果.
以下是我正在使用的其他参数:
突变:单一交换突变或倒置子序列突变(如Tiendil所述),突变率测试在1%和25%之间.
选择:轮盘赌轮选择
健身功能:1 /旅游距离
人口规模:测试100,200,500,我也运行GA 5次,以便我有各种起始种群.
停止条件:2500代
使用26个点的相同数据集,我通常使用具有高突变率的纯突变获得大约500-600距离的结果.添加交叉时,我的结果通常在800距离范围内.另一个令人困惑的事情是,我也实现了一个非常简单的爬山算法来解决这个问题,当我运行1000次我避开410-450距离的结果,我希望(不是运行GA快5倍)使用GA获得更好的结果.
当我添加交叉时,有关为什么我的GA表现更差的任何想法?为什么它比一个简单的Hill-Climb算法表现得更差,它应该卡在局部最大值上,因为它一旦找到局部最大值就无法探索?
algorithm mathematical-optimization traveling-salesman genetic-algorithm
我正在开发一个项目,它将拥有一组选定的数据,每个数据都有不同的属性.我将需要使用适应度函数来使用属性选择与我选择的场景最匹配的数据.
但是,我并没有找到任何解释如何定义自己的健身功能的网站.我所拥有的只是它是遗传算法的一部分,而这就是我所得到的.那么,我可以在这里给出一些指示吗?
artificial-intelligence fitness genetic-algorithm evolutionary-algorithm
我对遗传算法(和其他进化算法)中的精英主义概念感到有些困惑.当我保留然后将1个(或更多)精英个人复制到下一代时,
如果是后者,精英主义有什么用?是不是因为没有失去最佳解决方案?因为在这个方案中,它根本无助于收敛.
例如,在交叉/突变部分下,表明精英没有参与.
(当然,可以询问有关幸存者选择部分的相同问题.)
我正在阅读关于遗传编程的幻灯片.在这张幻灯片中,它表示在选择阶段有一些方法,例如Roulette,Rank或Tournament没有任何解释.我试过谷歌,但没有说清楚这些条款.
请告诉我他们之间有什么区别.
genetic-programming roulette-wheel-selection selection genetic-algorithm
我正在尝试使用Scala以不可变的方式编写NSGA2中使用的Deb的快速非支配排序算法(NDS).

但问题似乎比我想象的要困难,所以我在这里简化了制作MWE的问题.
想象一下,一个群体Seq[A],每个A元素decoratedA都有一个列表,其中包含指向其他群体元素的指针Seq[A].
一个函数evalA(a:decoratedA)取linkedA它包含的列表,并减少每个的值.
接下来,我将获取decoratedAPopulation人口A 的子集列表,并对evalA每个人进行调用.我有一个问题,因为在这个子集列表上的元素的每次迭代之间decoratedAPopulation,我需要A用decoratedA新的更新linkedA它包含的新的更新它包含...
更有问题的是,每个人口元素都需要更新'linkedA'来替换链接元素,如果它发生变化......

你可以看到Hum,以这种方式保持所有链表同步似乎很复杂.我提出了另一个解决方案底部,可能需要递归才能在每个EvalA替换元素的新种群后返回.

我怎样才能以不变的方式正确地做到这一点?
以可变的方式编码很容易,但我找不到以不可变的方式做到这一点的好方法,你有路径或想法吗?
object test extends App{
case class A(value:Int) {def decrement()= new A(value - 1)}
case class decoratedA(oneAdecorated:A, listOfLinkedA:Seq[A])
// We start algorithm loop with A element with value = 0
val population = Seq(new A(0), new A(0), new A(8), new A(1))
val decoratedApopulation = Seq(new …Run Code Online (Sandbox Code Playgroud) 昨天我开始探索遗传算法,当我最终得到一些基本理论时,我试图在Python上编写简单的GA,它解决了丢番图方程.我是Python和GA的新手,所以请不要严格判断我的代码.
由于早熟收敛,我不能得到任何结果(有一些无返回点(n-population),population [n] == population [n + i],其中i是任意整数.甚至随机变换元素也无法改变这个,这一代很快就退化了)
GA使用交叉来繁殖,并加权选择父母.
码:
# -*- coding: utf-8 -*-
from random import randint
from copy import deepcopy
from math import floor
import random
class Organism:
#initiate
def __init__(self, alleles, fitness, likelihood):
self.alleles = alleles
self.fitness = fitness
self.likelihood = likelihood
self.result = 0
def __unicode__(self):
return '%s [%s - %s]' % (self.alleles, self.fitness, self.likelihood)
class CDiophantine:
def __init__(self, coefficients, result):
self.coefficients = coefficients
self.result = …Run Code Online (Sandbox Code Playgroud) python artificial-intelligence genetic-programming genetic-algorithm
我需要开发一个课程时间表软件,可以有效地分配时间段和房间.这是一个基于课程的例程,而不是基于后期注册.并且有效地意味着课程根据工作人员的时间偏好分配时间段,并且还需要最小化第1年 - 第2年课程重叠,以便第2年学生可以重新学习他们未能通过的课程.(以及3至4年级的学生) .
现在,起初我认为这将是一个容易的问题,但现在看起来不同了.我看过的大多数论文都使用遗传算法/ PSO /模拟退火或这些类型的算法.我仍然无法将问题解释为GA问题.令我困惑的是为什么几乎没有人建议使用DFS或图形着色算法?
如果使用DFS/graph-coloring,有人可以解释这个场景吗?或者为什么不建议或尝试他们.
algorithm mathematical-optimization combinatorics genetic-algorithm evolutionary-algorithm