【机器学习】工业 4.0 下机器学习如何驱动智能制造升级
我的个人主页
我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤
随着科技的飞速发展,工业 4.0 浪潮正席卷全球制造业,而机器学习作为这一变革中的关键技术,正以前所未有的力量重塑着智能制造的格局。
一、智能生产调度:优化资源配置的利器
在现代化工厂中,生产线上各类设备、工序繁多,如何合理安排生产任务,确保资源利用最大化,是提升效率的核心问题。机器学习中的遗传算法为此提供了解决方案。
以一个简单的电子产品组装车间为例,假设有 n n n 种不同产品需要组装,每种产品有其特定的工序顺序与加工时间,且车间有 m m m 台不同性能的设备。我们将生产调度问题抽象为一个优化模型,目标是最小化生产周期(Makespan)。
遗传算法模拟生物进化过程,首先初始化一群随机的“染色体”,每个染色体代表一种生产调度方案,即产品在各设备上的加工顺序安排。用代码表示如下:
import random# 定义产品种类数和设备数
n = 5
m = 3
# 随机初始化种群,每个个体是一个二维列表,代表一种调度方案
population = [[random.sample(range(n), n) for _ in range(m)] for _ in range(10)]
通过计算每个染色体对应的适应度函数值(这里即生产周期)来评估其优劣:
def fitness(schedule):makespan = 0for machine in schedule:completion_times = [0] * nfor i, product in enumerate(machine):start_time = max([completion_times[j] for j in range(i) if get_precedence(product, machine[j])])completion_times[i] = start_time + processing_time(product)makespan = max(completion_times)return makespan# 计算种群中每个个体的适应度
fitness_values = [fitness(schedule) for schedule in population]
其中,processing_time
函数返回产品的加工时间,get_precedence
函数判断产品间的先后加工顺序。
然后,依据适应度进行选择、交叉(模拟基因重组)和变异操作,不断迭代进化种群:
# 选择操作,采用轮盘赌选择
def roulette_wheel_selection(population, fitness_values):total_fitness = sum(fitness_values)selection_probs = [fit / total_fitness for fit in fitness_values]selected_indices = random.choices(range(len(population)), weights=selection_probs, k=len(population))return [population[i] for i in selected_indices]# 交叉操作
def crossover(parent1, parent2):crossover_point = random.randint(1, n - 1)child1 = parent1[:crossover_point] + parent2[crossover_point:]child2 = parent2[:crossover_point] + parent1[crossover_point:]return child1, child2# 变异操作
def mutation(schedule):mutate_index = random.randint(0, len(schedule) - 1)mutate_position = random.randint(0, n - 1)schedule[mutate_index][mutate_position] = random.randint(0, n - 1)return schedulenew_population = []
for _ in range(len(population)):parent1, parent2 = random.sample(population, 2)child1, child2 = crossover(parent1, parent2)child1 = mutation(child1)child2 = mutation(child2)new_population.extend([child1, child2])population = new_population
经过多轮迭代,最终收敛到较优的生产调度方案,使得生产效率大幅提升,设备闲置时间显著减少。
二、精准质量检测:保障产品品质的卫士
在工业生产中,产品质量关乎企业生死存亡。机器学习算法在质量检测领域展现出惊人的精准度,尤其是基于深度学习的图像识别技术。
考虑一个汽车零部件生产厂,需要检测零部件表面是否存在细微裂纹。利用卷积神经网络(CNN)构建检测模型,CNN 通过卷积层自动提取图像特征。
假设输入图像为 X X X,大小为 h × w × c h \times w \times c h×w×c( h h h 为高度, w w w 为宽度, c c c 为通道数,如 RGB 图像 c = 3 c = 3 c=3),卷积核为 K K K,大小为 k × k × c k \times k \times c k×k×c,步长为 s s s,填充为 p p p。卷积操作后的特征图 Y Y Y 尺寸计算公式为:
Y s i z e = h + 2 p − k s + 1 × w + 2 p − k s + 1 Y_{size} = \frac{h + 2p - k}{s} + 1 \times \frac{w + 2p - k}{s} + 1 Ysize=sh+2p−k+1×sw+2p−k+1
卷积层后通常跟着池化层,如最大池化,它将特征图缩小,减少计算量的同时保留关键特征。以最大池化层为例,池化窗口大小为 2 × 2 2 \times 2 2×2,步长为 2:
Y p o o l e d ( i , j ) = max 0 ≤ m , n ≤ 1 Y ( 2 i + m , 2 j + n ) Y_{pooled}(i, j) = \max_{0 \leq m, n \leq 1} Y(2i + m, 2j + n) Ypooled(i,j)=0≤m,n≤1maxY(2i+m,2j+n)
构建的 CNN 模型代码如下(使用 Python 的 tensorflow
库):
import tensorflow as tf
from tensorflow.keras import layersmodel = tf.keras.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(image_height, image_width, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])# 假设已有训练图像数据 train_images、训练标签 train_labels 和测试图像数据 test_images、测试标签 test_labels
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
通过大量有缺陷和无缺陷零部件图像数据训练后,模型能够快速、准确地判断新零部件的质量情况,将次品拦截在出厂前,大大提高产品的整体合格率。
三、智能能源管理:助力可持续发展
工业生产消耗大量能源,如何实现能源的高效利用是工业 4.0 背景下的重要课题。机器学习通过分析工厂内各种设备的运行数据、环境数据等,实现能源的智能管控。
例如,在一个钢铁厂,通过安装在各类设备上的传感器收集实时数据,如熔炉温度、电机功率、车间温度湿度等,利用多元线性回归模型预测能源消耗:
设能源消耗为 y y y,设备运行参数为 x 1 , x 2 , ⋯ , x n x_1, x_2, \cdots, x_n x1,x2,⋯,xn,模型形式为:
y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β n x n + ϵ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_n x_n + \epsilon y=β0+β1x1+β2x2+⋯+βnxn+ϵ
其中, β 0 , β 1 , ⋯ , β n \beta_0, \beta_1, \cdots, \beta_n β0,β1,⋯,βn 为待估计系数, ϵ \epsilon ϵ 为随机误差项。
使用 Python 的 statsmodels
库进行模型训练:
import statsmodels.api as sm# 模拟的设备运行数据,每行代表一个时刻的数据,每列代表一个参数
X = np.array([[100, 200, 30], [120, 220, 35],...])
# 对应的能源消耗数据
y = np.array([500, 550,...]) X = sm.add_constant(X)
model = sm.OLS(y, X).fit()# 预测新时刻的能源消耗
new_X = np.array([[130, 230, 40]])
new_X = sm.add_constant(new_X)
predicted_y = model.predict(new_X)
print(f"预测能源消耗: {predicted_y[0]}")
基于预测结果,工厂可以实时调整设备运行参数,优化能源分配,如在用电低谷期增加高耗能设备的负荷,在高峰期适当降低,既降低成本又保障生产,迈向绿色可持续的智能制造之路。
四、机器学习助力生产优化:以预测性维护为例
在传统制造业中,设备维护大多基于固定的时间周期或者设备故障后的应急抢修,这不仅造成大量的停机时间,还增加了维修成本。而机器学习通过对设备运行数据(如温度、振动频率、压力等)的持续监测与学习,构建预测模型。
假设我们使用简单的线性回归模型来预测设备剩余使用寿命(Remaining Useful Life,RUL),设设备运行时间为自变量 x x x,设备剩余使用寿命为因变量 y y y,我们采集了一系列历史数据点 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x n , y n ) (x_1, y_1), (x_2, y_2), \cdots, (x_n, y_n) (x1,y1),(x2,y2),⋯,(xn,yn)。线性回归模型的目标是找到最佳拟合直线 y = θ 0 + θ 1 x y = \theta_0 + \theta_1 x y=θ0+θ1x,使得预测值与真实值之间的误差平方和最小。通过最小二乘法求解参数 θ 0 \theta_0 θ0 和 θ 1 \theta_1 θ1:
θ = ( X T X ) − 1 X T Y \theta = (X^T X)^{-1} X^T Y θ=(XTX)−1XTY
其中, X X X 是由自变量组成的矩阵(每行对应一个数据点,第一列全为 1,第二列为 x x x 值), Y Y Y 是因变量组成的向量。
在实际代码实现中,使用 Python 的 numpy
和 sklearn
库可以简洁地完成上述模型训练:
import numpy as np
from sklearn.linear_model import LinearRegression# 模拟的设备运行时间数据
x = np.array([100, 200, 300, 400, 500]).reshape(-1, 1)
# 模拟的对应剩余使用寿命数据
y = np.array([500, 400, 300, 200, 100]) model = LinearRegression()
model.fit(x, y)# 预测新的设备剩余使用寿命
new_x = np.array([600]).reshape(-1, 1)
predicted_y = model.predict(new_x)
print(f"预测的剩余使用寿命: {predicted_y[0]}")
当模型训练完成后,一旦设备实时数据显示接近预测的故障时间,企业便可提前安排维护,大大减少突发故障带来的损失,提高生产连续性。
五、质量管控升级:基于机器学习的缺陷检测
在产品制造过程中,质量把控至关重要。机器学习算法能够对产品图像、传感器数据等进行分析,快速准确地识别出产品缺陷。
以卷积神经网络(Convolutional Neural Network,CNN)在图像缺陷检测中的应用为例。CNN 通过卷积层、池化层和全连接层构建复杂的模型结构。
卷积层中,每个卷积核在图像上滑动,提取局部特征,假设输入图像为 I I I,卷积核为 K K K,卷积操作可以表示为:
S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( i + m , j + n ) K ( m , n ) S(i, j) = (I * K)(i, j) = \sum_{m}\sum_{n} I(i + m, j + n)K(m, n) S(i,j)=(I∗K)(i,j)=m∑n∑I(i+m,j+n)K(m,n)
池化层则对特征图进行下采样,进一步降低数据维度,常见的有最大池化(选取局部区域最大值)和平均池化(计算局部区域平均值)。
全连接层将经过卷积、池化后的特征进行整合,输出最终的分类结果(如产品是否有缺陷)。
以下是使用 Python 的 tensorflow
库搭建一个简单 CNN 模型用于图像缺陷检测的代码框架:
import tensorflow as tf
from tensorflow.keras import layers# 构建模型
model = tf.keras.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(image_height, image_width, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(num_classes, activation='softmax'))# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 训练模型(假设已有训练数据 train_images, train_labels 和测试数据 test_images, test_labels)
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
通过大量缺陷样本与正常样本的训练,模型能够精准识别产品微小瑕疵,实现实时质量监控,降低次品率,提升产品整体质量。
六、供应链优化中的机器学习魔法
工业 4.0 时代,供应链复杂度急剧上升,机器学习助力企业优化供应链各个环节。从需求预测、库存管理到物流配送规划,都能看到它的身影。
在需求预测方面,时间序列分析是常用方法。例如,使用自回归移动平均模型(ARIMA),对于时间序列数据 y t y_t yt,ARIMA(p, d, q) 模型可以表示为:
ϕ p ( B ) ( 1 − B ) d y t = θ q ( B ) ϵ t \phi_p(B)(1 - B)^d y_t = \theta_q(B)\epsilon_t ϕp(B)(1−B)dyt=θq(B)ϵt
其中, ϕ p ( B ) \phi_p(B) ϕp(B) 和 θ q ( B ) \theta_q(B) θq(B) 分别是自回归和移动平均多项式, B B B 是滞后算子, ϵ t \epsilon_t ϵt 是白噪声序列。通过对历史销售数据拟合 ARIMA 模型,预测未来需求,企业可据此合理安排生产与库存,避免积压或缺货。
利用 Python 的 statsmodels
库实现 ARIMA 模型预测:
import statsmodels.api as sm# 模拟的历史销售数据
sales_data = [100, 120, 130, 150, 140, 160, 180, 200]
# 将数据转换为时间序列
ts = sm.tsa.Series(sales_data)
model = sm.tsa.ARIMA(ts, order=(1, 1, 1))
results = model.fit()# 预测未来步骤
forecast = results.forecast(steps=3)
print(f"未来需求预测: {forecast}")
在库存管理上,机器学习根据实时需求预测、补货周期、成本等因素,动态调整库存策略,确保在满足客户需求的同时,将库存成本降至最低。物流配送中,通过路径优化算法(如基于机器学习改进的旅行商问题求解算法),规划最优配送路线,减少运输时间与成本。
七、面临的挑战与应对策略
尽管机器学习为智能制造带来诸多利好,但前行之路并非一帆风顺。一方面,工业数据具有海量、多源、异构、噪声大等特点,数据的清洗、整合与预处理难度较大。另一方面,模型的可解释性较差,企业决策者难以理解模型为何做出特定决策,影响技术推广。此外,专业的机器学习人才短缺,使得企业在技术应用与创新上受限。
为应对这些挑战,企业需加强数据治理体系建设,投入资源研发针对工业数据的预处理算法;同时,学术界与产业界应携手探索可解释性强的机器学习模型,如基于规则提取的深度学习模型解释方法;再者,高校、培训机构与企业应联合培养既懂工业流程又掌握机器学习技术的复合型人才,为工业 4.0 下机器学习的持续发展筑牢根基。
总之,在工业 4.0 的宏伟蓝图中,机器学习无疑是推动智能制造升级的核心动力,它贯穿生产、质量、能源管理等各个环节,为制造业的智能化转型赋能。尽管面临挑战,但只要各方协同努力,必将开创智能制造的新纪元,让工业生产迈向更高的巅峰。
相关文章:

【机器学习】工业 4.0 下机器学习如何驱动智能制造升级
我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 随着科技的飞速发展,工业 4.0 浪潮正席卷全球制造业,而机器学习作为这一变革中的关键技术,正以前…...
REST与RPC的对比:从性能到扩展性的全面分析
在微服务架构中,服务间通信是核心问题之一。常见的两种通信方式是REST(Representational State Transfer)和RPC(Remote Procedure Call)。它们各有优缺点,适用于不同场景。本文将从性能、扩展性、兼容性和开…...
MATLAB中将MAT文件转换为Excel文件
MATLAB中将MAT文件转换为Excel文件 MATLAB提供了多种方法将MAT文件中的数据导出到Excel文件中。下面介绍几种常用的方法: 1. 使用 writetable 函数 优点: 功能强大,可以灵活控制输出格式。用法: data load(your_data.mat); …...
leetcode hot 100 跳跃游戏2
45. 跳跃游戏 II 已解答 中等 相关标签 相关企业 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j…...

【Cesium】八、Cesium 默认地图不显示,不加载默认Bing地图
文章目录 前言实现方法App.vue 前言 Cesium 默认加载的地图是bing地图,个人认为请求bing地图会收到网络限制,导致地图资源下载很慢,所以设置默认不加载bing地图(后续我使用的是天地图) 参考文章: cesium …...

【新方法】通过清华镜像源加速 PyTorch GPU 2.5安装及 CUDA 版本选择指南
下面详细介绍所提到的两条命令,它们的作用及如何在你的 Python 环境中加速 PyTorch 等库的安装。 1. 设置清华镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这条命令的作用是将 pip (Python 的包管理工具…...
MySQL的sql操作有哪些
MySQL 的 SQL 操作可以分为几个主要类别,每个类别包含了一系列的语句,用于执行不同的数据库操作: 数据查询语言(DQL) SELECT:用于从一个或多个表中检索数据。可以使用 WHERE 子句进行条件筛选,…...

ArcGIS计算矢量要素集中每一个面的遥感影像平均值、最大值等统计指标
本文介绍在ArcMap软件中,基于矢量面要素集,计算在其中每一个面区域内,遥感影像的像元个数、平均值、总和等统计值,并将统计信息附加到矢量图层的属性表中的方法。 首先,明确一下本文的需求。现在有一个矢量面要素集&am…...

EasyExcel(环境搭建以及常用写入操作)
文章目录 EasyExcel环境搭建1.创建模块 easyexcel-demo2.引入依赖3.启动类创建 EasyExcel写1.最简单的写入1.模板2.方法3.结果 Write01.xlsx 2.指定字段不写入Excel1.模板2.方法3.结果 Write02.xlsx 3.指定字段写入excel1.模板2.方法3.结果 Write03.xlsx 4.按照index顺序写入ex…...

探索Milvus数据库:新手入门指南(tencent云)
开启向量数据库的奇妙之旅 在数据科学和机器学习领域,Milvus是一个专为向量数据设计的开源数据库。它以其高性能和易于使用的特点,成为了处理大规模向量搜索任务的理想选择。如果你是Milvus的新手,这篇文章将带你一步步了解如何开始你的Milv…...
MySQL:一文弄懂时区time_zone
你还在被以下问题困扰吗: MySQL 的安装规范中应该设置什么时区? JAVA 应用读取到的时间和北京时间差了 14 个小时,为什么?怎么解决? 已经运行一段时间的业务,修改 MySQL 的时区会影响已经存储的时间类型数据…...

基于python的天气可视化系统
目 录 1绪论 1.1研究背景 1.2研究意义 1.3当前研究现状 1.4研究内容 第2章 相关基础理论 2.1 爬虫技术基础 2.2 Python 在爬虫中的应用 2.3 爬虫系统的设计要点 第3章 天气网数据可视化系统设计 3.1 系统概述及主要内容 3.1.1 系统架构 3.1.2 工具选择…...

STM32 高级 WIFi案例1:测试AT指令
需求描述 测试AT指令是否能够正常控制ESP32的wifi,比如重启、读取设备信息等。 思路: stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。 配置: 第一步:对ESP32芯片烧录可以读取stm32命令的固件(fac…...

SpringCloud微服务架构
文章目录 认识微服务:SpringCloud 服务拆分及远程调用实现夸远程服务调用使用RestTemplateEureka注册中心 搭建EruekaServer注册服务服务发现 Ribbon负载均衡 修改负载均衡规则解饿加载 Nacos注册中心(nacos一部分功能) 服务注册到nacosnacos…...
WebSocket封装
提示:记录工作中遇到的需求及解决办法 文章目录 前言二、背景三、WebSocket3.1 什么是 WebSocket ?为什么使用他?四、封装 WebSocket4.1 Javascript 版本4.2 Typescript 版本4.3 如何使用?五、我的痛点如何处理前言 本文将介绍 WebSocket 的封装,比如:心跳机制,重连和一…...
基于Flask后端框架的均值填充
Flask可以在Jupyter上运行,首先需要安装这两个库: !pip install Flask-CORS !pip install Flask 引入依赖: from flask import Flask, request, jsonify, send_file import os import pandas as pd import io from flask import Flask fr…...

SQL-Server链接服务器访问Oracle数据
SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一:使用 NetFx3.cab 文件 下载 NetFx3.cab 文件,并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符,输入以下命令并回车: …...
Python中continue语句的使用
1 问题 本文将对在循环中continue语句的用途和如何正确使用continue进行分析与总结。 2 方法 (1)定义: 在编程中,“continue”是一个关键字,用于循环结构中。它的作用是跳过当前循环的剩余部分,立即进入下一…...
JavaScript的diff库详解(示例:vue项目实现两段字符串比对标黄功能)
diff库介绍 diff 库是基于 Myers 差分算法 实现的 JavaScript 文本差异库。 Myers 差分算法 是由 Eugene Myers 在 1986 年发表的一篇经典算法论文 “An O(ND) Difference Algorithm and its Variations” 中描述的一种高效算法,用于计算两个序列(通常是…...

自动驾驶3D目标检测综述(六)
停更了好久终于回来了(其实是因为博主去备考期末了hh) 这一篇接着(五)的第七章开始讲述第八章的内容。第八章主要介绍的是三维目标检测的高效标签。 目录 第八章 三维目标检测高效标签 一、域适应 (一)…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...