【函数讲解】pygmo中的函数 fast_non_dominated_sorting() + 利用支配关系,学习一个SVM分类器,将解分为两类

这个函数是用来执行非支配排序的,可以分层构建Pareto,并返回每一层的解以及每个解支配其他解的索引、解被其他解支配的次数、解所在的非支配层级。这个函数对这些解进行非支配排序,并返回四个数组:ndf, dl, dc, 和 ndr。

  1. ndf (Non-Dominated Fronts): 这是一个整数列表,表示非支配层级。每个非支配层包含一组互不支配的解。例如,第一个非支配层(ndf[0])包含所有不被任何其他解支配的解,第二个非支配层(ndf[1])包含所有只被第一层中的解支配的解,依此类推。

  2. dl (Domination List): 这是一个列表,其中每个元素是一个整数列表,表示解支配的其他解的索引。

  3. dc (Domination Counts): 这是一个整数数组,每个元素表示解被其他解支配的次数。

  4. ndr (Non-Dominated Ranks): 这是一个整数数组,每个元素表示解所在的非支配层级。

示例:返回值:

import pygmo as pg
import numpy as np# 假设我们有一组解,每个解包含多个目标函数的值
# 这里我们创建一个假设的解集,每行代表一个解,列代表目标函数的值
solutions = np.array([[2.0, 4.0],[3.0, 3.5],[1.5, 5.0],[2.5, 2.0],[3.0, 2.5]
])# 使用 fast_non_dominated_sorting 对这些解进行非支配排序
ndf, dl, dc, ndr = pg.fast_non_dominated_sorting(points=solutions)

算出每个解被其他解支配的次数是多少:

id_dict = {}
for i in range(len(dc)):id_dict[i] = dc[i]print(id_dict)

 {0: 0,

1: 2,

2: 0,

3: 0,

4: 1}

利用支配关系,将解分为两类

    def dominance_learn_clusters(self):"""基于每个解的支配关系,将这些解划分为两类,分别用0,1表示step:计算每个解被其他解支配的数量 --> 对这些解的索引进行排序 --> 除以2,以划分为两类"""### this version is for HVfrom copy import deepcopyassert len(self.samples) >= 2, "samples must > 0"x = self.samples[0]fX = self.samples[1]# botorch_hv = Hypervolume(ref_point=self.func.ref_point)obj_list = deepcopy(fX.cpu().numpy())obj_list *= -1ndf, dl, dc, ndr = pg.fast_non_dominated_sorting(points=obj_list)id_dict = {}for i in range(len(dc)):id_dict[i] = dc[i]sorted_domi = np.array(sorted(id_dict.items(), key=lambda kv: (kv[1])))[:, 0]plabel = [1] * len(sorted_domi)for i in range(len(sorted_domi)):if i <= (len(sorted_domi) // 2):plabel[int(sorted_domi[i])] = 0plabel = np.array(plabel)return plabel

学习一个SVM分类器:

self.svm = SVC(kernel=args.kernel, gamma=args.gamma, degree=args.degree) 
    def learn_boundary(self, plabel):"""通过SVM学习到一个边界(预测器)"""assert len(plabel) == len(self.samples[0])#fitting a boundary in search space#plabel is from objective space#plabel_ss is from the search spaceplabel = plabel.ravel()X = self.samples[0]if torch.cuda.is_available():X = X.cpu().data.numpy()else:X = X.data.numpy()self.svm.fit(X, plabel)

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

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

相关文章

基于单片机设计的智能风扇(红外线无线控制开关调速定时)

一、项目介绍 在炎热的夏季&#xff0c;风扇成为人们室内生活中必不可少的电器产品。然而&#xff0c;传统的风扇控制方式存在一些不便之处&#xff0c;比如需要手动操作开关、无法远程控制和调速&#xff0c;以及缺乏定时功能等。为了解决这些问题&#xff0c;设计了一款基于…

红黑树-RBTree

目录 1. 红黑树的概念2. 红黑树的性质3. 结点的定义4. 结点的插入5. 整体代码 1. 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式…

springboot苍穹外卖实战:九、小程序微信登录代码开发+商品浏览

微信登录 application.yml和application-dev.yml application-dev.yml sky:wechat:appid: xxxsecret: xxxapplication.yml sky:wechat:appid: ${sky.wechat.appid}secret: ${sky.wechat.secret}配置为微信用户生成jwt令牌时使用的配置项&#xff1a; application.yml sky…

长安链可验证数据库,保证数据完整性的可信存证方案

近日&#xff0c;长安链发布“可验证数据库”实现了链上链下协同存储及数据完整性保证&#xff0c;显著提升长安链存储能力的可扩展性。 可信存证是联盟链最典型的应用场景&#xff0c;被广泛应用在司法、工业、农业、贸易等领域。联盟链的存证应用主要分为两个阶段&#xff1…

04-Spring中Bean的作用域

Bean的作用域 scope的属性值 属性值作用singleton默认单例prototype原型每调用一次getBean()方法则获取一个新的Bean对象 , 每次注入的时候都是新对象request一个请求对应一个Bean仅限于在WEB应用中使用 , 需要引入web的框架如SpringMvc(global) session一个会话对应一个Bean…

10个python爬虫入门实例

昨天带伙伴学习python爬虫&#xff0c;准备了几个简单的入门实例&#xff0c;涉及主要知识点&#xff1a; web是如何交互的 requests库的get、post函数的应用 response对象的相关函数&#xff0c;属性 python文件的打开&#xff0c;保存 代码中给出了注释&#xff0c;并且…

通过easyexcel导出数据到excel表格

这篇文章简单介绍一下怎么通过easyexcel做数据的导出&#xff0c;使用之前easyui构建的歌曲列表crud应用&#xff0c;添加一个导出按钮&#xff0c;点击的时候直接连接后端接口地址&#xff0c;在后端的接口完成数据的导出功能。 前端页面完整代码 let editingId; let request…

Git被上锁无法进行操作解决办法

Git操作失败并提示Another git process seems to be running in this...... 比如&#xff0c;典型的&#xff1a; Another git process seems to be running in this repository, e.g. an editor opened by git commit. Please make sure all processes are terminated then t…

【Python】一篇带你掌握数据容器之列表

目录 前言&#xff1a; 一、列表 1.列表的定义 2.列表的下标索引 3.列表的常用操作 &#xff08;1&#xff09;index方法&#xff1a;查找某元素的下标 (2)修改特定位置下标的元素 &#xff08;3&#xff09;insert&#xff08;下标&#xff0c;元素&#xff09;方法&a…

基于SpringBoot+Vue的在线学习平台系统

基于SpringBootVue的在线学习平台系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 用户界面 登录界面 管理员界面 摘要 本文设计并实现了一套基于Spri…

Nuxt.js——基于 Vue 的服务端渲染应用框架

文章目录 前言一、知识普及什么是服务端渲染什么是客户端渲染&#xff1f;服务端渲染与客户端渲染那个更优秀&#xff1f; 二、Nuxt.js的特点Nuxt.js的适用情况&#xff1f; 三、Vue是如何实现服务端渲染的&#xff1f;安装依赖使用vue安装 Nuxt使用npm install安装依赖包使用n…

选择.NET 还是 Java?

1、.NET Framework的演变&#xff1a; .NET Framework&#xff1a; 最初由Microsoft引入&#xff0c;是一个Windows上的全功能框架。它包含了ASP.NET、Windows Presentation Foundation&#xff08;WPF&#xff09;、Windows Communication Foundation&#xff08;WCF&#xff…

基于springboot实现桥牌计分管理系统项目【项目源码】

基于springboot实现桥牌计分管理系统演示 JAVA简介 JavaScript是一种网络脚本语言&#xff0c;广泛运用于web应用开发&#xff0c;可以用来添加网页的格式动态效果&#xff0c;该语言不用进行预编译就直接运行&#xff0c;可以直接嵌入HTML语言中&#xff0c;写成js语言&#…

数据分析:智能企业七步曲(一)

原创&#xff1a; MicroStrategy微策略中国 作者&#xff1a;数据杰论 时间走到2018年最后一个季度&#xff0c;过去几年热炒的大数据概念正在各行各业开始落地并展开实际应用&#xff0c;核心是关注数据如何能为企业带来价值。因此&#xff0c;数据分析及其种种实现手段不断被…

基于飞蛾扑火算法优化概率神经网络PNN的分类预测 - 附代码

基于飞蛾扑火算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于飞蛾扑火算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于飞蛾扑火优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

第一百七十一回 SearchBar组件

文章目录 1. 概念介绍2. 使用方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"Material3中的IconButton"相关的内容&#xff0c;本章回中将 介绍SearchBar组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

2023 ChinaJoy后,Flat Ads成为游戏、社交出海的新选择

今年ChinaJoy 展会&#xff0c;共吸引了来自世界各地的 500 多家企业参展&#xff0c;预计吸引超过33万人次参观。ChinaJoy年年有&#xff0c;那今年对于行业来说有什么新变化呢&#xff1f; 01 出海热潮不减&#xff0c;新增客户明显提升 据不完全统计&#xff0c;展会期间前…

《红蓝攻防对抗实战》十二.内网穿透之利用ICMP协议进行隧道穿透

内网穿透之利用ICMP协议进行隧道穿透 一.前言二.前文推荐三.利用ICMP协议进行隧道穿透1.ICMPsh获取反弹shell2.PingTunnel 搭建隧道 四.本篇总结 一.前言 本文介绍了利用ICMP协议进行隧道穿透的方法。ICMP协议不需要开放端口&#xff0c;可以将TCP/UDP数据封装到ICMP的Ping数据…

Error creating bean with name ‘apiModelSpecificationReader‘ defined in URL

问题&#xff1a; 启动项目的时候&#xff0c;报错了 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name apiModelSpecificationReader defined in URL [jar:file:/D:/.gradle/caches/modules-2/files-2.1/io.springfox/sp…

基于springboot实现驾校管理系统项目【项目源码】

基于springboot实现驾校管理系统演示 JAVA简介 JavaScript是一种网络脚本语言&#xff0c;广泛运用于web应用开发&#xff0c;可以用来添加网页的格式动态效果&#xff0c;该语言不用进行预编译就直接运行&#xff0c;可以直接嵌入HTML语言中&#xff0c;写成js语言&#xff0…