#include <cmath>
#include <iostream>
#include <time.h>
#include <vector>
using namespace std;
//迭代准确率不是太高,需要逐步调参
int T = 100;            //初始温度
double Tmin = 10; //温度最小值
double delta =0.9; //温度下降比例
double getResult(double x)
{
double result = (double)pow(x, 2);//求x平方的最小值
return result;
}
double getSA()               //温度每下降一次,需要迭代10000次
{
double t = T;
vector<double> v(10000);   //迭代10000次
vector<double>::iterator i1 = v.begin();
for (; i1 < v.end(); i1++)
{
*i1 = rand();
}
while (t>Tmin) //Metropolis抽样算法
{
for (i1=v.begin(); i1 < v.end(); i1++)
{
double temp = getResult(*i1);
double temp_new = *i1 + (rand() * 2 - 1)*t;
if (temp_new>0 && temp_new<100)
{
double fun_new = getResult(temp_new);
if (fun_new - temp < 0)       
{
*i1 = temp_new;
}
else
{
double p = 1 / (1 + exp(-(fun_new - temp) / t));
if (rand() < p)
{
*i1 = temp_new;
}
}
}
}
t = t*delta;
}

i1 = v.begin();                 //迭代完了,取最小值,理论上来说,应该迭代到0
double min = getResult(*i1);
for (; i1 < v.end(); i1++)
{
if (getResult(*i1) < min)
min = getResult(*i1);
}
return min;
}

int main()
{
srand((unsigned)time(NULL)); //随机数种子
cout<<getSA();
system("pause");
return 0;
}

求函数最值(模拟退火算法C++实现)相关推荐

  1. 几种求函数最值的算法

    1.遗传算法 2.粒子群算法 3.模拟退火 4.蚁群算法

  2. 蚁群算法求最值c语言实现,蚁群算法代码(求函数最值)

    <蚁群算法代码(求函数最值)>由会员分享,可在线阅读,更多相关<蚁群算法代码(求函数最值)(4页珍藏版)>请在人人文库网上搜索. 1.function F=F(x1,x2) % ...

  3. 基于距离浓度的人工免疫算法(DCAIA)求函数最值(python实现)

    文章目录 基于距离浓度的人工免疫算法(DCAIA)求函数最值(python实现) 一.免疫算法理论 二.基于距离浓度算法的免疫机理 三.免疫算法对应关系 四.免疫算法算子 五.python实例 例(1 ...

  4. Python实现遗传算法求函数最值

    Python实现遗传算法求函数最值 详细源代码:GA.py 1.算法过程图解 2.详细过程举例说明 (1)待求解方程 (2)确定编码方案 主要是确定编码长度: def segment_length(s ...

  5. 均值定理最大值最小值公式_求函数最值问题复杂难算,只要用对方法,考试得分不用愁...

    均值定理也就是我们常说的均值不等式,看到不等式这三个字,大家肯定不会觉得陌生,因为从初中开始,我们就已经接触它了,初中对于不等式的应用都是很浅显易懂的,但是到了高中,随着我们学习的知识不断加深,不等式 ...

  6. 蚁群算法求函数最值c语言,蚁群算法代码(求函数最值)

    蚁群算法简单应用 function [F]=F(x1,x2) %目标函数 F=-(x1.^2+2*x2.^2-0.3*cos(3*pi*x1)-0.4*cos(4*pi*x2)+0.7); End f ...

  7. 遗传算法简单求函数最值实例

    例:求下述二元函数的最大值: (1) 个体编码            遗传算法的运算对象是表示个体的符号串,所以必须把变量 x1, x2 编码为一种符号串.本题中,用无符号二进制整数来表示.因 x1, ...

  8. 第二十四讲编程项目 求函数的值 油量监控 一元二次方程全解等

    任务和代码: [项目1:分段函数求值] 从键盘输入x的值(要求为实型),根据公式1计算并输出x和y的值. /* *Copyright (c) 2016, CSDN学院 *All rights rese ...

  9. 模拟退火求函数最值问题求解

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2899    题意:给出方程,其中,输入,求的最小值. #include<iostream> # ...

最新文章

  1. [JLOI2013]地形生成
  2. [Android Pro] 有关Broadcast作为内部类时注册的一些问题
  3. 《强化学习周刊》第21期:EMNLP 2020-2021强化学习的最新研究与应用
  4. Java 编程的动态性,第 8 部分: 用代码生成取代反射--转载
  5. C++ 特殊类设计:只能在堆、栈上创建的类、无法继承的类、无法拷贝的类、只能创建一个对象的类
  6. C++ throw:抛出自己的异常
  7. Java使用HtmlUnit抓取js渲染页面
  8. 【Pandas】CSV文件读取时手动指定头部
  9. 2.魔改xposed修改和重编译生产可用zip
  10. 智联招聘基于Apache Pulsar打造企业级事件中心
  11. 视频流媒体服务器智能云终端如何快速获取直播流地址?
  12. python扇贝每日一句api,英语每日一句API封装
  13. 如何压缩word文档的大小?
  14. 外汇EA量化真的可以赚钱吗?还是新型骗局?
  15. 欲驾驭AI,先与AI共生:马斯克的“超人”计划能成功吗? | 返朴
  16. 贝尔数C语言,bzoj 3501 PA2008 Cliquers Strike Back——贝尔数
  17. synchronized锁升级那点事
  18. 百度地图API获取某个行政区
  19. 个人习惯养成的简单公式
  20. 计算机音乐博士,美国音乐博士解析

热门文章

  1. VS2010 调试警告 解决方法
  2. 社区发现算法——(Spectral Clustering)谱聚类算法
  3. Redis 发布订阅原理以及springboo中RedisTemplate集成
  4. 怎样查看主板支持服务器内存,怎么看主板支持内存频率?看主板支持内存频率方法...
  5. linux 蓝牙打印机
  6. CIO圈子里的“老行家”:太平绅士赖锡璋
  7. php离线bt下载,transmission + nginx = 离线BT下载站
  8. Spring Cloud Gateway(一)为什么用网关、能做什么、为什么选择Gateway、谓词工厂、过滤器配置
  9. CE修改Eternium永恒之金【LUA篇】
  10. 最后一批90后开始养生了,中医科普短视频会火吗?