load 'temp\game_data.ijs' load 'temp\game_0.ijs' NB. ------------------------------------ NB. game theory tap=: i.@! A. i. NB. Table of all permutations NB. Usage: tap 3 combi_0=:3 : '>,{ list;list;list=: y.' combi_1=: 3 : '{ y.;y.' combi_2=: 3 : '>,{ y.;y.' NB. expand tree for game theory NB. Usage: combi_n i.4 NB. Pascal triangle/Usage: pascal 3 pascal2=:3 : '|: (i. >: y.) !/ i. y.' NB. next 2 script was written by G.Suzuki bic=:i.&>: ! ] pascal=:":@bic"0@i. NB. -------------------------------- expand=: 4 : '((x. # tmp) i. tmp=.i. # x.){ y. ,<0' take_vh=: 4 : 'x. #("1) x. # y.' NB. x. is drop raw & column /e.g. (0 1;2) //y. is data NB. x. is 1 0 1// y. is i. 3 3 NB. --------------------------- game_matrix0=: 3 : 0 IND=. { 0 1 {"1 y. BASE_MAT=. (;SIZE0,(SIZE0=.-: # IND))$ <'' DAT=. {2 3 {"1 y. DAT (IND)} BASE_MAT ) gmatrix=: 3 : 0 SIZE=: %: # y. NB. -: half (;SIZE,SIZE) $ y. ) NB. combi 'ABC' mm=: 4 : 0 DAT=: x. Y=: y. (; 0{"1 DAT) (<0;1)}y. ) NB. ---------------------------- shihai=: 3 : 0 NB. Usage: maxmin GD10 TMP0=: gmatrix y. TMP1=: shihai_sub TMP0 TMP2=: shihai_sub TMP10=: |. L:0 |: TMP0 IND3=: (< TMP1),< TMP2 (./ MAX_IND0) NB. select minimum one NB. if. 1 < check_indx_sub MIN_IND2 do. NB. TMP3=: MAX_IND # y. NB. TMP4=: ({."1(;("1)TMP3) e. MIN_IND) # ;("1) TMP3 NB. IF_MIN=: MIN_IND, <./{:"1 TMP4 NB. MIN_IND2=: 2 = L:0 +/ L:0 (MIN_IND2 # L:0 TMP10) e. (L:0) 5 4 NB. end. ) NB. MaxMin maxmin=: 3 : 0 NB. Usage: maxmin GD10 TMP0=: gmatrix y. TMP1=: maxmin_sub TMP0 TMP2=: maxmin_sub TMP10=: |. L:0 |: TMP0 IND3=: (< TMP1),< TMP2 (./; MIN_IND0 MIN_IND2=. MIN_IND e. L:0 MIN_MAT NB. select minimum one if. 1 < check_indx_sub MIN_IND2 do. TMP3=. MIN_IND2 # L:0 y. TMP4=. ({."1(;("1)TMP3) e. MIN_IND) # ;("1) TMP3 IF_MIN=. MIN_IND, <./{:"1 TMP4 MIN_IND2=. 2 = L:0 +/ L:0 (MIN_IND2 # L:0 TMP10) e. (L:0) 5 4 end. MIN=: +/"1 ;("1) MIN_IND2 NB. MIN # y. ) check_indx_sub=: 3 : 0 +/+/ ;("1) y. ) mix_2_sub=: 3 : 0 TMP_XY=: y. TMP_X=: 1 3 {y. TMP_Y=: 2 3 {y. MAT=: 0,(i_salas TMP_XY),(--/ TMP_X) MAT=:2 3 $ MAT,(i_salas TMP_XY),0, --/ TMP_Y (2 2 $ y.); MAT ;cr MAT ) mix_2=: 3 : 0 TMP_A=: mix_2_sub ;{. L:0 y. TMP_B=: mix_2_sub ;{: L:0 y. TMP=: TMP_A,:TMP_B TMP,.(1; 0){ L:0 {:"1 L:0 {:"1 TMP ) mix_2s=: 3 : 0 (2 2 $ y.);MAT; {:"1 mix_2_sub y. ) NB. ------------------------------- out_of =: 4 : ' (-. (i.3) e.; x.) # y. ' out_of_mat=: 4 : '(;{: x.) out_of "1 (;{.x.) out_of y.' s_sub=: 4 : '-/ . + x. out_of_mat y.' NB. salas_sub i_salas=: 3 : '-/ . + 2 2 $ y.' NB. imitation salas cr=: %.}:"1 NB. ----------------------------------------------- mix_3=: 3 : 0 TMPA=: mix_3_sub ;("1) gmatrix {. L:0 y. TMPB=: mix_3_sub ;("1) gmatrix {: L:0 y. NB. ANSA=:{:"1 ;("1) {: TMPA NB. ANSB=:{:"1 ;("1) {: TMPB NB. OP_A=: (0 2{ANS),1- +/ 0 2 { ANS NB. OP_B=: (1 3 {ANS),1-+/ 1 3 { ANS NB. TMP, ('A';< OP_A),:'B';: COUNTER1 end. TMP=:}. SCORE ;("1) |: TMP,: {|: (+/\; {. L:0 TMP),: +/\;{: L:0 TMP ) parrot1=: 4 : 0 NB. case A B both is parrot NB. Usage: e.g. 0.1 u. GN1 NB. x. is prob e.g. /0.1 betray A NB. y. is GM1 type /not use gmatrix NB. once punish parrot eternal punish/and score is low SCORE=: <'' PROB=: prob_sub x. HAND=: hand_sub 0, 0 SCORE=: SCORE, HAND { y. HAND=: hand_sub ({.PROB),0 SCORE=: SCORE, HAND { y. COUNTER1=: 1 while. COUNTER1 < 100 do. HAND=:hand_sub check_hand_sub_ab HAND SCORE=:SCORE,HAND{y. COUNTER1=. >: COUNTER1 end. TMP=:}. SCORE ;("1)|: TMP,: {|: (+/\; {. L:0 TMP),: +/\;{: L:0 TMP ) hand_sub=: 3 : 0 NB. select hand/case is 2*2 NB. hand is both 0 or 1/honest or betreyal NB. result 0/1/2/3 is A/B/C/D if. 0={. y. do. HAND0=. 0 1 NB. A-a else. HAND0=. 2 3 NB. A-b end. select. {: y. case. 0 do. HAND1=. {. HAND0 NB. B-c fcase. do. HAND1=. {: HAND0 NB. B-d end. HAND1 ) check_hand_sub_ab=: 3 : 0 C_HAND=: y. NB. y. is HAND if. C_HAND e. 1 3 do. A=: 1 NB. betrayal else. A=0 end. NB. honest if. C_HAND e. 2 3 do. B=: 1 NB. betrayal else. B=: 0 end. NB. honest A,B ) check_hand_sub_b=: 3 : 0 NB. y. is HAND NB. case A is prob NB. B check hand of A and punish C_HAND=: y. NB. y. is HAND if. C_HAND e. 2 3 do. B=: 1 NB. betrayal else. B=: 0 end. NB. honest B ) prob_sub=: 3 : 0 NB. y is e.g. 0.15 NB. 100 times random (100 *y.) > 100 ? 100 ) NB.------------------------------- NB. random walk Cox_Ross_Rubinstein theory rw0=: 3 : 0 NB. Cox Ross Rubinstein model NB. Usage: rw0 n // n is repeat times/e.g. rw0 5 NB. output is literal TMP=. 0 RW0=. 1 _1 ANS=. (<''),:<1 COUNTER=. 0 while. COUNTER < y. do. TMP=. TMP rw_sub0 RW0 ANS=. ANS,: COUNTER end. ;("1) ": L:0 }. ANS ) rw_sub0=: 4 : ' ~. ,x. +/ y.' NB. -----------------old---------------- mix_2s0=: 3 : 0 NB. game theory NB. 2*2 mat // single value BUNBO=. +/ (0{y.) ,(3{y.), (- 1{y.), -2{y. BUNSHI_0=. +/ (3{y.),-1{y. BUNSHI_1=. +/ (3{y.),-2{y. Y=. BUNSHI_0 % BUNBO X=. BUNSHI_1 % BUNBO X;Y ) mix_3s0=: 3 : 0 NB. y. is line data/e.g. GH1 NB. 3*3 matrix TMP0=.0,(i_salas 0 2 6 8 {y.),0,(i_salas 1 2 7 8{ y.), --/2 8 {y. TMP1=.(i_salas 0 2 6 8 {y.),0,(i_salas 3 5 6 8 { y. ),0, -+/ 0 , +/6 8 {y. TMP2=.0,(i_salas 3 5 6 8 {y.),0,(i_salas 4 5 7 8 { y. ), --/5 8 {y. TMP3=.(i_salas 1 2 7 8 {y.),0,(i_salas 4 5 7 8 { y. ), 0 ,-- /7 8 {y. MAT=.4 5 $ TMP0,TMP1,TMP2,TMP3 TMP6=. {:"1 TMP5=: cr MAT X=.(0{TMP6),(2{TMP6),(1-(0{TMP6)+2{TMP6) NB. x u 1-x-u Y=.(1{TMP6),(3{TMP6),(1-(1{TMP6)+3{TMP6) NB. y v 1-y-v MAT;TMP5;(X,:Y) ) tree_game0=: 3 : 0 ALPHA=: (65+i.26){a. TMP1=:, gmatrix y. TMP0=: ,combi (%: # y.){. ALPHA TMP0,.TMP1 ) NB.=============================================== NB. Data Block P1=: 1 0 0 10;0 1 0 20;0 0 1 30 P1=: P1,1 1 0 60;1 0 1 70;0 1 1 80;1 1 1 120 VAL0=: 0;10;20;30;60;70;80;120 NB. suzuki (new game theory P196) VAL1=: 0;0;0;0;6;6;0;6 NB. suzuki new P200 grave problem VAL3=: 0;160;180;200;280;290;300;420 NB. suzuki 332 VAL4=: 0;1400;2000;1600;2500;2400;3000;3800 NB. Hunaki P43 fee of Taxi VAL50=:0;50;50;50;70;70;70;90 VAL51=:0;30;30;30;60;60;40;70 VAL52=:0;40;40;40;50;80;80;90 VAL53=: 0;120;120;120;180;210;190;250 NB. Hunaki P45 NB. ------------------------------ NB. Nakayama p.7 GN0=: _1 _1 ; _5 0; 0 _5 ; _3 _3 NB. prison GN1=: 3 3;0 4 ;4 0;1 1 NB. Gas stand, p71 GN2=: 2 1;0 0;0 0 ;1 2 NB. date GN3=: 1 1;2 2;0 3;3 0 NB. mix p.54 GN4=: _1 _1 ; 2 1 ;1 2;0 0 GN5=: 1 1 ; 0 0 ;0 0 ;2 2 NB. folk p.81 NB. ------------------------------ NB. Hirashita p.1 GH0=: 21 _3 _9 12 GH1=: 0 15 _5 5 0 24 13 8 0 NB. ------------------------- NB. Murata p15 GM0=: 8 2 ; 8 8 ; 2 8 ; 8 6 GM1=: 8 2 ; 7 8 ; 2 8 ; 8 6 NB. Murata p.13 GM2=: 3 2; 8 5; 5 7; 5 2; 6 8; 4 5; 3 3 ;5 3; 2 6