博弈论 —— matlab

目录

1.简介

2.算法原理

3.实例分析

1.各参数初始化

2.计算期望与实际期望

3.博弈过程

4.绘图

 完整代码


1.简介

        博弈论又被称为对策论(Game Theory)既是现代数学的一个新分支,也是运筹学的一个重要学科。

        博弈论主要研究公式化了的激励结构间的相互作用。是研究具有斗争或竞争性质现象的数学理论和方法。 博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。生物学家使用博弈理论来理解和预测进化论的某些结果。

        博弈论已经成为经济学的标准分析工具之一。在生物学、经济学、国际关系、计算机科学、政治学、军事战略和其他很多学科都有广泛的应用。

        基本概念中包括局中人、行动、信息、策略、收益、均衡和结果等。其中局中人、策略和收益是最基本要素。局中人、行动和结果被统称为博弈规则。

        博弈论简单讲就是,A采取措施影响B的行为,B的行为影响A的决策,两者来回博弈,最终达到一个动态平衡。博弈论严格来讲只是一种解题方式。

2.算法原理

        以电动出租车与换电站为例,假设电动出租车及换电站均属于同一家公司,公司想通过换电站价格定价措施去控制目标区域内的出租车数量达到预期分布。

        对于司机而言,有两个成本,一个是距离成本d,一个是支付成本p,支付成本即是换电池所支付的电价,我们可以设立权重因子a将两者合并构建为一个效用函数,司机会选择该函数最小的换电站更换电池,更换电池后司机一般会在周围开始接单

        对于公司而言,目标函数则是不同地区的出租车实际分布e与期望分布E的绝对差之和,公司通过调整价格去影响司机的选择,从而调整司机在不同区域的分布

双层博弈论的模型分析

①第一阶段,充电站统计出各电动出租车的换电请求后,根据优化目标,制定价格策略

②第二阶段,电动出租车根据自身效用函数从所有换电站中选择出目标换电站进行跟换电池

③第一阶段和第二阶段交替往复进行,直到达到均衡

算法设计步骤

3.实例分析

1.各参数初始化

n=900;%换电需求数
min_price=170;%换电价格范围
max_price=230;
A=normrnd(36,5,1,25);%初始期望,平均值为36,方差为5的高斯分布
E=fix(A); %朝0方向取整,如,4.1,4.5,4.8取整都是4
%下面是根据需求数调整E的大小
a=sum(E)-n;
A=A-a/25;
E=fix(A);
b=sum(E)-n;
A=A-b/25;
E=fix(A);
a1=0.05;a2=0.95;%距离成本与换点价格权重
x=rand(n,1).*20000;%初始化需求车辆位置
y=rand(n,1).*20000;
H=[2,2;2,6;2,10;2,14;2,18%初始化换电站位置
6,2;6,6;6,10;6,14;6,18
10,2;10,6;10,10;10,14;10,18
14,2;14,6;14,10;14,14;14,18
18,2;18,6;18,10;18,14;18,18].*1000;
%绘制初始化的司机与换电站的位置图
figure
plot(x,y,'r*')
hold on
plot(H(:,1),H(:,2),'bo')
legend('司机','换电站')
title('初始位置图')

返回:

2.计算期望与实际期望

%% 计算期望与实际期望
D=[];%需求车辆到各换电站的需求比例
price=200.*ones(1,25);
for i=1:length(H)for j=1:length(x)D(i,j)=a1*sqrt((H(i,1)-x(j))^2+(H(i,2)-y(j))^2)+a2*price(i);%总费用end
end
[d1,d2]=min(D);%选择最近距离换电站
C=tabulate(d2(:));%统计选择换电站次数
e=C(:,2);
err=sum(abs(E-e')) %期望差之和,即博弈对象

返回:因为随机,所有每次结过可能不一样

3.博弈过程

%% 博弈
J=[]; %价格变化的差值
ER(1)=err;
for k=2:100j=0;for i=1:25if e(i)<E(i) && price(i)>=min_priceprice(i)=price(i)-1;j=j+1;endif e(i)>E(i) && price(i)<=max_priceprice(i)=price(i)+1;j=j+1;endendJ=[J,j];DD=[];for i=1:length(H)for j=1:length(x)DD(i,j)=a1*sqrt((H(i,1)-x(j))^2+(H(i,2)-y(j))^2)+a2*price(i);endend[dd1,dd2]=min(DD);CC=tabulate(dd2(:));e=CC(:,2);err=sum(abs(E-e'));ER=[ER,err];
end

4.绘图

% 绘图
figure
plot(ER,'-o')
title('E-e的差值变化')
set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32])
legend('E-e')figure
plot(J,'r-o')
title('价格的差值变化')
xlabel('Iterations(t)')
set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32])
legend('sum of Price(t)-Price(t-1)')figure
bar(price,0.5)
hold on
plot([0,26],[min_price,min_price],'g--')
plot([0,26],[max_price,max_price],'r--')
title('换电站的换电价格')
ylabel('Price(¥)')
axis([0,26,0,300])
set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32]);figure
h=bar([e,E'],'gr');
set(h(1),'FaceColor','g'); set(h(2),'FaceColor','r');
axis([0,26,0,50])
title('出租车的预期和实际数量')
ylabel('E and e')
set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32]);
xlabel('换电站')
legend('e','E')

返回:

 完整代码

clear;clc;
setenv('BLAS_VERSION','') %进行错误修改
n=900;%换电需求数
min_price=170;%换电价格范围
max_price=230;
A=normrnd(36,5,1,25);%初始期望,平均值为36,方差为5的高斯分布
E=fix(A); %朝0方向取整,如,4.1,4.5,4.8取整都是4
%下面是根据需求数调整E的大小
a=sum(E)-n;
A=A-a/25;
E=fix(A);
b=sum(E)-n;
A=A-b/25;
E=fix(A);
a1=0.05;a2=0.95;%距离成本与换点价格权重
x=rand(n,1).*20000;%初始化需求车辆位置
y=rand(n,1).*20000;
H=[2,2;2,6;2,10;2,14;2,18%初始化换电站位置
6,2;6,6;6,10;6,14;6,18
10,2;10,6;10,10;10,14;10,18
14,2;14,6;14,10;14,14;14,18
18,2;18,6;18,10;18,14;18,18].*1000;
%绘制初始化的司机与换电站的位置图
figure
plot(x,y,'r*')
hold on
plot(H(:,1),H(:,2),'bo')
legend('司机','换电站')
title('初始位置图')%% 计算期望与实际期望
D=[];%需求车辆到各换电站的需求比例
price=200.*ones(1,25);
for i=1:length(H)for j=1:length(x)D(i,j)=a1*sqrt((H(i,1)-x(j))^2+(H(i,2)-y(j))^2)+a2*price(i);%总费用end
end
[d1,d2]=min(D);%选择最近距离换电站
C=tabulate(d2(:));%统计选择换电站次数
e=C(:,2);
err=sum(abs(E-e')); %期望差之和,即博弈对象
% ER(1)=err%% 博弈
J=[]; %价格变化的差值
ER(1)=err;
for k=2:100j=0;for i=1:25if e(i)<E(i) && price(i)>=min_priceprice(i)=price(i)-1;j=j+1;endif e(i)>E(i) && price(i)<=max_priceprice(i)=price(i)+1;j=j+1;endendJ=[J,j];DD=[];for i=1:length(H)for j=1:length(x)DD(i,j)=a1*sqrt((H(i,1)-x(j))^2+(H(i,2)-y(j))^2)+a2*price(i);endend[dd1,dd2]=min(DD);CC=tabulate(dd2(:));e=CC(:,2);err=sum(abs(E-e'));ER=[ER,err];
end
% 绘图
figure
plot(ER,'-o')
title('E-e的差值变化')
set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32])
legend('E-e')figure
plot(J,'r-o')
title('价格的差值变化')
xlabel('Iterations(t)')
set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32])
legend('sum of Price(t)-Price(t-1)')figure
bar(price,0.5)
hold on
plot([0,26],[min_price,min_price],'g--')
plot([0,26],[max_price,max_price],'r--')
title('换电站的换电价格')
ylabel('Price(¥)')
axis([0,26,0,300])
set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32]);figure
h=bar([e,E'],'gr');
set(h(1),'FaceColor','g'); set(h(2),'FaceColor','r');
axis([0,26,0,50])
title('出租车的预期和实际数量')
ylabel('E and e')
set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32]);
xlabel('换电站')
legend('e','E')

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

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

相关文章

电脑有回声_电脑连接麦克风有回音怎么办?麦克风回声的解决方法

电脑插入麦克风后说话有回声怎么办&#xff1f;麦克风说话有回音该如何解决&#xff1f;下面给大家介绍电脑连接麦克风有回音的解决方法。解决方法&#xff1a;1、打开【控制面板】&#xff0c;找到并点击【硬件和声音】&#xff0c;如图所示&#xff1a;2、在【硬件和声音】窗…

线性规划 —— matlab

目录 一、基本概念 二、概念的数学形式表达 三、确定w和b 1.读取或输入数据 2.归一化、标准化 2.1 均值 2.2 归一化 2.3 标准化 3.求解w和b 1.直接解方程 2.最小二乘法&#xff08;least square method&#xff09;求解&#xff1a; 4. 评估回归模型 四、regress线…

Java商品信息查询

使用一维数组和二维数组的相关知识&#xff0c;以及数组排序的多种算法来实现商品信息查询的功能。 假设在仓库系统中&#xff0c;每件商品都有 3 个库存信息&#xff0c;分别是入库量、出库量和当前库存量。定义一个一维数组来存储 5 件商品的名称&#xff0c;并定义一个二维…

openwrt dhcp 无法获取ip_电脑的 ip 是怎么来的呢?我又没有配置过

来源 | 苦逼的码农作者 | 帅地对于我们平时上网的电脑的 ip 是如何来的呢&#xff1f;一种简单的方法就是我们自己来配置了显然&#xff0c;这里有两种配置方式&#xff0c;一种是自动获取 ip 地址&#xff0c;一种是我们手动来设置&#xff0c;我相信大部分人都是通过自动获取…

线性回归 —— python

目录 一、基本概念 二、概念的数学形式表达 三、确定w和b 1.读取或输入数据 2.归一化、标准化 2.1 均值 2.2 归一化 2.3 标准化 3.求解w和b 1.直接解方程 2.最小二乘法&#xff08;least square method&#xff09;求解&#xff1a; 4. 评估回归模型 四、sklearn中…

审查元素找不到创建的元素_香奈儿除了珍珠,还有哪些你不知道的经典元素?答案在原文中找...

Chanel曾经说过&#xff1a;“没有珍珠的女人&#xff0c;不算是女人”珍珠是Coco永远的标志无论白天还是夜晚也无论她穿着运动服还是毛衣男装裤甚至在她人生最后的一段日子珍珠饰品都如影随形。BUT&#xff01;你能相信&#xff1f;对珍珠如此看重的Coco竟然卖的大部分珍珠是人…

博弈论 —— python

目录 1.简介 2.算法原理 3.实例分析 1.各参数初始化 2.计算期望与实际期望 3.博弈过程 4.绘图 完整代码 1.简介 博弈论又被称为对策论(Game Theory)既是现代数学的一个新分支&#xff0c;也是运筹学的一个重要学科。 博弈论主要研究公式化了的激励结构间的相互作用。是研…

android应用程序 多少钱_关于APP开发你最想了解的事,开发一个APP多少钱?

当我们在进行APP开发&#xff0c;最关注的问题一定是APP开发的价格问题&#xff0c;而作为软件开发行业的从业人员&#xff0c;经常会遇到这样的情况&#xff1a;“别说这么多&#xff0c;你只要告诉我开发一个软件多少钱就行了”。郑州APP开发公司的确&#xff0c;无论我们买什…

mvc 扫描二维码跳转内部指定页面_开源神器:一个二维码,让文件传输不设限!...

大家好&#xff0c;我是小 G。今天给大家推荐一个在前不久火遍 GitHub 的开源项目&#xff1a;QRCP。从项目的命名你们应该就能大致猜测出来&#xff0c;这款神器的主要作用&#xff0c;就是能通过指定二维码&#xff0c;快速完成文件的传输功能。项目作者是来自意大利的一位小…

K-means聚类 —— matlab

目录 1.简介 2.算法原理 3.实例分析 3.1 读取数据 3.2 原理推导K均值过程 3.3 自带kmeans函数求解过程 完整代码 1.简介 聚类是一个将数据集中在某些方面相似的数据成员进行分类组织的过程&#xff0c;聚类就是一种发现这种内在结构的技术&#xff0c;聚类技术经常被称为…

数据线给电脑联网是什么原理_物联网孵化的产物——条码扫描器

一、什么是物联网&#xff1f;物联网的概念由凯文阿什顿(Kevin Ashton)于1999年被提出&#xff0c;即Internet of Things(IOT)&#xff0c;也称为Web of Things。根据阿什顿的想法&#xff0c;计算机最终能够在没有人工干预的情况下&#xff0c;自主产生及收集数据&#xff0c;…

灰色关联法 —— matlab

目录 1.简介 2.算法详解 2.1 数据标准化 2.2 计算灰色相关系数 2.3 计算灰色关联度系数 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 绘制 x1,x4,x5,x6,x7 的折线图 3.4 计算灰色相关系数 完整代码 1.简介 对于两个系统之间的因素&#xff0c;其随时间或不同对象而…

灰色关联与TOPSIS法 —— matlab

目录 1.简介 2.算法详解 2.1 指标正向化及标准化 2.2 找到最大最小参考向量 2.3 计算与参考向量的相关系数 2.4 求评分 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 得到最大最小参考行 3.4 与最大值的灰色相关系数 3.5 与最小值的灰色相关系数 3.6 计算综合评分 …

mmap函数_Linux内存映射mmap原理分析

一直都对内存映射文件这个概念很模糊&#xff0c;不知道它和虚拟内存有什么区别&#xff0c;而且映射这个词也很让人迷茫&#xff0c;今天终于搞清楚了。。。下面&#xff0c;我先解释一下我对映射这个词的理解&#xff0c;再区分一下几个容易混淆的概念&#xff0c;之后&#…

灰色关联法 —— python

目录 1.简介 2.算法详解 2.1 数据标准化 2.2 计算灰色相关系数 2.3 计算灰色关联度系数 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 绘制 x1,x4,x5,x6,x7 的折线图 3.4 计算灰色相关系数 完整代码 1.简介 对于两个系统之间的因素&#xff0c;其随时间或不同对象而变…

arraylist线程安全吗_Java中的集合和线程安全

通过Java指南我们知道Java集合框架(Collection Framework)如何为并发服务&#xff0c;我们应该如何在单线程和多线程中使用集合(Collection)。话题有点高端&#xff0c;我们不是很好理解。所以&#xff0c;我会尽可能的描述的简单点。通过这篇指南&#xff0c;你将会对Java集合…

灰色关联与TOPSIS法 —— python

目录 1.简介 2.算法详解 2.1 指标正向化及标准化 2.2 找到最大最小参考向量 2.3 计算与参考向量的相关系数 2.4 求评分 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 得到最大最小参考行 3.4 与最大值的灰色相关系数 3.5 与最小值的灰色相关系数 3.6 计算综合评分…

spark 数据框 删除列_pandas 常用的数据处理函数

在数据分析过程中&#xff0c;首先就是对数据进行清洗和处理&#xff0c;而使用 python 进行处理的朋友们&#xff0c;对 pandas 包肯定是熟悉不过的了。pandas 的功能很强大&#xff0c;基本的数据处理操作都可以找到对应函数去使用&#xff0c;想全面了解的朋友可以查看相关文…

Java元注解作用及使用

元注解是负责对其它注解进行说明的注解&#xff0c;自定义注解时可以使用元注解。Java 5 定义了 4 个注解&#xff0c;分别是 Documented、Target、Retention 和 Inherited。Java 8 又增加了 Repeatable 和 Native 两个注解。这些注解都可以在 java.lang.annotation 包中找到。…

灰色预测法 —— matlab

目录 1.简介 2.算法详解 2.1 生成累加数据 2.2 累加后的数据表达式 2.3 求解2.2的未知参数 3.实例分析 3.1 导入数据 3.2 进行累加数据 3.3 求解系数 3.4 预测数据及对比 完整代码 1.简介 灰色系统理论认为对既含有已知信息又含有未知或非确定信息的系统进行预测&a…