&CPGXGameð?`ãVAPYou are making losses. Do you want to invest the showupfee in order to continue?YesNo0You are making losses. Do you want to continue?YesNo3Please wait until the experimenter unlocks your PC.EEXDatabaseInfoglobalsEEXDatabaseInfosubjectsEEXDatabaseInfosummaryEEXDatabaseInfo contractsEEXDatabaseInfo s_historyEEXDatabaseInfoassistEEXDatabaseInfoassistEndowmentEEXDatabaseInfosession EEXProgramglobalsÿ array groups[]; GroupsNumber = 0; iterator(i).do{ cgr = subjects.count( Group == :i ); if( cgr > 0 ){ \groups[i] = cgr; \GroupsNumber = i; } } array types[]; array stdtp[]; stdtp[1] = 1; stdtp[2] = 9; stdtp[3] = 25; iterator (i).do{ \types[i] = stdtp[ 1 + mod(i,3) ]; } EEXProgramsubjects¡grSubject = 0; flag = 1; subjects.do{ if( :flag == 1 ){ if ( same(Group) ) { :grSubject = :grSubject + 1; } if ( same(Subject) ) { :flag = 0; }} } EEXProgramsubjectsÿ // base game //GroupCount = count( same(Group) ); Endowment = 50 * \groups[Group] - iterator(i,1,\groups[Group]).sum( \types[i] ); r = \types[grSubject]; if( Period > 1 ){ r = OLDsubjects.find( same(Subject), r); } x = 0; Utility = 0; AdviceUtility = 0; AdviceProfit = 0; //mechanism array s[]; Penalty = 0; AdvicePenalty = 0; Alfa = 1; Beta = 0.0005; // front game delta_i = 0; array delta_j[]; // technics MakeRun = 0; MakeSelfRun = 0; MakeAdviceRun = 0; CalcAdviceCount = 0; CalcCount = 0; BidModif = 0; array vs[]; array advices[]; array others[]; SumOtherS = 0; SumS = 0; SumVS = 0; //array selfs[]; vx = 0; vxreal = 0; advicevx = 0; advicevxreal = 0; others_uni = 0; // others ShowHelp = if( Period == 1, 1, 0); if( Period == 1){ MaxRequest = Endowment; MinRequest = 0; MaxRequestTome = Endowment; MinRequestTome = 0; MaxProfit = 50; MinProfit = -50; }else{ MaxRequest = OLDsubjects.find( same(Subject), MaxRequest); MinRequest = OLDsubjects.find( same(Subject), MinRequest); MaxRequestTome = OLDsubjects.find( same(Subject), MaxRequestTome); MinRequestTome = OLDsubjects.find( same(Subject), MinRequestTome); MaxProfit = OLDsubjects.find( same(Subject), MaxProfit); MinProfit = OLDsubjects.find( same(Subject), MinProfit); } EEXProgramglobalsÿú// def params, history, Interface and helpers MyNumPeriods = 100; NumSbj = subjects.count (); Endowment = subjects.find ( Endowment ); //GroupCount = subjects.find ( GroupCount ); Alfa = subjects.find ( Alfa ); // init history iterator ( i ).do{ assist.new{i = :i;} } iterator(i, 0, Endowment, 1).do{ assistEndowment.new{i = :i;} } if( Period == 1){ s_history.new{ time = 0; face = 1; gain = 0; Group = subjects.find( Subject == :face, Group); array olds[]; iterator(i,\groups[Group]).do{ olds[i] = 0; } grSubject = subjects.find( Subject==1, grSubject); penalty = 0; x = 0; } iterator( isbj, 2, \NumSbj).do{ s_history.new{ time = 0; face = isbj; gain = 0; Group = subjects.find( Subject == :face, Group); iterator ( i, \groups[Group] ).do{ olds[i] = 0; } grSubject = subjects.find(Subject==:face, grSubject); penalty = 0; x = 0; } } } // technics Interface = 1; // helpers ActionPrec = 0.1; ProfitPrec = 0.001; TechPrec = 0.03; LegendYStep = 8; BaseNumPeriods = 5; EEXGridWindowGrid010% EEXInfoItem<>Âû èãðîê ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXInfoItemi<>Âû èãðàåòå â ãðóïïå ¹  ãðóïïå <\groups[Group]|1> èãðîêîâ Âàø íîìåð â ãðóïïå - ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXInfoItem(<>Ïåðèîä èç ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿY@Y@EEXDialogWindowText EEXInfoItem4Ïîæàëóéñòà, ïîäîæäèòå, ïîêà ýêñïåðèìåíò íå íà÷í¸òñÿ.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXStageÂûáîð äåéñòâèÿ EEXProgramsubjectsÿ^// for calculator SumOtherS = 0; iterator( i, \groups[Group] ).do{ // save history :s[i] = s_history.find( time == (:Period-1) & face==:Subject, olds[i] ); :vs[i] = s[i]; :others[i] = s_history.find( time == (:Period-1) & face == :i , olds[:grSubject] ); :SumOtherS = :SumOtherS + others[i]; } advices[grSubject] = s[grSubject]; SumOtherS = SumOtherS - s[grSubject]; // == sum( not(same(Subject)), others[Subject]) ; //others_uni = s_history.average ( same(Group) & time == :Period-1, olds[ :grSubject ] ); // save history resource x = s_history.find ( face==:Subject & time == :Period-1, x) ; vxreal = x; Profit = OLDsubjects.find ( same(Subject), Profit ) ; Penalty = OLDsubjects.find ( same(Subject), Penalty ) ; //technics MakeRun = 0; MakeSelfRun = 0; MakeAdviceRun = 0; CalcAdviceCount = 0; CalcCount = 0; BidModif = 0; EEXProgramsubjectsÿ:// 1 - setting context array sj_mi[]; subjects.do{ if( same(Group) ){ :sj_mi[grSubject] = subjects.sum( same(Group) & Subject != ::Subject , s[:grSubject] ); }} /* L = 1; while( L > 0 ) { L = 0; lambda = 0; iterator(j, \groups[Group]).do{ if( :sj_mi[j] < 0 ){ :lambda = :lambda - :sj_mi[j]; :sj_mi[j] = 0; :L = :L + 1; }} if( L > 0 ){ iterator( j, \groups[Group] ).do{ if( :sj_mi[j] > 0 ){ :sj_mi[j] = :sj_mi[j] - :lambda / (\groups[Group]-:L); }} } } */ SumS = iterator( j, \groups[Group] ).sum( j != :grSubject, :sj_mi[j] );-1EEXContainerWindowÑïðàâêà ShowHelp == 1EEXDialogWindowÊíîïêà040pEEXContractButtonÑêðûòü ñïðàâêó EEXProgramsubjects ShowHelp = 0;ÈÈÈEEXContainerWindowÏàíåëü100%0EEXContainerWindow Ëåâàÿ ïàíåëü050%0100%EEXDialogWindowÒåêñò 1060% EEXInfoItemÈãðà ðàñïðåäåëåíèå ðåñóðñàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXContainerWindowÒàáëèöà èñòîðèèEEXDialogWindow Çàãîëîâîê020p EEXInfoItem,Èñòîðèÿ Âàøèõ çàÿâîê è ðàñïðåäåëåíèé ðåñóðñàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXHistoryWindowHistory\groups[Group] == 2 EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]vs[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]vs[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[1] others[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[2] others[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXHistoryWindowHistory\groups[Group] == 3 EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]vs[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]vs[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[3]vs[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[1] others[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[2] others[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[3] others[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXHistoryWindowHistory\groups[Group] == 4 EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]vs[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]vs[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[3]vs[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[4]vs[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[1] others[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[2] others[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[3] others[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[4] others[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXHistoryWindowHistory\groups[Group] == 5 EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]vs[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]vs[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[3]vs[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[4]vs[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[5]vs[5] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[1] others[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[2] others[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[3] others[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[4] others[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[5] others[5] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindow Ïðàâàÿ ïàíåëü0100%0100%EEXContainerWindowÏîëó÷åííûé ðåñóðñ050%EEXDialogWindow Çàãîëîâîê030p EEXInfoItem Ðàñïðåäåëåíèå ðåñóðñà ïî èãðîêàìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXPlotWindowÏîëó÷åííûé ðåñóðñ5p5p5p5p EEXPlotAxis00max(BaseNumPeriods, Period)1if (Period < 15,1,2)1Ïåðèîä EEXPlotAxis00 Endowment5101Âûäàííûé ðåñóðñ EEXPlotGraphx EEXPlotTextmax(BaseNumPeriods,Period)-1+Endowment - i * (Endowment - 0)/LegendYStep <> x[]zrgb(if(i==1,255,0)+if(i==4|i==6,100,0), if(i==2,255,0) +if(i==5,100,0)+if(i==4,100,0), if(i==3,255,0)+if(i==5|i==6,100,0))14TRUE EEXPlotGraphothers x EEXPlotPointtimex5445zrgb(if(i==1,255,0)+if(i==4|i==6,100,0), if(i==2,255,0) +if(i==5,100,0)+if(i==4,100,0), if(i==3,255,0)+if(i==5|i==6,100,0))2 s_historysame(Group) & grSubject == i3rgb(if(i==1,255,0), if(i==2,255,0), if(i==3,255,0))2assisti <= \groups[Group]40400max(BaseNumPeriods, Period)0 EndowmentEEXDialogWindowËåãåíäà0250p050pFALSE EEXInfoItem;Êðàñíûé öâåò - Âàø ðåñóðñ Ñèíèé öâåò - ñóììà âñåõ ðåñóðñîâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXContainerWindowÈñòîðèÿ âûèãðûøåé0EEXDialogWindow Çàãîëîâîê030p EEXInfoItem Âàøè âûèãðûøèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXPlotWindowÈñòîðèÿ âûèãðûøåé5p5p5p5p EEXPlotAxis00max(BaseNumPeriods, Period)1if (Period < 15, 1, 2)1Ïåðèîä EEXPlotAxis0 MinProfit MaxProfit5101Âûèãðûø EEXPlotGraph EEXPlotPointtimegain5445rgb(0.82,0.00,0.00)2 s_historyface == Subjectrgb(0.00,0.00,0.00)240200max(BaseNumPeriods, Period) MinProfit MaxProfitEEXContainerWindow Ýêðàí èãðû ShowHelp == 0EEXContainerWindowÊíîïêè040pEEXDialogWindowÊíîïêà ñïðàâêè0EEXContractButtonÑïðàâêà EEXProgramsubjects ShowHelp = 1;ÈÈÈEEXContainerWindowÎáùèé0EEXContainerWindowÍåñâîáîäíûé èíòåðôåéñ0if(Interface==1,40,0)%Interface == 1EEXContainerWindowÊíîïêè õîäà (â ñàìîì íèçó)040pEEXDialogWindowÎïèñàíèå êíîïîê040% EEXInfoItem!Êíîïêè ïðèíÿòèÿ ðåøåíèÿ î çàÿâêàõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXDialogWindow Êíîïêà õîäà050% Period > 1EEXContractButton Ïðîøëûå çàÿâêè  EEXProgramsubjectsMakeSelfRun = 1; MakeRun = 1;ÿZZEEXDialogWindowÕîä ñ ðåêîìåíäóåìûìè çàÿâêàìèEEXContractButton Íîâûå çàÿâêè  EEXCheckerGPeriod>1 | not(iterator(j,\groups[Group]).sum(:advices[j]) > Endowment)-Ñóììà âàøèõ çàÿâîê áîëüøå èìåþùåãîñÿ ðåñóðñà.OK EEXProgramsubjects]MakeAdviceRun = 1; MakeRun = 1; iterator( j, \groups[Group] ).do{ :vs[j] = :advices[j]; }ÿZZEEXDialogWindow Ïàðàìåòðû060p EEXInfoItemÂñåãî äîñòóïíîãî ðåñóðñà Endowment ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø ïàðàìåòð:r ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindowÇàÿâêè050%EEXContainerWindow Çàãîëîâêè040pEEXDialogWindow Äëÿ òåêñòà040%EEXDialogWindowÄëÿ ñòàðûõ çàÿâîê050% Period > 1 EEXInfoItemÏðîøëûå çàÿâêèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXDialogWindowÄëÿ íîâûõ çàÿâîê EEXInfoItem Íîâûå çàÿâêèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXDialogWindowÊíîïêà ïðåäâ õîäà050%060p Period > 1EEXContractButton Ïðåäâàðèòåëüíûé õîä  EEXProgramsubjectsÿ×CalcAdviceCount = CalcAdviceCount + 1; // setting deficit // step 3 delta_i = max ( 0, advices[grSubject] + SumS/(\groups[Group]-1) - Endowment); xtemp = delta_i / ( \groups[Group] - 1 ); iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :delta_j[j] = :xtemp; }} // step 4: normalize bids if( not( SumS/(\groups[Group]-1) < delta_i ) ){ loop = 1; array L[]; iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :L[ j ] = 0; }} while( loop == 1 ){ lambda = 0; iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ xtemp = (1+1/(\groups[Group]-1))* :sj_mi[j]; if( :delta_j[ j ] > xtemp ){ :lambda = :lambda + :delta_j[ j ] - xtemp; :delta_j[ j ] = xtemp; :L[ j ] = 0; } if( :delta_j[ j ] < xtemp ){ :L[ j ] = 1; } }} sumL = 0; iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :sumL = :sumL + :L[ j ]; }} // spread excess if( lambda > 0 ){ iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ if( :L[ j ] == 1 ){ :delta_j[ j ] = :delta_j[ j ] + :lambda / :sumL; } }} } else{ loop = 0; } }// while }// global if // step 5 : set bids and allocation resources subjects.do{ if( same(Group) & not(same(Subject)) ){ :advices[ grSubject ] = :sj_mi[ grSubject ] / (\groups[Group] - 1) - :delta_j[ grSubject ]; advicevx = ( :advices[grSubject] + :sj_mi[ grSubject ] ) / \groups[Group]; }} advicevx = ( advices[grSubject] + sj_mi[ grSubject] ) / \groups[Group]; advicevxreal = advicevx; // step 6 TiBeta = Beta * sum( same( Group ), power(advicevx - :advices[grSubject], 2) ); subjects.do{ if( same(Group) & not(same(Subject)) ){ TiBeta = Beta * sum( same( Group ), power(advicevx - :s[grSubject], 2) ); }} AdviceUtility = if( advicevx < 0, -10000, sqrt(advicevx+r) ); AdvicePenalty = TiBeta - Alfa * subjects.average( same( Group ), TiBeta ) + subjects.sum(same(Group) & advicevx<0, 10000); AdviceProfit = AdviceUtility - AdvicePenalty;ÈÈÈEEXContainerWindowÑòîëáåö òåêñòà040%EEXDialogWindow Ìîé âêëàä0100/\groups[Group]% EEXInfoItem!Âàøà çàÿâêà íà êîëè÷åñòâî ðåñóðñà-10001000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 10*if(grSubject==1,0,100/(\groups[Group]-1))%1\groups[Group] >= 2 & grSubject != 1 & Period > 1 EEXInfoItemÂàøà çàÿâêà äëÿ 1 èãðîêà-10001000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 20>if(grSubject==2,0,100/(\groups[Group]-1-if(grSubject<2,0,1)))%1\groups[Group] >= 2 & grSubject != 2 & Period > 1 EEXInfoItemÂàøà çàÿâêà äëÿ 2 èãðîêà-10001000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 30>if(grSubject==3,0,100/(\groups[Group]-2-if(grSubject<3,0,1)))%1\groups[Group] >= 3 & grSubject != 3 & Period > 1 EEXInfoItemÂàøà çàÿâêà 3 èãðîêó0 Endowmentÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 40>if(grSubject==4,0,100/(\groups[Group]-3-if(grSubject<4,0,1)))%1\groups[Group] >= 4 & grSubject != 4 & Period > 1 EEXInfoItemÂàøà çàÿâêà 4 èãðîêó0 Endowmentÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 50>if(grSubject==5,0,100/(\groups[Group]-4-if(grSubject<5,0,1)))%1\groups[Group] >= 5 & grSubject != 5 & Period > 1 EEXInfoItemÂàøà çàÿâêà 5 èãðîêó0 Endowmentÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindowÑòîëáåö ïðîøëûõ çàÿâîê050% Period > 1EEXDialogWindow Ìîé âêëàä0100/\groups[Group]% EEXInfoItem vs[grSubject]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 10*if(grSubject==1,0,100/(\groups[Group]-1))%$\groups[Group] >= 2 & grSubject != 1 EEXInfoItemvs[1]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 20>if(grSubject==2,0,100/(\groups[Group]-1-if(grSubject<2,0,1)))%$\groups[Group] >= 2 & grSubject != 2 EEXInfoItemvs[2]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 30>if(grSubject==3,0,100/(\groups[Group]-2-if(grSubject<3,0,1)))%$\groups[Group] >= 3 & grSubject != 3 EEXInfoItemvs[3]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 40>if(grSubject==4,0,100/(\groups[Group]-3-if(grSubject<4,0,1)))%$\groups[Group] >= 4 & grSubject != 4 EEXInfoItemvs[4]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 50>if(grSubject==5,0,100/(\groups[Group]-4-if(grSubject<5,0,1)))%$\groups[Group] >= 5 & grSubject != 5 EEXInfoItemvs[5]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindowÑòîëáåö ðåêîìåíäóåìûõ çàÿâîêEEXDialogWindow Ìîé âêëàä0100/\groups[Group]% EEXInfoItemadvices[grSubject]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 10*if(grSubject==1,0,100/(\groups[Group]-1))%1\groups[Group] >= 2 & grSubject != 1 & Period > 1 EEXInfoItem advices[1]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 20>if(grSubject==2,0,100/(\groups[Group]-1-if(grSubject<2,0,1)))%1\groups[Group] >= 2 & grSubject != 2 & Period > 1 EEXInfoItem advices[2]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 30>if(grSubject==3,0,100/(\groups[Group]-2-if(grSubject<3,0,1)))%1\groups[Group] >= 3 & grSubject != 3 & Period > 1 EEXInfoItem advices[3]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 40>if(grSubject==4,0,100/(\groups[Group]-3-if(grSubject<4,0,1)))%1\groups[Group] >= 4 & grSubject != 4 & Period > 1 EEXInfoItem advices[4]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 50>if(grSubject==5,0,100/(\groups[Group]-4-if(grSubject<5,0,1)))%1\groups[Group] >= 5 & grSubject != 5 & Period > 1 EEXInfoItem advices[5]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindow Êàëüêóëÿòîð Period > 1EEXContainerWindow ÊàëüêóëÿòîðEEXDialogWindow Çàãîëîâîê060p EEXInfoItemÊàëüêóëÿòîð âûèãðûøàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXInfoItem^Âñå ïàðàìåòðû áóäóò ïîñ÷èòàíû íà îñíîâå Âàøåé òåêóùåé çàÿâêè è ïðåäûäóùèõ çàÿâîê âñåõ èãðîêîâ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXDialogWindowÑòîëáåö òåêñòà040% EEXInfoItem Âàøà çàÿâêàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemÂûäàííûé Âàì ðåñóðñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemØòðàôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItemÂûèãðûøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXDialogWindowÊàëüêóëÿòîð ñâîáîäíûõ çàÿâîê00pFALSE EEXInfoItem vs[grSubject]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemvxreal-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemPenalty-10001000 ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItemProfit-10001000 ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXDialogWindow Êàëüêóëÿòîð ðåêîìåíäóåìûõ çàÿâîê EEXInfoItemadvices[grSubject]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem advicevxreal-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem AdvicePenalty-10001000 ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItem AdviceProfit-10001000 ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXContainerWindowÑâîáîäíûé èíòåðôåéñ0if(Interface==2,40,0)%Interface == 2EEXContainerWindowÊíîïêè õîäà (â ñàìîì íèçó)040pEEXDialogWindowÎïèñàíèå êíîïîê040% EEXInfoItemÊíîïêè ïðèíÿòèÿ ðåøåíèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXDialogWindow Êíîïêà õîäà050% Period > 1EEXContractButton Ñâîè çàÿâêè  EEXChecker7not(iterator(j,\groups[Group]).sum(:vs[j]) > Endowment)-Ñóììà âàøèõ çàÿâîê áîëüøå èìåþùåãîñÿ ðåñóðñà.OK EEXProgramsubjectsMakeSelfRun = 1; MakeRun = 1;ÿZZEEXDialogWindowÕîä ñ ðåêîìåíäóåìûìè çàÿâêàìèEEXContractButton Ðåêîìåíäóåìûå çàÿâêè  EEXCheckerGPeriod>1 | not(iterator(j,\groups[Group]).sum(:advices[j]) > Endowment)-Ñóììà âàøèõ çàÿâîê áîëüøå èìåþùåãîñÿ ðåñóðñà.OK EEXProgramsubjects]MakeAdviceRun = 1; MakeRun = 1; iterator( j, \groups[Group] ).do{ :vs[j] = :advices[j]; }ÿZZEEXDialogWindow Ïàðàìåòðû060p EEXInfoItemÂñåãî äîñòóïíîãî ðåñóðñà Endowment ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø ïàðàìåòð:r ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindowÇàÿâêè050%EEXContainerWindow Çàãîëîâêè040pEEXDialogWindow Äëÿ òåêñòà040%EEXDialogWindowÄëÿ ñòàðûõ çàÿâîê050% Period > 1 EEXInfoItemÑâîáîäíûå çàÿâêèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXDialogWindowÄëÿ íîâûõ çàÿâîê EEXInfoItemÐåêîìåíäóåìûå çàÿâêèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXContainerWindowÑòîëáåö òåêñòà040%EEXDialogWindow Ìîé âêëàä0100/\groups[Group]% EEXInfoItem!Âàøà çàÿâêà íà êîëè÷åñòâî ðåñóðñà-10001000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 10*if(grSubject==1,0,100/(\groups[Group]-1))%1\groups[Group] >= 2 & grSubject != 1 & Period > 1 EEXInfoItemÂàøà çàÿâêà äëÿ 1 èãðîêà-10001000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 20>if(grSubject==2,0,100/(\groups[Group]-1-if(grSubject<2,0,1)))%1\groups[Group] >= 2 & grSubject != 2 & Period > 1 EEXInfoItemÂàøà çàÿâêà äëÿ 2 èãðîêà-10001000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 30>if(grSubject==3,0,100/(\groups[Group]-2-if(grSubject<3,0,1)))%1\groups[Group] >= 3 & grSubject != 3 & Period > 1 EEXInfoItemÂàøà çàÿâêà 3 èãðîêó0 Endowmentÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 40>if(grSubject==4,0,100/(\groups[Group]-3-if(grSubject<4,0,1)))%1\groups[Group] >= 4 & grSubject != 4 & Period > 1 EEXInfoItemÂàøà çàÿâêà 4 èãðîêó0 Endowmentÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 50>if(grSubject==5,0,100/(\groups[Group]-4-if(grSubject<5,0,1)))%1\groups[Group] >= 5 & grSubject != 5 & Period > 1 EEXInfoItemÂàøà çàÿâêà 5 èãðîêó0 Endowmentÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindowÑòîëáåö ñâîáîäíûõ çàÿâîê050% Period > 1EEXDialogWindow Ìîé âêëàä0100/\groups[Group]% EEXInfoItem vs[grSubject]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 10*if(grSubject==1,0,100/(\groups[Group]-1))%$\groups[Group] >= 2 & grSubject != 1 EEXInfoItemvs[1]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 20>if(grSubject==2,0,100/(\groups[Group]-1-if(grSubject<2,0,1)))%$\groups[Group] >= 2 & grSubject != 2 EEXInfoItemvs[2]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 30>if(grSubject==3,0,100/(\groups[Group]-2-if(grSubject<3,0,1)))%$\groups[Group] >= 3 & grSubject != 3 EEXInfoItemvs[3]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 40>if(grSubject==4,0,100/(\groups[Group]-3-if(grSubject<4,0,1)))%$\groups[Group] >= 4 & grSubject != 4 EEXInfoItemvs[4]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 50>if(grSubject==5,0,100/(\groups[Group]-4-if(grSubject<5,0,1)))%$\groups[Group] >= 5 & grSubject != 5 EEXInfoItemvs[5]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindowÑòîëáåö ðåêîìåíäóåìûõ çàÿâîêEEXDialogWindow Ìîé âêëàä0100/\groups[Group]% EEXInfoItemadvices[grSubject]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 10*if(grSubject==1,0,100/(\groups[Group]-1))%1\groups[Group] >= 2 & grSubject != 1 & Period > 1 EEXInfoItem advices[1]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 20>if(grSubject==2,0,100/(\groups[Group]-1-if(grSubject<2,0,1)))%1\groups[Group] >= 2 & grSubject != 2 & Period > 1 EEXInfoItem advices[2]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 30>if(grSubject==3,0,100/(\groups[Group]-2-if(grSubject<3,0,1)))%1\groups[Group] >= 3 & grSubject != 3 & Period > 1 EEXInfoItem advices[3]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 40>if(grSubject==4,0,100/(\groups[Group]-3-if(grSubject<4,0,1)))%1\groups[Group] >= 4 & grSubject != 4 & Period > 1 EEXInfoItem advices[4]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXDialogWindowÇàÿâêà 50>if(grSubject==5,0,100/(\groups[Group]-4-if(grSubject<5,0,1)))%1\groups[Group] >= 5 & grSubject != 5 & Period > 1 EEXInfoItem advices[5]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindowÊíîïêè ïðåäâàðèòåëüíîãî õîäà040p Period > 1EEXDialogWindowÎïèñàíèå040% EEXInfoItemÊíîïêè ïðåäâàðèòåëüíîãî õîäàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXDialogWindow Ïðåäâ õîä050% Period > 1EEXContractButton Ñâîè çàÿâêè EEXChecker7not(iterator(j,\groups[Group]).sum(:vs[j]) > Endowment)-Ñóììà âàøèõ çàÿâîê áîëüøå èìåþùåãîñÿ ðåñóðñà.OK EEXProgramsubjectsÿmsubjects.do{ if( same(Group) ){ vx = ( s[grSubject] + SumOtherS - :s[grSubject] + :vs[grSubject] ) / \groups[Group]; }} vxreal = vx; // phase 6 TiBeta = Beta * sum( same( Group ), power(vx - :vs[grSubject], 2) ); subjects.do{ if( not(same(Subject)) & same(Group) ){ TiBeta = Beta * sum( same( Group ), power(vx - :s[grSubject], 2) ); }} Utility = if( vx < 0, -10000, sqrt(vx+r) ); Penalty = TiBeta - Alfa * subjects.average( same( Group ), TiBeta ) + subjects.sum ( same(Group) & not(same(Subject)) & vx<0 & :vs[grSubject] < vx, 10000 ); Profit = Utility - Penalty; CalcCount = CalcCount + 1;ÈÈÈEEXDialogWindowÏðèíÿòü ðåê çàÿâêè0EEXContractButton Ðåêîìåíäóåìûå çàÿâêè  EEXProgramsubjectsÿCalcAdviceCount = CalcAdviceCount + 1; // setting deficit // step 3 delta_i = max ( 0, advices[grSubject] + SumS/(\groups[Group]-1) - Endowment); xtemp = delta_i / ( \groups[Group] - 1 ); iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :delta_j[j] = :xtemp; }} // step 4: normalize bids if( not( SumS/(\groups[Group]-1) < delta_i ) ){ loop = 1; array L[]; iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :L[ j ] = 0; }} while( loop == 1 ){ lambda = 0; iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ xtemp = (1+1/(\groups[Group]-1))* :sj_mi[j]; if( :delta_j[ j ] > xtemp ){ :lambda = :lambda + :delta_j[ j ] - xtemp; :delta_j[ j ] = xtemp; :L[ j ] = 0; } if( :delta_j[ j ] < xtemp ){ :L[ j ] = 1; } }} sumL = 0; iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :sumL = :sumL + :L[ j ]; }} // spread excess if( lambda > 0 ){ iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ if( :L[ j ] == 1 ){ :delta_j[ j ] = :delta_j[ j ] + :lambda / :sumL; } }} } else{ loop = 0; } }// while }// global if // step 5 : set bids and allocation resources subjects.do{ if( same(Group) & not(same(Subject)) ){ :advices[ grSubject ] = :sj_mi[ grSubject ] / (\groups[Group] - 1) - :delta_j[ grSubject ]; advicevx = ( :advices[grSubject] + :sj_mi[ grSubject ] ) / \groups[Group]; }} advicevx = ( advices[grSubject] + sj_mi[ grSubject] ) / \groups[Group]; advicevxreal = advicevx; // step 6 TiBeta = Beta * sum( same( Group ), power(advicevx - :advices[grSubject], 2) ); subjects.do{ if( same(Group) & not(same(Subject)) ){ TiBeta = Beta * sum( same( Group ), power(advicevx - :s[grSubject], 2) ); }} AdviceUtility = if( advicevx < 0, -10000, sqrt(advicevx+r) ); AdvicePenalty = TiBeta - Alfa * subjects.average( same( Group ), TiBeta ) + subjects.sum(same(Group) & not(same(Subject)) & advicevx<0 & :advices[grSubject] < advicevx, 10000); AdviceProfit = AdviceUtility - AdvicePenalty;ÈÈÈEEXContainerWindow Êàëüêóëÿòîð Period > 1EEXDialogWindow Çàãîëîâîê060p EEXInfoItemÊàëüêóëÿòîð âûèãðûøàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXInfoItem^Âñå ïàðàìåòðû áóäóò ïîñ÷èòàíû íà îñíîâå Âàøåé òåêóùåé çàÿâêè è ïðåäûäóùèõ çàÿâîê âñåõ èãðîêîâ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXDialogWindowÑòîëáåö òåêñòà040% EEXInfoItem Âàøà çàÿâêàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemÂûäàííûé Âàì ðåñóðñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemØòðàôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItemÂûèãðûøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXDialogWindowÊàëüêóëÿòîð ñâîáîäíûõ çàÿâîê050% EEXInfoItem vs[grSubject]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemvxreal-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemPenalty-10001000 ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItemProfit-10001000 ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXDialogWindow Êàëüêóëÿòîð ðåêîìåíäóåìûõ çàÿâîê EEXInfoItemadvices[grSubject]-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem advicevxreal-10001000 ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem AdvicePenalty-10001000 ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItem AdviceProfit-10001000 ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXContainerWindow ÈíôîðìàöèÿEEXContainerWindowÒàáëèöà èñòîðèè0130pEEXDialogWindow Çàãîëîâîê020p EEXInfoItemÂàøà èñòîðèÿ èãðûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXHistoryWindowHistory EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItem Âàøà çàÿâêà vs[grSubject] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemÂûäàííûé Âàì ðåñóðñvxreal ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø øòðàôPenalty ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItem Âàø âûèãðûøProfit ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXContainerWindowÈñòîðèÿ çàÿâîê050%EEXDialogWindow Çàãîëîâîê030p EEXInfoItem Âàøè çàÿâêèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXPlotWindowÄåéñòâèÿ îïïîíåíòîâ5p5p5p5p EEXPlotAxis00max(BaseNumPeriods, Period)1if (Period < 15,1,2)1Ïåðèîä EEXPlotAxis0 MinRequest MaxRequest5101 Âàøè çàÿâêè EEXPlotGraphx EEXPlotTextmax(BaseNumPeriods,Period)-1+MaxRequest - i * (MaxRequest-MinRequest)/10 <> s[]zrgb(if(i==1,255,0)+if(i==4|i==6,100,0), if(i==2,255,0) +if(i==5,100,0)+if(i==4,100,0), if(i==3,255,0)+if(i==5|i==6,100,0))14TRUE EEXPlotGraph EEXPlotPointtimeolds[i]73+i18* izrgb(if(i==1,255,0)+if(i==4|i==6,100,0), if(i==2,255,0) +if(i==5,100,0)+if(i==4,100,0), if(i==3,255,0)+if(i==5|i==6,100,0))\NumSbj +2 - i s_historyface == Subject3rgb(if(i==1,255,0), if(i==2,255,0), if(i==3,255,0))2assisti <= \groups[Group]40400max(BaseNumPeriods, Period) MinRequest MaxRequestEEXContainerWindowÂûäàâàåìûé ìíå ðåñóðñ0EEXDialogWindow Çàãîëîâîê030p EEXInfoItem,Âûäàâàåìûé Âàì ðåñóðñ è çàÿâêè î Âàñ èãðîêîâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXPlotWindow5p5p5p5p EEXPlotAxis00max(BaseNumPeriods, Period)1if (Period < 15,1,2)1Ïåðèîä EEXPlotAxis0MinRequestTomeMaxRequestTome5101Çàÿâêè EEXPlotGraphs EEXPlotTextmax(BaseNumPeriods,Period)-1+Endowment - i * (Endowment - 0)/LegendYStep<> s[<:grSubject|1>]zrgb(if(i==1,255,0)+if(i==4|i==6,100,0), if(i==2,255,0) +if(i==5,100,0)+if(i==4,100,0), if(i==3,255,0)+if(i==5|i==6,100,0))14TRUE EEXPlotGraph EEXPlotPointtimeolds[::grSubject]73+i18*izrgb(if(i==1,255,0)+if(i==4|i==6,100,0), if(i==2,255,0) +if(i==5,100,0)+if(i==4,100,0), if(i==3,255,0)+if(i==5|i==6,100,0))\NumSbj +2 - i s_historysame(Group) & grSubject == :i5rgb(if(i==1,255,0) , if(i==2,255,0) , if(i==3,255,0))2assisti <= \groups[Group] EEXPlotGraphx EEXPlotPointtimex5445•rgb(if(face==1,255,0)+if(face==4|face==6,100,0), if(face==2,255,0) +if(face==5,100,0)+if(face==4,100,0), if(face==3,255,0)+if(face==5|face==6,100,0))2 s_historyface == :SubjectMrgb(if(grSubject==1,255,0) , if(grSubject==2,255,0) , if(grSubject==3,255,0))2 EEXPlotTextmax(BaseNumPeriods,Period)-1+Endowment - 0 * (Endowment - 0)/LegendYStep<> x[]Ârgb(if(grSubject==1,255,0)+if(grSubject==4|grSubject==6,100,0), if(grSubject==2,255,0) +if(grSubject==5,100,0)+if(grSubject==4,100,0), if(grSubject==3,255,0)+if(grSubject==5|grSubject==6,100,0))14TRUE40400max(BaseNumPeriods, Period)MinRequestTomeMaxRequestTomeEEXDialogWindowText EEXInfoItem3Ïîæàëóéñòà, ïîäîæäèòå, ïîêà âñå èãðîêè ñäåëàþò õîä.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXStageÐåçóëüòàò øàãà EEXProgramsubjectsg// Check modifications iterator( j, \groups[Group] ).do{ if( :vs[j] != :s[j] ) { :BidModif = 1; } } EEXProgramsubjects MakeAdviceRun == 1 & Period == 1ÿˆ// initialize on first Period Delta = subjects.sum( same(Group), vs[grSubject]); if( Delta > Endowment ){ Delta = (Endowment - vs[grSubject]) / (\groups[Group]-1); subjects.do{ if( same(Group) & not(same(Subject)) ){ :vs[grSubject] = :Delta; }} } else { subjects.do{ if( same(Group) & not(same(Subject)) ){ :vs[grSubject] = vs[grSubject]; }} } //Delta = max ( 0, (subjects.sum(same(Group), vs[grSubject]) - Endowment) / (GroupSize*(GroupSize-1)) ); //vx = vs[grSubject] - (GroupSize-1) * Delta; //vxreal = vx; //subjects.do{ if( same(Group) & not(same(Subject)) ){ // :vs[grSubject] = vs[grSubject] - GroupSize * :Delta; //}}; EEXProgramsubjectsMakeAdviceRun == 1 & Period > 1ÿ // setting deficit // step 3 delta_i = max ( 0, vs[grSubject] + SumS/(\groups[Group]-1) - Endowment); xtemp = delta_i / ( \groups[Group] - 1 ); iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :delta_j[j] = :xtemp; }} // step 4: normalize bids if( not( SumS/(\groups[Group]-1) < delta_i ) ){ loop = 1; array L[]; iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :L[ j ] = 0; }} while( loop == 1 ){ lambda = 0; iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ xtemp = (1+1/(\groups[Group]-1))* :sj_mi[j]; if( :delta_j[ j ] > xtemp ){ :lambda = :lambda + :delta_j[ j ] - xtemp; :delta_j[ j ] = xtemp; :L[ j ] = 0; } if( :delta_j[ j ] < xtemp ){ :L[ j ] = 1; } }} sumL = 0; iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :sumL = :sumL + :L[ j ]; }} // spread excess if( lambda > 0 ){ iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ if( :L[ j ] == 1 ){ :delta_j[ j ] = :delta_j[ j ] + :lambda / :sumL; } }} } else{ loop = 0; } }// while }// global if // step 5 : set bids and allocation resources iterator( j , \groups[Group] ).do{ if( j != :grSubject ){ :vs[ j ] = :sj_mi[ j ] / (\groups[Group] - 1) - :delta_j[ j ]; }} EEXProgramsubjectsT// crossing from mechanism to game vx = average( same( Group ), vs[ :grSubject ] ); EEXProgramglobalsFALSEÿ[// pulling out negative resources iterator ( team, GroupsNumber ) .do{ L = 1; while( L > 0 ){ L = 0; lambda = 0; subjects.do{ if( Group == :team & vx < 0 ){ :lambda = :lambda - vx; vx = 0; :L = :L + 1; }} if( L > 0 ){ subjects.do{ if( Group == :team & vx > 0 ){ vx = vx - :lambda / (\groups[Group] - :L); }} } }} EEXProgramsubjectsVvxreal = vx; TiBeta = Beta * sum( same( Group ), power ( vx - :vs[grSubject] , 2 ) ); EEXProgramsubjectsÿÓ// utility, penalty, profit Utility = if( vx < 0, -10000, sqrt ( vx + r ) ); Penalty = TiBeta - Alfa * subjects.average( same(Group), TiBeta ) + subjects.sum( same(Group) & not(same(Subject)) & vx<0 & :vs[grSubject] < vx, 10000 ); Profit = Utility - Penalty; // helpers: calc [Max|Min] [Profit|Request|Invest] if( Profit > MaxProfit ){ MaxProfit = Profit; } if( Profit < MinProfit ){ MinProfit = Profit; } MinProfit = max( -20, MinProfit ); MaxProfit = min( 20, MaxProfit ); xtemp = vs[1]; temp = vs[1]; iterator( i, 2, \groups[Group] ).do{ :xtemp = max ( :xtemp, :vs[i] ) ; :temp = min ( :temp, :vs[i] ); } if( xtemp > MaxRequest ){ MaxRequest = xtemp; } if( temp < MinRequest ){ MinRequest = temp; } xtemp = vs[grSubject]; temp = vs[grSubject]; subjects.do{ :xtemp = max ( :xtemp, vs[:grSubject] ) ; :temp = min ( :temp, vs[:grSubject] ); } if( xtemp > MaxRequestTome ){ MaxRequestTome = xtemp; } if( temp < MinRequestTome ){ MinRequestTome = temp; } EEXProgramsubjectsÿ’// save the history s_history.new{ time = :Period; face = :Subject; grSubject = :grSubject; iterator( i, \groups[Group] ).do{ olds[i] = ::vs[i]; } gain = :Profit; penalty = :Penalty; Group = :Group; x = :vx; r = :r; AcceptAdvice = :MakeAdviceRun; CalcCount = :CalcCount; CalcAdviceCount = :CalcAdviceCount; } subjects.do{ if( same(Group) ){ :others[grSubject] = vx; }} EEXProgramsubjects‰// calc deviations of gamers from theirs old actions if( Period >1 ){ ds = iterator(j, \groups[Group]).sum( abs(:vs[j] - :s[j]) ); } EEXProgramglobalsÝ// check whether game continue or not RepeatTreatment = 1; if( Period >= MyNumPeriods ) { RepeatTreatment = 0; } elsif( Period > 1 ) { DSbj = subjects.sum( ds ); RepeatTreatment = if( DSbj > TechPrec, 1, 0); } 06subjects.sum( same(Group), MakeRun ) == \groups[Group]EEXContainerWindowÍèæíèé êîëîíòèòóë040pEEXDialogWindowÊíîïêà020%EEXContractButton ÏðîäîëæèòüEEXDialogWindow Ñîîáùåíèå0RepeatTreatment == 0 EEXInfoItem=Èãðà çàêîí÷èëàñü: íèêòî èç èãðîêîâ íå èçìåíèë ñâîåãî äåéñòâèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXContainerWindow Ëåâàÿ ïàíåëü050%0EEXDialogWindow Èíôîðìàöèÿ050% EEXInfoItemÂàøà çàÿâêà íà êîë-âî ðåñóðñà vs[grSubject] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemÂûäàííûé Âàì ðåñóðñvx0 Endowment ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemÂàøà ïîëåçíîñòü â ýòîì ïåðèîäåUtility ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItemÂàø øòðàô â ýòîì ïåðèîäåPenalty ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItemÂàø âûèãðûø â ýòîì ïåðèîäåProfit ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXContainerWindowÒàáëèöà èñòîðèèEEXDialogWindow Çàãîëîâîê020p EEXInfoItem,Èñòîðèÿ Âàøèõ çàÿâîê è ðàñïðåäåëåíèé ðåñóðñàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXHistoryWindowHistory\groups[Group] == 2 EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]vs[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]vs[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[1] others[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[2] others[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXHistoryWindowHistory\groups[Group] == 3 EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]vs[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]vs[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[3]vs[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[1] others[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[2] others[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[3] others[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXHistoryWindowHistory\groups[Group] == 4 EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]vs[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]vs[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[3]vs[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[4]vs[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[1] others[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[2] others[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[3] others[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[4] others[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXHistoryWindowHistory\groups[Group] == 5 EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]vs[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]vs[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[3]vs[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[4]vs[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[5]vs[5] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[1] others[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[2] others[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[3] others[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[4] others[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemx[5] others[5] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹?EEXContainerWindow Èíôîðìàöèÿ0EEXContainerWindowÒàáëèöà èñòîðèè0130pEEXDialogWindow Çàãîëîâîê020p EEXInfoItem Èñòîðèÿ èãðûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXHistoryWindowHistory EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItem Âàøà çàÿâêà vs[grSubject] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItemÂûäàííûé Âàì ðåñóðñvx ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø øòðàôPenalty ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP? EEXInfoItem Âàø âûèãðûøProfit ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXHistoryWindowHistoryFALSE EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]s[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]s[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[3]s[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø âêëàäx ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø âûèãðûøProfit ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXHistoryWindowHistoryFALSE EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]s[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]s[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[3]s[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[4]s[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø âêëàäx ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø âûèãðûøProfit ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXHistoryWindowHistoryFALSE //\NumSbj == 5 EEXInfoItemÏåðèîäPeriod1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð? EEXInfoItems[1]s[1] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[2]s[2] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[3]s[3] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[4]s[4] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItems[5]s[5] ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø âêëàäx ActionPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš™™™™™¹? EEXInfoItem Âàø âûèãðûøProfit ProfitPrecÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý©ñÒMbP?EEXContainerWindowÈñòîðèÿ âûèãðûøåé050%EEXDialogWindow Çàãîëîâîê020p EEXInfoItemÈñòîðèÿ âûèãðûøåéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXPlotWindowÈñòîðèÿ âûèãðûøåé5p5p5p5p EEXPlotAxis00max(BaseNumPeriods, Period)1if (Period < 15, 1, 2)1Ïåðèîä EEXPlotAxis0 MinProfit MaxProfit10101Âûèãðûø EEXPlotGraph EEXPlotPointtimegain5445rgb(0.82,0.00,0.00)2 s_historyface == Subjectrgb(0.00,0.00,0.00)140200max(BaseNumPeriods, Period) MinProfit MaxProfitEEXContainerWindowÏîëó÷åííûé ðåñóðñ0EEXDialogWindow Çàãîëîâîê020p EEXInfoItemÐàñïðåäåëåíèå ðåñóðñà èãðîêàìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ EEXPlotWindowÏîëó÷åííûé ðåñóðñ5p5p5p5p EEXPlotAxis00max(BaseNumPeriods, Period)1if (Period < 15,1,2)1Ïåðèîä EEXPlotAxis00 Endowment5101Âûäàííûé ðåñóðñ EEXPlotGraphx EEXPlotTextmax(BaseNumPeriods,Period)-1"Endowment - i * (Endowment - 0)/10 <> x[]prgb(if(i==1,255,0)+if(i==4,100,0), if(i==2,255,0) +if(i==5,100,0)+if(i==4,100,0), if(i==3,255,0)+if(i==5,100,0))14TRUE EEXPlotGraphothers x EEXPlotPointtimex5445prgb(if(i==1,255,0)+if(i==4,100,0), if(i==2,255,0) +if(i==5,100,0)+if(i==4,100,0), if(i==3,255,0)+if(i==5,100,0))2 s_historysame(Group) & grSubject == i3rgb(if(i==1,255,0), if(i==2,255,0), if(i==3,255,0))2assisti <= \groups[Group]40400max(BaseNumPeriods, Period)0 EndowmentEEXDialogWindowËåãåíäà0250p050pFALSE EEXInfoItem;Êðàñíûé öâåò - Âàø ðåñóðñ Ñèíèé öâåò - ñóììà âñåõ ðåñóðñîâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEEXDialogWindowText EEXInfoItem>Ïîæàëóéñòà, ïîäîæäèòå, ïîêà âñå èãðîêè âûáåðóò ïðîäîëæèòü õîä.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCPGXPeriodParam1CPGXRoleS 1CPGXSubjectParamCPGXRoleS 2CPGXSubjectParamCPGXRoleS 3CPGXSubjectParamCPGXSubjectParamCPGXSubjectParamCPGXSubjectParamZZZZe