【Python】【matLab】模拟退火算法求二元高次函数最小值

一、目标函数

求二元高次函数的最小值。目标函数选择:
在这里插入图片描述
用于测试算法的简单的目标函数:

在这里插入图片描述

二、Python代码实现

import numpy as np# 目标函数(2变量)
def objective_function(x):return x[0] ** 2 + 2 * x[0] - 15 + 4 * 4 * 2 * x[1] + 4 * x[1] ** 2# 测试:return x[0] ** 2 + x[1] ** 2# 模拟退火
def simulated_annealing(objective_func,  # 目标函数initial_solution=np.array([0, 0]),  # 初始解temperature=100,  # 初始温度min_temperature=0.1,  # 最小温度值cooling_rate=0.90,  # 冷却率(乘法系数)iter_max=100,  # 最大迭代次数seed=0  # 随机种子):np.random.seed(seed)current_solution = initial_solutionbest_solution = current_solutionwhile temperature > min_temperature:for j in range(iter_max):# 生成新的解new_solution = current_solution + np.random.uniform(-1, 1, len(current_solution))# 计算新解与当前解之间的目标函数值差异current_cost = objective_func(current_solution)new_cost = objective_func(new_solution)cost_diff = new_cost - current_cost# 判断是否接受新解if cost_diff < 0 or np.exp(-cost_diff / temperature) > np.random.random():current_solution = new_solution# 更新最优解if objective_func(current_solution) < objective_func(best_solution):best_solution = current_solution# 降低温度temperature *= cooling_ratereturn best_solution# 调用退火算法求解最小值
best_solution = simulated_annealing(objective_function)print(f"函数最小值: {objective_function(best_solution)} 自变量取值:{best_solution}")

代码参考博客:利用Python 实现 模拟退火算法

三、程序输出

测试函数输出:
在这里插入图片描述

目标函数输出:

在这里插入图片描述

四、MatLab验证程序

参考博客:MATLAB求解二元(多元)函数极值

先定义目标函数(位于fun2_3.m中):

function f = fun2_3(x)
f = x(1) ^ 2 + 2 * x(1) - 15 + 32 * x(2) + 4 * x(2) ^ 2;

模拟退火算法求极值:

clc, clear
[x, y]=meshgrid(-10:0.3:10,-10:0.3:10);
z = x.^2 + 2 * x -15 + 32 * y + 4 * y.^2;
figure(1)
surf(x,y,z)
xlabel('X');
ylabel('Y');
zlabel('Z');figure(2)
contour(x,y,z)
xlabel('X');
ylabel('Y');
grid on;x0=[-3,-3];
% [x,fmin]=fminsearch(@fun2_3,x0)
[x,fmin] = fminunc(@fun2_3,x0)

程序输出:
在这里插入图片描述

在这里插入图片描述在这里插入图片描述可见,两种方法的求解结果基本相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】项目目录介绍和运行流程

文章目录 一、项目目录介绍二、public/index.html三、src/main.js四、运行流程 一、项目目录介绍 虽然脚手架中的文件有很多&#xff0c;目前咱们只需认识三个文件即可&#xff0c;这三个文件就决定了我们项目的运行 main.js 入口文件App.vue App根组件index.html 模板文件 我…

递归在多级数据结构中的简单应用

哈喽&#xff0c;我是小码&#xff0c;半年多没更新了&#xff0c;这段时间换了新工作&#xff0c;工作也很忙。后续会尽量多写点&#xff0c;坚持确实是一件很难&#xff0c;很酷的事情。最近在公司负责开发商品有关的开发&#xff0c;商品包含类型、款式等属性&#xff0c;而…

视频推广短信:新时代的营销利器(视频短信XML接口示例)

随着移动互联网的普及&#xff0c;短信已经不再是简单的文字信息传递工具&#xff0c;而是逐渐演变为一种有效的推广手段。特别是当视频与短信结合时&#xff0c;它所带来的营销效率更是令人瞩目。 一、视频推广短信的特点 1.直观性&#xff1a;与传统的文字短信相比&#xf…

游戏盾之应用加速,何为应用加速

在数字化时代&#xff0c;用户对于应用程序的防护要求以及速度和性能要求越来越高。为了满足用户的期望并提高业务效率&#xff0c;应用加速成为了不可忽视的关键。 应用加速是新一代的智能分布式云接入系统&#xff0c;采用创新级SD-WAN跨域技术&#xff0c;针对高防机房痛点进…

令人瞠目结舌的8个ChatGPT-4o提示词

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【python】OpenCV—Bitplane

学习来自&#xff1a; 位平面分割&#xff08;Bit-Plane Slicing&#xff09;使用OpenCVPython进行图像处理的初学者指南 位平面 位平面&#xff08;bitplane&#xff09;是一个在计算机科学中用于描述图像数据的概念&#xff0c;具体定义如下&#xff1a; 【定义】&#x…

《手把手教你》系列练习篇之10-python+ selenium自动化测试(详细教程)

1. 简介 今天我们继续前边的练习&#xff0c;学习和练习一下&#xff1a;如何使用webdriver方法获取当前测试页面的URL、如何获取当前页面的title、如何打开浏览器的一个新建页面、如何操作单选按钮等等&#xff0c;这些小练习&#xff0c;来巩固基础。 2. webdriver方法获取…

​谁用谁知道,教师实用工具分享​

老师们面临着日益增长的教学和管理任务。为了有效提升工作效率&#xff0c;一些实用的工具成为了老师们不可或缺的助手。给大家分享几款教师必备的工具&#xff0c;帮助教师们在教学和管理工作中更加得心应手。 1. 知乎&#xff1a;知识的海洋 知乎是一个中文问答社区&#xf…

Docker-compose安装、使用,容器化部署springboot项目

一、docker-compose的安装 1、按官网的方式去安装 1&#xff09;下载docker-compose curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 若…

【微机原理及接口技术】中断系统

【微机原理及接口技术】中断系统 文章目录 【微机原理及接口技术】中断系统前言一、中断概述中断的基本概念中断处理过程 二、8086/8088中断系统中断类型中断响应过程中断向量表内部中断服务程序 总结 前言 本篇文章我们会讲到中断的概述&#xff0c;8086/8088中断系统。 一、…

bootstrap5-学习笔记3-文字格式+表格+徽章

参考&#xff1a; Bootstrap5 教程 | 菜鸟教程 https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 https://v5.bootcss.com/docs/getting-started/introduction/ 之前用bootstrap2和3比较多&#x…

微软云计算Windows Azure(三)

目录 五、Windows Azure Marketplace六、Windows Azure服务平台&#xff08;一&#xff09;网站&#xff08;二&#xff09;虚拟机&#xff08;三&#xff09;云服务&#xff08;四&#xff09;移动服务&#xff08;五&#xff09;大数据处理&#xff08;六&#xff09;媒体支持…

点赋科技:在招聘会上绽放光彩,助力青春梦想起航

在近日举行的青年企业家协会招聘会暨长江大学就业实习双选会上&#xff0c;点赋科技以其独特的魅力和强大的实力吸引了众多求职者的关注。 点赋科技的展位前人头攒动&#xff0c;公司的招聘团队热情地与每一位求职者交流。他们详细介绍了公司的发展历程、业务范围、企业文化以及…

LeetCode-704. 二分查找【数组 二分查找】

LeetCode-704. 二分查找【数组 二分查找】 题目描述&#xff1a;解题思路一&#xff1a;注意开区间和闭区间背诵版&#xff1a;解题思路三&#xff1a; 题目描述&#xff1a; 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xf…

杨校老师项目之基于52单片机的霍尔自行车码表【嵌入式】

获取全套资料&#xff1a; 有偿获取&#xff1a;mryang511688 技术&#xff1a;C语言、单片机等 摘要&#xff1a; 本项目基于单片机设计了一款霍尔自行车码表。该系统实现了骑行过程中即时显示行驶速度、行径里程、显示当前时刻以及超速危险报警等功能。有助于骑行者在骑行过…

“解锁财富新密码:订单共享商业模式的革命性力量“

在当前的商业环境中&#xff0c;创新和效率是企业生存和发展的关键。今天&#xff0c;我们向您介绍一种革命性的商业模式——订单共享商业模式&#xff0c;它正在改变企业家们对新零售的理解和实践。 订单共享商业模式&#xff0c;是一种通过整合和优化不同商家的订单资源&…

从零开始:如何用Electron将chatgpt-plus.top 打包成EXE文件

文章目录 从零开始&#xff1a;如何用Electron将chatgpt-plus.top 打包成EXE文件准备工作&#xff1a;Node.js和npm国内镜像加速下载初始化你的Electron项目创建你的Electron应用运行你的Electron应用为你的应用设置图标打包成EXE文件结语 从零开始&#xff1a;如何用Electron将…

【动手学深度学习】使用块的网络(VGG)的研究详情

目录 &#x1f30a;1. 研究目的 &#x1f30a;2. 研究准备 &#x1f30a;3. 研究内容 &#x1f30d;3.1 多层感知机模型选择、欠拟合和过拟合 &#x1f30d;3.2 练习 &#x1f30a;4. 研究体会 &#x1f30a;1. 研究目的 理解块的网络结构&#xff1b;比较块的网络与传统…

Qt如何让按钮的菜单出现在按钮的右侧

直接上代码&#xff0c;我们用到了一个eventfilter的函数功能。这个函数比较厉害和重要&#xff0c;大家务必经常拿出来看看。 void MainWindow::initMenu() { QMenu* menuLiXiang new QMenu; QAction* actXiangMuZhangCheng new QAction("项目章程"); …

【Cesium4UE】使用问题及解法统计

本期作者&#xff1a;尼克 易知微3D引擎技术负责人 1.加载3dtiles模型很慢 1.3dtiles是否做了重建顶层处理。如果3dtiles的tiles块太多使用CesiumLab重建顶层。 2.将3dtiles模型放置到固态硬盘中 3.如果有多块3dtiles&#xff0c;考虑使用CesiumLab合并3dtiles处理 4.如果不需…