一种高效的最优定价区间查询方法

文档序号:10553468阅读:358来源:国知局
一种高效的最优定价区间查询方法
【专利摘要】最优定价区间查询方法,包括在计算机上进行如下步骤:步骤1.设计定价区间查询数据结构,具体包括:设计人员表Users、价格映射表Price Map、状态表Status List的数据结构,生成人员表Users、价格映射表Price Map、状态表Status List的存储数据;步骤2.最优定价区间的查询,具体包括:查询方法基于步骤1中生成的Price Map表和Status List表,以及给定的价格差别窗口值float_value;Price Map表遍历完毕之后,将Result表按照count值从大到小排序,此时Result表中的第一条记录的price_range则是最多人满意的价格区间,count值为满意的人数,id_set为这些人的id号。
【专利说明】
一种高效的最优定价区间查询方法
技术领域
[0001]本发明属于市场营销定价策略与数据查询的交叉领域,主要针对现有定价策略无法很好反映用户真正需求的问题,提出一种高效及准确的定价区间查询技术,进而实时提供满足查询要求的最优定价区间,以帮助市场营销定价。
【背景技术】
[0002]产品或服务定价涉及人们生活的方方面面,且同一产品在不同时间、不同地点会有不同的价格范围,很多企业会根据自身产品的特点和市场环境的变化,及时对自身产品的价格进行调整,以期获取最大利润。例如,在旅游业中,一个常见的现象就是存在淡季旺季之分,对于不同时期,景点门票价格也相应的会有所调整,淡季降价,以低价格吸引游客,而在旺季时,则会普遍涨价,以获取更高利润。类似的产品或服务还有电价的制定(高峰用电和低峰用电)、水价的制定等。
[0003]价格的制定和调整不仅直接影响消费者的购买行为,而且对市场竞争的格局产生重大影响,从而影响企业的利润目标及生存发展。产品或服务的最终定价与用户数有影响,并非高的定价就能带来高的收益,也并非低的定价就不会赢利。此外,若未能在短的时间对产品进行精准定价,也会使企业在市场竞争中处于不利地位。
[0004]因此,如何实时准确的获取消费者对产品可接受价格范围,成为企业产品定价过程中一个重要的问题。目前企业传统的做法则是邀请大量消费者填写调查问卷,给出自己对产品满意的价格,然后对此进行手工统计分析,得出产品定价。这样的做法在消费者量少的情况下尚且容易计算,但是一旦消费者基数达到很大的量级以后,大量的数据使得处理非常低效耗时,无法实时得出最佳的定价区间,进而影响产品或服务的推广。

【发明内容】

[0005]本发明要克服现有技术的上述缺点,提出一种最优定价区间查询方法,该技术旨在通过消费者提供的价格区间,以及企业制定的价格差别窗口大小,自动计算出最多人满意的价格区间及对应的人员供企业最终定价参考。
[0006]为了解决这个问题,快速准确地得到一个最优的定价区间,本发明提出了一种高效的最优定价区间查询技术,只需输入每个消费者感兴趣的价格区间(即最小价格-最大价格),以及企业制定的价格差别窗口大小(即最大价格与最小价格的价格差),便可自动计算出最多人满意的价格区间(跨度范围至少为提供的价格差别窗口大小)及这些人分别是谁,且可动态调整价格差别窗口大小,得出相应价格差别窗口大小下的最多人满意的价格区间及对应的消费群体。
[0007 ]最优定价区间查询方法,包括在计算机上进行如下步骤:
[0008]步骤1.设计定价区间查询数据结构
[0009]11.设计人员表Users、价格映射表Price Map、状态表Status List的数据结构。在执行定价区间查询时,需要涉及到相关数据的存储、排序等工作,所以设计了合适的数据结构用以支撑查询过程的运算。
[0010]人员表Users.包含四个字段:(I) id:人员的唯一标识;(2)name:人员姓名;(3)min_price:此人给出的价格区间的下界;(4)max_price:此人给出的价格区间的上界。
[0011 ] 价格映射表Price Map.包含两个字段:(I )price:具体的价格;(2)number:对应的人数。
[0012]状态表Status List.包含两个字段:(l)user_id:人员的id; (2)status:此人的状态,取值范围:true ,false。
[0013]12.生成人员表Users、价格映射表Price Map、状态表Status List的存储数据。
[0014]121.首先赋予每一个人一个唯一的id号,然后将id和其姓名以及提供的心仪价格区间[min_price,max_price]表不成这样一条记录:(id,name,min_price,max_price),将这条记录加入Users表中。这样,Users表便生成完毕。
[0015]122.然后,利用Users表来生成Price Map表,遍历Users表,将Users表中所有出现的价格(无论min_price还是max_price),都记录进Pr ice Map表中的price字段(每一个price都只记录一次,不重复记录),从小到大排序。接着将对应pr ice的number的值设成在Users表中出现过的次数(无论min_price还是max_price,只要等于price就算一次),最后,从头开始遍历Price Map表,修改每一条记录的number值等于new_number+number(new_number =此记录前面所有记录的number值之和)。
[0016]123.接着利用生成好的Users表和Price Map表来生成Status List表。遍历Users表,对于每一条记录(id ,name ,min_price ,max_price),在 Pr ice Map 表中找至丨Jprice=min_price的记录(price,number)及其前一条记录(price’,number’)(对于第一条记录而言,其不存在前一条记录,则把number’当做O处理),然后,定位到Status List表第(number-number’)行(行数从O开始计),看此处是否已经有记录了,如果没有的话,直接生成一条记录(id, true),放在这里,如果已经有记录了,定位到Status List表下一行,再次判断是否已经有记录了,直到找到没有记录的地方,然后生成记录(id,true)放进去。同理,在遍历Users表的时候,对max_price也同样操作,只是在Price Map表中找记录时的判断需要改成pr ice =max_pr ice以及在Status List表中插入的记录改为(id ,false)。
[0017]此时,后续执行查询时所需的数据都已准备完毕。
[0018]步骤2.最优定价区间的查询
[0019]查询方法基于步骤I中生成的Price Map表和Status List表,以及给定的价格差别窗口大小 f loat_value。
[0020]首先,先介绍一下用以存储结果的表结构:
[0021]Result(结果表).包含三个字段:(l)price_range:价格区间,为一个前后闭合的区间[min_price,max_price],其中min_price表示区间的下界,max_price表示区间的上界;(2)count:对应价格区间的人数;(3) id_set:对应价格区间的所有人员的id集合。
[0022]在了解了存储结果的Result表之后,为了后续操作的描述方便,在这里先声明以下两点内容:1.对于表的行数,从O开始计数;2.对于表的记录,从I开始计数。现在,开始详细描述查询方法的具体操作步骤:
[0023]21.遍历Price Map表,对于其每一条记录(price ,number),先生成一条数据result([price,+ °°],0,{}),然后做以下操作:
[0024]a.从Status Li st表中拿出前number条记录,对于每一条记录pi (user_id,status),若status = false,不做任何处理,若status = true,则在Status List表中找到(user_id,false)S^iB3^p2;
[0025]b.确定记录p2是Status List表中的第几条记录,记为index;
[0026]c.从Pr ice Map表中找number = index的记录,如果没有的话,将index加I,继续找,直到找到这样一条记录为止,取得其price值,记为in_price ;
[0027]d.判断in_price — price是否大于等于f loat_value,若不是,不做任何处理,若是,再判断一下result中的price_range的max_price值是否大于in_price,若不是的话,不做任何处理,是的话,修改max_price的值为in_price,然后将result中的count值加I,并且把user_id加进id_set中;
[0028]e.前number条记录都处理完之后,判断此时result的count值是否为O,若是,不做处理,不是的话,将:result这条数据加入Result表中。
[0029]22.Price Map表遍历完毕之后,将Result表按照count值从大到小排序,此时Result表中的第一条记录的price_range则是最多人满意的价格区间,count值为满意的人数,id_set为这些人的id号。
[0030]也可以从Result表中得到次多人满意的价格区间等等其他信息,若想得知其他float_value值下的最优定价区间,只需修改float_value值,重新执行查询方法,便可得到相应f loat_value值下的最优定价区间,使用者可根据自身需要自行确定最终的定价。
[0031]本发明的优点是:1、可实时计算出最优定价区间;2、省去了人工统计计算的成本;
3、可通过调整价格差别窗口大小获得不同的最优定价区间。
【附图说明】
[0032]图1是本发明方法的流程图。
[0033]图2为演示例子中根据所有人提供的价格区间建立的Users表。
[0034]图3为演示例子中根据Users表建立的Price Map表。
[0035]图4为演示例子中根据Users表及Price Map表建立的Status List表。
[0036]图5?图8为演示例子中根据Price Map表及Status List表执行查询方法的过程。
[0037]图9为演示例子处理完Price Map中前两条记录时的Result表。
[0038]图10为演示例子处理完Price Map中所有记录时的Result表。
[0039]图11为演示例子执行查询方法之后最终排完序得到的Result表。
[0040]具体实施方法
[0041]下面结合附图1-11,详细说明本发明。
[0042]假设某市政府部门现在面向市民公开征集电价意见,预计高峰电价与低峰电价最小价差为0.2元/千瓦时,现收集到5位市民的意见如下:(张文,价格区间:[0.2元/千瓦时,
0.7元/千瓦时])、(李明,价格区间:[0.3元/千瓦时,0.6元/千瓦时])、(王龙,价格区间:[0.5元/千瓦时,0.8元/千瓦时])、(周晓,价格区间:[0.3元/千瓦时,0.9元/千瓦时])、(黄杰,价格区间:[0.5元/千瓦时,0.7元/千瓦时])。赋予每个人唯一的ID号:张文(id:1)、李明(id: 2)、王龙(id: 3)、周晓(id:4)、黄杰(id: 5)、根据这五条数据生成图2的Users表(电价单位省略,下同)。
[0043]由于本发明的重点在于查询方法的具体实施,所以在这里就不再赘述具体的Price Map表及Status List表的生成过程,可根据3.1中定义的生成过程来操作,生成的Price Map表如图3所示,Status List表如图4所示。
[0044]现在,基于Price Map及Status List这两张表,开始执行查询方法。首先,遍历Price Map,先处理第一条记录(0.2,I),生成一条数据result ([0.2,+ ] ,0, {}),发现number = I,所以从Status List中拿出前一条记录,为(I ,true),发现status = true,所以在Status List中找到(I ,false)的记录,得出这条记录是Status List中的第7条记录。然后,在Pr i ce Map中找是否存在number = 7的记录,发现找不到,这时候,将7加I得到8,再次在Price Map中找是否存在number = 8的记录,发现找到了,此条记录为(0.7,8)。此时,将
0.7减去0.2得到0.5,发现0.5大于最小价差值0.2,接着,取出resul t中的price_range的max_price值+°°,得知+00大于0.7,所以修改max_price的值为0.7,然后将result中的count值加I,并且把I加进id_set中,此时result为([0.2,0.7],I,{1}),可以很清楚的看到其count值为I,不为0,所以将result加入Result表中,此时Result表中就有了一条记录。
[0045]Price Map中的第一条记录现在已经处理完成,为了更直观的看清楚整个第一条记录的处理过程,将其以图5-8的形式表现了出来。
[0046]然后,开始处理Price Map中的第二条记录(0.3,3),先生成一条数据result([0.3 , + °° ] ,0 , {}),发现number = 3,所以从Status List中拿出前3条记录,分别为:(I,true)、(2 ,true)、(4,true)。先处理第一条记录,此条记录的处理过程与处理Pr ice Map中的第一条记录时所描述的过程是一样的,在这里就不再重复了,直接给出处理完成后的result( [0.3 ,0.7], I, {I})。然后处理从Status List中拿出的第2条记录(2 ,true),发现status = true,所以在Status List中找到(2,false)的记录,得出这条记录是Status List中的第6条记录,然后,在Price Map中找是否存在number = 6的记录,发现找到了,此条记录为(0.6,6)。此时,将0.6减去0.3得到0.3,发现0.3大于最小价差值0.2,接着,我们取出.7,得知0.7大于0.6,所以修改max_price的值为
0.6,然后将result中的count值加I,并且把2加进id_set中,此时result为([0.3,0.6] ,2,{1,2})。最后处理从Status List中拿出的第3条记录(4,true),发现status = true,所以在Status List中找到(4,false)的记录,得出这条记录是Status List中的第10条记录,然后,在Pr ice Map中找是否存在number = 10的记录,发现找到了,此条记录为(0.9,10)。此时,将0.9减去0.3得到0.6,发现0.6大于最小价差值0.2,接着,取出result中的price_range的max_pr i c e值0.6,得知0.6小于0.9,所以不必修改max_pr ice的值,然后将result中的count值加I,并且把4加进id_set中,此时result为([0.3,0.6] ,3,(1,2,4})。这时候,从Status List中取出的所有3条记录都已经处理完毕,然后看此时result的count值,发现为3,不为0,所以将result加入Result表中,此时Result表中就有了两条记录,具体结果请看图9。
[0047]同理,对Price Map中接下去所有还没处理的记录按前述的操作一样进行,直至全部处理完毕,就可得到图10的Result表。
[0048]最后,将Re su It表按照count值从大到小排序,得到图11中最终的Re suit表,此时
Result表中的第一条记录([0.5,0.7] ,4, {I,4,3,5})的price_range--[0.5,0.7]反映出来的则是最多人满意的价格区间,满意的人数为4,这些人的id号分别为I,4,3,5,我们可以根据id号得到他们的名字为:张文、周晓、王龙、黄杰。
[0049]该市政府部门此时便可得知,将最终的高峰电价定为0.7元/千瓦时,低峰电价定为0.5元/千瓦时,可获得最多市民认可。假如电力成本为0.55元/千瓦时,这时,政府部门又希望低峰电价不能低于成本价,而高峰电价与低峰电价的价差又得大于等于0.2元/千瓦时,那么我们也可以直接从Result表中得知满足此条件的最优定价区间应为[0.6,0.8],即将高峰电价定为0.8元/千瓦时,低峰电价定为0.6元/千瓦时便可得到最多人认可。
【主权项】
1. 最优定价区间查询方法,包括在计算机上进行如下步骤: 步骤1.设计定价区间查询数据结构; .11.设计人员表Users、价格映射表PriceMap、状态表Status List的数据结构; 人员表Users.包含四个字段:(l)id:人员的唯一标识;(2)name:人员姓名;(3)min_price:此人给出的价格区间的下界;(4)max_price:此人给出的价格区间的上界; 价格映射表Price Map.包含两个字段:(I )price:具体的价格;(2)number:对应的人数; 状态表Status List.包含两个字段:(l)user_id:人员的id; (2)status:此人的状态,取值范围:true ,false; .12.生成人员表Users、价格映射表Price Map、状态表Status List的存储数据; .121.首先赋予每一个人一个唯一的id号,然后将id和其姓名以及提供的心仪价格区间[min_price,max_price]表不成这样一条记录:(id,name,min_price,max_price),将这条记录加入Users表中;这样,Users表便生成完毕。 .122.然后,利用Users表来生成Price Map表,遍历Users表,将Users表中所有出现的价格(无论min_price还是max_price),都记录进Pr ice Map表中的price字段(每一个price都只记录一次,不重复记录),从小到大排序。接着将对应pr ice的number的值设成在Users表中出现过的次数(无论min_price还是max_price,只要等于price就算一次),最后,从头开始遍历Pr ice Map 表,修改每一条记录的number 值等于 new_number+number(new_n umber =此记录前面所有记录的number值之和)。 .123.接着利用生成好的Users表和Price Map表来生成Status List表。遍历Users表,对于每一条记录(id ,name,min_price,max_price),在 Pr ice !^口表中找至化^^一=!!!;!^price的记录(price,number)及其前一条记录(price’,number’)(对于第一条记录而言,其不存在前一条记录,则把number’当做O处理),然后,定位到Status List表第(number-number’)行(行数从O开始计),看此处是否已经有记录了,如果没有的话,直接生成一条记录(id, true),放在这里,如果已经有记录了,定位到Status List表下一行,再次判断是否已经有记录了,直到找到没有记录的地方,然后生成记录(id,true)放进去;同理,在遍历Users表的时候,对max_price也同样操作,只是在Price Map表中找记录时的判断需要改成price=max_price以及在Status List表中插入的记录改为(id,false); 步骤2.最优定价区间的查询; 查询方法基于步骤I中生成的Price Map表和Status List表,以及给定的价格差别窗口 值float_value; 结果表Result包含三个字段:(I )price_range:价格区间,为一个前后闭合的区间[min_price,max_price],其中min_price表示区间的下界,max_price表示区间的上界;(2)count:对应价格区间的人数;(3) id_set:对应价格区间的所有人员的id集合; 对于表的行数,从O开始计数;对于表的记录,从I开始计数; 具体操作步骤: .21.遍历价格映射表Price Map,对于其每一条记录(price ,number),先生成一条数据result([price,+ °°],0,{}),然后做以下操作: a.从状态表Status Li st中拿出前number条记录,对于每一条记录pi (user_id,status),若status = false,不做任何处理,若status = true,则在Status List表中找到(user_id,false)S^iB3^p2; b.确定记录p2是状态表Status Li st中的第几条记录,记为index;c.从价格表Pr ice Map中找number = index的记录,如果没有的话,将index加I,继续找,直到找到这样一条记录为止,取得其price值,记为in_price ; d.判断in_price — price是否大于等于float_value,若不是,不做任何处理,若是,再判断一下:result中的price_range的max_price值是否大于in_price,若不是的话,不做任何处理,是的话,修改max_price的值为in_price,然后将result中的count值加I,并且把user_id加进id_set中; e.前number条记录都处理完之后,判断此时result的count值是否为O,若是,不做处理,不是的话,将result这条数据加入Result表中;. 22.Price Map表遍历完毕之后,将Result表按照count值从大到小排序,此时Result表中的第一条记录的price_range则是最多人满意的价格区间,count值为满意的人数,id_set为这些人的id号。
【文档编号】G06Q30/02GK105913278SQ201610212639
【公开日】2016年8月31日
【申请日】2016年4月6日
【发明人】曹斌, 任豪, 侯晨煜, 范菁
【申请人】浙江工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1