算法-初次尝试-模拟退火

2021-06-03 14:02

阅读:853

标签:with   return   set   --   5*   time   efi   pac   namespace   

我对模拟退火的初步理解,还没深入了解过。这里只是用模拟退火求函数极值。
题目:https://vjudge.net/problem/HDU-2899

#include
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
const ll MAXN=1e18;
const double eps=1e-8;

double y;

double func(double x){
    return 6*x*x*x*x*x*x*x+8*x*x*x*x*x*x+7*x*x*x+5*x*x-y*x;
}
int f[2]={-1,1};

int main(){
    srand(time(NULL));
    int t;
    cin>>t;
    while(t--){
        cin>>y;
        double T=100;
        double delta=0.98;
        double x=50;
        double ans=func(x);
        while(T>eps){
            int f[2]={-1,1};
            double newx=x+f[rand()%2]*T;
            if(newx>=0&&newxnext){
                    ans=next;
                    x=newx;
                }
            }
            T*=delta;
        }
        cout

算法-初次尝试-模拟退火

标签:with   return   set   --   5*   time   efi   pac   namespace   

原文地址:https://www.cnblogs.com/Flowyuan-Foreverworld/p/14674357.html


评论


亲,登录后才可以留言!