Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误CS0246:类型或命名空间名称'AForge';找不到。是否缺少using指令或程序集引用?_C#_Unity3d_Aforge_N Queens_Genetic - Fatal编程技术网

C# 错误CS0246:类型或命名空间名称'AForge';找不到。是否缺少using指令或程序集引用?

C# 错误CS0246:类型或命名空间名称'AForge';找不到。是否缺少using指令或程序集引用?,c#,unity3d,aforge,n-queens,genetic,C#,Unity3d,Aforge,N Queens,Genetic,我试图在Unity3D中用遗传算法制作一个n皇后,但每次都会出现这个错误 代码: 使用UnityEngine; 使用制度; 使用系统集合; 使用巨大的基因; 运用数学知识; 名称空间算法 { 公共类GA:单一行为{ int populationSizeBox; int迭代框; 内特nRainhasBox; int-crossoverRateBox; int Motacoratebox; int paradaBox; //国际selecao; 私有字符串log=“”; 私有整数nRainhas=1

我试图在Unity3D中用遗传算法制作一个n皇后,但每次都会出现这个错误

代码:

使用UnityEngine;
使用制度;
使用系统集合;
使用巨大的基因;
运用数学知识;
名称空间算法
{
公共类GA:单一行为{
int populationSizeBox;
int迭代框;
内特nRainhasBox;
int-crossoverRateBox;
int Motacoratebox;
int paradaBox;
//国际selecao;
私有字符串log=“”;
私有整数nRainhas=14;
私家侦探=14;
私人机构=8000;
私人int NPARDA=100;
私人双交叉高估=0.75;
私有双突变率=0.01;
//用于初始化
无效开始(){
Iniciar();
}
//每帧调用一次更新
无效更新(){
}
国际法院的公开无效(){
配置算法();
int selecao=0;//definimos para o metodo roleta
IsElectionMethodEdeselecao=(selecao==0)?(ISelectionMethod)新轮盘选择()
(selecao==1)?(ISelectionMethod)新精英选择()
(ISelectionMethod)新RankSelection();
AvaliadorDeRainhas avaliador=新的AvaliadorDeRainhas();
种群数量=新种群(nPopulacao,新短排列染色体(nRainhas,nRainhas-1),avaliador,metodoDeSelecao);
populatao.CrossoverRate=交叉高估;
populatao.MutationRate=突变率;
int-iteracao=0;
int pararEm=nParada;
而(伊特拉考<恩加拉科斯)
{
populacao.RunEpoch();
如果(NPARDA>0&&iteracao==pararEm)
{
atualizaDadosPara(iteracao,Populatao);
pararEm+=nParada;
}
if(populacao.BestChromosome.Fitness==nRainhas)
打破
iteracao++;
}
atualizaDadosPara(iteracao,Populatao);
}
阿图利亚扎达多斯帕拉私人空间(伊特拉考国际,人口)
{
log=“Geração:”+iteracao+
“\n Método de Seleção:”+populacao.SelectionMethod+
“\n Avaliação Média:”+populacao.FitnessAvg+
“\n Melhor Avaliação:”+populacao.FitnessMax+
“\n Melhor Indiviíduo:“+populacao.bestchromose.ToString();
打印(日志);
}
私有void configurationalgoritimo(){
尝试
{
nPopulacao=Math.Max(10,Math.Min(100,int.Parse(populationSizeBox));
}
抓住
{
nPopulacao=8;
}
尝试
{
nGeracoes=Math.Max(0,int.Parse(iterationsBox));
}
抓住
{
恩盖拉科斯=100;
}
尝试
{
nRainhas=Math.Max(4,int.Parse(nRainhasBox));
}
抓住
{
nRainhas=8;
}
尝试
{
crossoverRate=Math.Max(0.0,int.Parse(crossoverRateBox));
}
抓住
{
交叉高估=0.75;
}
尝试
{
mutationRate=Math.Max(0.0,int.Parse(motacoratebox));
}
抓住
{
突变率=0.01;
}
尝试
{
nParada=Math.Max(0,int.Parse(paradaBox));
}
抓住
{
NPARDA=0;
}
}
}
}

我重新创建了您案例中出现的问题。 项目的
\Assets
文件夹中缺少
a org.dll
文件

您要查找的DLL应该位于
AForge.NET Framework-x.x.x-(仅限libs)\Release
文件夹中,该文件夹可能是您从AForge.NET网站下载的压缩文件

如果你仍然努力寻找它,考虑重新下载整个包从选择< > >下载库> /代码>:

我还修复了您在那里遇到的一些问题。如果
int.Parse()
已声明为int,则不需要使用
int.Parse()强制转换
int
值。 只需对正在使用的函数执行
Math.Max(x,y)
等操作。
另外,您没有使用来自
a org.Math
名称空间的任何内容。如果是故意的,考虑使用AgFo.Maple删除<代码>;<代码>因为它未被使用。

您的项目似乎遗漏了对
a rge
库的引用。你能在
ProjectName.CSharp
文件夹的References文件夹中找到它吗?Unity3D项目也可能不支持此库。
using UnityEngine;
using System;
using System.Collections;

using AForge.Genetic;
using AForge.Math;

namespace AlgoritmoGenetico
{
public class GA : MonoBehaviour {

    int populationSizeBox;
    int iterationsBox;
    int nRainhasBox;
    int crossoverRateBox;
    int motacaoRateBox;
    int paradaBox;
    //int selecao;

    private String log = "";
    private int nRainhas = 14;
    private int nPopulacao = 14;
    private int nGeracoes = 8000;
    private int nParada = 100;
    private double crossoverRate = 0.75;
    private double mutationRate = 0.01;


    // Use this for initialization
    void Start () {
        Iniciar ();
    }

    // Update is called once per frame
    void Update () {

    }

    public void Iniciar(){
        configuraAlgoritimo();
        int selecao = 0; // definimos para o metodo roleta
        ISelectionMethod metodoDeSelecao = (selecao == 0) ? (ISelectionMethod)new RouletteWheelSelection() :
            (selecao == 1) ? (ISelectionMethod)new EliteSelection() :
                (ISelectionMethod)new RankSelection();

        AvaliadorDeRainhas avaliador = new AvaliadorDeRainhas();
        Population populacao = new Population(nPopulacao, new ShortArrayChromosome(nRainhas, nRainhas - 1), avaliador, metodoDeSelecao);
        populacao.CrossoverRate = crossoverRate;
        populacao.MutationRate = mutationRate;


        int iteracao = 0;
        int pararEm = nParada;
        while (iteracao < nGeracoes)
        {
            populacao.RunEpoch();

            if (nParada > 0 && iteracao == pararEm)
            {
                atualizaDadosPara(iteracao, populacao);

                pararEm += nParada;
            }
            if (populacao.BestChromosome.Fitness == nRainhas)
                break;
            iteracao++;
        }

        atualizaDadosPara(iteracao,populacao);
    }

    private void atualizaDadosPara(int iteracao,Population populacao)
    {
        log = "Geração: " + iteracao +
            "\n Método de Seleção : " + populacao.SelectionMethod +
                "\n Avaliação Média: " + populacao.FitnessAvg +
                "\n Melhor Avaliação : " + populacao.FitnessMax +
                "\n Melhor indivíduo: " + populacao.BestChromosome.ToString();
        print (log);
    }

    private void configuraAlgoritimo(){
        try
        {
            nPopulacao = Math.Max(10, Math.Min(100, int.Parse(populationSizeBox)));
        }
        catch
        {
            nPopulacao = 8;
        }
        try
        {
            nGeracoes = Math.Max(0, int.Parse(iterationsBox));
        }
        catch
        {
            nGeracoes = 100;
        }
        try
        {
            nRainhas = Math.Max(4, int.Parse(nRainhasBox));
        }
        catch
        {
            nRainhas = 8;
        }
        try
        {
            crossoverRate = Math.Max(0.0, int.Parse(crossoverRateBox));
        }
        catch
        {
            crossoverRate = 0.75;
        }
        try
        {
            mutationRate = Math.Max(0.0, int.Parse(motacaoRateBox));
        }
        catch
        {
            mutationRate = 0.01;
        }
        try
        {
            nParada = Math.Max(0, int.Parse(paradaBox));
        }
        catch
        {
            nParada = 0;
        }
    }
}
}