AI大模型学习笔记|多目标算法梳理、举例

news2025/4/27 11:13:47

多目标算法学习内容推荐:
1.通俗易懂讲算法-多目标优化-NSGA-II(附代码讲解)_哔哩哔哩_bilibili
2.多目标优化 (python pyomo pareto 最优)_哔哩哔哩_bilibili

学习笔记:
通过网盘分享的文件:多目标算法学习笔记
链接: https://pan.baidu.com/s/1bJ2_WzmtY4o43n_YeUwHQg 提取码: hstm

一、多目标算法

学习资料1的内容整理:
智能优化算法是一种模拟自然进化过程的计算方法,用于寻找复杂问题的最优解。它们通过迭代过程,结合策略和保底(精英)机制,不断更新解集,以逼近问题的最优解。

(1)智能优化算法基本原理和流程

智能优化算法是一种模拟自然界中生物进化或其他智能行为的算法,它们通过模拟自然选择、遗传、交叉和变异等过程来寻找问题的最优解。这些算法的基本流程包括初始化一组候选解,评估这些解的质量(适应度),然后通过特定的策略(如遗传算法中的交叉和变异)生成新的解。接着,通过保底(精英)机制保留最优的解,淘汰较差的解,然后迭代这个过程直到找到满意的解或达到预定的迭代次数。

(2)多目标优化算法的前置知识

多目标优化算法处理的是同时优化多个目标的问题,这些目标之间往往存在冲突,即改善一个目标可能会导致另一个目标变差。在这种情况下,不存在单一的最优解,而是存在一系列权衡解,这些解被称为帕雷托最优解。帕雷托最优解构成了帕雷托前沿,它代表了在多个目标之间取得最佳权衡的解集。理解帕雷托最优的概念对于设计和应用多目标优化算法至关重要。

(3)智能优化算法的流程

智能优化算法的流程可以详细描述为以下几个步骤:首先,随机初始化一组候选解;然后,评估这些解的适应度;接着,根据适应度选择优秀的解,并应用特定的策略生成新的候选解;之后,将新旧解集合并,并进行筛选,保留最优的解;最后,重复上述过程直到满足停止条件。这个流程模拟了生物进化中的“适者生存”原则,通过不断的迭代,逐步逼近问题的最优解。

(4)多目标问题的解的生成

在多目标优化问题中,解的生成更为复杂,因为需要同时考虑多个目标。算法需要生成一组新的解,这些解不仅要与旧的解竞争,还要在多个目标之间取得平衡。这通常涉及到更复杂的策略,如同时考虑多个目标的适应度函数,或者在生成新解时采用多目标优化策略。

(5)解的排序:非支配排序

非支配排序是多目标优化中用于解排序的一种方法。它根据解是否被其他解支配来对解进行分层。在非支配排序中,一个解如果没有任何其他解在所有目标上都比它好,则认为它是非支配的。这种方法可以有效地识别出帕雷托最优解,并将解分为不同的前沿,每个前沿包含的解在目标空间中是相互非支配的。

(6)拥挤距离

拥挤距离是一种衡量解在目标空间中分布密度的指标。在多目标优化中,我们不仅希望找到帕雷托最优解,还希望这些解在帕雷托前沿上均匀分布。拥挤距离通过计算解与其邻居之间的距离来实现这一点,从而避免解的聚集,确保在不同区域的帕雷托前沿上都有解的存在。

(7)排序的具体计算

在具体计算排序时,首先需要对每个目标维度上的解进行排序,然后计算每个解与其最近邻解之间的距离。这个距离反映了解在目标空间中的拥挤程度。通过这种方式,我们可以识别出哪些解是孤立的,哪些解是拥挤的,从而在后续的迭代中对这些解进行适当的选择和淘汰。

(8)支配关系的判断

在多目标优化中,支配关系的判断是确定解优劣的关键。一个解A支配解B,意味着A在所有目标上都不比B差,并且在至少一个目标上严格优于B。这种判断不仅涉及到解的直接比较,还涉及到解在目标空间中的相对位置,是多目标优化算法中解评估和选择的基础。

二、多目标算法的补充内容

摘要:本章内容深入探讨了多目标优化的概念及其在处理多个互相冲突目标时的应用。通过一个生动的羊肉串选择例子,讲解了加权和法、补偿规划、目标约束法等方法,以及帕雷托最优的概念,旨在帮助学生理解理论基础和实践应用。加权和法通过给每个目标设定权重将多目标问题转化为单目标问题;补偿规划在不牺牲一个目标的同时改善另一个目标;目标约束法则通过设定优先级来解决目标冲突;帕雷托最优强调了在多目标优化中找到不可再优化的解决方案集的重要性。讨论强调了每种方法的适用场景和操作细节,鼓励学生通过编程实践加深理解。

(1)多目标优化的定义?

        一般来说给定一个优化问题,有一些的约束条件,这,X是一个向量,我们定位一个为N行一列向量就是N个自变量。这边约束条件广义上来讲,它也并不是线性的,也可以是非线性的。那我们上节课讲内容是只有一个目标,但是我们现在有若干目标,有K目标,有大于等于一的,大于等于2。

        优化问题三要素:,目标函数在这里。约束条件在这里,决策变量三要素,优化问题就这边。

     可阅读的综述:Marler, R. Timothy, and Jasbir S. Arora. "Survey of multi-objective optimization methods for engineering." Structural and multidisciplinary optimization 26 (2004): 369-395.

(2)属性归一化,消除量纲

        讲一下idea,关键点是把不同之间的属性先故意一化,消除量纲。会讲一个L2就是度量空间的采用这个距离公式。表示是某一列,因为这一列对应的是同一个属性。

(3)加权求和法

        注意,我刚才说是两种思路不一样,所以说我这个价格20.1元人分一半。从这个约束条件入手。但是我们在这个本题中,就多目标优化,从数学的角度来讲,我们从这个目标函数下手。也就是说我们两个的目标函数,比如我是F1X它是F2X之间,加一个权重比较传统说法一人一半,比如说0.5F1X0.5F2X表示的权重是一样的。我们的如果说更一般,我们再加一个小小的权重,这个是这个W1W2咱们要加权。一般习惯性要求这个wi是大于等于零的,并且它们之和是等于一。

(4)compromise programming—均衡规划

        我们把本来一个多目标优化问题,我先给它分解成K个单目标优化问题。因为F是F1X一直到FKX。我这边假设有M个约束条件,不管它Y的问题,给它分解成这个问题。就针对每个目标我算一个问题。对第一个问题就是我们是极大化,极大化是F1X满足一个约束条件,GIX小于等于0,然后在max。

(5)e-Constraint method、Weighted min-max method、Pareto optimal

        其实总的来说做这种多秒优化问题,回顾一下这个key ideas就两点。第一点先是规划,最后已经现成代码摆在这里了。这个其实我用的是L二度量,可以有好多好多度量,感兴趣同学自己试试看。第二个就是把这个多目标给它转化成单目标或者一目标。那怎么转呢?下面讲一些方法,都是和我这个比如第一种是加权的,给个权重。后面几种类似,都是找我一个最理想点,从最理想点再反过来计算。这个很法很重要,我们会讲这个综合评价也会令人理想这个理想点,乌托邦点特别感兴趣。

三、多目标算法补充内容

(1)多目标算法求解的内在求解策略

        多目标优化算法的实现可以从多个角度进行探讨,除了加权求和法和帕累托前沿方法之外,还有以下几种常见的策略:

1. ε-约束法:在这种方法中,选择一个目标函数进行优化,而将其他目标函数转化为约束条件。通过调整这些约束条件的值,可以得到不同的解。

2. 目标规划法:这种方法通过设定目标值并最小化目标值与实际值之间的偏差来实现多目标优化。它通常用于决策问题中。

3. 分层法:将多个目标分层处理,首先优化最重要的目标,然后在此基础上优化次要目标。这种方法适用于目标之间有明显优先级的情况。

4. 多目标遗传算法(MOGA):利用遗传算法的特性,通过选择、交叉和变异等操作来生成多样化的解集,最终得到一组帕累托最优解。

5. 多目标粒子群优化(MOPSO):基于粒子群优化算法的多目标扩展,利用粒子之间的信息共享来探索解空间,寻找多个目标的最优解。

6. 动态权重法:在优化过程中动态调整各个目标的权重,以便在不同的迭代阶段关注不同的目标。

7. 模糊多目标优化:结合模糊逻辑处理不确定性和模糊性,适用于目标和约束条件不明确的情况。

(2)内在策略的优缺点

        这些方法各有优缺点,选择合适的方法通常取决于具体问题的性质和需求。在多目标优化算法中,除了加权求和法和帕累托前沿方法外,还有多种其他方法和视角可以用来处理多个目标。以下是一些常见的多目标优化方法和角度:

1. ε-约束法:

   - 该方法将一个目标函数作为主目标进行优化,而将其他目标函数转化为约束条件。通过设置这些约束的阈值(ε),可以在满足这些约束的前提下优化主目标。

2. 加权目标法:

   - 类似于加权求和法,但在这种方法中,可以动态调整目标的权重,或使用不同的加权组合来生成不同的解决方案。

3. 目标规划:

   - 目标规划是一种决策方法,它通过建立目标函数和约束条件来寻找最佳解决方案。目标函数通常是多个目标的组合,决策者可以设定每个目标的优先级。

4. 目标分解法:

   - 将多目标问题分解为多个单目标问题,分别求解并合并结果。这种方法可以使复杂问题变得更易处理。

5. 多目标遗传算法(MOGA):

   - 使用遗传算法的变种来处理多目标优化问题。通过选择、交叉和变异等操作,MOGA 能够在搜索空间中找到多种帕累托最优解。

6. 非支配排序遗传算法(NSGA-II):

   - NSGA-II 是一种流行的多目标优化算法,通过非支配排序和拥挤度比较来维护多样性,能有效找到帕累托前沿。

7. 多目标粒子群优化(MOPSO):

   - 类似于多目标遗传算法,MOPSO 使用粒子群优化的思想,通过粒子在解空间的移动来寻找多个目标的最优解。

8. 模糊多目标优化:

   - 使用模糊逻辑处理目标的不确定性,适用于目标和约束不精确或具有模糊性的情况。

9. 决策树和随机森林:

   - 在多目标优化中,可以使用决策树等机器学习方法来建立模型,从而帮助决策者在多个目标之间进行权衡。

10. Pareto优化:

    - 通过寻找和比较不同方案的帕累托效率来评估解决方案,确保没有其他解决方案在某个目标上更好而在其他目标上不更差。

11. 层次分析法(AHP):

    - 将复杂的多目标决策问题分解为多个层次,通过比较各层次中的元素,最终确定各目标的相对重要性。       

12. 模糊层次分析法(FAHP):

    - 结合模糊逻辑与层次分析法,处理目标之间的不确定性和模糊性。

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

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

相关文章

印闪网络:阿里云数据库MongoDB版助力金融科技出海企业降本增效

客户背景 上海印闪网络科技有限公司,于2017年1月成立,投资方包括红杉资本等多家国际知名风投公司。公司业务聚焦东南亚普惠金融,常年稳居行业头部。创始团队来自腾讯,中国团队主要由运营、风控及产研人员组成,核心成员…

路由引入问题(双点双向路由回馈问题)

简介 总所周知,路由引入import又称路由重分发redistribute,为了解决不同路由协议进程间路由信息不互通而使用的技术,由于不同路由协议的算法、机制、开销等因素的差异,它们之间无法直接交换路由信息。因此,路由引入技…

windows安装gradle

目录 1. gradle的简介2. 安装操作2.1 下载2.2 配置环境变量2.3 测试验证 3. 总结 1. gradle的简介 Gradle 是一个开源的项目自动化构建工具,专注于灵活性和性能。它基于 Apache Ant 和 Apache Maven 的概念,但采用了 Groovy 或 Kotlin 作为领域特定语言…

数据库中的代数运算

这些代数基本运算通常被封装在数据库查询语言中,如SQL中的SELECT、FROM、WHERE等子句,使得用户可以更方便地对数据库进行查询和处理。 下面的介绍基于以下两个关系来说明: 传统的集合运算 并(∪) 合并两个关系中的元组…

Linux驱动开发(12):中断子系统–按键中断实验

本章我们以按键为例讲解在驱动程序中如何使用中断, 在学习本章之前建议先回顾一下关于中断相关的裸机部分相关章节, 这里主要介绍在驱动中如何使用中断,对于中断的概念及GIC中断控制器相关内容不再进行讲解。 本章配套源码和设备树插件位于“…

智能家居WTR096-16S录放音芯片方案,实现语音播报提示及录音留言功能

前言: 在当今社会的高速运转之下,夜幕低垂之时,许多辛勤工作的父母尚未归家。对于肩负家庭责任的他们而言,确保孩童按时用餐与居家安全成为心头大事。此时,家居留言录音提示功能应运而生,恰似家中的一位无形…

【Qt】信号、槽

目录 一、信号和槽的基本概念 二、connect函数:关联信号和槽 三、自定义信号和槽 1.自定义槽函数 2.自定义信号函数 例子: 四、带参的信号和槽 例子: 五、Q_OBJECT宏 六、断开信号和槽的连接 例子: 一、信号和槽的基本…

Zemax 中的 LED 阵列模型

LED 阵列的光学特性 LED 阵列由多个发光二极管 (LED) 组成,这些二极管以特定模式或配置排列,以实现均匀照明、更高强度或特定照明特性。这些阵列广泛用于显示器、照明系统、光通信和传感等应用。 LED 阵列的光学特性对于了解它如…

Qt编写区位码gb2312、机内码、国标码————附带详细介绍和编码实现

文章目录 0 背景1 了解编码1.1 ASCII码1.2 机内码、国标码、区位码1.2.1 区位码1.2.2 国标码(GB 2312-80)1.2.3 汉字机内码(GB 2312) 1.3 GBK和GB2312的区别2 编码实现2.1 QString数据转QByteArray类型2.1.1 使用QTextCodec2.1.2 …

【Linux系统】—— 权限的概念

【Linux系统】—— 权限的概念 1 权限1.1 什么是权限1.2 为什么要有权限1.3 理解权限 2 文件的权限2.1 文件角色2.2 文件权限2.3 修改文件权限2.3.1 修改目标属性2.3.1.1 字符修改法2.3.1.2 8进制修改法 2.3.2 修改角色 3 文件权限补充知识点3.1 只能修改自己的文件权限3.2 没有…

js:我要在template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写

问&#xff1a; 我按在要在template中v-for循环遍历这个centrerTopdata&#xff0c;我希望自循环前面三个就可以了怎么写&#xff1f; 回答&#xff1a; 问&#xff1a; <div v-for"(item, index) in centrerTopdata.slice(0, 3)" :key"index"> d…

016 在路由器上配置 DHCP

配置路由器端口IP地址 将路由器的端口地址配置好&#xff0c; 左边的网络地址是 192.168.1.0 右边的网络地址是 192.168.2.0 配置路由器的DHCP服务 打开命令窗口&#xff0c;进入特权模式 进入全局配置 conf t创建一个DHCP地址池&#xff1b; po1 是地址池的名称&#xf…

使用IP自签名SSL证书

最近需要创建WebSocket服务器并使用SSL证书&#xff0c;由于是内网测试&#xff0c;所以需要使用指定IP的自签SSL证书。 其实笔者前面博文 使用nexus3作为Docker镜像仓库 解决nexus3登录x509: certificate has expired or is not yet valid 中有创建过相应的证书&#xff0c;这…

多模态大模型(二)——用Transformer Encoder和Decoder的方法(BLIP、CoCa、BEiTv3)

文章目录 BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 理解、生成我都要&#xff0c;一个很有效的、根据图片生成caption的工具1. BLIP的研究动机2. BLIP的模型结构3. CapFilt Model4. BLIP的训练过程 CoCa: C…

vue季度选择器(antd2.0 版本无此控件,单独写一个)

vue季度选择器 效果显示 效果显示 <template><div><a-popoverplacement"bottom"overlayClassName"season-picker"trigger"click"v-model"showSeason"><template #content><div class"season-picker-b…

基于Spring Boot + Vue的摄影师分享交流社区的设计与实现

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…

利用GeoWave导入矢量数据到HBase/Accumulo数据库

前言 最近在做有关地理时空大数据的实验&#xff0c;本文将介绍如何利用geowave框架&#xff0c;将矢量数据导入到HBase或Accumulo等NoSQL数据库中。 软件版本&#xff1a; Hadoop: 2.10.2 Zookeeper: 3.6.4 geowave: 1.2.0 Accumulo&#xff1a;1.9.3 HBase: 1.4.0 Ja…

常回家看看之Tcache Stashing Unlink Attack

前言&#xff1a; 在开始了解这个攻击手法的前提&#xff0c;需要先了解一个函数也就是calloc函数&#xff0c;众所周知&#xff0c;当libc版本大于等于2.27的时候会引入tcachebin&#xff0c;而Tcache Stashing Unlink Attack就是发生在2.27版本以上&#xff0c;那么这个和ca…

心情追忆- SEO优化提升用户发现率

之前&#xff0c;我独自一人开发了一个名为“心情追忆”的小程序&#xff0c;旨在帮助用户记录日常的心情变化及重要时刻。我从项目的构思、设计、前端&#xff08;小程序&#xff09;开发、后端搭建到最终部署。经过一个月的努力&#xff0c;通过群聊分享等方式&#xff0c;用…

深入探索:createThread与cancelThread的用法及实例

在多线程编程领域,线程的创建与管理是核心技能之一。本文将详细介绍两个关键函数:createThread(用于创建新线程)和cancelThread(用于取消已存在的线程),并通过具体实例展示它们的用法。需要注意的是,不同的编程语言和线程库可能有不同的API设计,但基本概念是相通的。本…