施於人,楊 曉,楊慧潔
(重慶理工大學(xué) 工程訓(xùn)練與經(jīng)管實(shí)驗(yàn)中心,重慶 400054)
2017年塞勒因其在行為經(jīng)濟(jì)學(xué)領(lǐng)域的貢獻(xiàn)獲得諾貝爾經(jīng)濟(jì)學(xué)獎(jiǎng),標(biāo)志著開(kāi)啟了經(jīng)濟(jì)學(xué)研究全新的詮釋范式。行為經(jīng)濟(jì)學(xué)和實(shí)驗(yàn)經(jīng)濟(jì)學(xué)是密切相關(guān)的經(jīng)濟(jì)學(xué)分支。行為經(jīng)濟(jì)學(xué)研究往往需要采用實(shí)驗(yàn)方法研究經(jīng)濟(jì)社會(huì)問(wèn)題,實(shí)驗(yàn)的設(shè)計(jì)、開(kāi)展是研究者們?cè)谘芯窟^(guò)程中的必要環(huán)節(jié)和手段。
過(guò)去的三四十年中,史密斯(Vernon Smith)、澤爾騰(Reinhard Selten)、普洛特(Charles Plott)等在經(jīng)濟(jì)學(xué)實(shí)驗(yàn)的開(kāi)展、規(guī)范等領(lǐng)域做了大量的研究工作,其研究成果告訴人們采用實(shí)驗(yàn)來(lái)研究問(wèn)題所應(yīng)遵循的基本原則、范式,應(yīng)用方面的研究成果也不斷涌現(xiàn)。國(guó)內(nèi)對(duì)于實(shí)驗(yàn)方法在社會(huì)科學(xué)領(lǐng)域的應(yīng)用也有討論和研究[1-3]。
實(shí)驗(yàn)方法已經(jīng)開(kāi)始被廣泛應(yīng)用于社會(huì)科學(xué)的研究,如會(huì)計(jì)[4]、市場(chǎng)營(yíng)銷[5]、公共物品[6]等領(lǐng)域。大部分的研究,實(shí)驗(yàn)的參與者都是來(lái)自高校的大學(xué)生,如連洪泉等[7-8]開(kāi)展的公共品供給研究,汪思綺、陳穎等[9-10]進(jìn)行的信任博弈研究。它們也常常被用于課堂教學(xué),如H.Holm、P.Nystedt[11]在瑞典Linkoping大學(xué)進(jìn)行的信任博弈實(shí)驗(yàn),劉文燕等[12]開(kāi)展完全競(jìng)爭(zhēng)市場(chǎng)和完全壟斷市場(chǎng)的實(shí)驗(yàn)。但目前國(guó)內(nèi)外研究者在開(kāi)展研究、教學(xué)的過(guò)程中,所使用的實(shí)驗(yàn)平臺(tái)或工具并不能完全滿足研究中“便捷、快速、高效”構(gòu)建模型以及方便地滿足其他研究者復(fù)現(xiàn)、共享這些實(shí)驗(yàn)的需求。
最早期開(kāi)展的實(shí)驗(yàn)研究,不論是張伯倫(Chamberlin)的供給與需求實(shí)驗(yàn),還是史密斯(Vernon Smith)提煉總結(jié)開(kāi)展經(jīng)濟(jì)學(xué)實(shí)驗(yàn)應(yīng)遵循的實(shí)驗(yàn)設(shè)計(jì)五大原則,都主要依賴于紙、筆、撲克牌等工具。
隨著信息技術(shù)的不斷發(fā)展和實(shí)驗(yàn)方法的改進(jìn),研究者們開(kāi)始采用一些通用開(kāi)發(fā)工具來(lái)設(shè)計(jì)所需要進(jìn)行的實(shí)驗(yàn),如C++、VB。采用通用開(kāi)發(fā)平臺(tái)自己編寫代碼,對(duì)于從事經(jīng)濟(jì)學(xué)實(shí)驗(yàn)研究的人來(lái)說(shuō),這并不是一個(gè)具備“比較優(yōu)勢(shì)”的選擇,且通用開(kāi)發(fā)平臺(tái)不是專為經(jīng)濟(jì)學(xué)實(shí)驗(yàn)?zāi)P烷_(kāi)發(fā)設(shè)計(jì)的,在實(shí)驗(yàn)設(shè)計(jì)方面效率不高。
Charles Plott等[13]采用Python、.net等開(kāi)發(fā)工具,建設(shè)了可在線開(kāi)展實(shí)驗(yàn)的網(wǎng)站,如Veconlab,網(wǎng)站提供了部分經(jīng)典實(shí)驗(yàn)?zāi)P?,可用于進(jìn)行在線實(shí)驗(yàn)教學(xué),但網(wǎng)站無(wú)法滿足自定義實(shí)驗(yàn)的設(shè)計(jì)、開(kāi)發(fā),也無(wú)法進(jìn)行自定義實(shí)驗(yàn)的調(diào)試、變更以及定制實(shí)驗(yàn)流程和參數(shù)。
當(dāng)前最常用的開(kāi)發(fā)工具是1998年由瑞士蘇黎世大學(xué)Fischbacher等使用C++語(yǔ)言設(shè)計(jì)研發(fā)的z-Tree,如李賓等[14]在教學(xué)科研中使用的開(kāi)發(fā)工具。此外,2017年MIT的Daniel Chen等開(kāi)發(fā)了允許用戶可以創(chuàng)建基于B/S模式的設(shè)計(jì)開(kāi)發(fā)工具——oTree。它們?cè)谝欢ǔ潭壬蠋椭芯空呓鉀Q了自主設(shè)計(jì)實(shí)驗(yàn)的問(wèn)題,使得研究者能使用相對(duì)簡(jiǎn)單的程序語(yǔ)句,而不是完全由計(jì)算機(jī)專業(yè)人員才能使用的開(kāi)發(fā)語(yǔ)言來(lái)完成一個(gè)實(shí)驗(yàn)?zāi)P偷脑O(shè)計(jì),并能相對(duì)容易地部署、運(yùn)行,但仍然具有一定的局限性:
1)z-Tree、Otree雖然降低了研究者所需要掌握計(jì)算機(jī)開(kāi)發(fā)能力的門檻,但對(duì)于完全不熟悉計(jì)算機(jī)開(kāi)發(fā)、編程、調(diào)試的研究者而言,它還是相對(duì)復(fù)雜。z-Tree內(nèi)嵌的編程語(yǔ)言為C++,oTree則為
Python。
2)z-Tree的主體結(jié)構(gòu)仍基于20世紀(jì)90年代末期的開(kāi)發(fā)工具所提供,其在運(yùn)行過(guò)程控制、通訊穩(wěn)定性、容錯(cuò)以及易用性等方面落后于目前開(kāi)發(fā)工具、組件所能提供的功能。對(duì)zTree使用者而言,更無(wú)法解決源開(kāi)發(fā)工具本身所導(dǎo)致的功能缺陷。oTree則需要研究者完成實(shí)驗(yàn)設(shè)計(jì)后獨(dú)立安裝部署,才能提供互聯(lián)網(wǎng)模式的訪問(wèn)方式。
3)其他研究者如果想重復(fù)實(shí)驗(yàn),同樣需要掌握z-Tree、oTree的開(kāi)發(fā)、調(diào)試技能,才能復(fù)現(xiàn)這些實(shí)驗(yàn),來(lái)完成對(duì)研究成果的檢驗(yàn)。
因此,開(kāi)發(fā)一種基于云模式的,能為從事實(shí)驗(yàn)經(jīng)濟(jì)學(xué)、行為經(jīng)濟(jì)學(xué)的研究、教學(xué)人員提供一個(gè)可視化、易建模、能復(fù)用的實(shí)驗(yàn)建模開(kāi)發(fā)工具(后文以“BeTools”指代)是一個(gè)現(xiàn)實(shí)的需求。從實(shí)際應(yīng)用角度看,這類在線開(kāi)發(fā)工具的實(shí)現(xiàn)也具有重要意義及可行性[15]。
云模式是目前許多軟件使用的新型開(kāi)發(fā)、運(yùn)行、使用模式,其應(yīng)用領(lǐng)域日益廣泛,如政務(wù)[16]、教育[17]等。在云模式的含義主要在3個(gè)層面,即:
IaaS(基礎(chǔ)架構(gòu)即服務(wù))。任何一個(gè)系統(tǒng)使用都需要安裝到一定的硬件設(shè)備中,使用必須的操作系統(tǒng)、磁盤存儲(chǔ)和訪問(wèn)帶寬。對(duì)Iaas服務(wù)模式也有要求[18],目前這部分服務(wù),可通過(guò)付費(fèi)給提供云服務(wù)的服務(wù)商,如阿里、華為等即可獲得。
PaaS(平臺(tái)即服務(wù))。PaaS提供了基礎(chǔ)架構(gòu),開(kāi)發(fā)者可以在這個(gè)基礎(chǔ)架構(gòu)之上建設(shè)新的應(yīng)用或者擴(kuò)展已有的應(yīng)用,同時(shí)卻不必購(gòu)買開(kāi)發(fā)質(zhì)量控制或生產(chǎn)服務(wù)器。例如微軟的Azure(主要用途為計(jì)算服務(wù)、數(shù)據(jù)存儲(chǔ)服務(wù))、Amazon、Google。PaaS的架構(gòu)[19]、運(yùn)作模式[20]也有討論,不過(guò)仍不是本文所關(guān)注的,工具開(kāi)發(fā)者可以通過(guò)采用提供類似功能的開(kāi)源軟件或付費(fèi)獲得所需的功能服務(wù)。
SaaS(軟件即服務(wù))。SaaS是一種通過(guò)互聯(lián)網(wǎng)絡(luò)提供軟件的模式,最終用戶無(wú)需購(gòu)買軟件,而是直接使用提供商基于Web的軟件來(lái)完成所需的各項(xiàng)工作和功能??梢詫⑺斫鉃橐环N軟件分布模式,在這種模式下,應(yīng)用軟件安裝在云端,用戶可以通過(guò)網(wǎng)絡(luò)來(lái)使用這些軟件。在這種模式下,提供商在軟件開(kāi)發(fā)過(guò)程中需采用符合這種運(yùn)行模式的軟件架構(gòu)和部署方式進(jìn)行開(kāi)發(fā)和部署。
BeTools工具屬于這一模式中的SaaS,工具的使用、運(yùn)行,除了BeTools應(yīng)該具備提供的各項(xiàng)功能外,還必須包括IaaS、PaaS服務(wù)商的選擇、維護(hù)等必須的基礎(chǔ)設(shè)施和架構(gòu)。同時(shí),SaaS方在提供最終應(yīng)用時(shí),為獲得完整的云運(yùn)行模式,工具的開(kāi)發(fā)設(shè)計(jì)需要采用符合“云”模式的架構(gòu)和部署方式。
實(shí)驗(yàn)/行為經(jīng)濟(jì)學(xué)實(shí)驗(yàn)是經(jīng)濟(jì)學(xué)研究者(主持者)在挑選的受試者對(duì)象參與下,按照一定的實(shí)際規(guī)則并給以一定的物質(zhì)報(bào)酬,以仿真方法創(chuàng)造與實(shí)際經(jīng)濟(jì)相似的一種實(shí)驗(yàn)環(huán)境,不斷改變實(shí)驗(yàn)參數(shù),對(duì)得到的實(shí)驗(yàn)數(shù)據(jù)分析整理加工,用以檢驗(yàn)已有的經(jīng)濟(jì)理論及其前提假設(shè)或者發(fā)現(xiàn)新的理論,又或者為一些決策提供理論分析的研究性實(shí)驗(yàn)。實(shí)驗(yàn)均為回合制,在一個(gè)回合決策過(guò)程中,部分實(shí)驗(yàn)會(huì)采用“實(shí)時(shí)”方式進(jìn)行決策,基本流程見(jiàn)圖1。
圖1 實(shí)驗(yàn)/行為經(jīng)濟(jì)學(xué)實(shí)驗(yàn)的基本流程
設(shè)定角色和實(shí)驗(yàn)參數(shù)。用來(lái)規(guī)定實(shí)驗(yàn)環(huán)境,即受試者在什么樣的環(huán)境下完成決策。角色是指參與實(shí)驗(yàn)的受試者是具備相同的實(shí)驗(yàn)屬性還是具備不同的實(shí)驗(yàn)屬性。
受試者分組/匹配。主持者將所有參與實(shí)驗(yàn)的受試者根據(jù)隨機(jī)或者固定匹配的方式分成若干組,分組和匹配方式會(huì)影響受試者的決策策略。
受試者決策。受試者收到主持者的開(kāi)始實(shí)驗(yàn)指令后,根據(jù)實(shí)驗(yàn)規(guī)則進(jìn)行實(shí)驗(yàn)決策。
計(jì)算實(shí)驗(yàn)結(jié)果。每輪實(shí)驗(yàn)完成后,系統(tǒng)根據(jù)實(shí)驗(yàn)參數(shù)、受試者決策行為等數(shù)據(jù)參照特定的模型算法完成計(jì)算。
根據(jù)角色和每個(gè)角色受試者決策次數(shù)、決策順序及決策影響關(guān)系,可以對(duì)實(shí)驗(yàn)進(jìn)行如下分類,見(jiàn)表1。其中:并發(fā)決策是指受試者在實(shí)驗(yàn)過(guò)程中同時(shí)提交決策;順序決策是指受試者在實(shí)驗(yàn)過(guò)程中先后提交決策;實(shí)時(shí)決策是指實(shí)驗(yàn)過(guò)程中,只要當(dāng)前輪次未結(jié)束,受試者可以隨時(shí)、反復(fù)、多次提交決策。
表1 實(shí)驗(yàn)/行為經(jīng)濟(jì)學(xué)實(shí)驗(yàn)?zāi)P偷姆诸?/p>
BeTools的設(shè)計(jì)理念是分層設(shè)計(jì),服務(wù)是模塊化的。在Betools中,根據(jù)提供功能的公共、共用屬性,將功能細(xì)分為基礎(chǔ)層、平臺(tái)層和應(yīng)用層?;A(chǔ)層提供基本功能需求支撐,如通信服務(wù)、邏輯服務(wù)、數(shù)據(jù)服務(wù)等功能需求;平臺(tái)層提供共用函數(shù)及公共服務(wù);應(yīng)用層給出模型開(kāi)發(fā)功能,并將模型設(shè)計(jì)后部署、開(kāi)展實(shí)驗(yàn)的部分(在線實(shí)驗(yàn)系統(tǒng))獨(dú)立出來(lái),一體化解決“實(shí)驗(yàn)?zāi)P驮O(shè)計(jì)—部署—開(kāi)展”所有環(huán)節(jié),總體架構(gòu)如圖2所示。
圖2 實(shí)驗(yàn)開(kāi)發(fā)工具(BeTools)系統(tǒng)架構(gòu)
基礎(chǔ)層各類組件采用第三方公司提供,它們需要被合理地選型、部署。
MySQL數(shù)據(jù)庫(kù)提供數(shù)據(jù)存儲(chǔ)和管理服務(wù)。
RabbitMQ提供消息隊(duì)列服務(wù),用于保證實(shí)驗(yàn)過(guò)程少掉線、少斷線。此外,因?yàn)樗邆浼悍绞讲渴鹉J剑梢詫?shí)現(xiàn)各微服務(wù)之間的消息異步,系統(tǒng)可以將實(shí)驗(yàn)過(guò)程中數(shù)據(jù)的持久化存儲(chǔ)操作提取出來(lái)進(jìn)行異步處理,這將大大節(jié)省服務(wù)器的請(qǐng)求響應(yīng)時(shí)間,最終保證在相同數(shù)量的受試者參與實(shí)驗(yàn)時(shí)能提供更高的數(shù)據(jù)交換穩(wěn)定性。
通信技術(shù)SingalR集成了數(shù)種常見(jiàn)的消息傳輸方式,如long polling、WebScoket,并提供相應(yīng)的Api供開(kāi)發(fā)人員選擇如何調(diào)用,幫助其快速地實(shí)現(xiàn)客戶端與服務(wù)器端相互間的實(shí)時(shí)通信。它使得實(shí)驗(yàn)進(jìn)行中主持者和受試者可以及時(shí)交換信息,保障在線實(shí)驗(yàn)的流暢性。
選擇Redis與KV存儲(chǔ)(RocksDB)相融合,以取代常用的關(guān)系型數(shù)據(jù)庫(kù)。由于每個(gè)實(shí)驗(yàn)在參數(shù)數(shù)據(jù)、決策數(shù)據(jù)、結(jié)果數(shù)據(jù)等方面差異明顯,相比關(guān)系型數(shù)據(jù)庫(kù),這樣組合可以提高Betools組件的靈活性以及提高實(shí)驗(yàn)過(guò)程數(shù)據(jù)高頻讀寫的速度。
邏輯服務(wù)提供用戶自定義模型算法。采用以Python為腳本語(yǔ)言進(jìn)行研發(fā)設(shè)計(jì),為研究者提供“傻瓜式”用戶自定義計(jì)算邏輯入口。
平臺(tái)層及應(yīng)用層功能則根據(jù)本文所描述的功能需求進(jìn)行設(shè)計(jì)。
基于云模式的經(jīng)濟(jì)學(xué)實(shí)驗(yàn)開(kāi)發(fā)工具的主要目的是滿足研究者能方便、快捷地構(gòu)建實(shí)驗(yàn)?zāi)P统绦?,快速部署開(kāi)展實(shí)驗(yàn),收集實(shí)驗(yàn)數(shù)據(jù)。完成的實(shí)驗(yàn)?zāi)P湍芊奖愕乇恢貜?fù)使用。在功能設(shè)計(jì)上,其具備如下特點(diǎn):
1)模板化。提供“模板”方式構(gòu)建實(shí)驗(yàn)?zāi)P?。即根?jù)實(shí)驗(yàn)角色、受試者決策特征,選擇一類模板,可自動(dòng)生成完成該類實(shí)驗(yàn)的整體流程和框架,實(shí)驗(yàn)設(shè)計(jì)者只需要對(duì)模板中各環(huán)節(jié)進(jìn)行微調(diào)、修改,即可完成實(shí)驗(yàn)?zāi)P蜆?gòu)建。如圖3。
圖3 BeTools提供的設(shè)計(jì)模板
2)界面設(shè)計(jì)“所見(jiàn)即所得”。摒棄界面設(shè)計(jì)采用數(shù)值定位、屏幕區(qū)塊分隔的控制形式,在實(shí)驗(yàn)者、受試者使用的用戶交互界面,采用“組件庫(kù)”+“拖曳”的方式完成。
3)流程控制圖形化。對(duì)于實(shí)驗(yàn)過(guò)程中受試者的決策行為、實(shí)驗(yàn)過(guò)程控制、結(jié)果計(jì)算采用流程的方式進(jìn)行顯示和控制,實(shí)驗(yàn)設(shè)計(jì)者通過(guò)定義流程節(jié)點(diǎn)、流程走向,而不是代碼方式來(lái)控制實(shí)驗(yàn)流程,以解決不同實(shí)驗(yàn)流程的多樣性及受試者決策行為多樣性的實(shí)驗(yàn)設(shè)計(jì)需求。
4)計(jì)算邏輯圖形化。實(shí)驗(yàn)過(guò)程中計(jì)算邏輯的實(shí)現(xiàn),結(jié)合流程控制、圖形控制的方式進(jìn)行。從工具實(shí)現(xiàn)角度看,計(jì)算邏輯的實(shí)現(xiàn)形式包括編程語(yǔ)言、偽代碼、自然語(yǔ)言、流程圖等。編程語(yǔ)言計(jì)算機(jī)可以識(shí)別,但是對(duì)于最終用戶而言難度大,表述困難。偽代碼和自然語(yǔ)言容易解讀,但是難以形成規(guī)范化表述,容易形成歧義,無(wú)法滿足算法定義的要求。流程圖是以圖形的形式表述算法,一方面清晰明了容易解讀,另一方面在實(shí)現(xiàn)上容易規(guī)范,且實(shí)驗(yàn)開(kāi)發(fā)工具本身需要提供流程定義和控制,因此計(jì)算邏輯部分可借助流程圖的形式來(lái)完成。在控制過(guò)程中,將數(shù)據(jù)、運(yùn)算符號(hào)、控制語(yǔ)句等以標(biāo)簽的形式進(jìn)行顯示,采用標(biāo)簽形式代表程序中一個(gè)語(yǔ)法或控制。用戶通過(guò)標(biāo)簽組合形成計(jì)算邏輯的算法流程,各類變量以“標(biāo)簽”的方式提供使用,計(jì)算過(guò)程通過(guò)“拖曳”計(jì)算符、變量標(biāo)簽、流程控制標(biāo)簽,組合成“計(jì)算式”,完成計(jì)算邏輯。系統(tǒng)根據(jù)標(biāo)簽將計(jì)算邏輯轉(zhuǎn)換成對(duì)應(yīng)的編程語(yǔ)言控制,形成計(jì)算機(jī)可以識(shí)別的算法。
5)云模式。提供實(shí)驗(yàn)數(shù)據(jù)的Excel格式導(dǎo)出以及在線發(fā)布、使用。使得研究者設(shè)計(jì)的實(shí)驗(yàn)?zāi)P涂梢砸绘I式在線“共享”模型和實(shí)驗(yàn)過(guò)程數(shù)據(jù),以便于其他研究者復(fù)用、驗(yàn)證。
同現(xiàn)有的實(shí)驗(yàn)?zāi)P烷_(kāi)發(fā)工具相比,BeTools具備如下功能特點(diǎn),BeTools在α測(cè)試階段的使用情況表明:在模型設(shè)計(jì)及實(shí)驗(yàn)開(kāi)展效率上,較zTree、oTree有明顯提高,在模型、實(shí)驗(yàn)數(shù)據(jù)的重復(fù)使用和共享方面,優(yōu)勢(shì)明顯:
1)開(kāi)發(fā)工具的學(xué)習(xí)掌握。時(shí)間從zTree、oTree需要的約2~4周縮減到1~3 d(有一定編程基礎(chǔ)),或從1~3個(gè)月縮減到3~5 d(無(wú)編程基礎(chǔ))。
2)模型設(shè)計(jì)。周期從zTree、oTree所需的2~3周縮減到1~3 d。
3)模型部署、開(kāi)展實(shí)驗(yàn)。周期從zTree、oTree所需的2~3 d變?yōu)樵O(shè)計(jì)完成即可實(shí)驗(yàn)。
4)模型復(fù)用及實(shí)驗(yàn)共享。從每次復(fù)用均需在新環(huán)境中重新調(diào)試,變?yōu)橐绘I設(shè)定即可生效。
主要實(shí)驗(yàn)?zāi)P烷_(kāi)發(fā)工具功能對(duì)比見(jiàn)表2。
表2 主要實(shí)驗(yàn)?zāi)P烷_(kāi)發(fā)工具功能對(duì)比
在行為經(jīng)濟(jì)學(xué)及實(shí)驗(yàn)方法可能成為現(xiàn)有經(jīng)濟(jì)學(xué)研究替代范式的今天,“趁手”的實(shí)驗(yàn)?zāi)P驮O(shè)計(jì)、實(shí)驗(yàn)工具是在這一研究領(lǐng)域快速發(fā)展的必需品。在BeTools的設(shè)計(jì)、開(kāi)發(fā)與實(shí)現(xiàn)中堅(jiān)持“云模式、模塊化、圖形化”的需求導(dǎo)向,通過(guò)“云模式”,解決了模型升級(jí)、部署、共享、復(fù)用的需求,通過(guò)“模塊化、圖形化”,降低使用者設(shè)計(jì)開(kāi)發(fā)模型的計(jì)算機(jī)能力門檻,提高設(shè)計(jì)效率,能極大提高研究者開(kāi)展實(shí)驗(yàn)研究的工作成效。當(dāng)然,在系統(tǒng)的易用性、可操作性方面,還有很多值得改進(jìn)和提升的空間。
重慶理工大學(xué)學(xué)報(bào)(自然科學(xué))2019年12期