C言語を使用してバーゲームの問題をシミュレートする

バーゲームとは何ですか?

1. パブ ゲームはゲーム理論の概念であり、次のことを指します。

バーに行くか行かないかのグループの力関係のゲーム。

このバーゲームはアメリカの経済学者 W.B. によって開発されました。アーサーが提案した。

1994年、『アメリカン・エコノミック・レビュー』誌に「帰納的議論と限定的合理性」という記事が掲載され、このバーギャンブルの問題について言及されました。

2. 最初は簡単なことに注意を払い、次に難しいことに注意を払います。

各主題は、最初は簡単、次に難しい、最初は簡単、次に複雑の順序に従って、主題の研究を促進し、知識体系を構築します。これはゲーム理論にも当てはまります。

たとえば、最初に静的ゲームを研究し、次に動的ゲームを研究し、最初に完全情報ゲームを研究し、次に不完全情報ゲームを研究します。

同様に囚人のジレンマ、臆病者のゲーム、ムカデゲーム、鹿狩りゲームなどはいずれも2人用のゲームであるが、これを踏まえて多人用のゲームについてさらに検討する。

バーゲームを理解するにはどうすればよいですか?

1. モデルを理解します。

バーゲームはそのような状況についてのものです。

アーサーは、小さな町に 100 人の人々がいて、毎週末に決定を下さなければならないと仮定します。

バーに行くか家にいるかを決めてください。この小さな町にバーは一軒だけですが、60人も入ると、そのバーは最高のサービス、最も調和のとれた雰囲気、そして最も快適な雰囲気を醸し出します。

最初の週末はほとんどの人がバーに行きましたが、バーは満席でサービスも満足のいくものではありませんでした。多くの人は行かないほうがいいと不満を言いましたが、バーに行かなかった人は幸運だったと感じ、こう言いました。彼らは行かなくて幸運でした。

2 番目の週末は、前週の経験に基づいて、ほとんどの人がバーに行かないことを決め、バーにいる人は少なくなり、サービスの満足度は高くなりました。バーに行かないことを選択した人は残念に感じました。

アーサーは、各参加者は以前にバーに行った人数に基づいて今週の行動戦略を要約することしかできず、他に参照する情報がなく、相互に情報交換が行われないと想定しています。

疑問が生じます。これらの参加者はバーに行くかどうかをどのように決定するのでしょうか?

議論する前に、まずバーゲームの特徴を定義しましょう。アーサーの定義するバーゲームは、相互に情報を交換できないため不完全情報ゲームである; 毎週決定を下さなければならないためダイナミックなゲームである; 100 人が参加するためマルチプレイヤーゲームである; 戦略はどちらでも可能であるまたは、いいえ、2 種類しかありません。

一言で言えば、これは情報が不完全なマルチプレイヤー デュアル ストラテジーのダイナミック ゲームです。

読者はバーゲームの状況に身を置き、ゲーム戦略を選択する方法を考えることができます。ゲームの難しさは予測にあることは想像に難くない。

大多数の人がそこには 60 人以上いるだろうと予測し、行かないと決めた場合、バーにいる人の数は非常に少なくなります。この場合、大多数の人の予測は間違っています。逆に、少数の人が 60 人以上いるだろうと予測して行かないと決めた場合、バーにいる人の数は少なくなりますが、多数の場合は、少数の人が行った予測も同様に間違っています。

バー ゲームはアーサーによって設計された現実を単純化したモデルですが、実際のゲーム状況を考えるのに役立ちます。

株式取引を例にとると、ほとんどの投資家が特定の株を「売り」、あなたが特定の株を「買う」場合、株価は安くなり、あなたが勝ち組になります; ほとんどの投資家が特定の株を「買う」場合、あなたが「売る」場合特定の銘柄、株価が高くても勝者です。

逆に、少数の投資家が特定の株を「売る」場合、あなたが大多数の投資家と同じように特定の株を「買う」場合、株価は高くなり、あなたは敗者になります。大多数の投資家と同じように、特定の株を「買う」と特定の株を「売る」場合、株価が低い株も負け組です。

同様に、輸送ルートの選択などのシチュエーションも棒ゲームに似ており、読者の思考を拡張することができます。

2. スペースを調べます。

バーゲームの参加者がどのように意思決定を行うかを研究するために、アーサー氏は 2 つの研究を実施しました。1 つ目はコンピューター シミュレーションで、2 つ目は実際の人間によるテストでした。

コンピューターによるシミュレーションの結果、最初はさまざまな参加者がそれぞれの帰納法に従って行動し、バーに行く人の数に一定のパターンはありませんでしたが、一定期間が経過すると、平均的な人数が増加しました。バーに行くとすぐに60に達し、均衡に達しました。

これは、一定期間後に、行く人と行かない人の数の比率が

60:40、全員が定期的にバーに行くかどうかはわかりませんが、システム比率は変わりません。言い換えれば、予報者は生態学的に安定したシステムを自発的に形成します。

実際の人口テストの結果は異なります。実際のテスト結果は、コンピューター シミュレーションの結果とは大きく異なります。60:40 の平衡には達していませんが、従うべき一定のルールがあります。人の数は波のように変化し、1 人減ったり 1 人増えたりするため、サイズは異なりますが、千鳥状に配置されています。

その理由は、参加者が帰納法で意思決定し、前回人数が多かった今回は行かず、前回人数が少なかった今回は行くという「多数決の法則」を採用しているためです。しかし、この種のルールは間違いの可能性が高く、後悔しやすいものです。

一方、逆に考えて、前回人数が多かったら今回は行く、前回人数が少なかったら今回は行かないという「少数派の法則」を採用すると、成功する確率が高くなる可能性があります。

「多数決ルール」であれ「少数ルール」であれ、100%良い結果が得られるという保証はありません、その理由は、各段階における各参加者の戦略選択を100%の精度で予測することが難しいからです。

同様に、バーゲームでも、各プレイヤーは各ステージで行くか行かないかの 2 つの戦略しか持ちませんが、それをどのように作成するかは予測できません。

たとえば、「多数決ルール」を使用する人、「少数ルール」を使用する人、「ランダム コントロール ルール」を使用してコインを投げて、行くか行かないかを決定する人もいます。

このように意思決定にはさまざまな方法があるため、毎週行くか行かないかを予測するのは困難です。

上記の実際のテスト結果は、そこに行った人の数が不均一に分布していることを示しています。頻度が増加するにつれて、一部の参加者はパターンを発見し、一部の参加者はパターンを発見せず、一部の参加者は早く発見し、一部の参加者は遅く発見し、このパターンは変化、反転、または消滅します。

その理由は、各参加者が戦略の選択を調整し続けるため、最終結果が完全に予測不能になる可能性があるためであり、せいぜい、予測が成功する可能性を高めるために確率に取り組むことしかできないからです。

コンピュータ シミュレーションの結果が現実と一致しない理由の 1 つは、シミュレーション ルールが単純化しすぎて可能性空間が減少し、現実世界で均衡結果を達成することが困難になっていることが挙げられます。

このことから、株式市場で個人投資家が毎回利益を上げることがなぜ難しいのかを読者は理解するのは難しくありません。

株式市場のパフォーマンスが同じであるため、各投資家が採用する戦略は異なり、それぞれの取引戦略も変化する可能性があり、投資家の数が多い場合、最終的な可能性の数は天文学的な数になり、その結果、株式の価値が変わる可能性があります。バーと同じように、買うか売るのが良いです。毎週の人の数が増えるか減るかを正確に予測することは不可能です。

株式市場には「一得二損七敗」という格言があり、株式取引における利益確保の難しさを物語っています。

3. 自分の能力を発揮してください。

予測するのは困難ですが、バーゲームの状況は避けられないことがよくあります。この小さな町の住人たちと同じように、バーに行かずに減らさなければ、毎週「バーに行くか行かないか」の決断を迫られることになり、快適な体験か不快な体験になることになる。

同様に、車で通勤する人は毎日通勤ルートを選択するという問題に直面しており、それが渋滞やスムーズな運転につながる可能性もあります。

バーゲームのような状況は避けられないため、

ゲーム能力を強化し、真正面から対処しましょう。

まず、自分自身のゲーム能力を評価する必要があります。通勤経路の選択を例にとります。思慮深い人は、選択した各経路と通勤時間を記録することがあります。一定期間データを蓄積すると、正しい経路を選択する可能性がどの程度かを知ることができます。

その後、ターゲティングを改善できます。勤務日ごとにルートの選択が異なる、退社までのルートの選択が異なるなど、帰納的分析を通じてさまざまな仮説を立て、実際にその仮説が正しいかどうかを判断します。

さまざまな不確実性や判断ミスにより、常に最適なルートが正確に選択できるという保証はありませんが、正しい確率が誤りの確率を上回っていれば良好とみなされ、それ以上超えていれば不合格とみなされます。素晴らしい。

この改善により、週の通勤時間はそれほど節約されないとしても、年間で見ればかなりの時間短縮になります。

戦略選択のプロセスでは、階層的思考、つまり階層的かつ階層的な思考の使用に注意を払う必要があります。

たとえば、投資家のハワード。マックスの「最も大切なこと」

『愛』という本では、一次思考と二次思考の例が挙げられています。

「この会社は良い会社だ。株を買おう」という第一次思考。

二番目の考え方:「この会社は良い会社ですが、誰もが良い会社だと思っているので、良い会社ではありません。株価は過大評価されており、割高です。株を売りましょう。」

バーゲームの状況では、階層的思考を使用することは観察と判断に注意を払うことを意味し、大多数の人々の戦略が方法を決定します。

例えば、多数派が「多数決」を採用する場合、「多数決」では誤った意思決定が行われることを意味するので、大多数の人が「この会社は良い会社だ」と思うのと同じように「少数派の法則」を採用する必要があります。株を買いたいのであれば、株を売るのが正しい決断です

策。

各参加者が各時点でどのレベルの思考を使用しているかを正確に区別することは困難ですが、どのレベルの思考が最も使用されているかを大まかに判断することで、正しい意思決定が行われ、正しい戦略が選択される可能性が高くなります。

競争の激しい採用を例に挙げると、優良企業の良いポジションの数は限られており、競争は熾烈で、採用率は 1% 未満の場合もあることは誰もが知っています。

大多数の人が「多数決の法則」を利用していると判断し、昨年は応募者が多かったので今年は応募する予定がないと考えられる場合は、「少数派ルール」を利用して応募することができるかもしれません。応募者が少なく、競争も激しくなく、当選率も高いです。

 

上記の例については、C 言語でシミュレーションの例を簡単に作成できます。

基本的な考え方は、バーに行く人が満足していればバーに行きたいという気持ちが強くなり、不満を感じていれば家に居たいという気持ちが強くなるというものです。毎回の弱体化は1%に設定されます。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define RENSHU		100
#define CAPTITY		60

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
typedef struct Person
{
	int percent;
	int barorhome;	// 0 表示在家里,1 表示在去酒吧 
}PERSON;
int main(int argc, char** argv) {
	PERSON per[RENSHU];	// 定义100个人,并且初始化 
	for(int i=0;i<RENSHU;i++)
	{
		per[i].percent = 50;
		per[i].barorhome = 0;
	}
	
	for(int j=0;j<10000;j++)
	{
		int total = 0;
		srand(time(NULL));
		for(int i=0;i<RENSHU;i++)
		{
			int k=rand()%100;
			//printf("k=%d\r\n",k);
			if(per[i].percent>=k)
			{
				per[i].barorhome=1;
			}
			else
			{
				per[i].barorhome=0;
			}	
		}
		for(int i=0;i<RENSHU;i++)
		{
			total+=per[i].barorhome;
		}
		printf("今晚有%d个人到酒吧\n",total);
		Sleep(1000);
		for(int i=0;i<RENSHU;i++)
		{
			if(total>CAPTITY && per[i].barorhome)
			{
				per[i].percent--;
				if(per[i].percent<0)
					per[i].percent=0;
			}
			else if(total<=CAPTITY && per[i].barorhome)
			{
				per[i].percent++;
				if(per[i].percent>100)
					per[i].percent=100;
			}
		}
	}
		
	return 0;
}

 

 

このプログラムを午後に実行した後、バーに行く人の数は約 60 人に固定され、その数は 2 人を超えませんでした。

元々は新人研修用のプログラムでしたが、仕事が忙しくて師匠が自主的に練習するようになったと思い、アレンジしなくなりました。

ゲームの問題のシミュレーションは非常に興味深いもので、基本的には C 言語で簡単に記述できます。

おすすめ

転載: blog.csdn.net/weixin_41579872/article/details/127382114