模拟退火算法 POJ 2420

《无人驾驶车辆模型预测控制》(第二版)第四章详细学习——算法部分 根据代码进行的“MPC跟踪直线和圆算法”的详细推导学习记录。 阅读详情

【前言】先说一说什么是模拟退火,感觉很多地方都讲得挺神秘的,其实非常简单。

【模拟退火算法】转自点击打开链接

1. 模拟退火算法认识

 

   爬山算法也是一个用来求解最优化问题的算法,每次都向着当前上升最快的方向往上爬,但是初始化不同可能

   会得到不同的局部最优值,模拟退火算法就可能跳出这种局部最优解的限制。模拟退火算法是模拟热力学系统

   中的退火过程。在退火过程中是将目标函数作为能量函数。大致过程如下

 

   初始高温 => 温度缓慢下降=> 终止在低温 (这时能量函数达到最小,目标函数最小)

 

   在热力学中的退火过程大致是变温物体缓慢降温而达到分子之间能量最低的状态。设热力学系统S中有有限个且

   离散的n个状态,状态的能量为,在温度下,经过一段时间达到热平衡,这时处于状态的概率为

 

                   

 

   模拟退火算法也是贪心算法,但是在其过程中引入了随机因素,以一定的概率接受一个比当前解要差的解,并且

   这个概率随着时间的推移而逐渐降低。

2. 模拟退火算法描述

 

   若,即移动后得到更优的解,那么总是接受改移动。

   若,即移动后得到更差的解,则以一定的概率接受该移动,并且这个概率随时间推移

   逐渐降低。这个概率表示为

 

   

 

   由于是退火过程,所以dE < 0,这个公式说明了温度越高出现一次能量差为dE的降温概率就越大,温度越低,

   出现降温的概率就越小,由于dE总是小于0,所以P(dE)取值在0到1之间。伪码如下


【例题 POJ 2420】点击打开链接

【题意】给n个点,找出一个点,使这个点到其他所有点的距离之和最小,也就是求费马点。

【PS】讲道理,并不是非常信任这种做法QAQ。

【AC代码】

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define N     1005
#define INF   0x3fffffff
#define eps   1e-8 //搜索条件阀值
#define delta 0.98 //温度下降速度
#define T     100  //初始温度
using namespace std;
int dir[4][2]={{0,1},{0,-1},{-1,0},{1,0}};
struct point{
    double x,y;
    point(){}
    point(double x,double y):x(x),y(y){}
}P[N];
double dis(point a,point b)
{
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double getSum(point p[],int n,point t)
{
    double sum=0;
    while(n--) sum+=dis(p[n],t);
    return sum;
}
//模拟退火
double solve(point p[],int n)
{
    point z;
    point  s   = p[0]; //随机初始化一个点开始搜索
    double t   = T;    //初始化温度
    double ans = INF;  //初始答案
    while(t>eps)
    {
        bool fuck = 1;
        while(fuck)
        {
            fuck = 0;
            for(int i=0; i<4; i++)
            {
                z.x = s.x+dir[i][0]*t;
                z.y = s.y+dir[i][1]*t;
                double tmp = getSum(p,n,z);
                if(ans>tmp)
                {
                    ans = tmp;
                    s   = z;
                    fuck= 1;
                }
            }
        }
        t*=delta;
    }
    return ans;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0; i<n; i++)
        {
            scanf("%lf%lf",&P[i].x,&P[i].y);
        }
        printf("%.0f\n",solve(P,n));
    }
    return 0;
}


抓包网络调试工具 reqable抓包教程 如果CA根证书未安装成功,网络图标是黄色,点击盾牌图标可以进入CA根证书安装界面,详细步骤请阅读。在API调试中,获取流量是第一步也是最基本的操作,这里讲解下如何使用Reqable获取流量,通俗地讲就是抓包。我们可以选择一个图片请求,双击打开详情面板,能够看到该请求的详细信息。如果系统代理未设置,网络图标是黄色,点击网络图标可以自动设置系统代理。此域名的结构树,可以查看该域名下所有请求的目录结构,点击选择可以查看该请求的详情。首先,需要启用Reqable的调试功能,点击最右上角的。打开浏览器,输入地址。 阅读详情

相关推荐

科研作图不发愁:手把手教你用PyMOL给蛋白-DNA互作图‘美颜’(附完整配色与标注方案)

本文详细介绍了如何使用PyMOL对蛋白-DNA互作结构图进行专业美化,包括从PDB文件加载、结构展示与标注、互作位点突出显示到高质量渲染输出的完整流程。通过具体案例(PDB ID:8SSS)演示了锌指结构域区分、关键残基标注和互作距离测量等实用技巧,帮助科研人员制作可直接用于期刊投稿的高质量示意图。

weixin_42523792的博客 552

模拟退火入门——POJ 2420

题目链接: POJ 2420 题目大意: 给出平面上N(&lt;=100)个点,你需要找到一个这样的点,使得这个点到N个点的距离之和尽可能小。输出这个最小的距离和(四舍五入到最近的整数) 解题思路: 如果下午不是马原课无聊,学习了一下模拟退火的思想,大概看到这题也没太多想法,不过是真的神奇啊,先放上我觉得讲得很简单的模拟退火算法的一个讲解 大白话解析模拟退火算法 看完之后,总结就是,每次把下一个状...

永不止步的博客 702

深入解析 ReDoc:从零构建高性能 API 文档的终极指南

ReDoc 是一个强大的开源工具,用于将 OpenAPI 规范转换为高质量、响应式的 API 文档。本文详细介绍了如何使用 ReDoc 构建和自定义 API 文档,包括如何编写支持 OpenAPI 的 API 注解、配置 HTML 页面以加载文档,以及如何利用 ReDoc 的高级功能进行定制。通过实例代码,您将学会如何灵活地展示 API 文档,提升用户体验。无论是初学者还是经验丰富的开发者,都能从本文中获得实用的技巧与方案,帮助快速搭建符合需求的 API 文档界面。

楠搏万的博客 4626

poj 2420 A Star not a Tree?

题意:给出平面上N(<=100)个点,你需要找到一个这样的点,使得这个点到N个点的距离之和尽可能小。输出这个最小的距离和(四舍五入到最近的整数)思路:三分求 三分算法解决凸形或者凹形函数的极值; 二分解决具有单调性的函数的极值; 如下图 mid = (l+r) / 2; midmid = (r+mid) / 2; 求极大值 if(cal(mid)>cal(midmid)) r= midmid

wuhulala的休息室 1279

HybridCLR热更新打包报错全解析:从原理到实战解决方案

热更新技术是现代游戏和应用开发中实现动态内容交付与Bug修复的核心机制,它允许开发者在无需重新发布完整应用的情况下更新代码逻辑。其原理通常涉及在运行时加载并执行新的代码模块,这要求框架在底层实现安全的代码隔离、内存管理与元数据桥接。在Unity生态中,HybridCLR作为基于IL2CPP的高性能热更新解决方案,通过补充元数据和AOT泛型引用技术,实现了对C#代码的原生级热更支持,显著提升了开发迭代效率与线上问题修复能力。然而,在实际的工程实践中,尤其是在面向Android、iOS等多平台打包构建时,开发者

weixin_29017445的博客 309

头歌平台 操作系统课堂练习2.3:系统调用

使用 gdb 调试内核,跟踪到 main 函数入口的方法与之前实训一样。系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?本关卡使用版本 1 内核进行分析,版本 1 内核文件存放在。为了完成本关任务,你需要:跟踪系统调用的发生。此时,系统调用号存放在寄存器 eax 中。

lazbuyaotoutu的博客 2万+

模拟退火 (poj 2420, poj 2069)

模拟退火基本知识: 其伪代码如下: Let s = s0 For k = 0 through k_max (exclusive): T := temperature(k / k_max) Pick a random neighbour, s_new := neighbour(s) If P(E(s), E(s_new), T) > random(0, 1), move to the n

whai的专栏 1433

Fluent后台计算中Journal文件的自动化编写与优化实践

本文深入探讨了Fluent在Linux/Unix环境下进行后台计算时,Journal文件的自动化编写与优化实践。Journal文件作为Fluent后台计算的“灵魂”,是实现仿真流程自动化、保证计算可重复性与准确性的关键。文章从基础脚本骨架搭建、命令简写技巧,到进阶的参数化研究与批量计算实现,提供了详实的实战指南,帮助工程师大幅提升仿真效率。

postgres8guard的博客 756

A Star not a Tree?——poj2420 费马点退火算法(伪)

DescriptionLuke wants to upgrade his home computer network from 10mbs to 100mbs. His existing network uses 10base2 (coaxial) cables that allow you to connect any number of computers together in a line

容若的blog 312

小米汽车车载多摄像头视频链路深度解析 | MAX96792/MAX96724/MAX96781 实战分享

通过合理的输入输出规划 + 虚拟通道管理 + 加串行策略,可以在成本和性能之间取得最佳平衡,这就是多摄像头系统设计的核心精髓。

weixin_43199439的博客 1547

46、搭建与配置FTP服务器全攻略

本文详细介绍了如何搭建与配置FTP服务器,以vsftpd为例,涵盖了FTP基础概念、安装步骤、服务控制、安全设置、用户权限管理、文件上传支持、互联网共享配置、客户端使用以及常见问题解决等内容。旨在帮助用户高效、安全地实现文件共享与管理。

time3的博客 88

模拟退火:POJ2420

POJ2420 题解:神奇的模拟退火算法,第一次接触,记录一下。 找到局部最优解之后,继续改变坐标,找更优的,一不小心就找到了全局最优。 随机化算法我也很迷~。 代码 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include ...

FlyingJack 287

YOLO26改进策略【Neck】| CVPR 2024 MFM(Modulation Fusion Module,调制融合模块):动态特征加权融合,突出关键特征抑制冗余

本文主要利用DCMPNet中的 MFM 模块优化 YOLO26 的目标检测网络模型。模块通过动态调制特征融合过程,实现了对多尺度、跨层级特征的智能聚合。将其应用于的改进过程中,针对目标检测中边界特征与语义信息的互补性需求,缓解网络中浅层细节与深层语义融合不足的问题。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image Dehazing在图像去雾网络中,不同层级和类型的特征包含着互补的信息(如浅层的

Limiiiing的博客 223

Poj2420 A Star not a Tree? 模拟退火算法

题目链接:http://poj.org/problem?id=2420 题目大意:每组数据中给n个点(n<=100),求平面中一个点使得这个点到n个点的距离之和最小。 分析:一开始看到这个题想必是不好做的...因为平面太大了,不能使用枚举的方法,于是想到随机点出来比较。可是总不能无限的枚举,而且随机点出的答案需要是最优值还是一个玄学问题。所以想到了模拟退火的方法。 具体操作...

weixin_30578677的博客 140

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

POJ2420 模拟退火算法

A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9162   Accepted: 3990 Description Luke wants to upgrade his home computer network from 10mbs to 100mbs...

Dog_dream的博客 352

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

初探 模拟退火算法 POJ2420 HDU1109

模拟退火算法来源于固体退火原理,更多的化学物理公式等等这里不再废话,我们直接这么来看 模拟退火算法简而言之就是一种暴力搜索算法,用来在一定概率下查找全局最优解 找的过程和固体退火原理有所联系,一般来讲,就是设置应该初始温度T(通常为100),一个退火的系数K(通常为0.98),一个退火的结束温度T1(通常为1e-8) 每进行一次查找,T = T * K 如果T = T1,查找停止,(即固体...

weixin_30462049的博客 239

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

poj 2420,模拟退火算法,费马点

题目链接:http://poj.org/problem?id=2420 题意:给n个点,找出一个点,使这个点到其他所有点的距离之和最小,也就是求费马点。 参考链接:http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html 这一篇文章写的很好,我这个小白都有一点小明白了。 记一下笔记: 模拟退火: 就是在一定范围内接受一...

weixin_30478619的博客 113

POJ 2420 二分法 模拟退火算法

A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5055   Accepted: 2433 Description Luke wants to upgrade his home computer network from 1

黑猫5027的博客 721

POJ,2420 A Star not a Tree?(模拟退火算法)

题意:平面上给你n个点,让你求一个点,到这n点的距离和最小。 分析:模拟退火算法。 #include #include #include #include #include using namespace std; #define N 1005 #define INF 1e20 #define D 25 #define EPS 1e-3 double a[N],b[N

哎哟不错哦的博客 987

poj2420(模拟退火算法)

#include<iostream> #include<algorithm> #include<cstdio> #include<cmath> #define esp 1e-7 #define T 100 #define delta 0.985 using namespace std; const int maxx=1005; const int inf=0x3f3f3f3f; int n; struct node{ double x,y; node(do

Keep_Trying_Go的博客 438

【POJ】2420 A Star not a Tree?

http://poj.org/problem?id=2420 题意:给n个点,求一个点使得到这个n个点的距离和最短,输出这个最短距离(n&lt;=100) #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;cmath&gt; #include &lt;algorithm&gt; using namespace...

weixin_34062469的博客 90

爬山算法、模拟退火算法

参考:http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html#!comments http://blog.youkuaiyun.com/acdreamers/article/details/10019849 1、POJ 2420 A Star not a Tree? #include #include #include

追风蹑影 719

POJ 2420 A Star not a Tree? (模拟退火)

题目地址:POJ 2420 今天在比赛遇到了这题。。于是现场学了一下模拟退火。。。。 这题是先初始化为一个点,然后不断趋近距离和最短的点。还是挺简单的。。 代码如下: #include #include #include #include #include #include #include #include #include #include #include u

scf0920 1154

poj2420 A Star not a Tree?

传送门:http://poj.org/problem?id=2420 【题解】 费马点问题,模拟退火。%.0f神坑 # include <math.h> # include <stdio.h> # include <stdlib.h> # include <string.h> # include <iostrea...

aklm45097的博客 123
上一篇: 树链剖分 模板+HDU 3966 + SPOJ 375 【树剖入门】
下一篇: Codeforces Round #298 (Div. 2) C Polycarpus' Dice
just_sort
博客等级 码龄11年 2357粉丝 1667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值