数学建模:智能优化算法及其python实现
数学建模:智能优化算法及其python实现
- 智能优化算法简介
- 差分进化算法(Differential Evolution,DE)
- 遗传算法(Genetic Algorithm,GA)
- 粒子群优化算法(Particle Swarm Optimization,PSO)
- 模拟退火算法(Simulated Annealing,SA)
- 蚁群算法(Ant Colony Optimization,ACO)
- 免疫算法(Immune Algorithm,IA)
- 人工鱼群算法(Artificial Fish Swarm Algorithm,AFSA)
- 参考文献
智能优化算法简介
优化问题是指在满足一定条件下,在众多方案或参数值中寻找最优方案或参数值,以使得某个或多个功能指标达到最优,或使系统的某些性能指标达到最大值或最小值。优化问题广泛地存在于信号处理、图像处理、生产调度、任务分配、模式识别、自动控制和机械设计等众多领域。优化方法是一种以数学为基础,用于求解各种优化问题的应用技术。各种优化方法在上述领域得到了广泛应用,并且已经产生了巨大的经济效益和社会效益。实践证明,通过优化方法,能够提高系统效率,降低能耗,合理地利用资源,并且随着处理对象规模的增加,这种效果也会更加明显。
在电子、通信、计算机、自动化、机器人、经济学和管理学等众多学科中,不断地出现了许多复杂的组合优化问题。面对这些大型的优化问题,传统的优化方法(如牛顿法、单纯形法等)需要遍历整个搜索空间,无法在短时间内完成搜索,且容易产生搜索的“组合爆炸”。例如,许多工程优化问题,往往需要在复杂而庞大的搜索空间中寻找最优解或者准最优解。鉴于实际工程问题的复杂性、非线性、约束性以及建模困难等诸多特点,寻求高效的优化算法已成为相关学科的主要研究内容之一。
受到人类智能、生物群体社会性或自然现象规律的启发,人们发明了很多智能优化算法来解决上述复杂优化问题,主要包括:模仿自然界生物进化机制的遗传算法;通过群体内个体间的合作与竞争来优化搜索的差分进化算法;模拟生物免疫系统学习和认知功能的免疫算法;模拟蚂蚁集体寻径行为的蚁群算法;模拟鸟群和鱼群群体行为的粒子群算法;源于固体物质退火过程的模拟退火算法;模拟人类智力记忆过程的禁忌搜索算法;模拟动物神经网络行为特征的神经网络算法;等等。这些算法有个共同点,即都是通过模拟或揭示某些自然界的现象和过程或生物群体的智能行为而得到发展;在优化领域称它们为智能优化算法,它们具有简单、通用、便于并行处理等特点。
基于scikit-opt库的python实现:
# 安装
pip install scikit-opt
差分进化算法(Differential Evolution,DE)
差分进化算法(Differential Evolution,DE)是一种新兴的进化计算技术。它由Storn等人于1995年提出,其最初的设想是用于解决切比雪夫多项式问题,后来发现差分进化算法也是解决复杂优化问题的有效技术。
差分进化算法是基于群体智能理论的优化算法,是通过群体内个体间的合作与竞争产生的智能优化搜索。但相比于进化计算,差分进化算法保留了基于种群的全局搜索策略,采用实数编码、基于差分的简单变异操作和“一对一”的竞争生存策略,降低了进化计算的复杂性。同时,差分进化算法特有的记忆能力使它可以动态跟踪当前的搜索情况,以调整其搜索策略,它具有较强的全局收敛能力和稳健性,且不需要借助问题的特征信息,适用于求解一些利用常规的数学规划方法很难求解甚至无法求解的复杂优化问题。
线性/非线性规划问题:
'''
min f(x1, x2, x3) = x1^2 + x2^2 + x3^2
s.t.x1*x2 >= 1x1*x2 <= 5x2 + x3 = 10 <= x1, x2, x3 <= 5
'''def obj_func(p):x1, x2, x3 = preturn x1 ** 2 + x2 ** 2 + x3 ** 2constraint_eq = [lambda x: 1 - x[1] - x[2]
]
constraint_ueq = [lambda x: 1 - x[0] * x[1],lambda x: x[0] * x[1] - 5
]from sko.DE import DEde = DE(func=obj_func, n_dim=3, size_pop=50, max_iter=800, lb=[0, 0, 0], ub=[5, 5, 5],constraint_eq=constraint_eq, constraint_ueq=constraint_ueq)best_x, best_y = de.run()
print('best_x:', best_x, '\n', 'best_y:', best_y)
遗传算法(Genetic Algorithm,GA)
遗传算法(Genetic Algorithm,GA)是模拟生物在自然环境中的遗传和进化过程而形成的自适应全局优化搜索算法。它最早由美国的J. H. Holland教授提出,起源于20世纪60年代对自然和人工自适应系统的研究;70年代,K. A. De Jong基于遗传算法的思想,在计算机上进行了大量的纯数值函数优化计算试验;80年代,遗传算法由D. J. Goldberg在一系列研究工作的基础上归纳总结而成。
遗传算法是 通过模仿自然界生物进化机制而发展起来的随机全局搜索和优化方法。它借鉴了达尔文的进化论和孟德尔的遗传学说,本质上是一种并行、高效、全局搜索的方法,它能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最优解。遗传算法操作:使用“适者生存”的原则,在潜在的解决方案种群中逐次产生一个近似最优的方案。在每一代中,根据个体在问题域中的适应度值和从自然遗传学中借鉴来的再造方法进行个体选择,产生一个新的近似解。这个过程导致种群中个体的进化,得到的新个体比原个体更能适应环境。
线性/非线性规划问题:
import numpy as np
def schaffer(p):'''This function has plenty of local minimum, with strong shocksglobal minimum at (0,0) with value相关文章:
数学建模:智能优化算法及其python实现
数学建模:智能优化算法及其python实现 智能优化算法简介差分进化算法(Differential Evolution,DE)遗传算法(Genetic Algorithm,GA)粒子群优化算法(Particle Swarm Optimization,PSO)模拟退火算法(Simulated Annealing,SA)蚁群算法(Ant Colony Optimization,ACO)…...
monkeyrunner环境搭建和初步用法
一、打开模拟器 运行monkeyrunner之前必须先运行相应的模拟器,不然monkeyrunner无法连接设备。 用Elipse打开Android模拟器或在CMD中用Android命令打开模拟器。这里重点讲一下在CMD中用Android命令打开模拟器 命令:emulator -avd test (注…...
2024华为校招面试真题汇总及其解答(一)
1. 我问你点java基础的问题吧,你平时都用什么集合啊,都什么情况下使用 在 Java 中,常用的集合有以下几种: List:有序集合,可以重复,常用实现类有 ArrayList、LinkedList、Vector。Set:无序集合,不能重复,常用实现类有 HashSet、TreeSet。Map:键值对集合,键不能重复…...
css调整字体间距 以及让倾斜字体
调整字体间距 .element {letter-spacing: 2px; /* 调整为适当的值 */ }倾斜字体1 .element {font-style: italic; }请注意,不是所有的字体都有斜体样式可用。如果字体本身没有斜体版本,则可能无法实现完全的斜体效果。 倾斜字体2 <span class"…...
工具篇 | Gradle入门与使用指南 - 附Github仓库地址
介绍 1.1 什么是Gradle? Gradle是一个开源构建自动化工具,专为大型项目设计。它基于DSL(领域特定语言)编写,该语言是用Groovy编写的,使得构建脚本更加简洁和强大。Gradle不仅可以构建Java应用程序&#x…...
使用 Python 函数callable和isinstance的意义
一、说明 在这篇博客中,我们将探讨两个python函数:1 callable 中的函数及其有趣的应用程序。该callable函数用于检查对象是否可调用,这意味着它可以作为函数调用。2 isinstance这个内置函数允许我们比较两种不同的数据类型并确定它们是否相…...
Netty场景及其原理
Netty场景及其原理 Netty简化Java NIO的类库的使用,包括Selector、 ServerSocketChannel、 SocketChannel、ByteBuffer,解决了断线重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处理等。Netty拥有高性能、 吞吐量更高,延迟更低…...
Java接口和接口继承
Java接口和接口继承 接口 在抽象类中,抽象方法本质上是定义接口规范,即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。 如果一个抽象类没有字段,所有方法全部都是抽象方…...
2023 年解锁网络安全即服务
在当今快速发展的数字世界中,强大的网络安全机制的重要性怎么强调都不为过。对于越来越多地发现自己成为网络威胁焦点的小型企业来说尤其如此。 那么,“网络安全即服务”到底是什么?为什么它对小型企业至关重要? 网络安全即服务…...
python基于轻量级卷积神经网络模型GhostNet开发构建养殖场景下生猪行为识别系统
养殖业的数字化和智能化是一个综合应用了互联网、物联网、人工智能、大数据、云计算、区块链等数字技术的过程,旨在提高养殖效率、提升产品质量以及促进产业升级。在这个过程中,养殖生猪的数字化智能化可以识别并管理猪的行为。通过数字化智能化系统&…...
Selenium自动化测试 —— 通过cookie绕过验证码的操作!
验证码的处理 对于web应用,很多地方比如登录、发帖都需要输入验证码,类型也多种多样;登录/核心操作过程中,系统会产生随机的验证码图片,进行验证才能进行后续操作 解决验证码的方法如下: 1、开发做个万能…...
链表(单链表、双链表)
前言:链表是算法中比较难理解的部分,本博客记录单链表、双链表学习,理解节点和指针的使用,主要内容包括:使用python创建链表、实现链表常见的操作。 目录 单链表 双链表 单链表 引入链表的背景: 先来看…...
面试题08.05.递归算法
递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。 示例1: 输入:A 1, B 10输出:10示例2: 输入:A 3, B 4输出:12提示: 保证乘法…...
分布式IT监控系统
公司的IT系统越来越复杂,对运维和维护服务的需求也越来越高。在这种环境下,分布式IT监控系统应运而生。它逐渐成为公司提高运营效率、保证业务高效运营的关键工具,功能强大,性能优良。 分布式IT监控系统是什么? 分布…...
Redis 是什么?
Redis是一种基于内存的数据库,数据的读写都是在内存中完成的,因此读写速度非常的快,常用于缓存,消息队列,分布式锁等场景。 Redis 在高并发项目中,担任着非常重要的作用,扛高并发的,…...
本地源制作
title: 本地源制作 createTime: 2020-10-29 18:05:52 updateTime: 2020-10-29 18:05:52 categories: linuxyum tags: 制作本地源 通过 createrepo 制作本地源 前提 : 前提制作本地源的机器可以安装 这个软件例如 下载nginx的时候 自己加上 nginx的yum的数据源 (rp…...
树莓派(Linux系统通用)交叉编译(环境搭建、简单使用)
概念 交叉编译是指在一台计算机上编译运行在另一台计算机上的程序。(编译是指,在一个平台上生成在该平台上的可执行程序)通常情况下,编译器和目标平台的架构是不同的,例如,在一台x86平台上编译运行在ARM平…...
uniapp - 微信小程序实现腾讯地图位置标点展示,将指定地点进行标记选点并以一个图片图标展示出来(详细示例源码,一键复制开箱即用)
效果图 在uniapp微信小程序平台端开发,简单快速的实现在地图上进行位置标点功能,使用腾讯地图并进行标点创建和设置(可以自定义标记点的图片)。 你只需要复制代码,改个标记图标和位置即可。...
网络安全--IDS--入侵检测
1. 什么是IDS? IDS---入侵检测是防火墙的一个有力补充,形成防御闭环,可以及时、准确、全面的发现入侵弥补防火墙对应用层检查的缺失。对系统的运行状态进行监视,发现各种攻击企图、过程、结果,来保证系统资源的安全&a…...
js实现数组去重方式(12种方法)
目录 1、filter indexOf2、for object3、for includes4、for splice5、filter indexOf6、Map7、Set8、set Array.from9、sort 排序10、for findIndex11、双重for循环12、reduce 1、filter indexOf 数组去重:利用 filter 过滤 配合 indexOf 查找元素 var a…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...
