陳婕
摘要:人才與經(jīng)濟發(fā)展有著密切的聯(lián)系,有效的人才需求預(yù)測能為宏觀調(diào)控提供依據(jù),有利于人力資源開發(fā)與經(jīng)濟增長的良性互動。該文分別采用C++和MatLab進行混合編程,實現(xiàn)了灰色系統(tǒng)理論的GM(1,1)模型,并應(yīng)用該程序?qū)κ迤陂g我國旅游人才需求進行了預(yù)測。
關(guān)鍵詞:灰色系統(tǒng)理論;旅游人才預(yù)測;GM(1,1)
中圖分類號:F590.2 文獻標(biāo)識碼:A 文章編號:1009-3044(2017)33-0124-03
1 背景
進入21世紀(jì)以來,伴隨居民收入水平的提高,我國出游人次不斷增長,2016年我國旅游人數(shù)達到45.78億人次,同比增長14.46%,。根據(jù)“十三五”旅游規(guī)劃,2020年國內(nèi)游人數(shù)有望達64億人次,2015-2020CAGR為9.86%;出境游人數(shù)有望達1.50億人次,2015-2020CAGR為5.09%。(數(shù)據(jù)來源:中國產(chǎn)業(yè)信息網(wǎng).2017年中國酒店行業(yè)發(fā)展現(xiàn)狀及中高端酒店發(fā)展趨勢分析)
快速增加的旅游者數(shù)量,使得相關(guān)的旅游企業(yè)也得到了快速發(fā)展,根據(jù)國家旅游局統(tǒng)計數(shù)據(jù),截止2016年12月31日,我國有27856家旅行社,六百多個國家5A 級景區(qū),12213家星級酒店。旅游企業(yè)的發(fā)展,使得對旅游人才需求總量迅速增長,從專業(yè)招聘網(wǎng)站“前程無憂”和“智聯(lián)招聘”上的數(shù)據(jù)來看,2017年7月,僅北京、上海、廣州、深圳、南京5個城市旅游類相關(guān)企業(yè)共發(fā)布招聘信息112415條;中國旅游產(chǎn)業(yè)對GDP綜合貢獻10.8%,超過教育、銀行、汽車產(chǎn)業(yè),中國旅游就業(yè)人數(shù)占總就業(yè)人數(shù)10.2%(數(shù)據(jù)來源:中國國家旅游局.2015年中國旅游業(yè)統(tǒng)計公報)??梢钥闯?,我國旅游人才市場大致呈現(xiàn)一種供不應(yīng)求的局面,有必要對十三五期間旅游人才需求進行預(yù)測,這樣可以提高旅游業(yè)的服務(wù)質(zhì)量。
2 需求總量預(yù)測理論模型及算法實現(xiàn)
2.1 灰色預(yù)測GM(1,1)模型
本次預(yù)測,采用的是灰色系統(tǒng)模型。所謂灰色系統(tǒng),是指既含有已知信息,又含有未知信息的系統(tǒng),是由鄧聚龍教授在1986年提出的。由于它具有所需因素少,模型簡單,運算方便,預(yù)測精度高等優(yōu)點,可以較好的對非線性系統(tǒng)進行預(yù)測。在旅游人才需求的預(yù)測系統(tǒng)中,人才總數(shù)、結(jié)構(gòu)等信息是已知的,但也受外界諸如:政治、經(jīng)濟、文化、科技、自然災(zāi)害等因素的影響,存在很大的不確定性,非常符合灰色系統(tǒng)的特點,所以可以用灰色系統(tǒng)理論對旅游人才需求進行預(yù)測。
灰色系統(tǒng)常用的預(yù)測模型是GM(1,1)模型,GM(1,1)模型表示一階的、單變量的線性動態(tài)預(yù)測模型,其預(yù)測原理是將離散的隨機數(shù),經(jīng)過生成變成隨機性被顯著削弱的較有規(guī)律的生成數(shù),在此基礎(chǔ)上建立數(shù)學(xué)模型,建模步驟如下:
1) 歷史數(shù)據(jù)的采集和累加序列的生成
設(shè)研究對象的歷史數(shù)據(jù)為:
[]
—般情況下,對于給定的原始數(shù)據(jù)列不能直接用于建模,因為這些數(shù)據(jù)多為隨機的、無規(guī)律的,為了減弱原始數(shù)據(jù)序列的波動性和隨機性,需對原始序列進行數(shù)據(jù)處理,即通過累加生成方式將原始數(shù)據(jù)列轉(zhuǎn)化為規(guī)律性較強的遞增數(shù)列,累加的規(guī)則是:將原始序列的第一個數(shù)據(jù)作為生成列的第一個數(shù)據(jù),將原始序列的第二個數(shù)據(jù)加到原始序列的第一個數(shù)據(jù)上,其和作為生成列的第二個數(shù)據(jù),將原始序列的第三個數(shù)據(jù)加到生成列的第二個數(shù)據(jù)上,其和作為生成列的第三個數(shù)據(jù),按此規(guī)則進行下去,便可得到生成列。
設(shè)累加后生成的序列為:
[X(1)=X(1)(1),X(1)(2),X(1)(3),...,X(1)(n)]
上標(biāo)1表示一次累加,同理,可作m次累加:
[X(m)(k)=i=1kX(m-1)(i)]
其中對于非負(fù)的數(shù)據(jù)列,累加的次數(shù)越多,則隨機性弱化越明顯,規(guī)律性越增強,這樣就較容易用指數(shù)去逼近。經(jīng)過這樣的數(shù)據(jù)處理能達到兩個目的:一是弱化了原始數(shù)據(jù)列的隨機性,而找到了其變化的規(guī)律性;二是為建立動態(tài)模型提供了中間信息。
累減,就是將原始序列前后兩個數(shù)據(jù)相減得到累減生成列。累減是累加的逆運算,累減可將累加生成列還原為非生成列,在建模中獲得增量信息。
一次累減的公式為:
[X(1)(k)=X(0)(k)-X(0)(k-1)]
2) x0序列的準(zhǔn)光滑性檢驗和x1序列的準(zhǔn)指數(shù)規(guī)律檢測
對原始數(shù)據(jù)經(jīng)過累加處理后,在建立模型前還必須對數(shù)列x0進行準(zhǔn)光滑性檢驗,并檢驗數(shù)列x1是否具有準(zhǔn)指數(shù)規(guī)律。
3) 構(gòu)建GM(1,1)模型
在第1步中已經(jīng)生成了X(0)和X(1)序列,則GM(1,1)模型相應(yīng)的微分方程為:
[dX(1)dt+aX(1)=μ]
其中:α稱為發(fā)展灰數(shù);μ稱為內(nèi)生控制灰數(shù)。
設(shè)[α]為待估參數(shù)向量,
[α=aμ]
根據(jù)最小二乘法有:
求解微分方程,即可得預(yù)測模型:
2.2 模型的算法實現(xiàn)
GM(1,1)模型的計算涉及矩陣運算,特別是求逆矩陣,相當(dāng)復(fù)雜和繁瑣,并且容易出錯,所以用手工計算去實現(xiàn)GM(1,1)模型顯然是不現(xiàn)實的,必須借助計算機進行運算,才能快速、準(zhǔn)確的獲得結(jié)果。我們采用的C++語言和MatLab相結(jié)合的方法來實現(xiàn)整個計算過程:用C++語言編程來處理原始數(shù)據(jù),累加數(shù)據(jù),進行x0序列的準(zhǔn)光滑性檢驗和x1序列的準(zhǔn)指數(shù)規(guī)律檢測,并自動生成計算發(fā)展灰數(shù)和內(nèi)生控制灰數(shù)MatLab的命令,然后用MatLab執(zhí)行這命令,得出發(fā)展灰數(shù)和內(nèi)生控制灰數(shù),再通過C++程序讀入這兩個數(shù)據(jù),最終得到預(yù)測結(jié)果。
以下是算法的C++語言實現(xiàn),在DEV C++ 5中編譯通過。
#include
#include
#include
#include
#include
using namespace std;
doublestrtofloat(string s)
{double res=0;
int flag=0,xs=0,ws=0;
intjc=1;
for(int i=0;i if(s[i]=='.'){ flag=1; continue;} if(flag==0){ res*=10; res+=s[i]-'0';} else{ ws++; xs*=10; xs+=s[i]-'0'; }} for(int j=0;j jc*=10;} res+=xs*1.0/jc; return res;} double **creatdim(inth,int w) {double **temp; inti,j; temp=new double *[h]; for(i=0;i temp[i]= new double[w]; for(i=0;i for(j=0;j temp[i][j]=0; return temp;} void free_space(double **table,introw,int col)//釋放空間 {int i; for(i=0;i delete[]table[i]; //以行為單位釋放數(shù)值空間 delete[]table; } //釋放行地址空間 int check(double x0[],double x1[],intnum) {int i,f1=1,f2=1,ret=0; double *p=new double[num]; double *r=new double[num]; for(i=1;i p[i]=x0[i]/x1[i-1]; for(i=1;i r[i]=x1[i]/x1[i-1]; for(i=3;i if(p[i]>0.5){ f1=0; break;} for(i=3;i if(r[i]<1 || r[i]>1.5){ f2=0; break;} delete []p; delete []r; if(f1==0 && f2==0)ret=1; else if(f1==0)ret=2; else if(f2==0)ret=3; else ret = 0; return ret;} voidgetdata(double x0[],double x1[],intnum) {int i; ifstream fin; string str; fin.open("data.txt"); for(i=0;i getline(fin,str); x0[i]=strtofloat(str); x1[i]=x0[i];} fin.close(); for(i=1;i x1[i]=x1[i-1]+x1[i];} voidoutputmatlab(double **b,double **y,intnum) {int i; ofstreamfout("gm.m",ios_base::out); fout<<"clc;"< fout<<"b=["; for(i=0;i if(i elsefout< fout<<"];"< fout<<"y=["; for(i=0;i if(i elsefout< fout<<"];"< fout<<"bt=b';"<
fout<<"c=bt*b;"< fout<<"d=inv(c);"< fout<<"e=d*bt;"< fout<<"f=e*y;"< fout<<"format long g;"< fout<<"f"; fout.close();} voidoutputdata(double result[],int yearn) {int i; ofstreamfout("result.txt",ios_base::out); for(i=0;i fout< fout.close();} voidgeneratedata(double x0[],double x1[],double **b,double **y,intnum) {int i; for(i=0;i y[i][0]=x0[i+1]; for(i=1;i b[i-1][0]=-(x1[i-1]+x1[i])/2; b[i-1][1]=1;}} double *forecast(double x1[],double a,doubleu,int yearn) {int i; double *result,rel; result=new double[yearn]; result[0]=x1[0]; rel=result[0]; for(i=1;i result[i]=(x1[0]-u/a)*exp(-a*i)+u/a-rel; rel+=result[i];} return result;} int main(void) {double *x0,*x1; double *result; double **b,**y; doublea,u; inti,cret,num,yearn; cout<<"請輸入?yún)?shù)的個數(shù):"; cin>>num; x0=new double[num]; x1=new double[num]; b=creatdim(num-1,2); y=creatdim(num-1,1); getdata(x0,x1,num); cret=check(x0,x1,num); if(cret==0){ generatedata(x0,x1,b,y,num); outputmatlab(b,y,num); cout<<"已經(jīng)生成MATLAB文件,請運行之?。躰"; cout<<"請輸入α和μ的值:"; cin>>a>>u; cout<<"請輸入從起始年開始所需要預(yù)測的年數(shù):"; cin>>yearn; result=forecast(x1,a,u,yearn); outputdata(result,yearn); cout<<"已經(jīng)生成結(jié)果文件!\n"; delete []x0; delete []x1; delete []result; free_space(b,num-1,2); free_space(y,num-1,1); } else {if(cret==1)cout<<"準(zhǔn)光滑檢驗和準(zhǔn)指數(shù)規(guī)律檢驗均無法通過?。躰"; if(cret==2)cout<<"準(zhǔn)光滑檢驗檢驗無法通過?。躰"; if(cret==3)cout<<"準(zhǔn)指數(shù)規(guī)律檢驗無法通過?。躰";} getch(); return 0;} 2.3 旅游人才總需求預(yù)測應(yīng)用 如表1所示,為2011年至2015年期間,全國旅游業(yè)直接從業(yè)人數(shù),其中2014年和2015年的直接就業(yè)人數(shù)是國家旅游局公布統(tǒng)計數(shù)據(jù),2011年至2013年的直接就業(yè)人數(shù)沒有公布過,是依據(jù)國家旅游局統(tǒng)計公布推算出來的,具體算法為:每年的旅游統(tǒng)計公報中旅游直接和間接就業(yè)人數(shù)占全國就業(yè)總?cè)藬?shù)的10%左右,而旅游直接就業(yè)人數(shù)占旅游直接和間接就業(yè)人數(shù)的35%左右,設(shè)旅游直接就業(yè)人數(shù)為T,全國就業(yè)總?cè)藬?shù)為P,則根據(jù)上述分析,有T=P*0.1*0.35,而每年的全國就業(yè)總?cè)藬?shù)可以從國家統(tǒng)計局網(wǎng)站上查到,所以我們可以得到表1。 3 結(jié)束語 灰色預(yù)測方法是經(jīng)濟預(yù)測中一種非常有效的方法,它不直接采用原始數(shù)據(jù)建模,而是將原始的、無規(guī)則的數(shù)據(jù)進行加工處理,使之變得有規(guī)律,然后利用生成后的數(shù)據(jù)列來分析建模。這正是灰色理論方法的特點之一,結(jié)果證明將灰色系統(tǒng)理論中的GM(1,1)模型引入行業(yè)人才需求的預(yù)測,所需要的原始數(shù)據(jù)不多(尤其對歷史數(shù)據(jù)個數(shù)較少的情況),容易采集,且具有預(yù)測精度較高,模型可檢驗,參數(shù)的計算方法較簡單等特點,是一個較為理想的人才預(yù)測方法。 參考文獻: [1] 梁阜.山東省制造業(yè)人力資源需求量預(yù)測與分析[J].山東大學(xué)學(xué)報哲學(xué)社會科學(xué)版, 2008(5). [2] 楊震.德陽市“十一五”人才需求預(yù)測系統(tǒng)[D].成都: 四川大學(xué),2006. [3] 王新宇,方法林,宋益丹.江蘇旅游人才需求預(yù)測——基于灰色系統(tǒng)理論和一元回歸方程混合模型[J].中國商貿(mào),2012(5).