Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
机器人api接口_机器人api接口,希望能够帮助你!!!。
某个周末晚上,小陈约好了和女朋友去商场吃饭看电影。小陈平时喜爱打游戏,此时正在专心打农药。“啊!ZZ队友送人头,白瞎我最强亚索!伤心~”
而小陈的女朋友这个时候打来了电话:
你收拾好了吗?我已经到口红啦……
小陈内心:“这次竟然这么快?我还以为刚到眉毛呢,可是我还想再开一局逆风翻盘拿五杀呢!但是又不能迟到啊……小陈想到先点开打车软件计算一下双方的时间吧:
首先设置好出发地为女朋友家,目的地为要去的商场,呼叫快车,显示要30分钟。再来设置一下自己的出发地,呼叫快车,哇!只要15分钟。小陈于是决定再开一局,一套“行云流水”的操作下来之后,成功“助力”自己一方被五杀,望着被推倒的水晶塔,小陈内心“开心无比”,心想这局胜利的关键果然在自己身上啊!后来小陈准时赶到女朋友之前赴约……小陈心想这软件预估到达的时间真是准啊,多亏了它,农药也打了,约会也没迟到。相信以上类似场景大家多少都有遇到过,大家近些年逐渐习惯用网约车,而以滴滴为代表的网约车软件背后必须要提供各方面精准的服务。
这其中就涉及到一个至关重要的基础问题:预估到达时间(Estimated Time of Arrival, ETA)。在滴滴、Uber、Lyft等共享出行平台,时间预测的精度会直接关系到路径选择的合理性、订单分配的精确性和交通系统的整体效率,从而影响乘客的出行体验,以及司机的效率和收入;而且,海量的日均调用量也会对ETA模型的线上推理速度提出非常高的要求。ETA的复杂性和挑战性,使其成为颇具学术研究价值的问题。它要考虑交通要素的空间关系和交通系统的时间特性,也要引入个性化特征和外部特征的建模。这些特点使得机器学习成为很好的ETA解决方案,能够利用海量交通数据来建模行程时间分布。在今年的KDD2020大会上,滴滴发表了一篇题为《CompactETA: A Fast Inference System for Travel Time Prediction》的论文,详细介绍了如何在线上部署中实现微秒级的ETA机器学习解决方案。这种名为CompactETA的新算法是滴滴在此前论文《Learning to Estimate the Travel Time》(KDD2018)的算法框架的基础上提出的,它能基于图注意力网络(Graph Attention Network)将高阶的时空依赖关系编码到特征表示中,并进一步使用了位置编码技术(Positional Encoding)来保留行驶路径的序列信息。相比前一代方案,CompactETA实现了超过100倍的线上加速,平均响应时间低于50us。
1
ETA可建模成机器学习问题
直观来看,ETA系统要预测从地图上一点移动到另外一点所花费的时间。这是一个广泛存在的概念,航班、火车、汽车以及单车骑行都有对应的ETA预测任务。下面是一个示意图,假设用户从左上方的起点出发,想要前往右下角的终点,ETA系统将结合路网状态和用户信息对这段行程花费的时间做一个预估(图中示例的25分钟)。ETA的应用在滴滴平台上无处不在。例如以下场景:1、选定目的地之后,乘客首先看到就是预估接驾时间和预计到达终点的时间。前者告诉乘客大约多久之后司机可以到达他指定的出发点,后者给了乘客关于旅途时长的一个预测。如果这两个时间足够准确,乘客便会对行程有合理的心理预期,便于高效安排自己的事务。2、除了显示时间之外,其实还有一个数字隐藏了ETA的贡献,那就是预估价格。滴滴平台综合了行程距离和ETA等信息,按照计价规则提前估计一个金额供乘客参考。这些都是用户直观可感受的。3、在用户看不到的后台,ETA当然也是滴滴的派单引擎和调度引擎的重要决策信息之一。在滴滴,ETA服务的日均调用量已经达到百亿级别,想要提升网约车双边交易的效率,精准的ETA是重要基础之一。当人们想要预估一次行程时间时,至少有三个信息是必要的:谁、何时出发,以及走哪条路。放在网约车平台,这三个信息对应着:司机ID、出发时刻和行驶路径。这三个必要信息构成了ETA的query,即:其中司机ID和出发时刻都是标量,而行驶路径是一个向量,由一系列的路段ID组成。把路段称作Link。那么路径可以表示为:其中的各个L代表了Link的ID。根据query中的三项输入,可以在特征库中查询并构造出丰富的特征,车型、车龄、驾龄等画像信息,这些都可能对行车速度有影响。利用出发时刻,可以得到当前的天气信息、道路限行信息、交通管制信息等。出发时刻本身输入到模型中也帮助了对周期性交通规律的建模。利用行驶路径就可以查询到该行程经过了哪些路,这些路的静态物理属性是怎样的(封闭快速路/乡镇村道,车道数,限速,红绿灯情况等);同时还能知道这些路的动态属性,通常指的是路况,描述了路网当前的通行拥堵情况。所有特征会分为两类:第一类是全局特征,描述了行程级别的基本信息。对于每个样本来说,它记录成一个向量。第二类是道路特征,描述了行程的link序列细节,对于每个样本来说,它记录成一个矩阵。每一列描述了一个link的特征向量。例如,在下图中,左边的天气类型构成了全局特征的一维;而右边的link特征,每个link都有对应维度记录自己的长度和通行速度值。在输入模型之前,不同类型的特征会进行变换。离散特征先通过各自对应的embedding层,然后与连续特征拼接起来。全局特征和道路特征都采用这种做法。基于query构造完特征之后,就可以设计模型学习出从特征到行程时间预估的一个映射,这是一个典型的回归问题:。
2
ETA机器学习方案的一些探索性
在滴滴团队于2018年发表的《Learning to Estimate the Travel Time》一文中,首次提出了系统性的ETA机器学习解决方案。其中,Wide-Deep-Recurrent(WDR)深度神经网络模型取得了很好的精度。WDR的细节可参考之前的解读文章,接下来简要介绍一下团队在WDR之后的一些思考和探索。首先是数据稀疏性问题。尽管滴滴有着庞大的轨迹数据,但在时间、空间和人这三个维度的组合面前,却还没有达到充足。在WDR(以及大部分深度学习模型)中,link ID都以embedding的方式处理。一旦某个link的历史数据太少,那么它的embedding vector就容易处于欠拟合状态,影响了整体ETA预测的准确性,我们把这称之为空间稀疏性问题。为了解决这个问题,团队做了一个工作:基于路况分布来度量不同link的相似性,并利用metric learning来对link的embedding vector加强训练。这个思路类似于迁移学习,把热门link的知识迁移到缺少数据但是通行模式相似的冷门link上。除了空间稀疏性问题,对应的还有时间稀疏性和司机稀疏性的问题,它们是数据在不同时段和司机上的分布不均导致的。我们同样用了metric learning的方法来处理司机稀疏性,用他们的驾驶习惯来度量相似性。而对于时间稀疏性,我们尝试了给相邻时段的embedding vector设置共享参数,使得相邻时段的embedding vector更加相似。除了稀疏性问题,我们也关心当规划路线不存在的场景下如何进行ETA预测。本质上看,这需要把起终点之间多种可能的路线都学习到模型中。团队针对性地提出用图相关的算法来隐式地对路线进行建模,同时采用了multi-task learning的框架,不光预测行程时间,也预测行程距离,通过多任务的相互协同来加强ETA的准确性。这个工作已经发表在KDD 2018上(Multi-task Representation Learning for Travel Time Prediction)。此外,考虑到路网天然是一个拓扑图,我们也关注把图卷积方法应用在ETA和路况预测任务上。这方面可以关注同样在KDD 2020上的《HerETA: Heterogeneous Information Network Embedding for Estimating Time of Arrival》。当然,作为工业级应用,WDR最大的瓶颈还是在于线上推理速度。模型中recurrent结构消耗了相当大的计算资源。一次典型的ETA计算耗时长达几毫秒,如果服务器负载较高,响应时间甚至会到几十毫秒。这样的服务效率,在传统互联网应用中算是非常高的,但在共享出行领域,却还是重要的系统瓶颈之一,也产生了较大的机器成本。因此,在提出了ETA的机器学习解决方案后团队就把主要精力放在提升ETA推理速度上。同时,也希望精度不要有所降低。这就是本文要介绍的CompactETA的产生背景。 3
既快又准的ETA对出行平台降本提效有重要意义
ETA在网约车后台服务中发挥着重要作用,比如分单引擎、拼车引擎和运力调度等。为了实现整体交通系统的最优调度,分单引擎需要计算每个司机去接每个乘客的ETA,由此来综合统筹片区内的情况,尽最大可能保证司机和乘客的有效分配。再比如,既要提升交通效率,又要满足个性化出行需求,拼车是很有潜力的解决方案。以路径规划、ETA为代表的地图算法在拼车中扮演着重要的角色。拼车的顺路程度不仅由距离决定,时间也是重要参考。过长的绕行时间同样会给乘客体验和司机效率带来严重伤害。作为一项重要的工业级应用,ETA仅仅是精度高还远远不够。以拼车ETA调用量为例,如下图所示,假设仅考虑10名司机和20名乘客,引擎想要计算出最佳的双拼方案,那么就需要知道每一种组合的预估接驾时间。这里,总共有10x20x19=3800种司机和乘客的组合。假如有一天,乘客愿意接受短距离调度,比如走几十米到更佳的上车点(乘客走几十米,比如过天桥或出园区,有可能让司机少绕路几百米甚至几公里),那么我们要为每个乘客考虑附近的多个上车点,并且寻找最优的整体路线。假如候选上车点为5个,接驾路径的组合数迅速爆炸为3800x5x5=95000。为了求解10名司机和20名乘客的最佳拼车接驾方案(哪个司机接哪两个乘客,顺序如何),我们可能面临至少95000次ETA调用。在全国范围内,类似的计算还要重复成千上万遍。
道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:
请求地址:http://www.weilaitec.com/cigirlrobot.cgr
请求方式:post
请求参数:
参数 |
类型 |
默认值 |
描述 |
userid |
String |
无 |
平台注册账号 |
appid |
String |
无 |
平台创建的应用id |
key |
String |
无 |
平台应用生成的秘钥 |
msg |
String |
"" |
用户端消息内容 |
ip |
String |
"" |
客户端ip要求唯一性,无ip等可以用账号,微信账号,手机MAC地址等代替。 |
接口连接示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=
注意事项:参数名称都要小写,五个参数不能遗漏,参数名称都要写对,且各个参数的值不能为空字符串。否则无法请求成功。userid,appid,key三个参数要到平台注册登录创建应用之后,然后查看应用详情就可以看到。userid就是平台注册账号。
示例代码JAVA:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class apitest {
/**
* Get请求,获得返回数据
* @param urlStr
* @return
*/
private static String opUrl(String urlStr)
{
URL url = null;
HttpURLConnection conn = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try
{
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(5 * 10000);
conn.setConnectTimeout(5 * 10000);
conn.setRequestMethod("POST");
if (conn.getResponseCode() == 200)
{
is = conn.getInputStream();
baos = new ByteArrayOutputStream();
int len = -1;
byte[] buf = new byte[128];
while ((len = is.read(buf)) != -1)
{
baos.write(buf, 0, len);
}
baos.flush();
String result = baos.toString();
return result;
} else
{
throw new Exception("服务器连接错误!");
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (is != null)
is.close();
} catch (IOException e)
{
e.printStackTrace();
}
try
{
if (baos != null)
baos.close();
} catch (IOException e)
{
e.printStackTrace();
}
conn.disconnect();
}
return "";
}
public static void main(String args []){
//msg参数就是传输过去的对话内容。
System.out.println(opUrl("http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid="));
}
}
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章