博弈论 —— matlab
目錄
1.簡介
2.算法原理
3.實例分析
1.各參數(shù)初始化
2.計算期望與實際期望
3.博弈過程
4.繪圖
?完整代碼
1.簡介
????????博弈論又被稱為對策論(Game Theory)既是現(xiàn)代數(shù)學(xué)的一個新分支,也是運籌學(xué)的一個重要學(xué)科。
????????博弈論主要研究公式化了的激勵結(jié)構(gòu)間的相互作用。是研究具有斗爭或競爭性質(zhì)現(xiàn)象的數(shù)學(xué)理論和方法。 博弈論考慮游戲中的個體的預(yù)測行為和實際行為,并研究它們的優(yōu)化策略。生物學(xué)家使用博弈理論來理解和預(yù)測進化論的某些結(jié)果。
????????博弈論已經(jīng)成為經(jīng)濟學(xué)的標(biāo)準(zhǔn)分析工具之一。在生物學(xué)、經(jīng)濟學(xué)、國際關(guān)系、計算機科學(xué)、政治學(xué)、軍事戰(zhàn)略和其他很多學(xué)科都有廣泛的應(yīng)用。
????????基本概念中包括局中人、行動、信息、策略、收益、均衡和結(jié)果等。其中局中人、策略和收益是最基本要素。局中人、行動和結(jié)果被統(tǒng)稱為博弈規(guī)則。
????????博弈論簡單講就是,A采取措施影響B(tài)的行為,B的行為影響A的決策,兩者來回博弈,最終達到一個動態(tài)平衡。博弈論嚴(yán)格來講只是一種解題方式。
2.算法原理
????????以電動出租車與換電站為例,假設(shè)電動出租車及換電站均屬于同一家公司,公司想通過換電站價格定價措施去控制目標(biāo)區(qū)域內(nèi)的出租車數(shù)量達到預(yù)期分布。
????????對于司機而言,有兩個成本,一個是距離成本d,一個是支付成本p,支付成本即是換電池所支付的電價,我們可以設(shè)立權(quán)重因子a將兩者合并構(gòu)建為一個效用函數(shù),司機會選擇該函數(shù)最小的換電站更換電池,更換電池后司機一般會在周圍開始接單
????????對于公司而言,目標(biāo)函數(shù)則是不同地區(qū)的出租車實際分布e與期望分布E的絕對差之和,公司通過調(diào)整價格去影響司機的選擇,從而調(diào)整司機在不同區(qū)域的分布
雙層博弈論的模型分析
①第一階段,充電站統(tǒng)計出各電動出租車的換電請求后,根據(jù)優(yōu)化目標(biāo),制定價格策略
②第二階段,電動出租車根據(jù)自身效用函數(shù)從所有換電站中選擇出目標(biāo)換電站進行跟換電池
③第一階段和第二階段交替往復(fù)進行,直到達到均衡
算法設(shè)計步驟
3.實例分析
1.各參數(shù)初始化
n=900;%換電需求數(shù) 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 %下面是根據(jù)需求數(shù)調(diào)整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;%距離成本與換點價格權(quán)重 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(:));%統(tǒng)計選擇換電站次數(shù) e=C(:,2); err=sum(abs(E-e')) %期望差之和,即博弈對象返回:因為隨機,所有每次結(jié)過可能不一樣
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]; end4.繪圖
% 繪圖 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('出租車的預(yù)期和實際數(shù)量') 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;%換電需求數(shù) 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 %下面是根據(jù)需求數(shù)調(diào)整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;%距離成本與換點價格權(quán)重 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(:));%統(tǒng)計選擇換電站次數(shù) 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('出租車的預(yù)期和實際數(shù)量') ylabel('E and e') set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32]); xlabel('換電站') legend('e','E')總結(jié)
以上是生活随笔為你收集整理的博弈论 —— matlab的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html文件查找关键词,批处理查找文件关
- 下一篇: 灰色预测法 —— matlab