• 大小: 8KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: C#
  • 标签: C#  蚁群算法  .NET  

资源简介

这是利用C#开发的蚁群算法求解TSP问题,算法已经成功的实现,是蚁群算法的初学者很好的资料

资源截图

代码片段和文件信息

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    ColdRolling cr = new ColdRolling();//定义对象
    string cn = ConfigurationManager.ConnectionStrings[“OraConnString“].ToString();//定义数据库连接字符串

    protected void Page_Load(object sender EventArgs e)
    {

    }
    protected void opt_Click(object sender EventArgs e)
    {
        /*-------------------------------------------第一步变量初始化--------------------------------------------------*/
        int n = 31;//定义城市个数
        int m = 31;//定义蚂蚁个数
        //double[] coordinate = new double[31 2];//定义一个N个城市的坐标数组
        int NC = 0;
        int NC_max =10;//定义一个最大迭代的次数
        int alpha = 1;//信息启发式因子,表征信息素重要程度的参数
        int beta = 5;//期望启发式因子,表征启发式因子重要程度的参数
        double Rho = 0.1;//信息素蒸发的参数
        int Q = 100;//信息素增加强度系数
        int[] Ant = new int[m];
        double[] Tau = new double[n n];//定义信息素矩阵
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                Tau[i j] = 1;
            }
        }
        int[][] Tabu;//定义禁忌表,存储并记录路径的生成
        int[][] R_best;//各代最佳路线
        R_best = new int[NC_max][];
        for (int i = 0; i < NC_max; i++)
        {
            R_best[i] = new int[n];
        }
        double[] L_best = new double[NC_max 1];//各代最佳路线的长度
        double[] L_aver = new double[NC_max 1];//各代最佳路线的平均长度
        double[] coordinate = new double[n + 1 2];
        string select = “select * from \“tsp31\““;
        DataSet ds = cr.GetDataSet(select “distance“);
        int k = 1;
        foreach (DataRow myrow in ds.Tables[“distance“].Rows)
        {
            coordinate[k 0] = Convert.ToDouble(myrow[“COL001“]);
            coordinate[k 1] = Convert.ToDouble(myrow[“COL002“]);
            k++;
        }

        /*--------------------------------------------------大循环----------------------------------------------------*/
        while (NC < NC_max)
        {
            /*-----------------------第二步将m只蚂蚁随机放在n个城市中的m个---------------------------------*/

            int M = 32;                     
            int A = 13;
            int C = 5;
            int[] S = new int[M + 1];
            S[0] = 1;
            Ant[0] = S[0];
            Tabu = new int[m][];
            for (int i = 0; i < m; i++)
            {
                Tabu[i] = new int[n];
            }
            Tabu[0][0] = Ant[0];
            for (int i = 0; i < 10; i++)
            {
                S[i + 1] = (A * S[i] + C) % M;
                Ant[i + 1] = S[i + 1];
                Tabu[i + 1][0] = Ant[i + 1];
            }
            S[11] = 0;
            for (int i = 11; i < 31; i++)
            {
                S[i + 1] = (A * S[i] 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1498  2009-06-04 15:20  ACA\ACA.sln

    ..A..H.      8704  2009-06-07 18:23  ACA\ACA.suo

     文件        683  2009-06-04 15:20  ACA\ant.aspx

     文件      13561  2009-04-06 17:04  ACA\ant.aspx.cs

     文件        194  2009-03-16 15:20  ACA\App_Code\AdjustStructs.cs

     文件       1216  2008-05-20 20:35  ACA\App_Code\ColdRolling.cs

     文件       1858  2009-03-18 14:47  ACA\Web.config

     目录          0  2009-06-09 22:08  ACA\App_Code

     目录          0  2009-06-09 22:08  ACA\App_Data

     目录          0  2009-06-09 22:08  ACA\Bin

     目录          0  2009-06-09 22:08  ACA

----------- ---------  ---------- -----  ----

                27714                    11


评论

共有 条评论