نمایش نتایج 1 تا 2 از 2

نام تاپیک: سورس کد کلونی مورچگان

  1. #1

    سورس کد کلونی مورچگان

    دوستان سلام. کسی از دوستان سورس کد از روش پیاده سازی کلونی مورچگان یا سورس کدی از هز نوع الگوریتم های پیشرفته دیگه داره؟
    ممنون میشم کسی که سورس پیاده سازی این الگوریتم ها رو به زبا سی شارپ داره اینجا قرار بده.
    توی اینترنت که هرچی گشتم سورس کدی پیدا نکردم

  2. #2
    کاربر دائمی آواتار یونس ابراهیمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    کوهدشت
    سن
    42
    پست
    195

    نقل قول: سورس کد کلونی مورچگان

    using System;using System.Collections.Generic;
    using System.Linq;


    namespace AntColony
    {
    class Ant
    {
    private int _numCities;
    private int[][] _distances;
    private int[] _path;


    public Ant(int numCities, int[][] distances)
    {
    _numCities = numCities;
    _distances = distances;
    _path = new int[_numCities];
    }


    public int[] FindPath(int startCity)
    {
    // Initialize ant's path
    for (int i = 0; i < _numCities; i++)
    {
    _path[i] = -1;
    }
    _path[0] = startCity;


    // Traverse the cities
    for (int i = 1; i < _numCities; i++)
    {
    int nextCity = SelectNextCity(_path, i);
    _path[i] = nextCity;
    }


    return _path;
    }


    private int SelectNextCity(int[] path, int currentIndex)
    {
    double[] probabilities = new double[_numCities];
    double sum = 0;


    // Calculate the probabilities for each city
    for (int i = 0; i < _numCities; i++)
    {
    if (path.Contains(i))
    {
    probabilities[i] = 0;
    }
    else
    {
    double pheromoneLevel = Math.Pow(1.0 / _distances[path[currentIndex - 1]][i], 2);
    probabilities[i] = pheromoneLevel;
    sum += pheromoneLevel;
    }
    }


    // Select the next city based on the probabilities
    double rnd = new Random().NextDouble() * sum;
    sum = 0;
    for (int i = 0; i < _numCities; i++)
    {
    if (!path.Contains(i))
    {
    sum += probabilities[i];
    if (sum >= rnd)
    {
    return i;
    }
    }
    }


    // If no city was selected, select a random one
    return Enumerable.Range(0, _numCities).Where(i => !path.Contains(i)).First();
    }
    }


    class AntColony
    {
    private int _numAnts;
    private int _numCities;
    private int[][] _distances;
    private double[][] _pheromones;
    private int[] _bestPath;
    private int _bestPathLength;


    public AntColony(int numAnts, int numCities, int[][] distances)
    {
    _numAnts = numAnts;
    _numCities = numCities;
    _distances = distances;


    // Create the ant population
    _ants = new Ant[_numAnts];
    for (int i = 0; i < _numAnts; i++)
    {
    _ants[i] = new Ant(_numCities);
    }


    // Create the pheromone matrix
    _pheromones = new double[_numCities][];
    for (int i = 0; i < _numCities; i++)
    {
    _pheromones[i] = new double[_numCities];
    }


    // Initialize the pheromone matrix with some small values
    for (int i = 0; i < _numCities; i++)
    {
    for (int j = 0; j < _numCities; j++)
    {
    _pheromones[i][j] = 0.01;
    }
    }


    // Initialize the best tour and its length
    _bestTour = new int[_numCities];
    _bestTourLength = double.MaxValue;
    }
    }
    }

تاپیک های مشابه

  1. حرفه ای: دانلود سورس تابلوی تبلیغاتی Led و سورس office 2007
    نوشته شده توسط farboodj1375 در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: شنبه 28 خرداد 1390, 11:12 صبح
  2. پاسخ: 9
    آخرین پست: یک شنبه 01 خرداد 1390, 19:11 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •