图7-1所示圆圈代表任务,三角形代表会员,分布在同一个区域上,位置均由经度和纬度确定。以某个任务为圆心,5公里范围为半径,作一个圆,如图中所示。该任务在5公里范围内有4个任务(包括自身)、2个会员。对该任务来讲,则:
Z2=对应4个任务定价的平均值 Z3=2 Z4=对应2个会员信誉值的平均值 Z5=对应2个会员预订限额的总和 本案例的关键是在计算任务之间、任务与会员之间的距离,从而确定每个任务在5公里范围内具体包括哪些任务和会员,进而就可以计算其指标值了 【实验步骤】 1.计算第0个任务到第1个任务、第0个任务到第0个会员之间的距离。 import pandas as pd import numpy as np import math A=pd.read_excel('附件一:已结束项目任务数据.xls') B=pd.read_excel('附件二:会员信息数据.xlsx') A_W0=A.iloc[0,1] A_J0=A.iloc[0,2] A_W1=A.iloc[1,1] A_J1=A.iloc[1,2] B_WJ=B.iloc[0,1] I=B_WJ.find(' ',0,len(B_WJ)) B_W0=float(B_WJ[0:I]) B_J0=float(B_WJ[I:len(B_WJ)]) d1=111.19*math.sqrt((A_W0-A_W1)**2+(A_J0-A_J1)**2*math.cos((A_W0+A_W1)*math.pi/180)**2); d2=111.19*math.sqrt((A_W0-B_W0)**2+(A_J0-B_J0)**2*math.cos((A_W0+B_W0)*math.pi/180)**2); print('d1= ',d1) print('d2= ',d2) 执行结果如下: d1= 13.71765563354376 d2= 48.41201229628393 2.小步进阶:第0个任务与所有任务、所有会员之间的距离。 import pandas as pd import numpy as np import math A=pd.read_excel('附件一:已结束项目任务数据.xls') B=pd.read_excel('附件二:会员信息数据.xlsx') A_W0=A.iloc[0,1] A_J0=A.iloc[0,2] D1=np.zeros((len(A))) D2=np.zeros((len(B))) for t in range(len(A)): A_Wt=A.iloc[t,1] A_Jt=A.iloc[t,2] dt=111.19*math.sqrt((A_W0-A_Wt)**2+(A_J0-A_Jt)**2*math.cos((A_W0+A_Wt)*math.pi/180)**2); D1[t]=dt for k in range(len(B)): B_WJ=B.iloc[k,1] I=B_WJ.find(' ',0,len(B_WJ)) B_Wk=float(B_WJ[0:I]) B_Jk=float(B_WJ[I:len(B_WJ)]) dk=111.19*math.sqrt((A_W0-B_Wk)**2+(A_J0-B_Jk)**2*math.cos((A_W0+B_Wk)*math.pi/180)**2); D2[k]=dk 3.初步落成:对第0个任务计算指标Z1、Z2、Z3、Z4、Z5。 import pandas as pd import numpy as np import math A=pd.read_excel('附件一:已结束项目任务数据.xls') B=pd.read_excel('附件二:会员信息数据.xlsx') A_W0=A.iloc[0,1] A_J0=A.iloc[0,2] D1=np.zeros((len(A))) D2=np.zeros((len(B))) for t in range(len(A)): A_Wt=A.iloc[t,1] A_Jt=A.iloc[t,2] dt=111.19*math.sqrt((A_W0-A_Wt)**2+(A_J0-A_Jt)**2*math.cos((A_W0+A_Wt)*math.pi/180)**2); D1[t]=dt for k in range(len(B)): B_WJ=B.iloc[k,1] I=B_WJ.find(' ',0,len(B_WJ)) B_Wk=float(B_WJ[0:I]) B_Jk=float(B_WJ[I:len(B_WJ)]) dk=111.19*math.sqrt((A_W0-B_Wk)**2+(A_J0-B_Jk)**2*math.cos((A_W0+B_Wk)*math.pi/180)**2); D2[k]=dk Z1=len(D1[D1<=5]) Z2=A.iloc[D1<=5,[3]].mean()[0] Z3=len(D2[D2<=5]) Z4=B.iloc[D2<=5,[2,4]].sum()[0] Z5=B.iloc[D2<=5,[2,4]].sum()[1]/Z3 print('Z1= ',Z1) print('Z2= ',Z2) print('Z3= ',Z3) print('Z4= ',Z4) print('Z5= ',Z5) 结果图:
|
案例分析 众包任务
最新推荐文章于 2024-07-15 15:37:59 发布