【智能算法】随机油漆优化算法(SPO)原理及实现

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献


1.背景

2022年,A Kaveh等人受到绘画艺术启发,提出了减法平均优化器(Stochastic Paint Optimizer,SPO)。

2.算法原理

2.1算法思想

SPO将搜索空间模拟为画布,并应用不同的颜色组合来寻找最佳颜色。四个简单的颜色组合规则,不需要任何内部参数,为SPO提供了很好的探索和利用。(PS:RGB空间三原色(红、绿、蓝)可以组合出不同颜色,论文这里才用四种基底)
在这里插入图片描述

2.2算法过程

SPO主要步骤包括创建初始油漆、油漆聚类、油漆组合和停止控制。搜索空间被指定为画布,并绘制为包含一些颜色作为设计变量的解决方案。根据其相应的美丽指数(目标函数值)对涂料进行评价和排序。任何应用于画布上的新颜色都是作品感知的组成部分。因此,每种颜色都有其等级(值)根据色轮类别原色(最好),次色(好)和第三色(最差)。

模拟组合技术

在形成模拟色时,选择一种颜色作为主导色,另一种作为支撑色,最后一种作为重音色。新的颜色可以用另外三种颜色定义:
C new, 1 = C i + rand. ( C i + 1 − C i − 1 ) (1) C_{\text{new,}1}=C_i+\text{rand.}(C_{i+1}-C_{i-1})\tag{1} Cnew,1=Ci+rand.(Ci+1Ci1)(1)
在这里插入图片描述

互补组合技术

在轮盘上彼此相对的颜色被称为互补色,互补色的高对比度,特别是在最大饱和度下使用时,产生生动的外观。这种技术结合了两种相反的颜色(比如说最好的和最差的),并将它们添加到现有的颜色:
C n e w , 2 = C i + r a n d . ( C P i − C T i ) (2) C_{\mathrm{new},2}=C_i+\mathrm{rand}.(C_{\mathrm{Pi}}-C_{\mathrm{Ti}})\tag{2} Cnew,2=Ci+rand.(CPiCTi)(2)
该技术试图将现有的解决方案推向最佳解决方案,而远离最差解决方案。
在这里插入图片描述
三元组合技术

利用三种颜色的一部分平均值和整个主色来创建新颜色:
C n e w , 3 = C i + r a n d . ( C P i + C S i + C T i 3 ) (3) C_{new,3}=C_i+\mathrm{rand.}\left(\frac{C_{\mathrm{Pi}}+\mathrm{C_{Si}}+C_{\mathrm{Ti}}}3\right)\tag{3} Cnew,3=Ci+rand.(3CPi+CSi+CTi)(3)
该技术通过将颜色的不同状态进行组合,以创建新的解。其中,最优解、中间解和最差解的均值被用来生成新的解。
在这里插入图片描述
四元组合技术

这种技术将四种颜色分组为两对互补的矩形或四色,提供了丰富的配色方案。在这种技术中,如果一种颜色占主导地位,配色方案效果会更好。该技术需要四种颜色类别,其中三个可以从三个预定义的类别中选择,而最后一个需要定义。这种技术旨在提供一个强大的随机搜索,以帮助算法避免陷入局部解决方案。
C n e w , 4 = C i + ( r a n d 1 . C P i + r a n d 2 . C T i + r a n d 3 . C S i + r a n d 4 . C r a n d ) / 4 (4) C_{\mathrm{new,4}}=C_{i}+(\mathrm{rand}_{1}.C_{\mathrm{Pi}}+\mathrm{rand}_{2}.C_{\mathrm{Ti}}+\mathrm{rand}_{3}.C_{\mathrm{Si}}+\mathrm{rand}_{4}.C_{\mathrm{rand}})/4\tag{4} Cnew,4=Ci+(rand1.CPi+rand2.CTi+rand3.CSi+rand4.Crand)/4(4)
在这里插入图片描述

伪代码
在这里插入图片描述
流程图
在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Kaveh A, Talatahari S, Khodadadi N. Stochastic paint optimizer: theory and application in civil engineering[J]. Engineering with Computers, 2022: 1-32.

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

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

相关文章

2024 Linux(centOS7) 下安装 Docker -- Docker中运行ollama模型

首先进入docker中运行以下命令: 安装yum-utils yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken 更换下载源为:阿里云 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.r…

von Mises-Fisher Distribution (Appendix)

2. Relation to Normal Distribution 疑问:有没有不各向同性的 vMF? 答:应该是没有的,如果想让各方向偏离中心的速度不一致,则协方差矩阵不为 I \bm{I} I 的倍数. 正态分布的概率密度函数为: f ( x ) 1 …

C语言形参和实参有什么区别?

一、问题 形式参数和实际参数都叫参数,那么⼆者之间的区别是什么? 二、解答 1. 问题分析 对于这类问题,最终体现在程序中会更加明确。 2. 解析问题 (1)通过名称理解 形式参数:按照名称理解,…

时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测

时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测 目录 时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-ESN基于麻雀搜索…

RuntimeError: Error(s) in loading state_dict for ZoeDepth解决方案

本文收录于《AI绘画从入门到精通》专栏,订阅后可阅读专栏内所有文章,专栏总目录:点这里。 大家好,我是水滴~~ 本文主要介绍在 Stable Diffusion WebUI 中使用 ControlNet 的 depth_zoe 预处理器时,出现的 RuntimeError: Error(s) in loading state_dict for ZoeDepth 异常…

故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法

故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法 目录 故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现基于小波…

代码随想录学习Day 26

332.重新安排行程 题目链接 from collections import defaultdictclass Solution:def findItinerary(self, tickets):targets defaultdict(list) # 创建默认字典,用于存储机场映射关系for ticket in tickets:targets[ticket[0]].append(ticket[1]) # 将机票输入…

win11网络驱动怎么安装,windows11怎么安装驱动

win11网络驱动怎么安装呢?驱动程序是系统中非常重要的部分,当安装新硬件时,相应的硬件没有驱动程序,那么在计算中就无法工作。而有了驱动后,计算机就可以与设备进行通信。例如,电脑如果缺少了网络驱动,那么就会无法上网,需要安装上网的驱动程序。由于win11系统变化太大…

Echarts柱状图多样式实现

样式一 样式二 在这里插入代码片

数据库索引详解

目录 第一章、快速了解索引1.1)索引是什么1.2)为什么使用索引1.3)操作索引示例 第二章、索引分类2.1)按数据结构分类2.1.1)树型数据结构索引二叉树B树B 树 2.1.2)Hash数据结构索引2.1.3) 其他数…

【JavaWeb】Day34.MySQL概述——数据库设计-DDL(一)

项目开发流程 需求文档: 在我们开发一个项目或者项目当中的某个模块之前,会先会拿到产品经理给我们提供的页面原型及需求文档。 设计: 拿到产品原型和需求文档之后,我们首先要做的不是编码,而是要先进行项目的设计&am…

AOP 面向切面编程 入门练习

编写过程 添加依赖 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><…

Python算法岗面试典型题目及答案

面试Python算法岗位时&#xff0c;候选人通常会遇到一系列设计来考察其编程能力、算法理解和解决问题能力的题目。这些题目范围可以从基本的数据结构操作到更复杂的算法问题。下面是一些典型的上机测试题及其解答示例&#xff1a; 1. 两数之和 题目描述&#xff1a; 给定一个…

使用c++自建循环链表和自建队列分别解决约瑟夫问题

//自建循环链表解决约瑟夫问题 void CircleLinkList::yuesefu(int go_num) { CircleLinkNode* curr = head; CircleLinkNode* prev = nullptr; while (size > 0) { for (int i= 1; i <= go_num; i++) { prev = curr; …

PostgreSQL开发与实战(8.1)PG的锁1

作者&#xff1a;太阳 一、表级锁 1.1 表级锁模式 常见锁模式以及应用场景&#xff1a; ACCESS SHARE &#xff1a;select操作获取该模式锁资源&#xff0c;通常情况下所有只读取不修改表的查询都会获取该模式锁资源 ROW SHARE &#xff1a; select for update 和 select f…

docker搭建EFK

目录 elasticsearch1.创建网络2.拉取镜像3.创建容器如果出现启动失败&#xff0c;提示目录挂载失败&#xff0c;可以考虑如下措施 开放防火墙端口4.验证安装成功重置es密码关闭https连接创建kibana用户创建新账户给账户授权 kibana1.创建容器2.验证安装成功3.es为kibana创建用户…

java对象是怎么在jvm中new出来的,在内存中查看java对象成员变量字段属性值

java对象是怎么在jvm中new出来的 查看java对象字段属性在内存中的值 java 对象 创建 流程 附上java源码 public class MiDept {private int innerFiled999;public MiDept() {System.out.println("new MiDept--------------");}public String show(int data) {Sy…

电脑怎么才能用动态ip上网?步骤详解与优势分析

在数字化时代&#xff0c;互联网已成为我们生活与工作中不可或缺的一部分。为了保障网络安全、提升网络效率或满足特定应用场景的需求&#xff0c;有时我们需要为电脑配置动态IP地址上网。那么&#xff0c;如何为电脑设置动态IP地址呢&#xff1f;本文将为您详细介绍动态IP的配…

为什么AI模型需要合乎道德的数据

道德问题简介 “合乎道德的数据”和“负责任的数据”这两个词的含义可能并不明确。在科技界和AI数据界&#xff0c;道德原则是指负责任地采集和使用数据用以训练模型&#xff0c;并确保这些模型不带偏见地与人类交互。不仅为训练模型负责任地采集和使用数据很重要&#xff0c;…

Java的jmap命令使用详解

jmap命令简介 jmap&#xff08;Java Virtual Machine Memory Map&#xff09;是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具。 以外&#xff0c;jmap命令还可以查看finalize执行队列、Java堆和方法区的详细信息&#xff0c;比如空间使用率、当前使用的…