演化博弈、复制动态方程与仿真

news2024/11/16 4:40:21

  本文只整理和总结一下我的理解,文末列出了可供参考的更详细完整的资料。建议先看参考资料[1](博弈论公开课)的博弈论课程,可以直接从第11讲开始看。
  参考链接[2]是关于演化博弈非常经典的一本书。
  参考链接[5]涵盖内容比较完整,各方面都涉及到了。

概念

  本文统一采用参考链接[2]的符号表示。
   E ( A , B ) E(A,B) E(A,B)表示对手采用 B B B策略而自己采用 A A A的收益,简写作 A A A B B B的收益。
  NE表示纳什均衡,ES表示演化稳定。

收益矩阵

(下面表格来自参考文献[6])

C C C D D D
C C C r r r s s s
D D D t t t p p p
CooperationDefection
CooperationRewardSucker
DefectionTemptationPunishment

  其中 r = E ( C , C ) r=E(C,C) r=E(C,C)表示双方均采用C(合作)策略的收益, p = E ( D , D ) p=E(D,D) p=E(D,D)表示双方均采用D(背叛)策略的收益, s = E ( C , D ) s=E(C,D) s=E(C,D)表示对方采用D策略而己方采用C策略的收益, t = E ( D , C ) t=E(D,C) t=E(D,C)表示对方采用C策略而己方采用D策略的收益。收益矩阵还有一种表示法(参考链接[1][5]使用该表示法)

C C C D D D
C C C r , r r,r r,r s , t s,t s,t
D D D t , s t,s t,s p , p p,p p,p

演化稳定

  (上面表格来自参考文献[6])下面两个定义出自参考链接[1]。
定义1(来自Maynard Smith的生物学定义)
  (上面表格来自参考文献[6])在一个双参与人的对称博弈中,策略 S ^ \hat{S} S^是演化稳定策略当且仅当存在一个 ϵ ˉ > 0 \bar{\epsilon}>0 ϵˉ>0
( 1 − ϵ ) E ( S ^ , S ^ ) + ϵ E ( S ^ , S ′ ) > ( 1 − ϵ ) E ( S ′ , S ^ ) + ϵ E ( S ′ , S ′ ) (1-\epsilon)E(\hat{S},\hat{S})+\epsilon E(\hat{S},S')> (1-\epsilon)E(S',\hat{S})+\epsilon E(S',S') (1ϵ)E(S^,S^)+ϵE(S^,S)>(1ϵ)E(S,S^)+ϵE(S,S)
对于任意偏离 S ^ \hat{S} S^的策略 S ′ S' S都成立,且对任意 ϵ < ϵ ˉ \epsilon<\bar{\epsilon} ϵ<ϵˉ都成立。
上面式子的意思是, 1 − ϵ 1-\epsilon 1ϵ的概率下对 S ^ \hat{S} S^策略采用 S ^ \hat{S} S^策略加上 ϵ \epsilon ϵ的概率下对 S ′ S' S策略采用 S ^ \hat{S} S^的收益严格大于。。。的收益。
定义2(经济学定义)
  (上面表格来自参考文献[6])在一个双参与人的对称博弈中,策略 S ^ \hat{S} S^是演化稳定策略需满足下面两个条件:
条件1: ( S ′ , S ′ ) (S',S') (S,S)是(对称)纳什均衡,即 E ( S ^ , S ^ ) ≥ E ( S ′ , S ^ ) E(\hat{S},\hat{S})\geq E(S',\hat{S}) E(S^,S^)E(S,S^)
条件2:如果 E ( S ^ , S ^ ) = E ( S ′ , S ^ ) E(\hat{S},\hat{S})=E(S',\hat{S}) E(S^,S^)=E(S,S^),那么 E ( S ^ , S ′ ) > E ( S ′ , S ′ ) E(\hat{S},S')>E(S',S') E(S^,S)>E(S,S)
两个定义的关系
  (上面表格来自参考文献[6])参考链接[1]表示两个定义完全等价,定义1较为严谨,定义2更方便使用。

其它

对称博弈
  直观理解就是收益跟玩家无关,即收益矩阵

C C C D D D
C C C r 1 , r 2 r_1,r_2 r1,r2 s 1 , t 1 s_1,t_1 s1,t1
D D D t 2 , s 2 t_2,s_2 t2,s2 p 1 , p 2 p_1,p_2 p1,p2

中,下标不同的收益不同。
(参考链接[1]公开课中第11集的1:05:30处老师犯了个错误,弹幕里提到了对称博弈我觉得也不对,不知道哪有问题)

Bishop定理
该定理的进一步解释见参考链接[2]《演化与博弈论》。
如果 S ^ \hat{S} S^是一个由纯策略 A , B , C , ⋯ A,B,C,\cdots A,B,C,组成的混合演化稳定策略,那么
E ( A , S ^ ) = E ( B , S ^ ) = E ( C , S ^ ) = ⋯ = E ( S ^ , S ^ ) E(A,\hat{S})=E(B,\hat{S})=E(C,\hat{S})=\cdots=E(\hat{S},\hat{S}) E(A,S^)=E(B,S^)=E(C,S^)==E(S^,S^)

懦夫博弈与混合策略

  关于懦夫博弈更详细的说明见 懦夫博弈 -百度百科。
  下面收益矩阵中的具体取值出自参考链接[1]。

AB
A02
B10

其中 A A A策略表示强势, B B B策略表示弱势, E ( A , A ) = 0 , E ( A , B ) = 2 , E ( B , A ) = 1 , E ( B , B ) = 0 E(A,A)=0,E(A,B)=2,E(B,A)=1,E(B,B)=0 E(A,A)=0,E(A,B)=2,E(B,A)=1,E(B,B)=0。根据定义2可得出,两个策略均不是演化稳定策略。演化稳定策略是一个混合策略,用 S ^ \hat{S} S^表示, S ^ = 2 3 A + 1 3 B \hat{S}=\frac{2}{3}A+\frac{1}{3}B S^=32A+31B。设突变策略 S ′ = k A + ( 1 − k ) B S'=kA+(1-k)B S=kA+(1k)B,列出收益矩阵计算收益(以 E ( S ′ , S ^ ) E(S',\hat{S}) E(S,S^)为例)

2 3 A \frac{2}{3}A 32A 1 3 B \frac{1}{3}B 31B
k A kA kA02
( 1 − k ) B (1-k)B (1k)B10

可计算出
E ( S ^ , S ^ ) = 2 ⋅ 2 3 ⋅ 1 3 + 1 ⋅ 1 3 ⋅ 2 3 = 2 3 E ( S ′ , S ^ ) = 2 ⋅ k ⋅ 1 3 + 1 ⋅ ( 1 − k ) ⋅ 2 3 = 2 3 E ( S ^ , S ′ ) = 2 ⋅ 2 3 ⋅ ( 1 − k ) + 1 ⋅ 1 3 ⋅ k = 4 3 − k E ( S ′ , S ′ ) = 2 ⋅ k ⋅ ( 1 − k ) + 1 ⋅ ( 1 − k ) ⋅ k = 3 k ( 1 − k ) \begin{aligned} &E(\hat{S},\hat{S})=2\cdot\frac{2}{3}\cdot\frac{1}{3} +1\cdot\frac{1}{3}\cdot\frac{2}{3}=\frac{2}{3} \\ &E(S',\hat{S})=2\cdot k\cdot\frac{1}{3} +1\cdot(1-k)\cdot\frac{2}{3}=\frac{2}{3} \\ &E(\hat{S},S')=2\cdot\frac{2}{3}\cdot(1-k) +1\cdot\frac{1}{3}\cdot k=\frac{4}{3}-k \\ &E(S',S')=2\cdot k\cdot(1-k) +1\cdot(1-k)\cdot k=3k(1-k) \\ \end{aligned} E(S^,S^)=23231+13132=32E(S,S^)=2k31+1(1k)32=32E(S^,S)=232(1k)+131k=34kE(S,S)=2k(1k)+1(1k)k=3k(1k)
最后得到两个策略 S ^ \hat{S} S^ S ′ S' S的收益矩阵为

S ^ \hat{S} S^ S ′ S' S
S ^ \hat{S} S^ 2 3 \frac{2}{3} 32 4 3 − k \frac{4}{3}-k 34k
S ′ S' S 2 3 \frac{2}{3} 32 3 k ( 1 − k ) 3k(1-k) 3k(1k)

由演化稳定定义2, E ( S ^ , S ^ ) = E ( S ′ , S ^ ) E(\hat{S},\hat{S})=E(S',\hat{S}) E(S^,S^)=E(S,S^),但可以计算出, E ( S ^ , S ′ ) > E ( S ′ , S ′ ) E(\hat{S},S')>E(S',S') E(S^,S)>E(S,S),所以 E ( S ^ E(\hat{S} E(S^是演化稳定策略。
  最后,由Bishop定理可求出(验证)演化稳定策略 S ^ \hat{S} S^中的 k k k值:
E ( A , S ^ ) = 2 ( 1 − k ) E ( B , S ^ ) = k 2 ( 1 − k ) = k , k = 2 3 \begin{aligned} &E(A,\hat{S})=2(1-k) \\ &E(B,\hat{S})=k \\ &2(1-k)=k,k=\frac{2}{3} \end{aligned} E(A,S^)=2(1k)E(B,S^)=k2(1k)=k,k=32

鹰鸽博弈

  假设同一物种的两个竞争对手在某个价值为 G G G的资源位置相遇,有两个纯策略:

  1. 鹰策略:你总是升级冲突,直到对方退出,或者你受到严重伤害。
  2. 鸽策略:你保持姿态直到对方退出,但如果对方升级冲突或看起来太强,你就退出。

(此处更详细的说明见 鹰派与鸽派的博弈 -豆瓣)
  收益矩阵

HD
H V − C 2 \frac{V-C}{2} 2VCV
D0 V 2 \frac{V}{2} 2V

其中需要满足 V < C V<C V<C,否则纯策略 H H H就是ESS。使用同样的方法计算ESS,设 S ^ = k H + ( 1 − k ) D \hat{S}=kH+(1-k)D S^=kH+(1k)D
E ( H , S ^ ) = V − C 2 k + ( 1 − k ) V E ( D , S ^ ) = ( 1 − k ) V 2 \begin{aligned} E(H,\hat{S}) =& \frac{V-C}{2}k+(1-k)V \\ E(D,\hat{S}) =& (1-k)\frac{V}{2} \\ \end{aligned} E(H,S^)=E(D,S^)=2VCk+(1k)V(1k)2V
E ( H , S ^ ) = E ( D , S ^ ) E(H,\hat{S})=E(D,\hat{S}) E(H,S^)=E(D,S^),可解得 k = V C k=\frac{V}{C} k=CV,代入得
E ( H , S ^ ) = E ( D , S ^ ) = V ( C − V ) 2 C E ( S ^ , S ^ ) = k 2 V − C 2 + k ( 1 − k ) V + ( 1 − k ) 2 V 2 = V ( C − V ) 2 C E(H,\hat{S})=E(D,\hat{S})=\frac{V(C-V)}{2C} \\ E(\hat{S},\hat{S})=k^2\frac{V-C}{2}+k(1-k)V+(1-k)^2\frac{V}{2} =\frac{V(C-V)}{2C} \\ E(H,S^)=E(D,S^)=2CV(CV)E(S^,S^)=k22VC+k(1k)V+(1k)22V=2CV(CV)

复制动态方程

关于复制动态方程的进一步解释见参考链接[5]。[2]中的解释不太清晰,虽然用的是[2]中的符号表示。
定义两个策略的适应度 W H W_H WH W D W_D WD和种群的平均适应度 W ˉ \bar{W} Wˉ分别为
W H = W 0 + p E ( H , H ) + ( 1 − p ) E ( H , D ) W D = W 0 + p E ( D , H ) + ( 1 − p ) E ( D , D ) W ˉ = p W H + ( 1 − p ) W D W_H=W_0+pE(H,H)+(1-p)E(H,D) \\ W_D=W_0+pE(D,H)+(1-p)E(D,D) \\ \bar{W}=pW_H+(1-p)W_D \\ WH=W0+pE(H,H)+(1p)E(H,D)WD=W0+pE(D,H)+(1p)E(D,D)Wˉ=pWH+(1p)WD
其中 W 0 W_0 W0代表个体在博弈之前的基础适应度(?)。可以看出 p E ( H , H ) + ( 1 − p ) E ( H , D ) = E ( H , S ) pE(H,H)+(1-p)E(H,D)=E(H,S) pE(H,H)+(1p)E(H,D)=E(H,S),其中 S = p H + ( 1 − p ) D S=pH+(1-p)D S=pH+(1p)D是混合策略(不知道 E ( H , S ) E(H,S) E(H,S) W H W_H WH之间有什么关系)。下一代中采取 H H H策略的比例为
p n + 1 = p n W H W ˉ p_{n+1}=p_n\frac{W_H}{\bar{W}} pn+1=pnWˉWH
若定义 q = ( 1 − p ) q=(1-p) q=(1p),且
q n + 1 = q n W D W ˉ q_{n+1}=q_n\frac{W_D}{\bar{W}} qn+1=qnWˉWD
可验证
p n + 1 + q n + 1 = p n W H + q n W D W ˉ = 1 p_{n+1}+q_{n+1}=\frac{p_nW_H+q_nW_D}{\bar{W}}=1 pn+1+qn+1=WˉpnWH+qnWD=1
由递推关系推导出复制动态方程
d p d t = p n + 1 − p n = p W H − W ˉ W ˉ = p W H − ( p W H + ( 1 − p ) W D ) p W H + ( 1 − p ) W D = p ( 1 − p ) ( W H − W D ) W H − ( 1 − p ) ( W H − W D ) \begin{aligned} \frac{\text{d}p}{\text{d}t} =& p_{n+1}-p_n = p\frac{W_H-\bar{W}}{\bar{W}} \\ =& p\frac{W_H-(pW_H+(1-p)W_D)}{pW_H+(1-p)W_D} \\ =& \frac{p(1-p)(W_H-W_D)}{W_H-(1-p)(W_H-W_D)} \\ \end{aligned} dtdp===pn+1pn=pWˉWHWˉppWH+(1p)WDWH(pWH+(1p)WD)WH(1p)(WHWD)p(1p)(WHWD)
这里不知道推导过程哪里有问题,正确的复制动态方程应该是
d p d t = p ( W H − W ˉ ) \frac{\text{d}p}{\text{d}t} = p(W_H-\bar{W}) dtdp=p(WHWˉ)

仿真

W 0 = 0 W_0=0 W0=0 C = 6 C=6 C=6 V = 3 V=3 V=3,仿真结果如图所示。
在这里插入图片描述
另外仿真可得 W 0 W_0 W0对结果几乎没有影响,复制动态方程中的分母 W ˉ \bar{W} Wˉ只影响曲线收敛的速度。

参考

  1. 【公开课】耶鲁大学:博弈论(中英双语字幕)-bilibili
  2. 约翰·梅纳德·史密斯(John Maynard Smith).《演化与博弈论》(Evolution and the Theory of Games)
  3. 鹰派与鸽派的博弈 -豆瓣
  4. https://www.cs.rug.nl/~michael/teaching/gametheorysheets.pdf
  5. Evolutionary Game Theory -Stanford Encyclopedia of Philosophy
  6. 李巧宇.基于演化博弈理论的自组织任务分配动力学研究[D].南开大学.2019.
  7. 懦夫博弈 -百度百科

附代码

simucpp 仿真代码。

#include <cmath>
#include <iostream>
#include "simucpp.hpp"
using namespace simucpp;
using namespace std;
constexpr double V = 3;
constexpr double C = 6;
constexpr double W0 = 0;
constexpr double EHH = (V-C)/2.0;
constexpr double EHD = V;
constexpr double EDH = 0;
constexpr double EDD = V/2.0;
int main()
{
    Simulator sim1(12);
    FUIntegrator(intP, &sim1);
    FUFcn(fcnWH, &sim1);
    FUFcn(fcnWD, &sim1);
    FUFcnMISO(misoWbar, &sim1);
    FUFcnMISO(misoP, &sim1);
    FUOutput(outk, &sim1);
    FUOutput(outWbar, &sim1);
    sim1.connectU(intP, fcnWH);
    sim1.connectU(intP, fcnWD);
    sim1.connectU(intP, misoWbar);
    sim1.connectU(fcnWH, misoWbar);
    sim1.connectU(fcnWD, misoWbar);
    sim1.connectU(intP, misoP);
    sim1.connectU(fcnWH, misoP);
    sim1.connectU(misoWbar, misoP);
    sim1.connectU(misoP, intP);
    sim1.connectU(intP, outk);
    sim1.connectU(misoWbar, outWbar);
    fcnWH->Set_Function([](double u){ return W0 + u*EHH + (1-u)*EHD;});
    fcnWD->Set_Function([](double u){ return W0 + u*EDH + (1-u)*EDD;});
    misoWbar->Set_Function([](double *u){ return u[0]*u[1] + (1-u[0])*u[2];});
    misoP->Set_Function([](double *u){ return u[0]*(u[1]-u[2]);});
    intP->Set_InitialValue(1e-3);
    sim1.Set_SampleTime(0.1);
    sim1.Initialize();
    sim1.Simulate();
    cout << intP->Get_OutValue() << endl;
    sim1.Plot();
    return 0;
}

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

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

相关文章

CSDN文章质量检测系统

想知道你的文章在CSDN中质量如何吗&#xff1f; 你想知道你的CSDN文章到底写得怎么样吗&#xff1f; 你想要获得一个你的系统的CSDN文章评分吗&#xff1f; CSDN质量分数帮你解决这个问题&#xff0c;网址如下&#xff1a; https://www.csdn.net/qc 界面在如下&#xff0c;如果…

XGBoost模型的python实现

文章目录函数介绍实例二分类问题多分类问题作者&#xff1a;李雪茸函数介绍 实现 XGBoost 分类算法使用的是 xgboost 库的 XGBClassifier&#xff0c;具体参数如下&#xff1a; 1、max_depth&#xff1a;给定树的深度&#xff0c;默认为3 2、learning_rate&#xff1a;每一步…

SpringBoot整合TKMyBatis实现增删改查

文章目录什么是TKMybatis&#xff1f;SpringBoot整合TKMybatis实体类注解TKMapper接口如何使用基本增删改操作批量查询和删除批量添加自定义查询条件ExampleExample 条件设置Example 使用什么是TKMybatis&#xff1f; TKMybatis 是基于Mybatis 框架开发的一个工具&#xff0c;…

[4]MQTT协议基础--下

1.QoS服务质量等级 MQTT服务质量(Quality of Service 缩写 QoS)正是用于告知物联网系统&#xff0c;哪些信息是重要信息需要准确无误的传输&#xff0c;而哪些信息不那么重要&#xff0c;即使丢失也没有问题。 MQTT协议有三种服务质量级别&#xff1a; QoS 0 – 最多发一次…

公司jmeter分享

一、数据库压测组件功能说明 1.JDBC Connection Configuration:jdbc连接配置(一个测试计划可以有多个 JDBC Connection) 2.Variable Name for created pool: 创建池的变量名 连接绑定的变量名,JMeter可以使用多个连接,每个连接绑定到不同的变量;通过引用不同的绑定变量…

安全防范语音通知实现方案

语音通知作为一种强提醒的信息通知方式&#xff0c;非常适合使用在安全防范语音通知场景中&#xff0c;可以有效避免用户错过重要信息。那安全防范语音通知怎么实现&#xff1f;这里互亿无线小编为大家做个详细介绍&#xff1a; 一、如何发送安全防范语音通知信息 互亿无线语…

本地事务、分布式事务、CAP 定理与 BASE 理论、分布式事务几种方案、Linux 安装 Seata、Seata的使用-56

一&#xff1a;本地事务 1.1 事务的基本性质 1.数据库事务的几个特性&#xff1a;原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily)&#xff0c;简称就是 ACID&#xff1b; 原子性&#xff1a;一系列的操作整体不可拆分&#xf…

LVGL学习笔记8 - 字体

目录 1. 修改默认字体 2. 修改字体 3. 特殊字体 3.1 SUBPX字体 3.2 28像素压缩字体 3.3 16像素希伯来语/阿拉伯语/Perisan字母 3.4 16像素中文字体 3.5 8像素Ascii字体 3.6 16像素Ascii字体 3.7 内置图标 4. 超大字体 5. 编码方式 6. 添加字体 6.1 在线字体转换器 …

【微服务笔记01】微服务组件之Eureka注册中心的介绍及其基础环境的搭建

这篇文章&#xff0c;主要介绍微服务中的注册中心Eureka及其基础环境的搭建【源代码地址】。 目录 一、Eureka注册中心 1.1、什么是注册中心 1.2、注册中心原理 二、搭建Eureka注册中心环境 2.1、创建父工程&#xff0c;引入微服务依赖 2.2、创建Eureka服务端工程 &…

全球公开的DEM数据产品

1 简介 全球公开版地形数据包括&#xff1a;GTOPO30-DEM、ASTER-GDEM、SRTM90、ALOS-AW3D30等&#xff0c;其他的诸如World DEM及ALOS-AW3D (5m分辨率&#xff09;等全球地形数据不能免费获得。 SRTM&#xff1a;由NASA 及国家地理空间情报局NGA采用2000年2月发射的“奋进号”…

word文件损坏打不开如何修复?文件丢失怎么办?

我们日常办公中&#xff0c;经常用到Word文档。但是有时会遇到word文件损坏、无法打开的情况。这时该怎么办&#xff1f;接着往下看&#xff0c;小编在这里就给大家带来Word文件修复的方法&#xff0c;以及Word文件丢失如何恢复的方法&#xff01; 一、Word文件损坏怎么办 部分…

【vsan数据恢复】磁盘离线导致分布式存储瘫痪的数据恢复案例

vsan数据恢复环境&#xff1a; 一组4台服务器搭建vsan集群&#xff1b; 每台服务器配置有2组分别由6块硬盘组成的磁盘阵列&#xff0c;上层是虚拟机文件。 vsan故障&#xff1a; 在运行过程中&#xff0c;某一个节点的一块硬盘离线&#xff0c;vsan安全机制启动&#xff0c;开始…

梦想云图Node.JS服务 ( 最近更新时间:2022-12-30 10:04:50 )

说明 后台提供梦想Node.JS服务&#xff0c;方便调用控件后台功能&#xff0c;Windows服务程序所在目录:Bin\MxDrawServer\Windows&#xff0c;Linux服务程序所在目录:Bin\Linux\MxDrawServer 梦想云图Node.JS服务 &#xff08; 最近更新时间&#xff1a;2022-12-30 10:04:50 …

第三个脚本——时间加速and视频倍速

目录 本文主要内容 granr属性介绍 run-at属性 时间加速原理 视频倍速原理 完整示例 本文主要内容 介绍grant属性&#xff0c;run-at属性以及时间加速&#xff0c;视频倍速原理 granr属性介绍 相关函数四个&#xff1a; GM_setValue GM_getValue GM_listValues GM_del…

json基本使用与简介

一、简介 二、json两种构造结构 三、js解析JSON 1、JSON2解析JSON 2.用eval()方法把JSON字符串转化成JSON对象. 3&#xff0e;使用JSON2中的JSON对象的parser()方法解析JSON字符串 4. 使用JSON2中的JSON对象的stringify ()方法把JSON对象转换成字符串 5、案例 四、Java解…

【模型部署】人脸检测模型DBFace C++ ONNXRuntime推理部署(1)

系列文章目录 【模型部署】人脸检测模型DBFace C ONNXRuntime推理部署&#xff08;0&#xff09; 【模型部署】人脸检测模型DBFace C ONNXRuntime推理部署&#xff08;1&#xff09; 【模型部署】人脸检测模型DBFace C ONNXRuntime推理部署&#xff08;2&#xff09; 文章目录…

深度学习训练营之灵笼人物识别

深度学习训练营之灵笼人物识别原文链接环境介绍前置工作设置GPU导入数据数据查看数据预处理加载数据可视化数据检查数据配置数据集prefetch()功能详细介绍&#xff1a;归一化查看归一化后的数据构建VGG-19网络VGG优点VGG缺点利用官方给到的网络网络结构编译模型训练结果可视化预…

第03讲:GitHub的使用

一、创建远程仓库 访问GitHub官方网站&#xff0c;并创建账号&#xff0c;然后按照以下图示创建项目 复制仓库地址 二、远程仓库的操作 命令作用git remote -v查看当前所有远程地址别名git remote add 别名 远程地址起别名git push 别名 分支推送本地分支上的内容到远程仓库…

vscode+opencv+mingw+cmake配置vscode下的opencv环境

目录介绍安装VsCode安装mingw安装cmake安装opencv&#xff0c;以及其扩展库 opencv_contrib安装python利用cmake生成opencv的Makefile文件cmake命令进行编译&#xff0c;安装配置opencv环境变量配置VSCODE测试DEMO介绍 参考链接&#xff1a;https://www.cnblogs.com/czlhxm/p/…

教育行业回访话术

近些年来&#xff0c;随着知识经济的快速发展&#xff0c;教育市场呈现良好的增长态势。越来越多的人开始通过参加各种培训来提升自己&#xff0c;教育行业竞争十分激烈。 前言 近些年来&#xff0c;随着知识经济的快速发展&#xff0c;教育市场呈现良好的增长态势。而且由于受…