📄 模拟退火.cpp
字号:
#include <iostream>
#include "Vector.h"
#include <cstdlib>
#include <ctime>
#include <math.h>
#include <cmath>
#include<ctime>
using namespace std;
void tuihuo(){
double df=0;
double T=280.0; //初始温度
int u=0;
int v=0;
while(T>0.001){ //终止条件
for(int i=0;i<100*NUM;i++){
int u=0;
int v=0;
while(abs(u-v)<3)
{
u=rand()%NUM; //随机产生两个变量 看vec(k1)&vec(k2)ETC.是否需要交换
v=rand()%NUM;
}
if(v<u){int t; t=u;u=v;v=t;}
df=(d(vec[u],vec[v-1])+d(vec[u+1],vec[v]))-(d(vec[u],vec[u+1])+d(vec[v-1],vec[v])); //deta f 值
double ra=(double)rand()/RAND_MAX;
double e=exp(-df/T);
if(df<0||e>ra)
{ //肯定交换
change(u,v);
}
}
print();
T=T*0.96;
}
}
int main(){
file();
tuihuo();
print();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -