亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tsp.txt

?? C#語言編寫的基于遺傳算法的旅行銷售員問題的源程序
?? TXT
字號:
目前,我用C#語言編寫的基于遺傳算法的旅行銷售員問題的程序再幾天就要完成了,部分代碼如下。
namespace TSP
{
//數(shù)據(jù)文件格式:
//第一行有兩個數(shù)據(jù):矩陣行數(shù) 矩陣列數(shù)
//接下來的行的數(shù)據(jù):行 列 該行該列的元素值
//注意數(shù)據(jù)與數(shù)據(jù)之間是用空格隔開的,沒有給出的矩陣的某些位置的值用0來代替
using System;
using System.IO;
class TestClass
{
private static Floyd test2=new Floyd();
public static void Test1()
{
double [,]Mat;
Mat=LSMat.LoadDoubleDataFile(@"d:\c#\data01.txt");
//顯示Mat
for(int i=0;i<=Mat.GetUpperBound(0);i++)
{
for(int j=0;j<=Mat.GetUpperBound(1);j++)
Console.Write("{0}\t",Mat[i,j]);
Console.Write("\n");
}
LSMat.SaveDataFile(@"d:\c#\datas01.txt",Mat);
}
public static void Test2(string DataFileName)
{
test2.MinFloyd(DataFileName);
Console.WriteLine("----------- 輸出結果 ----------");
for(int i=0;i for(int j=0;j {
Console.Write("{0}:\t",test2.GetDistance(i,j));
Console.WriteLine(test2.GetPath(i,j));
}
Console.WriteLine("------------- 結束 ------------");
}
public static void Main(string[] args)
{
//Test1(); //運行LSMat類的測試函數(shù)
//Test2(@"d:\c#\data01.txt");
int []t;
t=RandNumber.RandDifferInt(90);
for(int i=0;i {
Console.Write("{0} ",t[i]);
if(i%10==9) Console.Write("\n");
}
}
}
/* 下面是TSP問題的遺傳算法實現(xiàn)類
* */
class Ga
{
/*
private int N; //群體規(guī)模
private int Length; //個體長度
private double Pc; //交叉概率
private double Pm; //變異概率
private int MaxGene; //最大迭代代數(shù)
private int []MinIndividual; //當前代的最好個體指針
private double MinValue; //到當前代至最好個體的適應度值
private double [,]Buf1;
*/
}
class RandNumber
{
// 返回low與high之間的number個隨機整數(shù)(包括low和high)
public static int[] RandInt(int low,int high,int number)
{
Random rr=new Random();
int []randvec;
randvec=new int[number];
for(int i=0;i randvec[i]=rr.Next()%(high-low+1)+low;
return randvec;
}
// 返回low與high之間的number(number小于high-low+1)個不同的隨機整數(shù)(包括low和high)
public static int[] RandDifferInt(int low,int high,int number)
{
if(number>high-low+1) number=high-low+1;
Random rr=new Random();
int []randvec;
randvec=new int[number];
randvec[0]=rr.Next()%(high-low+1)+low;
int randi; //存儲中間過程產(chǎn)生的隨機整數(shù)
bool IsDiffer;//用于判斷新產(chǎn)生的隨機整數(shù)是否與以前產(chǎn)生的相同,若不同為真,否則為假
for(int i=1;i {
while(true)
{
randi=rr.Next()%(high-low+1)+low;
IsDiffer=true; //設定為真
for(int j=0;j {
if(randi==randvec[j])
{
IsDiffer=false; //相同為假
break;
}
}
if(IsDiffer)
{
randvec[i]=randi;
break;
}
}
}
return randvec;
}
// 返回low與high之間的high-low+1個不同的隨機整數(shù)(包括low和high)
public static int[] RandDifferInt(int low,int high)
{
return RandDifferInt(low,high,high-low+1);
}
// 返回0與high之間的high+1個不同的隨機整數(shù)(包括0和high)
public static int[] RandDifferInt(int high)
{
return RandDifferInt(0,high,high+1);
}
}
/* 下面是Floyd算法類
* */
class Floyd
{
private double [,]Distance; //圖的距離矩陣
private int [,]Path; //圖的最短路徑的緊前頂點矩陣
public int GetDotN() //獲得頂點數(shù)
{
return Path.GetLength(0);
}
public double GetDistance(int i,int j) //獲得頂點i到頂點j的最短距離
{
return Distance[i,j];
}
public string GetPath(int ni,int nj)
{
int []pathReverse;
pathReverse=new int[Path.GetLength(0)];
pathReverse[0]=Path[ni,nj];
int k=0;
while(pathReverse[k]!=ni)
{
k++;
pathReverse[k]=Path[ni,pathReverse[k-1]];
}
string path=pathReverse[k].ToString();
string str1="-->";
for(int i=k-1;i>=0;i--)
{
path+=(str1+pathReverse[i].ToString());
}
path+=(str1+nj.ToString());
return path;
}
public void MinFloyd(string DataFileName)
{
double [,]CostMat;
CostMat=LSMat.LoadDoubleDataFile(DataFileName);
MinFloyd(CostMat);
}
//Floyd算法的實現(xiàn)
//CostMat是圖的權值矩陣
public void MinFloyd(double [,]CostMat)
{
int nn; 
nn=CostMat.GetLength(0); //獲得圖的頂點個數(shù)
for(int i=0;i for(int j=0;j {
if(CostMat[i,j]==0)
CostMat[i,j]=10e+100;
}
Distance=new double[nn,nn];
Path=new int[nn,nn];
//初始化Path,Distance
for(int i=0;i {
for(int j=0;j {
Path[i,j]=i;
Distance[i,j]=CostMat[i,j];
}
Distance[i,i]=0.0;
}
for(int k=0;k for(int i=0;i for(int j=0;j {
double a1,a2;
a1=Distance[i,j];
a2=Distance[i,k]+Distance[k,j];
if(a1>a2)
{
Distance[i,j]=a2;
Path[i,j]=Path[k,j];
}
}
}
}
class LSMat
{
//從數(shù)據(jù)文件中獲取二維矩陣
public static double[,] LoadDoubleDataFile(string DataFileName)
{
FileStream fs; //文件指針
fs=File.Open(DataFileName,FileMode.Open,FileAccess.Read); //以只讀方式打開數(shù)據(jù)文件
StreamReader r=new StreamReader(fs);//創(chuàng)建讀入流
string str;
str=r.ReadLine(); //讀入數(shù)據(jù)文件的第一行
double []rowcolv; //定義一維數(shù)組
rowcolv=StringToDouble(str); //把特定字符串轉換為一維數(shù)組
double [,]Mat; //定義二維數(shù)組
Mat=new double[(int)rowcolv[0],(int)rowcolv[1]]; //創(chuàng)建二維數(shù)組Mat
while(r.Peek()>-1) //當?shù)竭_數(shù)據(jù)文件尾時結束循環(huán)
{
str=r.ReadLine(); //讀入數(shù)據(jù)文件當前行字符串
rowcolv=StringToDouble(str);//把特定字符串轉換為一維數(shù)組
Mat[(int)rowcolv[0],(int)rowcolv[1]]=rowcolv[2]; //為二維數(shù)組賦值
}
fs.Close(); //關閉數(shù)據(jù)文件指針
return Mat; //返回二維數(shù)組
}
//從數(shù)據(jù)文件中獲取二維矩陣
public static int[,] LoadIntleDataFile(string DataFileName)
{
FileStream fs; //文件指針
fs=File.Open(DataFileName,FileMode.Open,FileAccess.Read); //以只讀方式打開數(shù)據(jù)文件
StreamReader r=new StreamReader(fs);//創(chuàng)建讀入流
string str;
str=r.ReadLine(); //讀入數(shù)據(jù)文件的第一行
int []rowcolv; //定義一維數(shù)組
rowcolv=StringToInt(str); //把特定字符串轉換為一維數(shù)組
int [,]Mat; //定義二維數(shù)組
Mat=new int[(int)rowcolv[0],(int)rowcolv[1]]; //創(chuàng)建二維數(shù)組Mat
while(r.Peek()>-1) //當?shù)竭_數(shù)據(jù)文件尾時結束循環(huán)
{
str=r.ReadLine(); //讀入數(shù)據(jù)文件當前行字符串
rowcolv=StringToInt(str);//把特定字符串轉換為一維數(shù)組
Mat[(int)rowcolv[0],(int)rowcolv[1]]=rowcolv[2]; //為二維數(shù)組賦值
}
fs.Close(); //關閉數(shù)據(jù)文件指針
return Mat; //返回二維數(shù)組
}
//把雙精度型數(shù)據(jù)矩陣存入指定文件中
public static void SaveDataFile(string DataFileName,double [,]Mat)
{
FileStream fs;//文件指針
fs=File.Open(DataFileName,FileMode.OpenOrCreate,FileAccess.Write);//創(chuàng)建并打開文件指針
StreamWriter w=new StreamWriter(fs);//創(chuàng)建寫入文件流
string str;//定義字符串
string str2=" ";//創(chuàng)建一個空格字符串
str=Mat.GetLength(0).ToString()+str2+Mat.GetLength(1);// 行和列字符串
w.WriteLine(str);//寫入該字符串
//把每個元素寫入文件
for(int i=Mat.GetLowerBound(0);i<=Mat.GetUpperBound(0);i++)
for(int j=Mat.GetLowerBound(1);j<=Mat.GetUpperBound(1);j++)
{
str=i.ToString()+str2+j.ToString()+str2+Mat[i,j].ToString();
w.WriteLine(str);
}
w.Close();//關閉寫文件流
}
//把整型數(shù)據(jù)矩陣存入指定文件中
public static void SaveDataFile(string DataFileName,int [,]Mat)
{
FileStream fs;//文件指針
fs=File.Open(DataFileName,FileMode.OpenOrCreate,FileAccess.Write);//創(chuàng)建并打開文件指針
StreamWriter w=new StreamWriter(fs);//創(chuàng)建寫入文件流
string str;//定義字符串
string str2=" ";//創(chuàng)建一個空格字符串
str=Mat.GetLength(0).ToString()+str2+Mat.GetLength(1);// 行和列字符串
w.WriteLine(str);//寫入該字符串
//把每個元素寫入文件
for(int i=Mat.GetLowerBound(0);i<=Mat.GetUpperBound(0);i++)
for(int j=Mat.GetLowerBound(1);j<=Mat.GetUpperBound(1);j++)
{
str=i.ToString()+str2+j.ToString()+str2+Mat[i,j].ToString();
w.WriteLine(str);
}
w.Close();//關閉寫文件流
}
private static double[] StringToDouble(string str)
{
double []Mat; //定義一維數(shù)組
Mat=new Double[3]; //創(chuàng)建一維數(shù)組
string str1=null; //創(chuàng)建空字符串
int index1=0; //創(chuàng)建一個整型數(shù)并賦0
if(str[0]==' ') //如果字符串的首字符為空
{
//本循環(huán)目的是找到第一個不為“空格”的字符的索引,并把它賦給index1
for(int i=1;i {
if(str[i]!=' ')
{
index1=i;
break;
}
}

}
//下面循環(huán)的目的是以空格為分界符找出所有子字符串,同時把這些子字符串轉換成雙精度浮點數(shù)
int k=0;//標志著目前的子字符串的序號,從0開始記數(shù)
for(int i=index1;i {
if(str[i]==' '||i>=(str.Length-1)) //如果第i個字符為“空格”或者已到字符串結尾
{
//如果已到字符串結尾并且該字符不為“空格”,則把最后的字符加到最后的子字符串中
if(i>=(str.Length-1)&&(str[i]!=' ')) 
str1+=str[i];
Mat[k]=double.Parse(str1);//轉換字符串為雙精度浮點數(shù)
if(i<(str.Length-1)) //如果未到字符串結尾
{
k++; //記數(shù)到下一個子字符串
str1=str1.Remove(0,str1.Length); //清空子字符串
//下面循環(huán)的目的是從當前子字符串結尾的“空格”開始直至找到下一個非“空格”字符的索引
//或者到字符串結尾(我們知道兩數(shù)據(jù)間可以有多個空格)
while(true)
{
if(str[i+1]!=' ') break;
i++;
if(i>=(str.Length-1)) break;
}
}
}
else
{
str1+=str[i];//繼續(xù)加入非“空格”字符到當前子字符串
}
}
return Mat; //返回字符串對應的一維數(shù)組
}
private static int[] StringToInt(string str)
{
int []Mat; //定義一維數(shù)組
Mat=new int[3]; //創(chuàng)建一維數(shù)組
string str1=null; //創(chuàng)建空字符串
int index1=0; //創(chuàng)建一個整型數(shù)并賦0
if(str[0]==' ') //如果字符串的首字符為空
{
//本循環(huán)目的是找到第一個不為“空格”的字符的索引,并把它賦給index1
for(int i=1;i {
if(str[i]!=' ')
{
index1=i;
break;
}
}

}
//下面循環(huán)的目的是以空格為分界符找出所有子字符串,同時把這些子字符串轉換成雙精度浮點數(shù)
int k=0;//標志著目前的子字符串的序號,從0開始記數(shù)
for(int i=index1;i {
if(str[i]==' '||i>=(str.Length-1)) //如果第i個字符為“空格”或者已到字符串結尾
{
//如果已到字符串結尾并且該字符不為“空格”,則把最后的字符加到最后的子字符串中
if(i>=(str.Length-1)&&(str[i]!=' ')) 
str1+=str[i];
Mat[k]=int.Parse(str1);//轉換字符串為雙精度浮點數(shù)
if(i<(str.Length-1)) //如果未到字符串結尾
{
k++; //記數(shù)到下一個子字符串
str1=str1.Remove(0,str1.Length); //清空子字符串
//下面循環(huán)的目的是從當前子字符串結尾的“空格”開始直至找到下一個非“空格”字符的索引
//或者到字符串結尾(我們知道兩數(shù)據(jù)間可以有多個空格)
while(true)
{
if(str[i+1]!=' ') break;
i++;
if(i>=(str.Length-1)) break;
}
}
}
else
{
str1+=str[i];//繼續(xù)加入非“空格”字符到當前子字符串
}
}
return Mat; //返回字符串對應的一維數(shù)組
}
}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美乱妇23p| 综合色天天鬼久久鬼色| 欧美—级在线免费片| 亚洲综合一区在线| 久久国产尿小便嘘嘘尿| 97成人超碰视| 26uuu国产一区二区三区| 亚洲蜜桃精久久久久久久| 美女精品一区二区| 欧洲日韩一区二区三区| 久久久亚洲高清| 午夜精品一区二区三区电影天堂 | 欧美大片一区二区三区| 亚洲乱码国产乱码精品精可以看| 人人爽香蕉精品| 91久久精品一区二区| 久久精品免费在线观看| 青娱乐精品在线视频| 在线免费观看一区| 日韩理论片一区二区| 国产一区二区91| 欧美一区二区在线免费观看| 夜夜嗨av一区二区三区网页| 成人国产精品免费网站| 久久综合五月天婷婷伊人| 青椒成人免费视频| 欧美日韩免费高清一区色橹橹| 中文字幕一区二区三区精华液 | 一区二区三区在线免费视频| 国产九九视频一区二区三区| 91精品国产欧美日韩| 亚洲成人手机在线| 欧美视频三区在线播放| 依依成人精品视频| 在线精品视频小说1| 亚洲精品视频在线观看网站| 91蜜桃在线免费视频| 国产精品不卡一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 777a∨成人精品桃花网| 视频在线观看91| 7777女厕盗摄久久久| 日本视频在线一区| 欧美成人一区二区| 国产一区二区网址| 亚洲国产高清不卡| 97久久精品人人做人人爽50路| 亚洲欧洲精品天堂一级| 色香蕉成人二区免费| 亚洲亚洲精品在线观看| 欧美妇女性影城| 全国精品久久少妇| 欧美精品一区二区久久婷婷| 国产精品资源在线看| 欧美激情中文字幕一区二区| 91丨porny丨在线| 亚洲国产wwwccc36天堂| 日韩欧美在线综合网| 国产呦萝稀缺另类资源| 中文字幕在线播放不卡一区| 日本韩国欧美在线| 日韩和欧美的一区| 国产日韩欧美综合一区| 成人av免费在线播放| 亚洲福利视频一区二区| 欧美本精品男人aⅴ天堂| 成人综合激情网| 亚洲成在人线免费| 精品成人在线观看| 色偷偷久久一区二区三区| 日韩国产欧美三级| 国产精品伦一区| 在线不卡a资源高清| 国产精品888| 亚洲午夜精品久久久久久久久| 日韩女优电影在线观看| 91在线精品一区二区三区| 日韩不卡一二三区| 亚洲欧洲日韩av| 欧美第一区第二区| 日本高清视频一区二区| 日韩电影在线看| 国产精品久久久久婷婷二区次| 欧美日韩大陆在线| 成人伦理片在线| 久久精品国产一区二区三区免费看| 国产精品理论在线观看| 欧美一区三区四区| 在线国产电影不卡| 国产成+人+日韩+欧美+亚洲| 日韩福利电影在线| 亚洲综合色视频| 国产精品免费免费| wwww国产精品欧美| 欧美精品精品一区| 在线亚洲人成电影网站色www| 久草热8精品视频在线观看| 亚洲午夜激情av| 国产精品久久久久久亚洲毛片 | 91免费版pro下载短视频| 国产一区二区三区在线观看免费 | 色婷婷精品久久二区二区蜜臀av| 久久精品国产久精国产爱| 亚洲一卡二卡三卡四卡无卡久久 | 97se狠狠狠综合亚洲狠狠| 狠狠色狠狠色合久久伊人| 天天综合天天综合色| 亚洲精品第1页| 亚洲柠檬福利资源导航| 国产精品国产三级国产aⅴ入口 | 7777精品伊人久久久大香线蕉的| 一本久久精品一区二区| 成人性视频网站| 国产一区二区剧情av在线| 蜜臀久久久99精品久久久久久| 一区二区在线观看视频在线观看| 中文字幕+乱码+中文字幕一区| 精品国产不卡一区二区三区| 欧美一区二区在线免费观看| 欧美精品v日韩精品v韩国精品v| 91电影在线观看| 91久久免费观看| 欧美性猛交一区二区三区精品| 日本精品一级二级| 日本乱人伦一区| 欧美揉bbbbb揉bbbbb| 欧美日韩不卡一区| 日韩一区二区三区三四区视频在线观看| 欧美午夜宅男影院| 欧美精品一二三四| 日韩欧美视频一区| 久久久美女艺术照精彩视频福利播放 | 欧美亚洲国产bt| 欧美日韩精品一区二区在线播放| 欧美日韩日日夜夜| 欧美喷水一区二区| 精品国产百合女同互慰| 国产欧美一区二区三区在线看蜜臀 | 国产精品久久三区| 一区二区三区小说| 日本va欧美va瓶| 国产精品小仙女| 色婷婷综合久久久久中文 | 成人污污视频在线观看| 成人国产精品免费观看视频| 色婷婷久久99综合精品jk白丝| 欧美色图12p| 欧美mv和日韩mv国产网站| 欧美国产日韩亚洲一区| 一区二区三区在线不卡| 蜜臀av国产精品久久久久| 国产69精品久久777的优势| 色婷婷久久一区二区三区麻豆| 6080国产精品一区二区| 中文字幕欧美区| 五月综合激情婷婷六月色窝| 国产一区二区三区在线看麻豆| 99精品一区二区| 日韩一区二区不卡| 国产精品色噜噜| 日韩二区三区四区| jlzzjlzz亚洲日本少妇| 日韩区在线观看| 亚洲天堂中文字幕| 精品一区二区三区视频在线观看 | 久久国产剧场电影| 99精品在线免费| 欧美大片一区二区三区| 亚洲卡通动漫在线| 国产精品主播直播| 欧美二区在线观看| 日韩毛片在线免费观看| 九九精品视频在线看| 欧美三级韩国三级日本三斤| 国产女人18水真多18精品一级做 | 欧洲精品一区二区| 久久精品夜夜夜夜久久| 三级一区在线视频先锋| 99热99精品| 久久综合中文字幕| 欧美a级理论片| 在线观看91视频| 国产精品美女视频| 国产美女精品一区二区三区| 欧美日韩国产bt| 亚洲精选视频在线| 成人av综合在线| 国产日韩欧美综合在线| 日本三级韩国三级欧美三级| 在线日韩av片| 亚洲欧美日韩一区二区 | 久久亚洲捆绑美女| 久久99精品久久久久久久久久久久| 欧美专区日韩专区| 婷婷国产v国产偷v亚洲高清| 色综合久久久久久久久久久| 亚洲国产电影在线观看| 国产黑丝在线一区二区三区| 精品裸体舞一区二区三区| 蜜臀av国产精品久久久久|