摘? 要:為了引導(dǎo)更多的工控廠家參與快捷方便的線上采購,改善當(dāng)下工控品線上規(guī)模與線下規(guī)模不匹配的狀況,采購平臺根據(jù)專業(yè)工控工作人士的建議需求,使用基于PHP技術(shù)的ThinkPHP框架與MySQL數(shù)據(jù)庫搭建業(yè)務(wù)后端,Bootstrap框架設(shè)計友好、直觀的用戶交互界面。同時搭配合適的聚類、分類等算法結(jié)合后臺數(shù)據(jù)庫做數(shù)據(jù)統(tǒng)計,為用戶提供專業(yè)、便捷、高效的購買方案。應(yīng)用上述模式方案設(shè)計的采購平臺,經(jīng)測試在高并發(fā)量的情況下性能良好,大約平均每秒處理10次請求,平均響應(yīng)時間在3至5秒?;赥hinkPHP框架開發(fā)的線上工控品采購平臺完全可以勝任一般廠家的業(yè)務(wù)需求,并給予廠家便利。
關(guān)鍵詞:工控品;采購平臺;ThinkPHP框架;數(shù)據(jù)統(tǒng)計;性能
中圖分類號:TP3-0? ? ?文獻(xiàn)標(biāo)識碼:A
Abstract:For the purpose that guiding more industry manufactures to participate in easy,quick online purchase and ameliorating the mismatch purchase scale of industrial devices between online purchase and offline purchase,according to industrial professional's suggestion and demand,purchasing platform adopts the ThinkPHP framework based on PHP with MySQL Database technique to build the backend,and adopts bootstrap framework to build the friendly,intuitively interactive frontend.Meanwhile,this paper selects suitable algorithms such as clustering algorithms and classification algorithms combined with the database to conduct data statistics,which provides a professional,convenient,and efficient purchasing scheme for the customers.The purchasing platform that adopts the model mentioned above was tested with highly concurrent cases and showed good performance for dealing with ten requests per second,resulting in an average response time of three to five seconds approximately.The online platform based on the ThinkPHP framework is good enough to deal with demands from common manufactures and provide them with convenience.
Keywords:industrial devices;purchasing platform;ThinkPHP framework;data statistics;performance
1? ?引言(Introduction)
工控,即工業(yè)自動化控制,結(jié)合計算機、微電子、電氣等技術(shù)手段,實現(xiàn)在工業(yè)生產(chǎn)過程中采用機械設(shè)備代替人力勞動,將生產(chǎn)變得智能、高效、精確、可控[1]。工控技術(shù)的出現(xiàn)使工業(yè)生產(chǎn)帶來了第三次革命,生產(chǎn)效率較傳統(tǒng)生產(chǎn)模式實現(xiàn)了質(zhì)的飛越,已經(jīng)成為衡量一個國家工業(yè)與制造業(yè)發(fā)展水平的重要指標(biāo)。然而,工控行業(yè)由于其專業(yè)性,卻沒有很好地與當(dāng)下電商行業(yè)相結(jié)合。隨著大數(shù)據(jù)、云計算、人工智能等技術(shù)的出現(xiàn),全世界已經(jīng)開始走向第四次工業(yè)革命,因此提供一種快速、簡便的方法使得工控制造業(yè)過渡到“互聯(lián)網(wǎng)+”線上時代是非常必要的[2-4]。
陳米力等[5]指出了工業(yè)4.0時代下不少專注工控領(lǐng)域的電商平臺發(fā)展模式落后,缺少專業(yè)服務(wù),沒有產(chǎn)業(yè)價值鏈的話語權(quán),無法與廠商達(dá)成完全的信任溝通等是阻礙平臺經(jīng)營壯大的痛點,并提出了集陽光一站式采購、場景導(dǎo)航、虛擬體驗、供應(yīng)鏈協(xié)同、專業(yè)化支持等創(chuàng)新服務(wù)模式為一體的架構(gòu)方案,但缺乏實際的行動驗證。流程工業(yè)智能工廠的未來發(fā)展[6]一文則從生產(chǎn)廠家出發(fā),提出了基于IT互聯(lián)網(wǎng)的技術(shù)的新智能共享工廠架構(gòu),解決當(dāng)下國內(nèi)大部分廠商仍采用傳統(tǒng)自動化解決方案的問題,是一種升級理念,但卻無法做到短時間快速實現(xiàn)。
本文通過介紹使用ThinkPHP框架的軟件開發(fā)技術(shù),提供促進線上銷售與工控行業(yè)匹配的采購平臺設(shè)計方式與思想,彌補了上述文獻(xiàn)缺乏實踐與短時無法實現(xiàn)的不足,讓更多的IT從業(yè)人員與工控行業(yè)專業(yè)人士參與到工控的電商化進程。
2? ?技術(shù)簡介(The brief introduction of technology)
2.1? ?PHP語言
PHP(Hypertext Preprocessor),中文名超文本處理器,是一種運行在服務(wù)器端的開源腳本性編程語言,其融合了C、Java、Perl等其他多種編程語言的語法與優(yōu)點,具有小巧輕便,運行快捷,簡單易學(xué)且支持跨平臺的特性,被廣泛應(yīng)用于Web端和移動端程序的開發(fā)[7]。
2.2? ?ThinkPHP框架
ThinkPHP是一款開源免費,基于PHP5版本和Apache2協(xié)議的國產(chǎn)輕量級應(yīng)用框架,秉承簡潔實用的設(shè)計原則,致力于簡化企業(yè)級應(yīng)用和敏捷WEB應(yīng)用的開發(fā)過程[7]。其核心運作于ThinkTemplate內(nèi)置模板引擎,使用動態(tài)編譯和緩存技術(shù),保證了開發(fā)速度與運行效率,擁有良好的安全性、可拓展性[8]。ThinkPHP 5.0版本框架融合了豐富的PHP特性,提供了大量簡便的框架API,在使用體驗和性能等各方面都較為出色,受到當(dāng)下國內(nèi)眾多程序設(shè)計者的青睞[9]。
2.3? ?Bootstrap框架
Bootstrap是由美國Twitter公司開發(fā)的一個前端設(shè)計工具包,本質(zhì)是一個CSS/HTML框架,配有多項JavaScript插件提供對JQuery庫引用的支持[10]。使用Bootstrap可大大簡化Web網(wǎng)站界面的設(shè)計,前端設(shè)計者僅需在合適的HTML標(biāo)簽中添加樣式類名即可快速實現(xiàn)界面的顯示效果設(shè)置。此外,Bootstrap對JQuery的插件支持使得Ajax技術(shù)應(yīng)用十分方便,前后端可以完美地實現(xiàn)異步局部界面更新與數(shù)據(jù)交換。
3? ?需求分析(Demand analysis)
基礎(chǔ)材料、基礎(chǔ)零部件(元器件)、基礎(chǔ)工藝和產(chǎn)業(yè)技術(shù)基礎(chǔ)(簡稱“四基”)構(gòu)成了整個工業(yè)的基礎(chǔ)能力,我國由于在工控業(yè)起步較晚,在基礎(chǔ)環(huán)節(jié)長期存在短板,所幸近年來出現(xiàn)技術(shù)突破,逐漸打破了提升的制約。
就當(dāng)下工控行情而言,工控業(yè)產(chǎn)品的銷售對象主要為生產(chǎn)智能自動化成品(如數(shù)字電視、智能冰箱、微波等家具)的企業(yè)廠家,而賣家則為提供生產(chǎn)所需基礎(chǔ)器件等中間設(shè)備的公司[11]。另外,工控涵蓋的生產(chǎn)范圍非常之廣,因而專業(yè)、便捷的采購需要將工控細(xì)分為多個子行業(yè),并根據(jù)行業(yè)的制造過程進行購買流程和方案的設(shè)計。
根據(jù)業(yè)內(nèi)人士的說法,工控業(yè)采購可按照機器人、機床工具、紡織機械、包裝機械、食品機械、塑料機械、印刷機械、泵業(yè)設(shè)備等領(lǐng)域的應(yīng)用進行分類并細(xì)化購買方案的構(gòu)建。
4? ?模塊劃分(The division of platform module)
采購平臺的模塊劃分主要基于前后端交互時都涉及的行為,而非單純地基于前臺界面或后臺操作,因此結(jié)合前述需求和商城的結(jié)構(gòu)可將平臺概括劃分為以下四大模塊:
(1)驗證模塊:包括用戶的注冊、登錄、找回密碼、信息修改操作。注冊應(yīng)該細(xì)分為個人還是企業(yè)廠家,并通過提交相應(yīng)的有效證件信息完成認(rèn)證(身份證、企業(yè)廠家營業(yè)執(zhí)照等)。驗證方式多樣化,可通過短信驗證碼、郵箱驗證碼、密碼、邀請碼等多種方式實現(xiàn)注冊、登錄、找回密碼的驗證。此外還應(yīng)讓入駐用戶選擇主要參與或感興趣的工控子行業(yè)領(lǐng)域。
(2)推送模塊:主要涉及熱門器件與購買方案的推送,另外還有關(guān)于采購平臺升級變動、入駐準(zhǔn)則、疑難解答等通知與服務(wù)的展示。這里較為專業(yè)的推送應(yīng)根據(jù)用戶主要從事的工控領(lǐng)域進行篩選,此外還應(yīng)結(jié)合用戶平時的關(guān)鍵詞搜索頻率做智能的推薦。
(3)篩選模塊:該模塊是整個采購平臺的核心模塊,也是工控業(yè)采購專業(yè)性、復(fù)雜性體現(xiàn)最明顯之處,用戶可按單品或按流程方式購買,每個單品都有配有使用說明書,可供用戶下載參閱,并且應(yīng)提示用戶該器件適用于哪一生產(chǎn)環(huán)節(jié)的應(yīng)用,單品可以加入購物車。按流程購買則應(yīng)根據(jù)某一工控成品的完整生產(chǎn)流程來劃分,對于每個環(huán)節(jié),用戶可以按市場占比、銷量、品牌、種類等多種方式對相應(yīng)的工控器件進行篩選,在某些生產(chǎn)環(huán)節(jié),還可以推薦可雇傭的專業(yè)人員,最終產(chǎn)生的購買組合會被作為一種購買方案加入后臺,用于后續(xù)統(tǒng)計分析工作,此外專業(yè)的采購平臺還應(yīng)提供諸如VR溯源技術(shù)的真實場景體驗等,讓購買切身體會物件的用途。
圖1以雕刻機生產(chǎn)工藝為例展示了按流程購買的一種概念模型,重點參考第二步與第四步。
(4)結(jié)算模塊:結(jié)算模塊也是采購平臺非常重要的一部分,包括收貨信息錄入,訂單生成,訂單支付,訂單情況查看等。生成的訂單信息要保證用戶的聯(lián)系方式、收貨地址不出錯,支付階段調(diào)用銀聯(lián)、支付寶、微信等第三方支付接口時還要考慮到安全性等。
5? ?界面設(shè)計(The design of user interface)
鑒于采購平臺是一個龐大的系統(tǒng),單純地憑借常識和經(jīng)驗直接設(shè)計后端數(shù)據(jù)庫不能保證較高的準(zhǔn)確性與完整性,因此應(yīng)該先以使用者的身份做好整個平臺的界面UI設(shè)計,待有良好的體驗后再進行中間過程的數(shù)據(jù)傳遞分析,設(shè)計數(shù)據(jù)庫字段。
5.1? ?前臺界面
前臺界面可以理解為采購平臺的公開部分,即向購買用戶展示的界面,具體應(yīng)包括主導(dǎo)航頁、推送通知頁、用戶信息頁、登錄注冊頁、找回密碼頁、單品詳情頁、流程篩選頁、購物車頁、訂單錄入頁、訂單結(jié)算頁、第三方支付頁(可選)等。
圖2展示了前臺界面的主要結(jié)構(gòu),由圖可見界面還與平臺的總體模塊劃分相對應(yīng)(見第3點模塊劃分)。
5.2? ?后臺界面
與前臺界面相對應(yīng)的,后臺界面作為采購平臺的私有部分,即向管理員或入駐企業(yè)展示的數(shù)據(jù)管理界面,應(yīng)結(jié)合后端對數(shù)據(jù)的CURD功能進行設(shè)計,從而實現(xiàn)數(shù)據(jù)的可視化操作。按照功能可將后臺界面分為用戶管理、品牌管理、推薦位管理、消息管理、圖片管理、行業(yè)管理、產(chǎn)品管理、訂單管理等子模塊。
為了方便讀者更好地了解后臺管理的功能,下面再對后臺界面的主要子模塊做簡要介紹:
用戶管理:即對注冊用戶的信息管理(分為個人和企業(yè)),通常只用于注冊時的信息審核,僅有超級管理員擁有修改的權(quán)限。
品牌管理:也可以理解為賣家管理,主要是對入駐提供商品的企業(yè)廠家進行營業(yè)合法審核,此外還進行信譽度、銷量等數(shù)據(jù)統(tǒng)計分析作為向用戶推薦購買的衡量因素。
推薦位管理:管理在前臺對應(yīng)推薦位置的產(chǎn)品或購買方案。
消息管理:可以編輯文字信息,生成鏈接,推送通知給用戶。
圖片管理:由于需要動態(tài)更換的圖片量大,因此應(yīng)專門設(shè)計圖片管理模塊對各個前臺界面需展示的圖片進行調(diào)配,包括圖片的各種放大、縮略、壓縮處理。
行業(yè)管理:主要針對流程過程中的按行業(yè)篩選購買進行管理,設(shè)置的篩選條件有品牌、型號、占比等多種因素。
產(chǎn)品管理:即對應(yīng)單品展示頁的商品介紹、詳細(xì)參數(shù)、產(chǎn)品說明書、占比、銷量等重要數(shù)據(jù)的管理??梢栽谠撃K修改產(chǎn)品介紹、規(guī)格信號、所屬流程等信息,并上傳產(chǎn)品說明書供用戶下載。
訂單管理:后臺管理中非常重要的一環(huán),審核訂單信息,用于后續(xù)的產(chǎn)品發(fā)貨與售后服務(wù)。
圖3展示了后臺界面的主要結(jié)構(gòu)。
6? ?數(shù)據(jù)庫構(gòu)建(Database construction)
在擁有完整UI界面實現(xiàn)的基礎(chǔ)上,我們要從原本完全靜態(tài)的部分中剖離出需要動態(tài)改變的文字、圖片、音頻信息,繪制ER圖,仔細(xì)分析各數(shù)據(jù)信息間的依賴關(guān)系,謹(jǐn)慎設(shè)計各數(shù)據(jù)表的字段,設(shè)置主外鍵、存儲過程、觸發(fā)器。圖4是以用戶購買場景構(gòu)建的ER圖示例。
采購平臺的數(shù)據(jù)庫選用MySQL,鑒于其與PHP良好的適配性,加上平臺發(fā)展初期的采購并發(fā)量不高,以MySQL的性能完全足以勝任通常的購買業(yè)務(wù)。此外,MySQL體積小、成本低,如此高的性價比是任何商業(yè)應(yīng)用的不二之選[12]。當(dāng)然,到發(fā)展成熟期,對業(yè)務(wù)的承載處理量要求更高時,可以考慮使用Oracle等性能更好的大型數(shù)據(jù)庫。
實際的構(gòu)建過程可以使用數(shù)據(jù)庫可視化工具,如MySQL Workbench、Navicat for MySQL、phpMyAdmin等,免去了使用傳統(tǒng)SQL語言創(chuàng)建的繁雜過程,僅需在細(xì)節(jié)處修改。
在這里以industry表(行業(yè)表)為例,見表1。
另外,如核心數(shù)據(jù)表goods表(產(chǎn)品表)應(yīng)有產(chǎn)品號(主鍵)、產(chǎn)品名、原圖url、縮略圖url、價格、是否上架、所屬流程、機型、品牌、描述、重量、單位、說明書地址、推薦指數(shù)等字段,為方便后續(xù)提供專業(yè)服務(wù)與數(shù)據(jù)統(tǒng)計。
7? ?技術(shù)實現(xiàn)(The realization of technology)
對于采購平臺這樣一個體系龐大的商業(yè)應(yīng)用網(wǎng)站,如何方便高效地處理繁雜的中間數(shù)據(jù)傳遞過程是關(guān)鍵,這也是筆者介紹使用ThinkPHP框架進行后端開發(fā)的原因。
在IT行業(yè)中眾所周知,PHP技術(shù)一向只適合中小型應(yīng)用程序的快速開發(fā),對于大型高性能網(wǎng)站,原生PHP一般難以勝任,其中的一大詬病便是其只能將PHP腳本代碼內(nèi)嵌至HTML標(biāo)簽中[13],后端的全部業(yè)務(wù)處理邏輯與前端代碼完全混雜,一旦業(yè)務(wù)應(yīng)用量龐大便會出現(xiàn)開發(fā)效率低下、運行速度慢的問題,并且由于核心代碼直接暴露,安全性也不佳。然而,ThinkPHP框架完美地解決了原生PHP帶來的缺陷。
ThinkPHP框架使用MVC(模型、視圖、控制器)設(shè)計模式[14],實現(xiàn)了業(yè)務(wù)層與表示層的完全分離,使得僅使用PHP進行開發(fā)也能符合分布式應(yīng)用體系規(guī)范,同時在安全、性能上也上了好幾個臺階,可與經(jīng)典的JSP(Java Servlet Pages)動態(tài)網(wǎng)頁設(shè)計技術(shù)相媲美。
下面將就ThinkPHP5.0應(yīng)用框架的目錄結(jié)構(gòu)說明設(shè)計模式的實現(xiàn)細(xì)節(jié),為了節(jié)省篇幅,僅對重點目錄做介紹。
7.1? ?整體目錄結(jié)構(gòu)呈現(xiàn)
圖5展示了采購平臺目錄的整體結(jié)構(gòu),其中多出的分割水平線“——”代表該目錄或文件是上一個目錄的子文件,“*”號代表筆者為實現(xiàn)功能額外添加的目錄,此外省略部分為框架默認(rèn)提供的文件與目錄[15]。
ThinkPHP框架的MVC設(shè)計模式就體現(xiàn)在這一層目錄結(jié)構(gòu)上,controller、model、view子目錄分別對應(yīng)經(jīng)典分布式應(yīng)用體系中的業(yè)務(wù)層(Business Layer)、核心層(Data Layer)、表示層(Presentation Layer)。簡單的業(yè)務(wù)邏輯寫在controller層,model層負(fù)責(zé)將某些復(fù)雜的數(shù)據(jù)查詢操作封裝后供controller層調(diào)用,而view作為表示層負(fù)責(zé)將從controller傳遞來的數(shù)據(jù)顯示。在圖5中還可看到筆者添加了驗證器目錄,該目錄主要用于規(guī)定配置在某些特定場景下對用戶輸入的信息格式(包括長度、精度、是否唯一等)與相應(yīng)的反饋信息,是ThinkPHP框架提供的一種快捷驗證拓展功能,應(yīng)用十分廣泛。
以下是數(shù)據(jù)傳遞的簡單代碼示例:
后端控制器部分代碼:
<?php
……
$inds = db('industry')->where('pid',$ind3['id'])->where('or',2)->field('name')->select();//獲取該行業(yè)下流程
$this->assign([
'inds'=>$inds, //將查詢所得數(shù)據(jù)分配至前端界面
]);
……
return view(); ? //調(diào)用模板渲染函數(shù)
?>
前端獲取調(diào)用代碼:
……
{volist name='inds' id='inds'}? <!- - 取出后端傳遞來的數(shù)據(jù)對象 - ->
{/volist}
……
由示例代碼可見數(shù)據(jù)的傳遞過程十分簡單,在后端代碼中調(diào)用類的$this->assign方法分配數(shù)據(jù)集對象,相應(yīng)的在前端頁面取出對象,使用模板標(biāo)簽顯示對象的成員數(shù)據(jù)即可。
7.3? ?其他技術(shù)實現(xiàn)概要
根據(jù)圖4所示的應(yīng)用目錄結(jié)構(gòu),采購平臺在一些額外功能的技術(shù)實現(xiàn)上通常都會使用拓展類庫和第三方庫文件,對應(yīng)地在extend和vender目錄中存放PHP庫文件。
接下來簡要介紹采購平臺驗證碼功能的實現(xiàn)。
驗證碼分為短信驗證碼和郵箱驗證碼,其中短信驗證碼筆者使用的是國內(nèi)開發(fā)商提供的自定義類庫,放置于extend目錄下,而郵箱驗證碼的實現(xiàn)則是通過ThinkPHP5.0版本框架的依賴管理工具Composer下載PHP通用第三方庫PHPMailer,放置于vendor目錄下。
調(diào)用發(fā)送短信驗證碼的關(guān)鍵代碼示例:
<?php
……
$clapi=new SmsApi();? ?//創(chuàng)建短信接口API對象,
$code=mt_rand(100000,999999);
$tipMsg='';
if($password==0){
$tipMsg='您好,您的驗證碼是'. $code;
}
……
$result=$clapi->sendSMS($phoneNum, $tipMsg); //根據(jù)電話號碼發(fā)送短信驗證碼
……
?>
調(diào)用郵箱發(fā)送關(guān)鍵代碼示例:
<?php
……
$mail=new PHPMailer(true); // 創(chuàng)建PHPMailer對象 true代表創(chuàng)建的對象支持使用stmp方式發(fā)送郵件
……
$mail->setFrom("xxx@xxx.com","PHP采購平臺"); // 郵件發(fā)送地址設(shè)置
$mail->Password="xxxxxx";? // 郵箱stmp登錄授權(quán)碼
$mail->Port=xxx;? ? // 端口號請參見你使用的郵箱提供的說明
$mail->addAddress($to);? ?// 添加發(fā)送地址
$mail->addReplyTo($to);? ?// 添加回復(fù)地址
$mail->Subject=$title;? ? // 郵件標(biāo)題
$mail->Body=$content;? ? // 郵件內(nèi)容
$sendRes=$mail->send();? ?// 發(fā)送郵件
……
?>
諸如上述的庫調(diào)用在采購平臺的其他功能實現(xiàn)上應(yīng)用的非常多,結(jié)合JavaScript與Ajax技術(shù)可以很好地實現(xiàn)業(yè)務(wù)需求。
8? ?算法介紹(The introduction of algorithm)
采購平臺所要處理的數(shù)據(jù)量是非常復(fù)雜多樣的,因此,為了應(yīng)對大規(guī)模數(shù)據(jù)和方便數(shù)據(jù)統(tǒng)計做智能推薦,采用當(dāng)下常用的數(shù)據(jù)挖掘、機器學(xué)習(xí)算法非常有必要。下面介紹兩種基本的常見算法。二者分別是劃分聚類與層次分類算法的典型代表[16]。
8.1? ?K-means算法
基本思想是將給定的數(shù)據(jù)集(樣本集)賦以一質(zhì)心(均值向量),根據(jù)數(shù)據(jù)點與質(zhì)心的歐式距離大小將數(shù)據(jù)劃分為k個類簇(類別),讓同簇內(nèi)的數(shù)據(jù)點的歐式距離盡量近(通過最小化方差實現(xiàn)),反之非同簇則盡量遠(yuǎn)[17]。
K-means算法通??梢詰?yīng)用于維數(shù)、數(shù)值都很小且連續(xù)的數(shù)據(jù)集,如文檔分類、乘車數(shù)據(jù)分析、網(wǎng)絡(luò)分析犯罪分子。與采購平臺相契合的應(yīng)用是過濾推薦與客戶分類,通過用戶的購買歷史、興趣、活動監(jiān)控等方式逐漸篩選出具有不同特征的用戶,根據(jù)用戶喜好推薦[18]。
但由于K-means算法本身存在全局搜索能力差、對初始聚類中心依賴性大、聚類效率和精度低,易陷入局部最優(yōu)解等缺點,通常而言還需要配合其他算法彌補缺陷,其中,由吳金李等提出的二分K-means的協(xié)同過濾推薦算法數(shù)據(jù)稀疏率低,聚類效果良好[19],另外如用遺傳算法的染色體基因表示聚類中心點,結(jié)合Hash散列算法將高維度聚類中心壓縮至低維標(biāo)識空間等都可[20]。
8.2? ?決策樹算法
最經(jīng)典的決策樹算法當(dāng)屬機器學(xué)習(xí)研究者J.Ross Quinlan在1986年提出的ID3算法[21,22]。
ID3算法中的信息熵、條件熵、信息增益可分別用公式表達(dá)如下:
其中,為D取值i的概率,n代表D的n種不同取值。
算法流程:
(1)初始化信息增益的閾值。
(2)判斷樣本是否為同一類輸出,如果是則返回單節(jié)點樹T,標(biāo)記類別為。
(3)判斷特征是否為空,如果是則返回單節(jié)點樹T,標(biāo)記類別為樣本中輸出類別D實例數(shù)最多的類別。
(4)計算A中的各個特征(一共n個)對輸出D的信息增益,選擇信息增益最大的特征。
(5)如果的信息增益小于閾值,則返回單節(jié)點樹T,標(biāo)記類別為樣本中輸出類別D實例數(shù)最多的類別。
(6)否則,按特征的不同取值將對應(yīng)的樣本輸出D分成不同的類別。每個類別產(chǎn)生一個子節(jié)點,對應(yīng)特征值為,返回增加了節(jié)點的樹T。
(7)對于所有的子節(jié)點,令遞歸調(diào)用2—6步,得到子樹并返回。
與K-means算法類似,ID3算法由于存在著無法處理連續(xù)值、屬性偏向、對噪聲敏感等問題也受到了眾多算法研究者的關(guān)注與改進,比較著名的如C4.5算法,同樣由J.Ross Quinlan在1993年改進提出,采用連續(xù)特征離散化、信息增益率加權(quán)、剪枝等手段解決了ID3比較明顯的缺陷。
決策樹算法理論上能應(yīng)用于各種具有篩選因素的分類,因此通過統(tǒng)計某器件的購買次數(shù)、反饋度等因素進行統(tǒng)計,設(shè)置合理閾值,將能很好地將采購平臺的各種產(chǎn)品按層次好壞多級分類。當(dāng)然改進的決策樹算法也能進行構(gòu)建回歸模型,主要看業(yè)務(wù)需求。
9? 運行評估(The evaluation of platform's performance)
在采購平臺開發(fā)完成后,需要設(shè)計測試用例檢驗平臺運行性能。通過借助ThinkPHP框架的日志工具,我們可以非常方便地對服務(wù)器的運行性能進行評估,在配置文件config.php中選擇輸出參數(shù)以獲得結(jié)果[23]。
如查看加載某個行業(yè)購買流程界面的運行狀況,在日志中輸出為:
[info] ……/index/industry/index?id=102 [運行時間:0.162680s][吞吐率:6.15req/s] [內(nèi)存消耗:3,415.72kb] [文件加載:62]
當(dāng)然,也可以采用運維測試工具提供的壓力測試法,結(jié)果更為可靠專業(yè)[24]。這里以Apache Bench為例,在終端中輸入命令:
ab-n 1000-c 100? http://....../index/industry/index?id=100
即自動進行在100用戶并發(fā)使用情況下,進行1000次請求的運行狀況統(tǒng)計,這里僅給出三個重要性能參數(shù):
Requests per second:? ? 19.25 [#/sec] (mean) //每秒處理請求數(shù)
Time per request:? ? ? ?5194.934 [ms] (mean) //并發(fā)時的平均請求等待時間
Percentage of the requests served within a certain time (ms)
……
90%? 17738 //執(zhí)行完90%請求所用時間
……
根據(jù)結(jié)果,使用ThinkPHP框架搭建的服務(wù)器性能優(yōu)良,足以負(fù)擔(dān)采購平臺的常規(guī)業(yè)務(wù)。
10? ?結(jié)論(Conclusion)
本文結(jié)合當(dāng)下國內(nèi)工控業(yè)發(fā)展現(xiàn)狀,提出了一種基于ThinkPHP框架的通用、快速的設(shè)計工控采購平臺的方法,詳述了從UI界面設(shè)計到后臺數(shù)據(jù)庫搭建的整體實現(xiàn)細(xì)節(jié)。通過實踐研究,整理了歸納了設(shè)計線上平臺所需的技術(shù)、算法,以及適配工控行業(yè)的特殊功能,以應(yīng)對因其專業(yè)性造成的采購門檻高問題。預(yù)計到2020年,我國工控產(chǎn)業(yè)市值將達(dá)到2000億,屆時將會有更多的線上專業(yè)采購平臺應(yīng)運而生[25]。當(dāng)然,隨著業(yè)務(wù)量增加與性能要求的不斷提高,ThinkPHP框架可能不再適應(yīng)企業(yè)需求,而被更高性能的其他技術(shù)框架(如Spring Boot等)替代,但是基本的設(shè)計思想和模式是類似的,遵循工控行業(yè)規(guī)范的采購平臺將能更好地受到廠家青睞。
參考文獻(xiàn)(References)
[1]? 張立克,常建軍.工控機的現(xiàn)狀與前景[J].水利電力機械,2007,29(3):64-66;71.
[2] LI Guoping,HOU Yun,WU Aizhi.Fourth Industrial Revolution:Technological Drivers,Impacts and Coping Methods[J].Chinese Geographical Science,2017,27(04):626-637.
[3] James M.TIEN.THE NEXT INDUSTRIAL REVOLUTION:INTEGRATED SERVICES AND GOODS[J].Journal of Systems Science and Systems Engineering,2012,21(03):257-296.
[4]? Alin ST?NCIOIU.THE FOURTH INDUSTRIAL REVOLUTION "INDUSTRY 4.0" [J].Fiabilitate ?i Durabilitate,2017,1(19):74-78.
[5]? 陳米力,陳揚帆,林秋艷.工業(yè)4.0背景下的工控電子商務(wù)模式研究[J].制造業(yè)自動化,2015,37(04):146-147;150.
[6]? 褚健.流程工業(yè)智能工廠的未來發(fā)展[J].科技導(dǎo)報,2018,36(21):23-29.
[7]? 王俊芳,李隱峰,王池.基于MVC模式的ThinkPHP框架研究[J].電子科技,2014,27(4):151-153;158.
[8]? 董玉霞.基于ThinkPHP框架的網(wǎng)上商城系統(tǒng)的設(shè)計與實現(xiàn)[J].信息與電腦(理論版),2016(14):86-88;90.
[9]? 序言·ThinkPHP5.0完全開發(fā)手冊·看云[EB/OL]. https://www.kancloud.cn/manual/thinkphp5/118003.
[10]? Bootstrap·The most popular HTML,CSS,and JS library in the world[ EB/OL]. https://getbootstrap.com.
[11]? 包冉.工控機市場:布局5年后[N].計算機世界,2004-4-12(E20).
[12]? 趙鶴芹.設(shè)計動態(tài)網(wǎng)站的最佳方案:Apache+PHP+MySQL?[J].計算機工程與設(shè)計,2007(4):933-934;938.
[13]? 渠芳,曹志梅..ASP、PHP和JSP技術(shù)的比較研究[J].現(xiàn)代情報,2002(7):50-52.
[14]? 謝敏,程適.基于ThinkPHP框架的家教信息管理系統(tǒng)設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2018,17(07):128-131.
[15]? 目錄結(jié)構(gòu)·ThinkPHP5.0完全開發(fā)手冊·看云[EB/OL]. https://www.kancloud.cn/manual/thinkphp5/118008.
[16]? 聚類算法[EB/OL].https://www.cnblogs.com/fionacai/p/5873975.html.
[17]? K-Means聚類算法原理[EB/OL].https://www.cnblogs.com/pinard/p/6164214.html.
[18]? K-Means算法的10個有趣用例[EB/OL].https://blog.csdn.net/yunqiinsight/article/details/80134331.
[19]? 吳金李,張建明.基于二分K-means的協(xié)同過濾推薦算法[J].軟件導(dǎo)刊,2017,16(01):26-29.
[20]? 孟佳偉,孫紅.基于Hadoop平臺的K-means算法優(yōu)化綜述[J].軟件導(dǎo)刊,2017,16(06):208-211.
[21]? 決策樹算法原理(上)[EB/OL].https://www.cnblogs.com/pinard/p/6050306.html.
[22]? 謝妞妞.決策樹算法綜述[J].軟件導(dǎo)刊,2015,14(11):63-65.
[23]? 日志驅(qū)動·ThinkPHP5.0完全開發(fā)手冊·看云[EB\OL]. https://www.kancloud.cn/manual/thinkphp5/118126.
[24]? 張能立,歐陽毅.如何對Web應(yīng)用程序進行壓力測試[J].計算機與數(shù)字工程,2006(08):90-93.
[25] 新時代證券.行業(yè)研究:工控自動化行業(yè)深度報告:跟隨到超越我國工控崛起正當(dāng)時[EB/OL].http://stock.qq.com/a/20180716/029076.htm.
作者簡介:
谷恪忱(1997-),男,本科生.研究領(lǐng)域:軟件工程,嵌入式軟件開發(fā).