91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 10KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-23
  • 語言: Java
  • 標簽: 模擬退后??Java??

資源簡介

本代碼為用Java實現的模擬退火求解旅行商問題,希望對大家有幫助

資源截圖

代碼片段和文件信息

/**
?*?實現Inter.java接口中的函數
?*?不要添加?package語句
?*/
import?java.util.*;
import?java.io.*;

public?class?Annealing?implements?Inter{
/**
?*?不要定義static?的變量
?*/
/*
?初始參數的確定
康立山等人的方法:
初始溫度t0=280;
?在每個溫度下采用固定的迭代次數,Lk=100n,n為城市數;
溫度的衰減系數=0.92,即tk+1=0.92×tk;
算法的停止準則為:當相鄰兩個溫度得到的解無任何變化時算法停止。*/

class?city{
public?String?name;
public?double?x;
public?double?y;
public?city(String?s)
{
String[]?tmp?=?s.split(“\\s+“);
name?=?tmp[0];
x?=?Double.parseDouble(tmp[1]);
y?=?Double.parseDouble(tmp[2]);
}
}


Vector?vec?=?new?Vector();
int?n??=?0;
int?num?=?0;
public?void?getStrategy(String?inputFile){
try{
File?f?=?new?File(inputFile);
FileReader?fr?=?new?FileReader(f);
BufferedReader?br?=?new?BufferedReader(fr);
String?line?=?br.readLine();
n?=?Integer.parseInt(line);
while((line?=?br.readLine())?!=?null)
{
vec.add(new?city(line));
}
}catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}

int?route1[]?=?new?int[n];
int?route2[]?=?new?int[n];

double?t?=?2;
double?best;
int?a[]?=?new?int[n];
for(int?i?=?0;i? {
a[i]?=?i;
}
double?f??=?getValue(a);
best?=?f;
while(t?>=?0.001)
{
for(int?i?=?0;i? {
int?aa[]?=?getPath(a);
double?ff?=?getValue(aa);
if(ff? {
num?++;
f?=?ff;
a?=?aa;
route1?=?a;
if(best?>?f)
{
best?=?f;
route2?=?a;
}
}
if(ff?>=?f?)
{
double?db?=?Math.exp(-1*(ff-f)/t);
if?(db?>?Math.random())
{
num?++;
f?=?ff;
a?=?aa;
route1?=?a;
}
}
}
t?*=?0.95;
}
System.out.print(“(“);
for(int?i?=?0;i? System.out.print(vec.get(route1[i]).name?+?““);
System.out.println(vec.get(route1[n-1]).name?+?“)?“+f);

System.out.print(“(“);
for(int?i?=?0;i? System.out.print(vec.get(route2[i]).name?+?““);
System.out.println(vec.get(route2[n-1]).name?+?“)?“?+?best);

System.out.println(num);
}
public?int[]?getPath(int?a[])
{
int?s?=?a.length;
int?b[]?=?new?int[s];
Random?r?=?new?Random();
int?x?=?r.nextInt(10);
int?y?=??r.nextInt(10);
while(y?==?x)
y?=?r.nextInt(10);
if(x? int?k?=?0;
for(int?i?=?0;i? {
if(i? b[i]?=?a[i];
else?if(i?>?y)
b[i]?=?a[i];
else?{
b[i]?=?a[y?-?k];
k++;
}
}
}
else?{
int?yy?=?yk?=?1;
for(int?i?=?0;i? {
if(i?<=?yy)
{
b[i]?=?a[y];
y?--?;
}
else?if(i?>=?x)
{
b[i]?=?a[s-k];
k?++;
}
else
b[i]?=?a[i];

}
}
if(Arrays.equals(a?b))
return?getPath(a);
else
return?b;
}

public?double?getValue(int?a[])
{
double?length?=?0;
int?k?=?a.length?-?1;
for(int?i?=?0;i? {
double?tmp

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3493??2009-12-15?10:49??模擬退火\Annealing.java

?????文件????????152??2009-12-08?23:34??模擬退火\Inter.java

?????文件????????287??2009-12-15?10:33??模擬退火\Test.java

?????文件??????26112??2010-05-26?20:13??模擬退火\說明.doc

?????目錄??????????0??2010-05-26?20:13??模擬退火

-----------?---------??----------?-----??----

????????????????30044????????????????????5


評論

共有 條評論