C# 错误CS0246:类型或命名空间名称'AForge';找不到。是否缺少using指令或程序集引用?
我试图在Unity3D中用遗传算法制作一个n皇后,但每次都会出现这个错误 代码: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
使用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;
}
}
}
}