求函数最值(模拟退火算法C++实现)
#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.遗传算法 2.粒子群算法 3.模拟退火 4.蚁群算法
- 蚁群算法求最值c语言实现,蚁群算法代码(求函数最值)
<蚁群算法代码(求函数最值)>由会员分享,可在线阅读,更多相关<蚁群算法代码(求函数最值)(4页珍藏版)>请在人人文库网上搜索. 1.function F=F(x1,x2) % ...
- 基于距离浓度的人工免疫算法(DCAIA)求函数最值(python实现)
文章目录 基于距离浓度的人工免疫算法(DCAIA)求函数最值(python实现) 一.免疫算法理论 二.基于距离浓度算法的免疫机理 三.免疫算法对应关系 四.免疫算法算子 五.python实例 例(1 ...
- Python实现遗传算法求函数最值
Python实现遗传算法求函数最值 详细源代码:GA.py 1.算法过程图解 2.详细过程举例说明 (1)待求解方程 (2)确定编码方案 主要是确定编码长度: def segment_length(s ...
- 均值定理最大值最小值公式_求函数最值问题复杂难算,只要用对方法,考试得分不用愁...
均值定理也就是我们常说的均值不等式,看到不等式这三个字,大家肯定不会觉得陌生,因为从初中开始,我们就已经接触它了,初中对于不等式的应用都是很浅显易懂的,但是到了高中,随着我们学习的知识不断加深,不等式 ...
- 蚁群算法求函数最值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 ...
- 遗传算法简单求函数最值实例
例:求下述二元函数的最大值: (1) 个体编码 遗传算法的运算对象是表示个体的符号串,所以必须把变量 x1, x2 编码为一种符号串.本题中,用无符号二进制整数来表示.因 x1, ...
- 第二十四讲编程项目 求函数的值 油量监控 一元二次方程全解等
任务和代码: [项目1:分段函数求值] 从键盘输入x的值(要求为实型),根据公式1计算并输出x和y的值. /* *Copyright (c) 2016, CSDN学院 *All rights rese ...
- 模拟退火求函数最值问题求解
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2899 题意:给出方程,其中,输入,求的最小值. #include<iostream> # ...
最新文章
- [JLOI2013]地形生成
- [Android Pro] 有关Broadcast作为内部类时注册的一些问题
- 《强化学习周刊》第21期:EMNLP 2020-2021强化学习的最新研究与应用
- Java 编程的动态性,第 8 部分: 用代码生成取代反射--转载
- C++ 特殊类设计:只能在堆、栈上创建的类、无法继承的类、无法拷贝的类、只能创建一个对象的类
- C++ throw:抛出自己的异常
- Java使用HtmlUnit抓取js渲染页面
- 【Pandas】CSV文件读取时手动指定头部
- 2.魔改xposed修改和重编译生产可用zip
- 智联招聘基于Apache Pulsar打造企业级事件中心
- 视频流媒体服务器智能云终端如何快速获取直播流地址?
- python扇贝每日一句api,英语每日一句API封装
- 如何压缩word文档的大小?
- 外汇EA量化真的可以赚钱吗?还是新型骗局?
- 欲驾驭AI,先与AI共生:马斯克的“超人”计划能成功吗? | 返朴
- 贝尔数C语言,bzoj 3501 PA2008 Cliquers Strike Back——贝尔数
- synchronized锁升级那点事
- 百度地图API获取某个行政区
- 个人习惯养成的简单公式
- 计算机音乐博士,美国音乐博士解析
热门文章
- VS2010 调试警告 解决方法
- 社区发现算法——(Spectral Clustering)谱聚类算法
- Redis 发布订阅原理以及springboo中RedisTemplate集成
- 怎样查看主板支持服务器内存,怎么看主板支持内存频率?看主板支持内存频率方法...
- linux 蓝牙打印机
- CIO圈子里的“老行家”:太平绅士赖锡璋
- php离线bt下载,transmission + nginx = 离线BT下载站
- Spring Cloud Gateway(一)为什么用网关、能做什么、为什么选择Gateway、谓词工厂、过滤器配置
- CE修改Eternium永恒之金【LUA篇】
- 最后一批90后开始养生了,中医科普短视频会火吗?