用于解空间分区的并行处理的制作方法

文档序号:15575391发布日期:2018-09-29 05:24阅读:405来源:国知局

本申请要求提交于2015年10月5日的美国临时申请no.62/237,425的优先权,该美国临时申请全文以引用方式并入本文。



背景技术:

求解优化问题涉及从一组候选解中找到最优解。优化问题包括最小化问题,其中最优解是最小化受到一种或多种约束的目标函数的解,或者包括最大化问题,其中最优解是最大化一种或多种约束的目标函数的解。优化问题可涉及离散变量和/或连续变量。涉及离散变量的优化问题的一个示例是组合优化问题,其最优解可以为有限(或可能是可数无穷)集合中的离散元素(例如,整数、置换、图等)。涉及连续变量的优化问题的最优解可包括每个连续变量的值的序列。

附图说明

具体实施方式参考附图进行说明。提供的附图仅出于说明目的,并且仅示出本公开的示例性实施方案。提供的附图旨在有利于理解本公开,而不应被视为限制本公开的广度、范围或适用性。在附图中,附图标号最左边的数字标识首次出现该附图标号的附图。相同附图标号的用途是指示相似但不一定相同或同一部件。然而,不同的附图标号也可用于标识相似的部件。各种实施方案可以利用除附图中示出的元件或部件之外的元件或部件,并且一些元件和/或部件可以不存在于各种实施方案中。根据上下文,用于描述部件或元件的单数术语可包含复数的此类部件或元件,反之亦然。

图1示出根据本公开的一个或多个示例性实施方案的示例性系统架构,该系统架构包括监控中央处理单元(cpu)和包含多个gpu线程的多核图形处理单元(gpu),其中每个gpu线程被配置为处理解空间的相应的片段部分。

图2示出根据本公开的一个或多个示例性实施方案的监控cpu的示例性硬件架构和gpu的示例性硬件架构。

图3示出根据本公开的一个或多个示例性实施方案的gpu的流多处理器的示例性配置。

图4示出根据本公开的一个或多个示例性实施方案的gpu的线程处理阵列的示例性配置。

图5示出根据本公开的一个或多个示例性实施方案的gpu的示例性配置。

图6为根据本公开的一个或多个示例性实施方案用于执行群论禁忌搜索(gtts)处理以确定表示优化问题的规划的最终解的例示性方法的工艺流程图。

图7为根据本公开的一个或多个示例性实施方案用于将解空间分割成多个单元、将每个单元分割成多个子单元并且将每个子单元提供给用于对每个子单元执行gtts处理的相应的gpu的例示性方法的工艺流程图。

图8示出根据本公开的一个实施方案用于多个承运人调度优化的示例性系统环境。

图9为根据本公开的一个实施方案用于将车辆最优分配给承运人以进行调度的例示性方法的工艺流程图。

图10为根据本公开的一个实施方案用于选择最优车辆运输路线的例示性方法的工艺流程图。

图11为示出根据本公开的一个实施方案用于优化一个或多个承运人提取和/或运送多个车辆的路线的例示性方法的流程图。

图12为根据本公开的一个或多个示例性实施方案被配置为执行gtts处理的例示性服务器的示意性框图。

具体实施方式

总览

本发明涉及利用群论技术实现监控中央处理单元(cpu)与一组图形处理单元(gpu)之间的数据交换的系统、设备、方法和计算机可读介质等等。在某些示例性实施方案中,cpu可被配置为利用禁忌搜索元启发式算法来探索解空间以确定优化问题的及时、高质量的解。更具体地,cpu可确定产生多个片段(在本文中也称为分区)的解空间的分割,并且可将每个分区分配给被配置为计算计算结果的相应的gpu线程。然后,cpu可基于根据接收自gpu线程的产生解空间的新分区的计算结果确定解空间的新的分割,并且可将每个新分区分配给被配置为基于其分配的新分区再次生成计算结果的相应的gpu线程。cpu可继续基于gpu线程的计算结果确定新的分割直至满足停止标准并且已确定优化问题的及时、高质量的解。在某些示例性实施方案中,停止标准可以为在此期间找不到优化问题的改进解的阈值数量的迭代(例如,新的分割的阈值数量)。然后在满足停止标准时可将优化问题的该及时、高质量的解确定为最优解。最佳解可以为满足停止标准时确定的所有解中最优化的解(例如,最大限度最小化或最大限度最大化一个或多个变量)。

cpu可以由一个或多个计算核心(未示出)组成,并且本文所述的操作可以使用多个cpu。这种cpu核心可以协调将解空间的哪个分区分派给特定的图形处理单元(gpu)或其他加速器。当cpu核心数量大于加速器数量时,其余cpu核心可以在解空间的一个分区上促进或执行工作。cpu核心还可以使用分布式存储器模型(例如,多平台共享存储器和/或多处理架构)内的消息传递接口来实现本文所述的解空间分割和其他群论指导的处理。应当理解,为清楚和简洁起见,本文所述的一些示例系参考单个cpu进行讨论。然而,这些示例不应解释为具有限制性。如本文所述,本公开的方法和解可以用多个cpu实现,每个cpu都具有多个核心。

可实现本文所述的主题的特定实施方案以便实现以下改进中的一者或多者。提供利用一个或多个专门处理单元的并行处理来优化运送路线的准确而有效的方法。继而,提高优化速度,并降低负责优化的服务器和组件的计算压力。类似地,这可以确保更快送货,从而改善用户体验。此外,本文所述的功能可以降低送货相关成本,从而增加收入。

根据本公开的示例性实施方案,能够使用gtts(群论禁忌搜索)处理解决的示例优化问题可以是n城市m代理商旅行推销员问题(tsp),在本文中也称为m-tsp,其中n表示城市的数量。路径可以视为sn(n次对称群)中的置换。m-tsp优化问题的及时、高质量的解可以是标识一队代理商在指定的时间窗口内旅行提取和卸下物品(例如,车辆)的最有利可图的路线(例如,总旅行距离最短)的解。更具体地,在m-tsp中,可能要求m个代理商访问n个地点(例如,城市)以提取/运送车辆。车辆提取和运送可能发生在指定的时间窗口内,其中每个城市仅由一个代理商访问一次,并且每个代理商都有其指定的城市集。另外,可能要求每个代理商返回其最初开始其行程的城市。m-tsp的解可以标识由哪个代理商访问哪个城市(以及访问顺序)。

对于n个城市和从城市i到城市j的有向距离dij,城际距离可以表示为非负数实数的0对角n×n矩阵d。尽管d通常为对称的,但是d也可以不对称,在这种情况下,对于城市i、j中的一对或多对,从城市i到城市j的有向距离dij可不同于从城市j到城市i的有向距离dji。每个代理商可以与子路径相关联,该子路径可以表示代理商访问其指定城市的顺序。所有代理商的子路径可统称为旅行。所有可能的路径集合可以表示为sn中所有置换的集合。sn可以是n个符号的有限集合上的对称群,其元素是可以在n个不同符号上执行的所有置换操作,其中置换操作定义为从n个符号的集合到其自身的双射函数,其群运算是这种置换操作的复合。旅行的子路径可以为代表旅行的置换的不相交循环因素(dcf)。

例如,如果两个代理商访问城市1到城市7,则由置换p=(1,5)(2,6,3,7,4)∈s7表示的路径包括由dcf(1,5)和(2,6,3,7,4)表示的子路径。在该示例中,第一代理商可访问城市1和城市5,而第二代理商可访问其余城市,其中每个代理商返回其出发的城市。另外,循环的路径长度可以为每个弧长的总和,并且旅行长度可以为组成旅行的子路径的路径长度的总和。例如,对于由置换p=(1,5)(2,6,3,7,4)表示的旅行,旅行长度可以为由dcf(1,5)表示的子路径的路径长度和由dcf(2,6,3,7,4)表示的子路径的路径长度的总和。由dcf(1,5)表示的子路径的路径长度可以为城市1和城市5之间的距离(如弧长)(例如,从城市1到城市5的有向距离)与城市5和城市1之间的距离(如弧长)的总和。另外,由dcf(2,6,3,7,4)表示的子路径的路径长度可以为从城市2到城市6、从城市6到城市3、从城市3到城市7、从城市7到城市4、从城市4到城市2的有向距离总和。

本公开与可依赖于对称群sn的组合优化问题相关联。在一些实施方案中,这可以通过将解和移动视为置换,对启发式方法进行更有效的阐释和实施。如本文所示,群论的特定应用可以处理平庸乏味但计算量繁重的路径长度差计算任务。在一些示例中,群论可避免计算路径长度差时可能发生的不必要处理。此外,本文所述的解可识别通过移动置换t从p构建路径q的三种移动策略的相关计算优缺点:q=tp,q=pt和q=pt(例如,共轭移动或字母重排)。

排序可以是从与排序规则相关的置换群产生的概念。例如,给定循环p和q,当所有q-字母以与p中相同的循环顺序出现时,可以对q进行p分类。在一个例子中,对于p=(1,2,3,4,5,6,7,8),(2,4,7)和(5,8,3)都可以进行p分选,而(2,3,7,6)不可进行。排序产生了分解模板和合并模板的概念,二者分别是分解置换和合并不相交置换。分解器和合并器可以是更为简单的模板实例。给定循环p,当s进行p-排序时,循环s可以是p-分解器。循环w可以是不相交循环t1到tm的合并器,其中每个均恰好向w贡献一个字母。

如本文所述,定向子路径的尾部(头部)可以是其开头(或结尾)字母。在一个实施方案中,通过等式s-1p(s为左分解器)和ps-1(s为右分解器)可以确定p-分解器如何分解p,其中碎片是被视为子路径的dcf,其头部(或尾部)可能是s-字母。例如,p=(1,2,…,20)和s=(3,10,14,20)得s-1p=(1,2,3)(11,12,13,14)(15,16,…,20)(4,5,…,10)。s-字母是子路径{1,2,3}、{11,…,14}、{15,…,20}、{4,…,10}的头部。

对于具有多个dcf的置换p,合并器w可以得出循环wt1t2…tm。在一个示例中,每个w-字母旋转,然后将其循环嵌入q(w中的字母顺序决定旋转循环嵌入的顺序)。在一个实施方案中,参照上述示例,w可以是(2,17,12,8),其具有来自s-1p中不同循环的字母。因此w(s-1p)=(3,1,2,18,19,20,15,16,17,13,14,11,12,9,10,4,5,6,7,8)。

请注意,前四个子路径中的每一个都经过循环旋转(然后嵌入上述结果),以使其头部为w-字母。另请注意,这些头部按w-顺序显示。这两个示例说明了sn中的操作如何表示可能难以编码的路径建设方法,而使用计算群论实施这些方法可能要容易得多。

分解器和合并器的概念可能会得出类似结果,在构建1-tsp路径时可能有用。给定sn中的n-循环p和m-循环p-分解器s,如果m和k互质,则sk-1p是n循环。因此,合并器和分解器可以,例如,合并成为左分解器的单个幂,并且通常更易计算。具体地,当m=3且k=2时,可以确定sp是n-循环,这个结果会严重影响本文所述的用于调度最优1-tsp路径搜索的策略。

在某些示例性实施方案中,可以使用群论方法,运用例如以下等式来处理1-tsp:p*w={p*w:w∈w},其中,*表示置换乘法(p*w可表示为pw),置换p可以具有多个dcf,并且w可以是合并器集合,其中每个合并器均具有集合{子路径尾部}∪补集(mov(p))中的字母。在一个示例中,mov(p)可以是p中的字母。通过关系p*w可以创建具有期望结构的各种路径。类似的,w*p的元素是1-tsp路径,其中w中每个合并器中的字母是集合{子路径头部}∪补集(mov(p))中所有的字母。

在一些实施方案中,共轭可以保持循环结构。对于任一置换p和任一组置换x,集合(可能是多重集合)px={px=x-1px:x∈x}可以由与p具有相同循环结构的置换组成。因此共轭、左合并器和右合并器可以提供构建置换的方法。本文描述1-tsp作为示例。

对于置换p、t和q=tp,mov(t)可以由p和q不共有的弧的尾部组成。因此,当p和q是1-tsp路径时,t-字母可以看作是从p切割以得到q的弧的尾部,或者看作新进弧(新进入q的弧)的尾部。如果i→j也是新进弧,那么必须切割带有尾部i和j-p的p-弧,从而使i,j-p属于mov(t)(请注意在下文中,给定字母k和置换p,记法kp表示k的p-像)。当p和q具有相同的循环结构时,t可以有至少三个字母。这些观察结果可能会影响本公开所述的方法。固定一个字母集合t以构建mov(t)=t的所有置换q=tp,则新进头部可以包括t-字母的p-像集合(例如,新进尾部可能是t-字母)。这一结果推翻了新进头部可以跨越所有字母的直觉,即使新进尾部局限于t。这可能表明,移动自由局限于距离矩阵的方形(而非矩形)亚网格。

给定至少三个字母的集合t,1-tsp路径p,s为t上的p-左分解器,则可以确定对t上任何合并器w有新进弧i→j的1-tsp路径q=ws-1p。请注意,i和j可能属于t,并且j→i不能是p-弧。q可以包括集合x=t-{i,j-p*s}上的对称群s(x)的集合ws(x)s-1p,并且w可以是t上iw=j-p*s≠i的任何固定循环(此处-p也可以表示p的逆置换)。在一个示例中,可以通过在多个gpu上分割s(x)为每个片段f构建ws(w),构建复数wfh(其中为效率起见,h=s-1p)并将其发送回cpu以与其他复数合并。

例如,我们来构建对于p=(3,1,7,2,6,5,4,8)和t=mov(t)={5,8,1,7,4}有新进弧5→3的所有路径q=tp(请注意,5和3-p=8属于t)。由此,p-左分解器s=(1,7,5,4,8),我们在t上构建任何循环w,其中3-p*s=(3-p)s=8s=1≠5在5之后。由此,令w=(5,1,4,7,8)(最后三个字母可以自由排列)。对于x=t-{5,1}={7,8,4},合并器w由w=ws(x)给出,因此s(x)={单位元素,(7,8),(4,7),(4,7,8),(4,8,7),(4,8)}。依次,

w=(5,1,4,7,8)s(x)={(1,4,7,8,5),(1,4,8,7,5),(1,7,4,8,5),(1,7,8,4,5),(1,8,4,7,5),(1,8,7,4,5)}

(请注意弧5→1存在于每个循环中)

由此

ws-1p=w*(1,3)(2,6,5)=

{(1,4,7,8,|2,6,5,3),(1,4,8,7,2,6,5,3),(1,7,4,8,2,6,5,3),

(1,7,8,4,2,6,5,3),(1,8,4,7,2,6,5,3),(1,8,7,4,2,6,5,3)}

(请注意,每个路径均有新进弧5→3)。

对于1-tsp,可以扩展上述方法以(从路径p)构建路径q=tp,其指定两个或以上合理新进弧(例如弧4→6和4→9无法同时进入,如果2→1必须保留则弧1→2无法进入)。对于t为一组包括新进尾部和新进头部的p-原像(例如,t可能包括其他字母)和s为t上的p-左分解器,期望解可以包括所有1-tsp路径q=ws-1p,其中t上的循环w满足iw=j-p*s≠i。为确定w,令v=p-1s,构建尾部为新进尾部而头部为对应新进头部的v-像的w-弧。可以将w-弧组装到其完全连接的无环回不相交子路径中(例如,任何环回都可以使新进弧无效,除非该环回是t上的循环),不在子路径中的t字母可以称为孤儿(orphan)。

在一些实施方案中,w可以是嵌入子路径和孤儿的任何循环。对于其字母为孤儿和子路径头部的w-排序循环λ,所寻求的1-tsp路径集合q包括集合λs(λ)λ-1ws-1p,s(λ)为λ中字母上的对称群(可以等于mov(λ)减去任何任意丢弃的字母)。这种易于编码的解决方案可以是越来越难以实施的路径建构方法的群论阐释。在一个示例中,令h=λ-1ws-1p,如前所述,通过在多个gpu上分割s(λ)构建λs(λ)h。

优化问题诸如m-tsp可表示为数学规划(mp)。mp为其中一个或多个目标函数在由一个或多个约束方程定义的区域中被优化的方程组。可采用各种类型的方法求解mp。精确方法被设计用于确定mp的全局最优解。然而,精确方法可能无法在与应用mp相关联的时间约束内确定全局最优解。也可采用启发式方法求解mp。启发式方法利用确定性和概率性方法(例如,准随机数生成)尝试在时间约束内获得mp的高质量解。然而,启发式方法可能无法获得此类高质量的解,因为它们利用的是无法保证高质量解的经验结果。可用于求解mp的另一种方法的示例为元启发式方法。元启发式方法利用启发式算法控制启发式算法的使用。元启发式方法的例子有禁忌搜索、神经网络和遗传算法,而群论则是数学中针对代数结构群的属性的一个分支。本公开的示例性实施方案利用群论技术通过多个gpu线程实现禁忌搜索,所述多个gpu线程被配置为并行执行对解空间的相应分区的gtts处理。

禁忌搜索可以有三个阶段:短期记忆(stm)阶段、强化阶段和多元化阶段。由于瞬时情况决定,各个阶段往往在搜索及时的高质量解时出现。大多数处理发生在stm阶段,一个stm阶段停止时,强化阶段可能通过调用早期精英解(即具有优点的解),进行统计以指导搜索然后在精英解处启动新的stm阶段来触发。当进一步强化不再产生精英解时,搜索可能会触发多元化阶段,使搜索进入解空间的未探索区域。可能会产生新解,更新与搜索相关的统计,并触发新的stm阶段。这一过程可能会持续直到满足停止标准,此时会将搜索期间找到的大多数精英解集合作为搜索对象返回。

在一些示例中,强化和多元化阶段可以是可选的。以下段落描述了1-tsp在stm阶段发生的关键步骤。

1-tspstm阶段的一个示例性步骤可以是,找到一条贪婪初始路径,使其成为初始当前路径p。由于与p上的变换距离矩阵(tdm)相关联的pd中的负值个数随着路径缩短趋于减少,因此贪婪路径比随机路径更有可能具有更少的负变换距离。由于短于p的路径会具有一个在pd中有负值的新进弧,可使用这些负值作为构建改进移动的锚点。更少的负弧可能与更少的改进移动有关。

1-tspstm阶段的一个不同示例步骤可以是将3-分解器应用于p。可将3-分解器s应用于p,直到找到更短的路径q=sp(例如,3-分解器可以是具有三个字母的左分解器)。这可以通过为从j到i-p的p-子路径中的pd(i,j)<0和k构建具有形式(i,j-p,k)的3-分解器来实现。找到较短的q后,它就成为新的当前路径,这个过程可以重复。在一个实施方案中,在未进行贪婪搜索的情况下重复该过程。

1-tspstm阶段的一个不同示例步骤可以是选择负新进弧。在一个示例中,可以从负值最高到最低的新进弧中连续选择新进弧。这种方法可以涉及路径长度差公式。尽管如此,进入任何负弧可能会强制进入一个极大的正新进弧。另一种方法则可以从具有最低轨道平均值的负新进弧中选择,即具有该特定弧的所有路径的平均值。这样可以避免极其困难的单个路径长度计算,因为可以使用以下关系快速计算轨道平均值。对于0对角距离矩阵d,所有含有弧i→j的n-城市1-tsp路径的平均路径长度μij为μij=dij+(dij+dij)/(n-2),其中sum(x)是矩阵x中所有值的总和,dij=sum(d)-sum(d中第i行)-sum(d中第j列)-dji。例如,给定下面的距离矩阵,含弧2→5的所有路径的平均路径长度为1603/5。

当3-分解器无法再产生较短路径时,可使用4-分解器(例如,4-字母左分解器)。也就是说,对于含p的1-tsp路径和4-分解器s=(a,b,c,d),q=s2p可以是一条路径。请注意s2=(a,c)(b,d),且:

路径长度(q)-路径长度(p)=pd(a,cp)+pd(b,dp)+pd(c,ap)+pd(d,bp)

但是,4-分解器γ(a,b)可以是从a到b(包含端点)的p-子路径中的字母。对于新进弧i→j且若对于满足以下条件,则s=(a,b,c,d)是4-分解器:

由此,当3-分解器无法产生较短路径时,可使用4-分解器。如果这会产生较短路径,则该路径可成为新的当前路径,可以使用3-分解器重新启动此过程。

当3-分解器和4-分解器都无法产生较短路径时,可使用其他方法。虽然我们可以使用5-分解器、6-分解器等,但由于它们有3-分解器和4-分解器所没有的循环结构动态,所以它们的实施可能会变得过于复杂。参照1-tsp公式q=tp(对于路径p和q),可以确定t=qp-1是偶置换,因此是n个字母上交错群a(n)的元素。但是,这些元素具有不同的循环结构,因此可以使用获得改进移动t(其是未指定循环结构的偶置换)的方法。

一种方法观察到a(n)由g={(1,2,3),(1,2,4),...,(1,2,n)}中的3-循环生成。由于3-分解器是3-循环,路径之间的任何移动都可以表示为3-分解器的乘积。由此,t将是这些生成元的幂的乘积(指数为0、1、2)。反过来,对于由g和单位元素组成的集合x,为a(n)构建代理如下:对于用户指定的m,y可能是x的m-重笛卡尔积;对于每个y-元素,其组成元素可以相乘,y可以用不同乘积代替;最后,可以保留其中yp是路径的y-元素y(替换y是这些保留值)。y的最终值从构造上可以是a(n)的一个子集,表示移动t(具有不同的循环结构),得到路径q=tp。

如上所述,创建y的过程可能会消耗大量时间。但是,为p创建y之后,可以更快构建另一个路径q的y的对应物,而不必重复创建y的完整过程。亦即,由于yp是一个路径集合,因此yp的任何共轭像也一样。因此,对于yp中任何特定路径q和x任何解q=px,我们得到(yp)x=yxpx=yxq——由此yx是a(n)的一个子集,其循环结构是y中的循环结构,得出移动t从而得出路径tq。因此,为了使用这种代理方法,我们只需要存储y和p以供将来使用,请注意不必重复创建y的完整过程。事实上,可以离线构建这些值的库,以支持未来的应用程序。

然而,此代理方法可能有大小问题,由于|x|=n-1,x的m重笛卡尔积有(n-1)m个元素,显然这个大小过大,似乎会降低此方法的有效性。但是,a(n)也可以由两个置换生成:n为奇数时(1,2,3)和(3,4,...,n),n为偶数时(1,2,3)和(1,2)(3,4,...,n)。因此,x可以是由两个生成元和单位元素组成的3-元素集合,因此x的m重笛卡尔积有3m个元素。如果β是3m的阈值,则m≤lnβ/ln3。例如,β=12!(12的阶乘),可得m=18。

另一种获得移动的方法是在中心化子上使用群作用(gac方法)。在搜索的不同阶段,确定和/或存储当前p及其tdmpd。如果有较短路径q,则给出q=tp的移动t将创建至少一个负新进弧。由此,pd中负弧的配置和大小会以某种方式影响改进移动的搜索。但是如前所述,进入一个优势负弧可能会强制进入一个淹没性的正弧。因此,改进移动的搜索也受到正弧配置和大小的影响。零弧可能会实现横向移动。

理想的是有一种进入负弧但不会被正新进弧淹没的方法。这一问题与经典的lin-kernighan方法呼应,该方法通过弧交换构建1-tsp路径,通过巧妙地进入总和保持为负的弧来保持为负。对于弧的完整集合x,gac方法可以适应群作用<p>x,其定义为对于<p>中的g,(i→j)g=ig→jg,(例如,n-循环p的sn中的中心化子)。尽管可以使用任何子群,但使用中心化子至少有两个理由。第一,<p>是包含p的最小子组。第二,计算tdm的计算要求可能很高,因此理想的是尽可能利用当前tdm,从而最大限度减少计算压力。该中心化子可以实现这种设计。如果q=tp(对于路径p和q,则对于任何置换x,qx=(tp)x=txpx,因此可能需要px的tdm来计算px和qx之间的路径长度差。当x在<p>中时,根据定义px=p,所以qx=txp--由于px=p,可以不需要或不计算新的tdm。

mp可采取各种形式。例如,以矩阵形式表示的线性规划(lp)在ax=b和x≥0的情况下优化ctx,其中b、c和x为列矩阵,a为具有秩n的n行矩阵a。所有矩阵条目都是实数,并且除x的条目以外,所有条目都是已知常数。网络规划是指a矩阵为全幺模矩阵的lp。目标规划是指具有多线性目标函数的lp。目标规划使每个目标函数的累计绝对误差与用户指定的目标值最小化。

整数规划为具有附加约束条件x为整数向量的如上所定义的lp。当增加合适的约束条件时,整数规划可作为lp进行求解。组最小化问题(gmp)将整数规划转换为单约束mp,其单线性约束涉及时钟组元素。在一个示例中,当(例如,松弛lp模型的)最优基矩阵的史密斯正态形式具有大于1的孤立非零元素时,gmp可能处理这种变换。在另一个示例中,堆叠基和第一同构定理可以将gmp的范围扩展到任何史密斯正态形式。

混合整数规划为具有连续和整数变量的lp。非线性规划为具有非线性目标函数或约束条件的mp。凸规划是指可行域为凸集的mp。上述mp中的每个不包括随机变量。另一方面,随机规划为包括随机变量的mp。动态规划为缺乏结构化形式的多级mp(包含或不含随机变量)。多级mp的每个阶段都处于有限数量的状态之中,并且当前状态影响下一阶段状态的选择。给定当前状态,其余阶段的最佳策略不受早期选择的影响。

能够使用根据本公开的示例性实施方案的gtts处理求解的优化问题包括例如包括连续变量的mp、包括离散变量的mp和包括离散变量和连续变量的mp(也成为混合mp)。此类mp的示例包括整数线性规划。更具体地,本公开的示例性实施方案可以利用gtts处理求解具有如下形式的mp:在的条件下优化{g1(x),...,gn(x)},其中s(可行域)为集合ω(全域)的子集。继而,集合差ω-s为不可行域。s可为一组变量(离散变量、连续变量或混合变量),并且在某些示例性实施方案中可为其它集合的笛卡尔乘积,在这种情况下,x可以为多变量。求解此类优化问题涉及确定任何最优x或确定所有此类最优值。例如,整数规划可具有相对较小的最优解集合,而线性规划的最优解空间可以为多面体s上的所有最优顶点的凸组合。gk为目标函数,其优化方式由用户进行定义,例如找到所有关联的最优值x;在获得的gk的最优值中优化gk+1;或使每个目标函数与其用户指定的目标值之间的累计绝对误差最小化。如果能够在时间约束内实现,则可以通过精确方法获得最优解。另选地,可使用启发式算法,其继而将精确方法应用于易处理的较小的问题。

示例性系统运算和处理

图1示出根据本公开的一个或多个示例性实施方案的示例性系统架构,该系统架构包括监控中央处理单元(cpu)102和包含多个gpu线程的多核图形处理单元(gpu)104,其中每个gpu线程被配置为处理解空间的相应的片段部分。应当理解,图1示出监控cpu102和多核gpu104的示例性配置,包括另外和/或另选的硬件、固件和/或软件部件的其它配置也处于本公开的范围内。

监控cpu102可包括预处理器108,该预处理108被配置为接收输入数据和输入的约束条件106。输入数据106可包括与待求解的优化问题诸如m-tsp相关的数据。例如,输入数据可包括城市数量、每对城市之间的城际距离以及被指定在城市之间旅行的代理商的数量。就m-tsp而言,约束条件106可包括特定代理商必须访问的城市的标识、访问城市必须遵循的顺序等。

预处理器108可被配置为至少部分地基于输入数据/约束条件106选择表示优化问题的适当的mp。例如,预处理器108可从候选的mp类型中选择特定类型的mp表示优化问题。候选的mp类型可包括线性规划、整数规划、混合整数规划、非线性规划、凸规划、随机规划、动态规划等。例如,预处理器108可选择整数规划表示m-tsp。

在选择一种类型的mp表示待求解的优化规划时,预处理器108可将所选类型的mp的标识发送至主程序模块112。预处理器108还可将初始变量集合发送至主程序模块112。主程序模块112可被配置为确定用于求解所选类型的规划的求解方法。例如,主程序模块112可确定利用精确方法还是禁忌搜索方法求解所选类型的mp。在其中待求解的优化问题为m-tsp的本公开的示例性实施方案中,假设主程序模块112选择禁忌搜索方法求解该优化问题。因此,在此类示例性实施方案中,主程序模块112可初始化gtts程序模块114以执行gtts处理,从而在解空间和指定的时间约束内确定由所选类型的mp表示的问题的一个或多个解。最精英解(例如,在确定的解中最大限度最小化或最大化优化问题的一个或多个目标函数的解)可能是全局最优解,但是可能无法确认。

gtts模块114可确定表示待求解的优化问题的所选类型的mp的初始解。在某些示例性实施方案中,初始解可以为满足终止gtts处理的停止/终止标准的精英解。例如,就m-tsp而言,初始解可为表示n个城市之间的旅行的置换,其中置换包含一个或多个dcf,每个dcf表示n个城市的不相交子集之间的子路径。在其它示例性实施方案中,初始解可以并非满足终止标准的精英解,在这种情况下,gtts模块114可确定解空间的初始分割。gtts模块114可操作地耦接至主存储器122。gtts模块114可启动124对应于作为分割解空间的结果生成的每个解空间分区。内核可由多核gpu104的设备存储器126上的cpu102启动。每个内核可与多核gpu104中包含的gpu线程128(1)-128(n)集合中对应的gpu线程相关联。更具体地,每个内核可控制由gpu线程128(1)-128(n)集合中对应的gpu线程所执行的对应的解空间片段的处理。

每个gpu线程可生成一个或多个计算结果(例如,一个或多个精英解)以作为在对应的解空间片段上执行的处理的结果。然后,设备存储器126可将来自gpu线程128(1)-128(n)的计算结果130提供给主存储器122。然后,gtts模块114可至少部分地基于计算结果130确定解空间的更新的分割。然后,主存储器122可将由新分割获得的新的解空间分区发送至设备存储器126,其继而将相应的新的解空间分区分配给gpu线程128(1)-128(n)集合中的每个gpu线程。每个gpu线程可探究其对应的新的解空间分区,并且生成一个或多个计算结果(例如,一个或多个精英解),所述一个或多个计算结果可以由设备存储器126提供给主存储器122。gtts模块114可确定解空间的另外的分割,其可以由gpu线程128(1)-128(n)的集合进行并行迭代处理,直至满足终止标准并且精英解被选为优化问题的及时、高质量的解。在某些示例性实施方案中,终止标准可以为与优化问题相关联的时间约束。例如,在经过预先确定的时间段后,当时获得的最优精英解可以被选为优化问题的最终解。在其它示例性实施方案中,终止标准可以另外地或另选地由gtts处理的迭代阈值数量(例如,解空间的分割阈值数量)进行定义。

在某些示例性实施方案中,由gpu线程128(1)-128(n)集合生成的计算结果的至少一部分118可以由gtts模块114发送给主程序模块112。主程序模块112可在一个或多个归档数据库120存储计算结果118。存储于数据库120中的计算结果118可用于在对之前选择的初始解执行的gtts处理未能生成任何补充精英解时,确定待选为gtts处理的新初始解的精英解。另外,存储于数据库120中的计算结果118可用于确保相对于当前精英解执行的gtts处理不循环回已经处理过的现有精英解。

更详细地参考由gtts程序模块114执行的分割,该分割可将解空间ω(例如,集合m中所有置换的群)划分入不相交子集,该不相交子集在本文中称为单元。由gpu线程128(1)-128(n)集合执行的gtts处理可能无法全面探究任何给定的单元,因为单元尺寸(例如,单元中元素的数量)可能很大。在某些示例性实施方案中,可选择优化问题的初始解,并且可在包含该初始解的单元中初始化gtts处理。当gtts处理未能识别当前单元内的任何新的精英解时,gtts处理可继续多元化探究解空间并且继续处理另一个单元。因而,单元在本文中也可以称为多元化单元。

如前文所述,初始解可确定ω的初始分割。即,变换距离矩阵pd中的负条目(如下文所详述)可标识弧,其中一条弧产生的解优于初始解。pd的这一用途可扩展至分割ω的操作。更具体地,所选择的对应于矩阵pd中的负条目的负弧可用于形成循环,该循环生成ω的真子群h。继而,群作用hω可以将ω划分入表示多元化单元的轨道。

gtts处理可包括用于确保不再次探究之前探究的精英解的机制。具体地,gtts处理可通过利用横切遍历t(在本文中也称为多元化遍历)来访问轨道。多元化遍历的元素可索引轨道(多元化单元),并且当t适当较小时,可存储指示轨道已被访问的数据。这样可确保反循环并且可避免哈希结构。尽管遍历大小和轨道大小在相反方向上移动,但是可以构造遍历而无需构造轨道。因此,群作用可以被选择为产生适当较短的遍历。例如,可以从pd中选择较少数量的负条目以减少构造的多元化单元的数量,从而减少遍历大小。

在某些示例性实施方案中,将探究每个多元化单元分配给不同gpu线程在与优化问题相关联的时间约束内可能不可行,因为可能需要探究多元化单元。相反,gpu线程可用于探究单个多元化单元,其中由gtts模块114控制沿多元化遍历的移动。探究单个多元化单元可包括禁用搜索的短期记忆(stm)阶段和强化阶段。stm阶段可包括探究多元化单元以确定精英解。

当stm未能产生任何补充精英解时,gtts处理可回到迄今为止确定的最精英解λ并且可引发与λ相关的强化阶段,继而该强化阶段可触发新的stm阶段。当该新的stm阶段未能产生任何补充精英解时,gtts处理可再次在另一与λ不同的精英解处引发强化阶段。如果没有启动强化阶段,可以进行多元化移动进入另一轨道,发现新的当前解,并从新的当前解开始新的stm阶段。另选地,gtts处理可引发与相应的多个精英解平行的多个新的stm阶段。

gpu线程上的处理负载的大部分可发生在gtts处理的stm阶段。由于每个gpu线程可探究相同的多元化单元λ,因此单元λ可以被划分入更小的子单元,所述子单元中的每个通过对应的gpu线程在并行搜索中进行探测。可选择每个子单元的相应的初始解以启动关于每个子单元的gtts处理。尽管λ的任何等价关系都可以导致λ的分割,但是某些分割相比于其它分割更有可能产生精英解和/或可以更轻松地进行处理。具体地,另一个群作用可用于构造遍历,该遍历可用于指引较小的子单元,同时避免循环。继而,每个遍历元素可启动被分配给对应的gpu线程的gtts处理的stm阶段。由于每个gpu线程探究不同的不相交轨道,因此可以不要求gpu线程彼此通信。

更具体地,由于群作用hω产生多元化单元,因此任何h子群k都将产生具有分割多元化单元λ的轨道的群作用kλ。只要h不具有素数阶,gtts模块114即可将不同的h子群应用于多元化单元中的每个,以实现不同的分割,其中每个都可能更适合单元的初始解。为实现这点,可能需要h具有适当丰富的子群格,从中可以选择k。然而,这继而可能影响如何从pd中选择负弧以构建多元化单元。

图2示出根据本公开的一个或多个示例性实施方案的监控cpu102的示例性硬件架构和gpu104的示例性硬件架构。应当认识到,除图2中示出的示例性硬件架构以外,可包括另外的和/或另选的硬件、固件和/或软件组件的cpu102和gpu104的其它硬件架构也处于本公开的范围内。

监控cpu102可包括一组算术逻辑单元(alu)202(1)-202(r)。监控cpu102还可包括高速缓存206。监控cpu102可经过优化以较小的延迟将数据存储于高速缓存206中和检索高速缓存206中的数据。监控cpu102还可包括控制单元204,该控制单元204可操作地耦接至alu202(1)-202(r)组和高速缓存206。控制单元204可以被配置为管理各个alu202(1)-202(r)的使用并且管理数据在高速缓存206中的存储和检索。

监控cpu102可操作地耦接至一种或多种存储器设备,诸如动态随机存取存储器(dram)208。cpu102可通过一条或多条总线218耦接至dram208,所述总线例如利用外围组件快速互连(pci)高速串行计算机扩展总线标准的一条或多条总线。一条或多条总线218还可操作地将cpu102耦接至gpu104,支持cpu102和gpu104之间的数据交换。

gpu104可包括alu212(1)-212(t)的集合。在某些示例性实施方案中,gpu104的alu212(1)-212(t)集合中alu的数量可大于cpu102的alu202(1)-202(r)集合中alu的数量,其可以使gpu104比cpu102执行更多的并行计算。具体地,gpu104在启动多处理线程和并行执行线程方面可以比cpu102更高效。gpu104还可包括高速缓存216、一个或多个存储器设备(例如,视频ram(vram)210)以及可操作地耦接alu212(1)-212(t)的集合、vram210和高速缓存216的控制单元214。控制单元214可以被配置为管理各个alu202(1)-202(t)的使用并且管理数据在vram210和/或高速缓存216中的存储和检索。cpu102的高速缓存206可大于gpu104的高速缓存216,以使cpu102能够在执行任务之间快速切换。

在某些示例性实施方案中,cpu102可用作gpu104的主处理器,而gpu104可用作cpu102的协处理器。可以将来自dram208的数据复制到vram210以由gpu104使用alu212(1)-212(t)的集合执行计算。具体地,主处理器(例如,cpu102)可启动协处理器(例如,gpu104)上的内核,并且还可确定在gpu104上并行处理执行任务所需的线程的数量。在gpu104并行执行线程并且完成执行任务后,计算结果可存储在vram210中并且从vram210复制到dram208。cpu102可访问来自dram208的计算结果。

图3示出根据本公开的一个或多个示例性实施方案的gpu104的流多处理器的示例性配置。在某些示例性实施方案中,图3中示出的流多处理器可为图1示出的gpu线程128(1)-128(n)的集合的特定配置。然而,应当认识到,除图3中示出的配置以外,可包括另外的和/或另选的硬件、固件和/或软件组件的流多处理器的其它配置也处于本公开的范围内。

如图3所示,流多处理器(sm)302可包括指令单元304,该指令单元304可操作地耦接至共享存储器306。sm302可包括一组流处理器(sp)308(1)-308(s),所述流处理器可操作地耦接至指令单元304。每个sp308(1)-308(s)在本文中可互换地被称为核。指令单元304可在sp308(1)-308(s)之间发布指令集,其中每个sp执行单个线程指令。每个sp308(1)-308(s)可包括乘加算术单元,该乘加运算单元被配置为执行单精度浮点运算。另外,sm302可包括一组特殊的功能单元(sfu)310(1)-310(u),所述功能单元可以被配置为以较低的循环延迟执行更复杂的算术运算。

图4示出根据本公开的一个或多个示例性实施方案的gpu104的线程处理阵列(tpc)的示例性配置。应当认识到,除图4中示出的配置以外,可包括另外的和/或另选的硬件、固件和/或软件组件的tpc的其它配置也处于本公开的范围内。图5示出根据本公开的一个或多个示例性实施方案的gpu104的示例性配置。应当认识到,除图4中示出的配置以外,可包括另外的和/或另选的硬件、固件和/或软件组件的gpu104的其它配置也处于本公开的范围内。

如图4所示,一组sm302(1)-302(u)可一起包括线程处理阵列(tpc)402的至少一部分。sm302(1)-302(u)中的任一项可具有如图3所示的sm302的示例性配置。另外,如图5所示,示例性gpu架构可包括通过互连网络502可操作地耦接至高速缓存504(1)-504(x)的集合的tpc402(1)-402(v)的集合。tpc402(1)-402(v)中的任一项可具有tpc402的示例性配置。cpu102可将线程块分配给gpu104,其继而可以将每个线程块分配给tpc402(1)-402(v)的集合中相应的tpc。然后,可以在对应的已分配线程块的tpc(例如,402(1))中的各个sm302(1)-302(u)之间分配每个线程块中相应的一个或多个线程。

应当认识到,如图3-5所示的示例性硬件架构和配置同样适用于除gpu104之外的其它类型的处理单元。例如,如图3-5所示的示例性硬件架构适用于被设计为执行加速计算的任何多处理器/加速器。

图6为根据本公开的一个或多个示例性实施方案用于执行群论禁忌搜索(gtts)处理以确定表示优化问题的规划的最终解的例示性方法600的工艺流程图。图6在下文中将结合图1进行描述。

在块602,预处理器108可至少部分地基于一种或多种约束条件确定用于表示优化问题的mp的类型。例如,预处理器108可至少部分地基于输入数据/约束条件106确定mp的类型。具体地,预处理器108可从候选的mp类型中选择特定类型的mp表示优化问题。候选的mp类型可包括线性规划、整数规划、混合整数规划、非线性规划、凸规划、随机规划、动态规划等。例如,预处理器108可选择整数规划表示m-tsp。

在块604处选择一种类型的mp表示待求解的优化规划时,预处理器108可将所选类型的mp的标识发送至主程序模块112。在块604处,预处理器108还可将初始变量集合发送至主程序模块112。主程序模块112可被配置为确定用于求解所选类型的规划的求解方法。例如,在块606处,主程序模块112可确定待用于求解所选类型的mp的禁忌搜索方法。更具体地,在块606处,主程序模块112可确定使用根据本公开的示例性实施方案所述的gtts处理可获得的规划的最终解。

在其中待求解的优化问题为m-tsp的本公开的示例性实施方案中,假设主程序模块112选择禁忌搜索方法求解该优化问题。因此,在此类示例性实施方案中,主程序模块112可初始化gtts程序模块114以执行gtts处理,从而在解空间和指定的时间约束内确定由所选类型的mp表示的问题的一个或多个精英解。最精英解(例如,在确定的解中最大限度最小化或最大化优化问题的一个或多个目标函数的解)可以被选为优化问题的最终解,或者可以为全局最优解,但是可能无法确认。

在块608处,gtts模块114可确定表示待求解的优化问题的所选类型的mp的初始解。更具体地,在块608处,gtts模块114可将初始解确定为被选为表示待求解的优化问题的mp的当前解。在某些示例性实施方案中,初始解可以为满足终止gtts处理的终止标准的精英解。例如,就m-tsp而言,初始解可为表示n个城市之间的旅行的置换,其中置换包含一个或多个dcf,每个dcf表示n个城市的不相交子集之间的子路径,并且其中旅行的长度被视为经过适当优化。另选地,如果不存在具有至少一条弧(在pd中具有负条目)的其它置换(例如,旅行),则初始解(例如,初始选择的置换)可以为最优解。

在其它示例性实施方案中,初始解可以是并非满足终止标准的精英解,在这种情况下,gtts模块114可确定解空间的初始分割,并且可以将每个解空间片段分配给待处理的相应的gpu线程128(1)-128(n)。在某些示例性实施方案中,gtts模块114可确定每个解空间片段的相应的初始解。在某些示例性实施方案中,块608-618处的运算可对应于由关于特定解空间片段的特定gpu线程执行的处理。更具体地,块608-618处的运算可对应于根据本公开的示例性实施方案所述的gtts处理的stm阶段。

在块610处,gpu线程128可确定与当前解相关联的解的邻域。在gtts处理的第一迭代过程中,初始解可为块610处引用的当前解。在某些示例性实施方案中,可用于在块610处确定领域的移动方法可根据之前的移动方法的最近记录来确定。例如,某些移动可能会暂时受到限制,可使用期望的精英解的配置文件来指导移动方法等。在块610处,用于确定与当前解相关联的阶段领域的移动方法可基于一种或多种约束条件来选择,所述约束条件诸如保持当前解的循环结构的约束条件、保持当前解的特定子路径的约束条件等。

在块612处,gpu线程128可选择邻域的一位成员作为新的当前解。在某些示例性实施方案中,最近搜索历史记录可影响在块612处所选择的新的当前解p。另外,希望保留循环结构、保持指定的不相交子路径的相对位置等可影响新的当前解的选择。

在块614处,gpu线程128可更新精英解集合。例如,gpu线程128可包括该精英解集合中的新的当前解。然后,在块616处,gpu128可确定是否满足终止由gpu128执行的gtts处理的终止标准。终止标准可包括例如是否满足时间约束条件、是否获得了满足优化阈值的精英解、是否执行了阈值迭代次数的gtts处理等。响应于块616处的负确定结果,方法600可以从块610继续进行迭代。另一方面,响应于块618处的正确定结果,gpu线程128可至少部分地基于一个或多个选择参数选择精英解集合中特定的解作为表示优化问题的mp的最终解。例如,gpu线程128可选择在精英解集合中使mp的一个或多个目标函数最小化或最大化的精英解。

图7为根据本公开的一个或多个示例性实施方案用于将解空间分割成多个单元、将每个单元分割成多个子单元并且将每个子单元提供给用于执行gtts处理的相应的gpu线程的例示性方法700的工艺流程图。图7在下文中将结合图1进行描述。

在块702处,gtts模块114可以将解空间分割成多个单元。每个单元可以为解空间的不相交子集。例如,在块702处执行的分割可以将解空间ω(例如,对称群)划分入不相交子集,这些不相交子集称为单元。如前文所述,初始解可确定ω的初始分割。即,矩阵pd中的负条目(如下文所详述)可标识弧,其中一条弧产生的解优于初始解。pd的这一用途可扩展至分割ω的操作。更具体地,所选择的对应于矩阵pd中的负条目的负弧可用于形成循环,该循环生成ω的真子群h。继而,群作用hω可以将ω划分入表示多元化单元的轨道。

gtts处理可包括用于确保不再次探究之前探究的精英解的机制。具体地,gtts模块113可确定横贯单元遍历。由gpu线程128执行的gtts处理可通过利用横切遍历(在本文中也称为多元化遍历)来访问轨道。多元化遍历的元素可索引轨道(多元化单元),并且当遍历适当较小时,可存储指示轨道已被访问的数据。这样可确保反循环并且可避免哈希结构。

在某些示例性实施方案中,将探究每个多元化单元分配给不同gpu线程在与优化问题相关联的时间约束内可能不可行,因为可能需要探究多元化单元。相反,gpu线程可用于探究单个多元化单元,其中由gtts模块114控制沿多元化遍历的移动。探究单个多元化单元可包括禁用搜索的短期记忆(stm)阶段和强化阶段。stm阶段可包括探究多元化单元以确定精英解。当stm未能产生任何补充精英解时,gtts处理可回到迄今为止确定的最精英解并且可引发与该最精英解相关的强化阶段。例如,gtts处理可引发与该最精英解相关的新的stm阶段。当该新的stm阶段未能产生任何补充精英解时,gtts处理可再次引发对最精英解的处理。如果该最精英解与之前选择的精英解相同,则gtts处理可转而继续处理下一个最佳精英解。另选地,gtts处理可引发与相应的多个精英解平行的多个新的stm阶段。gpu线程上的处理负载的大部分可发生在gtts处理的stm阶段。由于每个gpu线程可探究相同的多元化单元,因此gtts模块114可在块706处选择多个单元中的特定单元λ,并且可在块708处将单元λ分割成多个子单元。然后可以由对应的gpu线程探究每个子单元以作为并行搜索的一部分。具体地,在块710处,gtts模块114可确定多个子单元中的每个的相应的初始解。然后,gtts模块114可以将每个初始解提供给相应的gpu线程128以对对应的子单元执行gtts处理。

在块714处,gtts模块114可接收对应于每个子单元的相应的精英解。更具体地,gtts模块114可接收来自每个gpu线程的计算结果,其中每个gpu线程可以至少部分地基于对其对应的子单元执行的gtts处理确定了一个或多个精英解。在块716处,gtts模块114可确定是否针对另一个单元的解空间进行多元化探究。响应于块716处的正确定结果,方法700可转到块706,其中可选择多个单元中的新单元以分割成对应的多个子单元。另一方面,响应于块716处的负确定结果,方法700可转到块718,其中gtts模块114可选择每个相应的精英解作为由各个gpu执行的gtts处理的新的初始解。

在块720处,gtts模块114可确定是否满足终止gtts处理的终止标准。响应于块720处的负确定结果,方法700可以从块712继续进行迭代。另一方面,响应于块720处的正确定结果,方法700可转到块722,其中gtts模块114可选择特定的精英解作为表示优化问题的mp的最终解。在块722处选择的最终解可至少部分地基于一个或多个选择参数来选择。例如,在块722处选择的最终解可为从gtts处理过程中识别的所有精英解中确定的最精英解。

出于说明目的,再次参考m-tsp,针对该问题寻求的最终解是移动到所有n城市的最小路径长度置换。因此,鉴于初始解由置换p表示并且候选解由置换q表示,因此gtts处理可通过确定q是否具有比p更短的路径长度来确定q是否为精英解。计算路径长度涉及许多加法,并且在如本文所述的gtts处理期间进行多次加法运算时,计算量可能很大。

因此,在某些示例性实施方案中,可以计算由路径长度(q)-路径长度(p)得出的路径长度差,因为当长度差为负时,置换q具有更短的路径长度。可计算该路径长度差,而无需计算p和q的各个路径长度差,因为公共弧的长度抵消了路径长度差,只剩下非公共弧。可将非公共弧确定为其尾部由mov(qp-1)给出的那些弧。在弧t→h中,t和h分别为弧的尾部和头部。对于n×n的0对角距矩阵d,p∈sn的路径长度为其弧长的总和。

该陈述的数学公式如下所示,其中,如前所述,kp是字母k的p-像。

因此,

此处,pd为第(i,j)个条目为dij减去d(i,ip)的矩阵。继而,通过加上pd的条目(其中q描绘mov(qp-1))得到δqp。需注意,pd的主对角线条目不一定为零,因为q不移动k∈mov(qp-1),那么

pd(k,kq)=d(k,kq)-d(k,kp)=d(k,k)-d(k,kp)=0-d(k,kp)=-d(k,kp)

例如,在s5中,使p=(1,4)(2,5,3)且q=(2,3,4,1)。

距离矩阵d迹线pd由q=(2,3,4,1)描绘的pd

p=(1,4)(2,5,3)

由于mov(qp-1)=mov((1,3)(2,5))={1,2,3,5},路径长度(q)-路径长度(p)=pd(1,1q)+pd(2,2q)+pd(3,3q)+pd(5,5q),其为最后一个矩阵中粗体条目的总和,-53+23+66-70=-34。另选地,路径长度(q)=275,路径长度(p)=309,275-309=-34,该计算涉及一些最终会抵消的弧长。

δqp的公式效用取决于计算mov(qp-1)所需的处理能力/时间。随着mov(qp-1)增加,公式δqp可能变得不太有用,最终可能相比于计算完整路径长度并未节省处理能力/时间。虽然通常可能是这种情况,但是本公开的示例性实施方案可使用保留大部分p的方法将p变换成q。继而,许多公共弧在计算路径长度差时抵消,从而得到较小的mov(qp-1)。

可采用各种机制将一种置换变换为另一种置换。这样的三种机制为共轭并用另一个m左/右乘队列p。用m左乘p可以表示为q=mp。由此qp-1=(mp)p-1=m,因此mov(qp-1)=mov(m)。在此类示例中,可能不需要计算qp-1,因为它只移动m中的字母。作为另一个示例,右乘可以表示为q=p。由此qp-1=(pm)p-1=m-p,因此qp-1的字母数量与m一样多(由于共轭会保留循环结构),并且这些是m-字母的p-原像。作为另一个示例,置换p与置换m的共轭可以表示为pm。由此qp-1=pmp-1=(m-1pm)p-1=m-1(pmp-1)=m-1m-p,从而表明qp-1最多移动m中字母数量的两倍。

将一种置换变换为另一种置换的第四种机制是将置换自乘合适的整数次。构建p邻域的一个简单机制是构建<p>(由p生成的子群)并保留具有p的循环结构的元素。例如,以下表格(其中()是群单位元素)显示不同置换p(顶行)的<p>,每一列中与p具有相同循环结构的p的幂以粗体显示。

上面的表1和表3分别处理了12个城市和7个城市的1-tsp。请注意,在这些表中,返回路径的p的幂与p的顺序(返回单位元素的p的最小幂,此处分别为12和7)是互质的。还要注意,与表1不同,表3中的所有幂都会返回一个路径,因为7是质数(因此与较小的数字互质)。同样地,表2中粗体显示的幂与order(p)=3*4=12互质。因此,如果保留循环结构,则互质的幂已足够。否则,pm的dcf可使用模板(分开和合并其它置换的置换)分割和合并以获得具有目标循环结构的置换。

在某些示例性实施方案中,如果要保留循环结构,则可以选择共轭作为gtts处理的移动方法。更具体地,要从置换p移至具有与p相同的循环结构的置换q,可以寻找满足px=q的置换x。由于解空间是右陪集centp*r,其中centp是sn中p的中心化子并且r是任何特定解(当p是sn中的n-循环时,centp=<p>),因此可能存在多个这样的置换x。一种用于确定r的示例性方法可以为对齐(在2行表中)dcf中给定的p和q,划定循环边界,然后查看作为标准式置换的所得的表格。例如,如果p=(4,2)(1,5,3)并且q=(2,4,1)(3,5):

由此,q=pr,即((4,2)(1,5,3))(4,3,1,2,5)=(2,4,1)(3,5)。

如前所述,在1-tsp中,centp=<p>。例如,在s6中,p=(3,1,2,6,5,4)且q=(6,1,3,5,2,4),px=q的解空间为centp*r:

由此,对于高于陪集的任何x,(3,1,2,6,5,4)x=(6,1,3,5,2,4)。

因此,从上述陪集中选择不同的置换x可导致gtts处理的多元化。另一个含义是,可以开始对移动而非路径进行搜索。即,gpu线程可以代替探测centp的右陪集的任何遍历,而无需获得p的gpu线程探测共轭。当该搜索得到s作为最优遍历元素时,ps可以为p共轭类中的最优路径。

由于从上述陪集中选择的任何元素会得到相同的路径,所以可以选择具有最少字母的陪集代表。随后可使用此代表加快路径长度差的计算。

示例性承运人调度优化

在一个具体实施中,本文所述的方法、系统和运算可用于承运人调度优化。可以利用多承运人调度优化架构来确保一辆或多辆车(例如,轿车、卡车、货车、汽车、摩托车、越野车辆、船只、露营车(rv)、机械车辆等)在一种或多种车辆交易(例如,销售、采购、交易、制造、赠送、收回、租赁等)后被一个或多个承运人(例如,托运人、卡车司机、送货人等)以最佳的方式进行运送(例如,运输、搬运、提取、交付等)。在一些实施方案中,承运人可包括一队承运人,或者可包括单个和/或单独的承运人。在一个实施例中,每个承运人卡车能够运输或承运不同数量的车辆(1、3、5、10等)。

例如,如果第一辆车购自亚特兰大的一个卖方并且需要运到纽约的第一个买主那里,并且第二辆车购自亚特兰大的卖方并且需要运到波士顿的第二个买主那里,则可以利用多承运人调度优化架构来确定使用一个或多个承运人时每辆车的最佳运送路线。继续该示例,第一辆车和第二辆车可通过多承运人调度优化架构分配给第一承运人,以将第一辆车和第二辆车同时从亚特兰大运输到东北。第一承运人可以从亚特兰大提取第一辆车和第二辆车,开车到纽约,并且把第一辆车交给第一个买主,然后继续开车到波士顿,并且把第二辆车交给第二个买主。另选地,第一辆车和第二辆车可通过多承运人调度优化架构分配给第一承运人,以将第一辆车和第二辆车同时只从亚特兰大运输到纽约。在纽约,第一承运人可以将第一辆车交给纽约的第一个买主,然后可以在纽约卸下第二辆车,在那里第二辆车将由第二承运人提取。第二辆车可以由多承运人调度优化架构分配给第二承运人,以将第二辆车从纽约运输到波士顿,从而将第二辆车交给波士顿的第二买主。通过这种方式,可通过多承运人调度优化架构将一辆或多辆车分配给一个或多个承运人,以确保一辆或多辆车以最佳方式从相应的第一位置运送到相应的第二位置。此外,如果承运人目前正计划从亚特兰大驱车前往波士顿并且计划在从亚特兰大到波士顿的途中在纽约停车以交付车辆,则该承运人可利用多承运人调度优化架构来识别纽约需要运送到波士顿的另一辆车。通过这种方式,承运人能够更高效地安排沿途的取货和/或交货。

图8示出根据本公开的一个实施方案用于多承运人调度优化的示例性系统环境800。系统环境800通常包括至少一个用户应用程序810,其可以由用户访问和/或控制。在一些实施方案中,系统环境800包括如图8所示的多个用户应用程序810,所述多个用户应用能够使多个用户利用多承运人调度优化架构。

在一些实施方案中,用户通常包括承运人(例如,托运人、货车司机、司机、运输公司调度员等),但也可以包括卖方、买方、赠与人、被赠与人、交易者、拍卖人、收回人和/或车辆用户等。用户可以利用用户应用程序810通过提供一个或多个承运人目标和/或承运人约束条件来引发多承运人调度优化架构的运算。例如,用户可以将一个或多个承运人目标和/或承运人约束条件输入和/或上传至用户应用程序810中。另选地,承运人目标和/或承运人约束条件可接收自第三方,或者通过抓取(例如,自动从中检索信息)一个或多个社交媒体账户、电子邮件账户、一个或多个在线账户的用户偏好、承运人数据库等得到。

承运人目标和/或承运人约束条件可包括路线信息,诸如起始地、目的地、当前位置、开始日期和/或时间、结束日期和/或时间、操作活动区域(例如,州境)、避开位置等。另外,承运人目标和/或承运人约束条件可以涉及承运人类型,诸如卡车选择、卡车商标和/或型号、拖车商标和/或型号、卡车尺寸、拖车尺寸、最大车辆数量和/或承运人能够运输的最大重量(例如,承运能力)、承运人的最大有效载重、承运人可能的车辆装载配置、承运人的年限、承运人的汽油里程数、承运人的保险状态等。承运人目标和/或承运人约束条件还可包括对承运人的独特能力的特定约束,例如承运人被封闭、能够承运不可操作的车辆、能够承运特定类型的车辆(例如,摩托车、船和/或轿车)等。另外,如果承运人拥有用于多个车辆的多个槽位,则用户可以针对每个单独的槽位指定承运人约束条件。例如,承运人的第一槽位可以被配置为用于运输摩托车,而承运人的第二槽位可以被配置为用于运输船。另外,一个槽位可以被配置为运输不同类型的车辆。在一些实施方案中,可能需要特定的硬件(例如,绑带、改动设备等)才可改动用于运输第一辆车类型的第一辆车的槽位,从而在改动后,该槽位可用于运输第二车辆类型的第二辆车。因此,这一改动槽位的能力可以包含于承运人目标和/或承运人约束条件中。另外,承运人目标和/或承运人约束条件还可包括与运输部(dot)有关的限制,诸如承运人因载重、卡车尺寸等不能在特定的道路上行驶。另外,承运人目标和/或承运人约束条件可包括与从一个地点到另一地点(例如,从一个国家到另一个国家等)相关的各种进口和/或出口条例。在一些实施方案中,用户应用810可能需要特定的承运人目标和/或约束条件,或者在其它实施方案中可以为任选的。

所述至少一个用户应用程序810通常与库存管理器120进行通信。例如,所述至少一个用户应用程序810可以将接收自用户的承运人目标和/或承运人约束条件提供给库存管理器820进行处理。

库存管理器820通常包括待运输的所有可用车辆的车辆记录。车辆记录通常包括与车辆相关的信息和/或属性,诸如内部识别码(id)、车辆识别码(vin)、车龄、商标、型号、外装、重量、尺寸、可操作状态、封闭状态、取货地址(例如,街道、城市、州、邮政编码等)、取货地区、送货地址(例如,街道、城市、州、邮政编码等)、交货地区、开始日期和/或时间等。与车辆相关联的信息和/或属性还可包括与参与车辆车辆交易的一方(例如,托运人、买方、卖方等)相关联的信息,诸如订单(po)号、账户信息、地址、运输和/或交货价格、区段价格(例如,沿某段路线(例如从亚特兰大到纽约的途中巴尔的摩和费城之间的路段)运输车辆的价格,或可通过另一种模式完成的运输的一部分的价格,例如通过火车或船只运输的部分的价格)。车辆的信息和/或属性还可包括车辆排队等候的时间、进度和/或在多承运人调度优化架构中的阶段。与一辆或多辆车相关联的信息和/或属性可以由参与车辆交易的一方提供,通过抓取与卖方相关联的车辆数据库、vin解码数据库、批发拍卖数据库、车辆检验数据库、制造商、销售商、经销商、经纪人等和/或以各种其它方式提供。在一些实施方案中,与一辆或多辆车相关联的信息和/或属性从一个或多个数据库导入。

库存管理器820通常处理接收到的承运人目标和/或承运人约束条件以基于由用户提供的承运人目标和/或承运人约束条件(例如,接收自用户程序810)识别可由承运人运输的一辆或多辆车的一条或多条车辆记录。例如,库存管理器820可基于比较接收的承运人目标和/或承运人约束条件与包含于一辆或多辆车的一条或多条车辆记录中的信息和/或属性,对一辆或多辆车的一条或多条车辆记录进行筛选和/或排序。在一些实施方案中,库存管理器820可确定承运人目标和/或承运人约束条件与包含于一辆或多辆车的一条或多条车辆记录中的信息和/或属性至少部分匹配。确定承运人目标和/或承运人约束条件与信息和/或属性至少部分匹配可使得库存管理器820确定一辆或多辆车的一条或多条车辆记录适合(例如,可用于)由承运人运输。在一些实施方案中,库存管理器820可生成可以由承运人运输的所有车辆记录(例如,车辆)的列表。该列表可基于每个可用车辆记录的计算得分进行排序和/或排名,其中计算得分对应于运输每个可用车辆记录的收益、成本、价格等。在一些实施方案中,计算得分可以由库存管理器820基于确定承运人目标和/或承运人约束条件与每辆车的信息和/或属性、运输每辆车的价格、成本、利润等至少部分匹配来确定。另外,可以对车辆和/或区段的计算得分与对应于承运人接受和/或包含在一个或多个优化解集合中的可能性进行比较。

库存管理器820在基于承运人目标和/或承运人约束条件识别出可由承运人运输的一辆或多辆车的一条或多条车辆记录后,将确定的可由承运人运输的一辆或多辆车的一条或多条车辆记录传输至优化程序830进行处理。库存管理器820还可将承运人目标和/或承运人约束条件、包含于一辆或多辆车的一条或多条车辆记录中的信息和/或属性传输至优化程序830进行处理。在一些实施方案中,确定为可由承运人运输的一辆或多辆车的一条或多条车辆记录可通过一个或多个数据包的数据流、通过生成可下载文件、将文件上传到服务以及发送允许启动文件下载的链接等从库存管理器820传输至优化程序830。

优化程序830可处理接收自库存管理器820的信息以基于接收自库存管理器820的信息(例如,车辆记录、承运人目标和/或承运人约束条件、包含于一辆或多辆车的一条或多条车辆记录中的信息和/或属性等)生成承运人的车辆载重的一个或多个优化解集合。例如,优化程序830可基于共同的取货和/或交货地点、每个可用车辆的计算得分等将一辆或多辆车分组(例如,捆绑)到一起。优化程序830还可识别包含于一辆或多辆车的一条或多条车辆记录中的信息和/或属性的一个或多个匹配结果。另选地,优化程序830可基于估计的交付价格和/或路段价格来捆绑一辆或多辆车,从而最大化承运人利润量,最小化当承运人的载重低于最大载重量时的行驶距离、成本,最小化包含于优化解决方案集合中的一辆或多辆车的计划取货和/或交货地点与当前承运人地点和/或计划路线之间的距离,最大化调度和/或承运人每天的收入和/或每英里的收入,和/或包含于一个或多个优化解集合中的承运人运输车辆的时间量,和/或为承运人提供其它益处。通过这种方式,车辆可以被分组和/或捆绑在一起成为优化解集合,该集合提供了一条或多条运输所包括的车辆的最佳路线。针对承运人的一辆或多辆车载重的一个或多个优化解集合可包括承运人提取和/或交付(例如,运输)由库存管理器820识别为可以由承运人运输的一辆或多辆车的一条或多条路线。例如,所述一个或多个优化解集合可包含于特定地点和/或沿特定的承运人路线可提取和/或交付的车辆的列表。

例如,优化程序830可通过将与运输包含在优化解集合中的每辆车相关联的收入相加,然后减去与运输包含于优化解集合中的每辆车相关联的承运人成本,来确定优化解集合的总调度利润,其中与运输每辆车相关联的成本可通过行驶的总距离乘以承运人的每英里成本来确定。用于确定一辆或多辆车和/或车辆区段的调度利润的其它因素可包括路线长度、取货地点、交货地点、运输成本、承运人成本、独特的载重约束、许可/准许要求等。在确定运输车辆(例如,车辆区段)的利润和/或成本时,可以将权重分配给一个或多个变量和/或因素。然后,优化程序830可以比较针对用户(例如,承运人)生成的所有解集合确定的每个总调度利润来确定具有最高调度利润的优化解集合。

需注意,优化程序830不仅旨在最大化每个承运人的利润,而且旨在最大化与本文所述的系统环境800相关联的调度员的利润。例如,每辆车可以与卖方(或捐赠方、交易方、购买方等)和/或销售平台(例如,拍卖行和/或网站、在线市场等)分配的运输成本以及实际运输每辆车的承运人的相关成本相关联。优化程序830通常寻求最小化与承运人相关联的成本,同时最大化由卖方分配的运输成本。在一些实施方案中,这些成本可以是固定的,和/或基于各种条件诸如供应和需求、车辆的市场价值、年份、月份、周、天等、天气状况、承运人限制和/或承运人目标、车辆属性和/或信息等而动态变化。通过这种方式,优化程序830可集中于提供以调度员为中心的系统,该系统通过将待由一个或多个承运人运输的一辆或多辆车最优分配给最小数量的承运人来最大化调度利润。因此,系统环境800和本文所公开的实施方案不同于典型的以承运人为中心的系统,诸如交付服务优化系统。与将由一辆或多辆卡车优化交付的一组已知的包裹分配为可以由以承运人为中心的系统完成相反,本公开的系统环境800可集中于选择最优分配给一辆或多辆卡车(例如,承运人)的特定包裹(例如,车辆)以使利润最大化。

在生成时,一个或多个优化解集合可以从优化程序830传输至库存管理器820,其可以将一个或多个优化解集合传输至一个或多个用户应用程序810以展示给用户。然后,用户(例如,承运人)可使用一个或多个用户应用程序810查看一个或多个优化解集合和/或从一个或多个优化解集合中选择一个或多个解集合。在一些实施方案中,传输一个或多个优化解集合可包括生成警示(例如,振动、视觉警示、声音警示等)并且通过一个或多个用户应用程序810将消息(例如,电子邮件、文本消息等)中的警示传输至库存管理器820和/或用户。

用户还可以提供对一个或多个优化解集合的调整和/或修改。例如,用户可以对包含于一个或多个优化解集合中的一辆或多辆车进行添加、删除、移除、交换、交易等。在一些实施方案中,用户可发起请求,对包含于第一优化解集合中的一辆或多辆车与包含于第二优化解集合中的一辆或多辆车进行交易。还可以由一个或多个用户应用程序810为用户展示交易报价和/或建议添加、删除、交换的车辆。例如,可以向用户推荐选择/和/或添加至优化解集合中的一辆或多辆车。车辆建议可基于各种变量、信息和/或本文所公开的启发式算法,诸如承运人限制和/或承运人目标、车辆信息和/或车辆属性、利润、成本、距离、地点、特定地点的车辆密度等。在一些实施方案中,可以使用户能够接受来自另一个用户和/或承运人的一辆或多辆车的交易报价,并且可以使多个用户能够通过一个或多个用户应用程序810彼此通信,诸如通过即时消息系统彼此通信。通过这种方式,一个或多个优化解集合还根据用户(例如,承运人)的偏好和/或希望进行定制和/或优化,从而在运输包含于所选的优化解集合中的一辆或多辆车时提高效率并且最大化承运人的利润。

通常,当车辆包含于优化解集合中时,车辆唯一地包含于优化解集合中。例如,车辆的车辆记录可以仅包含于一个优化解集合中,其然后可由用户接受或拒绝。使车辆包含于优化解集合中通常包括从库存管理器820中移除包含于优化解集合中的该车辆的车辆记录,使得该车辆的车辆记录不再能够包含于第二优化解集合中。另选地,车辆的车辆记录可包含于一个或多个优化解集合中。

响应于用户选择一个或多个优化解集合,库存管理器820可以将与承运人相关联的信息(例如,承运人目标和/或承运人约束条件)分配至与所选的一个或多个优化解集合相关联的信息(例如,包含于一个或多个所选车辆的车辆记录中的信息和/或属性)。通过这种方式,包含于所选的一个或多个优化解集合中的车辆可以由库存管理器820分配给承运人进行运输。另选地,包含于一个或多个优化解集合中的未由用户选择的车辆的车辆资料可以传输至和/或返回库存管理器820中以由优化程序830进行处理和/或包含于另一个优化解集合中。

在上述过程中,信息(例如,承运人目标和/或承运人约束条件、包含于一辆或多辆车的一条或多条车辆记录中的信息和/或属性等)可以传输至和/或接收自一个或多个用户应用程序810、库存管理器820、优化程序830和/或归档数据库840。归档数据库840可连续更新和/或以预先确定的间隔更新以来自系统环境800的各个元素的信息。通过这种方式,存储于归档数据库840中的信息可用于各种后处理分析中。例如,归档数据库840可接收和/或存储一个或多个所选的优化解集合以供用户随后调用。

图9为示出根据本公开的一个实施方案用于将车辆最优分配给承运人以进行调度的示例性方法的细节的示例性工艺流程图900。图900开始于从与车辆交易相关联的托运人(例如,卖方、买主、交易商、经纪人等)接收车辆订单。在一些实施方案中,在一个或多个用户应用程序810中和/或从与促进车辆交易相关联的系统诸如拍卖网站、经销商网站、在线市场等接收订单。在一些实施方案中,接收订单包括接收与车辆和/或车辆交易相关联的信息诸如待包含于车辆的车辆记录中的信息和/或属性。接收订单通常包括使用车辆的信息和/或属性生成车辆的车辆记录。车辆记录可以由一个或多个用户应用程序810生成和/或传输至库存管理器820以由库存管理器820生成。

同样,车辆记录通常包括与车辆相关联的信息和/或属性。例如,车辆的车辆记录可包括内部识别码(id)、车辆识别码(vin)、车龄、商标、型号、重量、尺寸、改变库存重量和/或尺寸的售后特征、可操作状态、封闭状态、取货地址(例如,街道、城市、州、邮政编码等)、取货地区、送货地址(例如,街道、城市、州、邮政编码等)、交货地区、开始日期和/或时间等。与车辆相关联并且包含于车辆记录中的信息和/或属性还可包括与参与车辆的车辆交易的一方(例如,托运人、购买者、卖方、买主等)相关联的信息,诸如订单(po)号、账户信息、地址、运输和/或交货价格、区段价格(例如,沿某段路线(例如,从亚特兰大到纽约的途中巴尔的摩和费城之间的路段)运输车辆的价格)、计算得分等。包含于车辆记录中的车辆的信息和/或属性还可包括车辆排队等候的时间、进度和/或在多承运人调度优化架构中的阶段。

一旦生成,在块810处,车辆的车辆记录可被置于分段队列中以进行验证。车辆的车辆记录通常由一个或多个用户应用程序810和/或库存管理器820进行选择和/或验证。在一些实施方案中,验证车辆的车辆记录包括基于对包含于车辆的车辆记录中的信息和/或属性与存储于归档数据库840中的信息和/或属性(和/或本文所公开的其它信息)的比较来确定包含于车辆的车辆记录中的信息和/或属性是有效的。如果包含于车辆的车辆记录中的信息和/或属性被确定为无效,则该车辆记录(例如,车辆)可能不适合包含于库存管理器820的车辆库存中,因此可以在块920处将其丢弃。车辆的车辆记录也可随时被取消。相反,如果包含于车辆的车辆记录中的信息和/或属性被确定为有效,则该车辆的车辆记录通过验证以包含于库存管理器820的车辆库存中。

在其验证时,在块930处,将车辆的车辆记录传输至库存管理器820以使该车辆的车辆记录包含于库存管理器820的车辆库存中。从库存管理器820的车辆库存中,可通过多种方式将车辆的车辆记录(例如,车辆)分配给特定的承运人。通常,将车辆分配给承运人包括至少部分地基于分析和/或比较包含于车辆的车辆记录中的信息和/或属性和/或承运人目标和/或承运人约束条件来确定该车辆可由承运人运输(例如,承运人能够在限定的约束条件下安全运输车辆)。

例如,库存管理器820可直接将库存管理器820的车辆库存中的车辆(例如,车辆的车辆记录)分配给承运人,以由该承运人运输车辆。通常,将车辆直接分配给承运人以响应于该承运人选择了包括该车辆的优化解集合(或路线的一个或多个区段等)。因而,在块940处,将车辆调度给承运人,以由该承运人运输车辆。在一些实施方案中,将车辆调度给承运人包括通过一个或多个用户应用程序810等将包含于车辆的车辆记录中的信息和/或属性传输给承运人和/或用户。

在第二个示例中,车辆可以由库存管理器820将其作为单个区段(例如,从车辆的取货地点到车辆的交货地点的单条路线)分配给在线市场,系统环境800与该在线市场进行通信。例如,在块950处,在线市场可包括可用的车辆和/或车辆区段的列表和/或队列,多个承运人可从中选择进行运输。在一些实施方案中,用户可以从在线市场列表中选择单个车辆(例如,单个区段)、多个车辆(例如,多个区段)、车辆(例如,区段)的优化解集合等。通过这种方式,多个承运人可以根据承运人偏好诸如区段距离、区段位置和/或地区、价格等从在线市场中选择多个车辆进行运输。如果承运人从列表中选择了车辆,则该车辆由库存管理器820分配给选择该车辆的承运人,并且在块940处调度该车辆。如果在车辆可用期间的预先确定的时间段内未选择该车辆,则该车辆可以从在线市场的列表中移除并且被重新导入和/或重新包含于库存管理器820的车辆库存中。

在第三个示例中,库存管理器820可以与优化程序830进行通信,和/或将车辆的车辆记录和/或包含于车辆的车辆记录中的信息和/或属性传输给优化程序830进行处理。通过这种方式并且在块960处,优化程序830在确定承运人载重和/或承运人路线的一个或多个优化解集合时可能将车辆记录(例如,车辆和/或车辆信息和/或属性)包含于承运人载重和/或承运人路线的一个或多个优化解集合中。所述一个或多个优化解集合可以显示给用户和/或承运人,该用户和/或承运人可通过一个或多个用户应用程序810接受或拒绝所述一个或多个优化解集合。如果包括车辆的优化解集合被拒绝,则在块930处,该车辆可以被重新导入和/或重新包含于库存管理器820的车辆库存中。在一些实施方案中,用户(例如,承运人)可以仅选择优化解集合的一部分。例如,用于可以选择所建议的最优路线的第一区段和第二区段,而拒绝该路线的第三区段。该第三区段及相关联的车辆可以在块930处被重新导入和/或重新包含于库存管理器820的车辆库存中(或与另一个承运人进行交易)。相反地,如果包括车辆的优化解集合被接受,则将车辆调度给选择包括该车辆的优化解集合的用户和/或承运人。

通常,在块960处,当优化程序830包括一个或多个优化解集合中的车辆时,该车辆排他性地包含于所述一个或多个优化解集合中。例如,一旦车辆包含于一个可能的优化解集合中,则在包含该车辆的优化解集合被用户和/或承运人拒绝之前,该车辆可能无法包含于另一个优化解集合中,在包含该车辆的优化解集合被拒绝的情况下,车辆和/或车辆记录被重新导入和/或重新包含于库存管理器820的车辆库存中。另外,一旦在块950处用户和/或承运人从在线市场的列表中选择了车辆和/或在块940处调度给承运人,则另一个用户和/或另一个承运人将无法选择该车辆。通过这种方式,车辆可以不被误分配给多个用户和/或承运人。

然而,在一些实施方案中,一辆车可以被分配给多个优化解集合。为防止将一辆车分配给多个承运人进行运输的双重性,一辆车可以被分配给与首先选择包含该车辆的优化解集合的用户相关联的承运人。因此,优化程序830可监测、追踪、比较和/或存储与每个用户对每个优化解集合的选择相关联的一个或多个时间戳。

图10为根据本公开的一个实施方案使承运人能够选择最优车辆运输路线的示例性工艺1000的例示性细节的示例性工艺流程图。该图从在块1005处用户(例如,承运人)访问一个或多个用户应用程序1010开始。在一些实施方案中,用户可使用智能手机、平板电脑、可穿戴设备、台式计算机、笔记本计算机、便携式计算设备等访问一个或多个用户应用程序1010。

在首次访问一个或多个用户应用程序810时,在块310处,一个或多个用户应用程序810可能要求和/或提示用户创建账户。在一些实施方案中,创建账户可包括在块1015处定义一个或多个承运人目标和/或承运人约束条件和/或如本文所述。

在随后访问一个或多个用户应用程序810时,在块320处,用户登录所创建的账户。一旦登录,可以向用户显示仪表板和/或登录页面,用户可从中选择各种待执行的动作和/或操作。例如,一个或多个用户应用程序810可以使用户在块1025处请求生成路线。例如,发出生成路线的请求可包括使用户能够定义初始约束条件,诸如承运人目标和/或约束条件(例如,期望的开始和/或结束位置、开始日期和/或时间等)、与承运人相关联的信息等。生成路线的请求可以由一个或多个用户应用程序810生成和/或接收并且传输至库存管理器820进行处理。生成路线还可包括生成一辆或多辆车区段、估计的路线行程时间、完成所生成的路线所需的燃料成本估算等。所生成的路线和/或相关联的信息可在报告、电子邮件、文本消息、一系列全球定位系统(gps)坐标等中传输给用户。

库存管理器820可接收来自一个或多个用户应用程序810的生成路线。在接收到生成路线的请求并且在块1035处,库存管理器820可以将与生成路线的请求相关联的承运人添加到批处理管理器中。在一些实施方案中,批处理管理器为库存管理器820的一部分,它被配置为可用于由多个承运人运输的所有车辆的车辆记录的协调聚合。例如,在块1040处,经过验证并且被置于库存管理器820中的所有车辆的车辆记录的库存可以由批处理管理器导入。

接下来,所导入的车辆的车辆记录可以从库存管理器820传输至优化程序830以进行处理。在接收到导入的可用车辆的车辆记录时,在块1045处,优化程序830可使用本文所述的方法(例如,算法)识别可由承运人运输的车辆的一条或多条车辆记录和/或车辆的区段。例如,优化程序830可基于用户在块1015和/或1030处定义的承运人目标和/或承运人约束条件来识别可由承运人运输的车辆的一条或多条车辆记录和/或车辆的区段。另选地,优化程序830可接收来自库存管理器820的列表,该列表中包括可包含于一个或多个优化解集合中的一辆或多辆车。然后,优化程序830可基于比较和/或匹配与每个可用车辆相关联的信息和/或属性(例如,包含于可用车辆列表中的车辆的一条或多条车辆记录中所包括的信息和/或属性)与承运人的承运人偏好(例如,承运人目标和/或承运人约束条件),识别可包含于承运人(例如,与用户相关联的承运人)的一个或多个优化解集合中的一辆或多辆车。然后,优化程序830可分析和/或比较所有符合条件的车辆以识别待包含于优化解集合中的一辆或多辆车。例如,优化程序830可确定待包含于优化解中的一辆或多辆车使承运人的总路线距离最短、使承运人的利润最大化、使承运人的燃料费用最小化、避免了特定的危险诸如天气和/或建筑物、使承运人在装载量低于预先确定的容量时行驶的里程数最小化、使一次或多次取货和/或交货之间的距离最小化、使承运人在一次或多次取货和/或交货期间装载和/或卸载一辆或多辆车所需的时间最小化、使承运人在装载和/或卸载时的潜在危害和/或伤害最小化等。通过这种方式,优化程序830可使用所识别的可由承运人运输的车辆的一条或多条车辆记录和/或车辆的区段生成一个或多个优化解集合。同样,一个或多个优化解集合可包括一辆或多辆车、车辆区段和/或运输所述一辆或多辆车的路线。

在一些实施方案中,包含于所述一个或多个所生成的优化解集合中的每个优化解集合中的每辆车是包含该车辆的优化解集合所独有的。因而,在块1050处,优化程序830和/或库存管理器830可以从可由承运人运输的车辆的车辆记录列表和/或库存中保留和/或移除已包含于优化解集合中的每辆车的车辆记录。通过这种方式,每辆车可以仅被指定、分配和/或包含在呈现给一个承运人的一个解集合中。

优化程序830可以将所述一个或多个所生成的优化解集合传输至库存管理器820,其可以基于包含于一个或多个优化解集合中的车辆更新可由承运人运输的车辆的车辆记录的库存清单和/或库存。另外,在块1050处,然后可以将一个或多个所生成的优化解集合传输至用户应用程序以呈现给用户和/或由用户选择。

如果用户拒绝和/或不希望选择一个或多个所生成的优化解集合中的一者或多者,和/或如果未在预先确定的时间段内选择优化解集合,诸如在块1055处,一个或多个用户应用程序810、库存管理器820和/或优化程序830可释放对包含于未选择的优化解集合中的车辆的车辆记录的任何排他性持有,并且包含于未选择的优化解集合中的车辆的车辆记录可以被重新导入和/或重新包含于可由承运人运输的车辆的车辆记录的库存中。另外,在块1030处,用户可以在一个或多个用户应用程序810的引导下输入新的和/或修改现有的初始约束条件(例如,承运人目标和/或承运人约束条件)。在其它实施方案中,并且在块1060处,用户可注销离开用户应用程序810。

在块1065处,用户可以接受和/或选择优化解集合(例如,建议的包括一辆或多辆车运输区段的路线),从而接受运输包含于所选的优化解集合中的车辆的责任。在1065和/或1070处,一个或多个用户应用程序810还可以使用户能够调整和/或修改所述一个或多个生成的优化解集合中的元素。例如,用户可以从优化解集合中删除一辆或多辆车、路段等。通过这种方式,用户还可优化他们的车辆运输路线。另选地,用户可接受和/或选择优化解集合而无需对优化解集合进行任何修改。同样,一个或多个用户应用程序810、库存管理器820和/或优化程序830可释放对包含于优化解集合中的由用户取消选择、移除、删除等的车辆的车辆记录的任何排他性持有,并且从优化解集合中删除的车辆的车辆记录可以被重新导入和/或重新包含于可由承运人运输的车辆的车辆记录的库存中。

在选择优化解集合时和在块1075处,库存管理器120可以将包含于所选的优化解集合中的每辆车分配给承运人。在一些实施方案中,将包含于所选的优化解集合中的每辆车分配给承运人包括将包含于所选的优化解集合中的每辆车调度给承运人。将包含于所选的优化解集合中的每辆车分配给承运人还包括将归档数据库830中包含于所选的优化解集合中的每辆车的信息和/或属性分配和/或关联到承运人的承运人目标和/或承运人约束条件和/或与所选的优化解集合相关联的信息诸如路线信息。将包含于所选的优化解集合中的每辆车分配给承运人还可能包括为承运人生成计划表和/或旅程,其中细化了路线、承运人目标和/或承运人约束条件、与包含于所选的优化解集合中的每辆车相关联的信息和/或属性等。

另外,可以由一个或多个用户应用程序810、库存管理器820生成合约协议以响应于将包含于所选的优化解集合中的每辆车分配给承运人。在一些实施方案中,用户选择和/或接受优化解集合可以将与生成路线请求相关联的用户和/或承运人自动输入承运人与托运人、供应商、买方、购买者、卖方之间的合约协议中。在块1060处,用户可继续注销离开一个或多个用户应用程序。

在一些实施方案中,优化程序830可以被配置为在生成优化解集合时,使运输一组车辆所需的承运人的数量最小化。例如,优化程序830可基于待包含于优化解集合中的一辆或多辆车的属性生成优化解集合,所述属性诸如车辆重量、车辆尺寸、托运人费用、起点位置和/或目的地、取货和/或交货时间窗口等。另选地或除此之外,优化程序830可基于一个或多个承运人的属性(例如,承运人目标和/或承运人约束条件)生成优化解集合,以运输包含于优化解集合中的车辆,诸如载重能力(例如,承运人体积和/或承运人重量)、途中各个点处一个或多个承运人的预先存在的载重、交付计划表、交付成本、当前位置、期望的目的地等。在一些实施方案中,优化程序830可利用启发式模型(例如,并行处理)同时和/或实时生成一个或多个优化解集合。例如,优化程序830可基于可用的车辆库存生成相当大的代表性数量的可能的优化解集合,然后可以智能搜索、排序这些代表性解集合以确定使一种或多种特定变量(例如,利润、距离、成本、时间、位置、车辆信息和/或属性、承运人约束条件和/或承运人目标等)最大化和/或最小化的一个或多个优化解集合。在搜索时,优化程序830可以对一种或多种变量加权以便更快速高效地识别一个或多个优化解集合。

优化程序830可以将各个车辆取货和/或交付区段生成和/或分配到路线集中。该路线集中的每条路线可定义对应于分区段的站点的序列(例如,包含于车辆的优化解集合中的车辆的取货和/或交付)。在一些实施方案中,路线可包括一辆或多辆车的单程运输或往返运输。另选地,路线可包括承运人的计划往返运输路线,其中一辆或多辆车沿计划的承运人路线在各个地点运输(例如,交付和/或取货)。随着路线和/或优化解集合被用户拒绝和/或修改,用户未选择的任何车辆和/或路线可以被重新导入和/或重新包含于可运输的车辆的库存中。通过这种方式,优化程序830可基于在一个或多个优化解集合中对车辆和/或路段的修改(例如,移除、添加等)重新优化一个或多个优化解集合,从而生成一个或多个新的优化解集合,该新的优化解集合中包括更新的车辆和/或路段的集合。

另外,一些实施方案可包括优化程序830,该优化程序830确定用于运输包含于优化解集合中的一辆或多辆车的路线(例如,长路线、横越全国的路线等)。然后,优化程序830可之后确定可以分配给不同承运人的一条或多条子路线。另外,批发拍卖设施可用作取货和/或交货地点、中转场所等。通过这种方式,优化解集合的区段可包括提取和/或交付一辆或多辆车至拍卖设施,使得一辆或多辆车可以更轻松(例如,更有利可图地)由多个承运人运输。

在一些实施方案中,由优化程序830生成一个或多个优化解集合可包括计算每条路线的价格和/或运输包含于一个或多个优化解集合中的每辆车的成本。在一些实施方案中,基于当前条件诸如天气、季节性迁移等的价格波动可包含在每条路线和/或区段的定价中。运输一辆车和/或一组车辆的价格可至少部分地基于车辆价格、承运人类型和/或库存、天气、承运人的驾驶记录、驾驶历史、路线历史、承运人沿特定路线行驶和/或到和/或从特定地点的频率、优选路线、保险,承运人的可靠性和/或评分等来确定。在一些实施方案中,可确定估计成本、估计保证金和/或选择优化解集合的节省量的预测并且向承运人显示每个车辆和/或路段的优化解集合。例如,优化程序830可至少部分地基于每个区段的决定价格确定包含于每个优化解集合中的每个区段的价格(例如,与运输每辆车相关联的价格),确定运输包含于每个优化解集合中的所有车辆的总价格。另选地,优化程序830在确定每个优化解集合的价格、利润和/或节省量时可以考虑其它因素。其他因素可包括天气信息、燃料经济性、承运人约束条件和/或承运人目标、车辆信息和/或属性等。在一些实施方案中,优化程序830可利用各种元素的权重来确定价格和/或生成一个或多个优化解集合。另外,优化程序830可计算运输各个车辆的价格和/或运输捆绑在优化解集合中的多辆车的价格。

在一些实施方案中,可在连续(例如,实时)数据流中接收来自各种来源的信息(例如,承运人目标和/或承运人约束条件、与车辆相关联的信息和/或属性、车辆记录、和/或车辆交易、天气信息、价格信息和/或市场信息、路线信息和/或区段信息等)。例如,天气信息可以接收自多个天气信息源,然后可以由本文所述的系统进行处理,以基于天气条件计算平均温度、计算估计降水量、确定与天气条件相关联的风险水平、计算估计价格和/或运输风险等。每条信息可以通过本文所述的系统进行加权,以便考虑对价格和/或安全运输车辆最重要的因素。例如,在冬季,在预计发生暴风雪期间,包括通过美国东北部的路线的区段可能定价更高,使得承运人在风险大大高于在阳光明媚的美国东南部地区运输车辆的风险的情况下获得回报。通过这种方式,可计算并提供给承运人更准确的成本、价格、时间等的估计,并且当系统接收和处理信息时,可以实时更新每个估计值和/或计算值。

另外,由优化程序830生成一个或多个优化解集合包括确定运输待包含于生成的优化解集合中的一辆或多辆车所需的承运人的最少数量,以此为基础生成优化解集合。由优化程序830生成一个或多个优化解集合还包括确定承运人和/或调度员的收入和/或效率的最大值,以此为基础生成优化解集合。

在一些实施方案中,优化程序830可基于待由承运人运输的载重(例如,车辆)的几何尺寸和/或道路危险程度(例如,天气条件、道路类型等)来确定最优路线。在其它实施方案中,优化程序830可根据车辆大小、形状、重量、类型、安全性、便利性和/或承运人装载和/或卸载车辆的速度等确定承运人的最优车辆装载量。例如,将第一辆车装载到第一部分承运人并且将第二辆车装载到第二部分承运人可能被确定是最优的。另选地或除此之外,优化程序830可确定使承运人在低于满载的情况下行驶里程数最小化的最优路线。

在一些实施方案中,承运人将第一辆车从其当前位置运输至其目的地可能无利可图。然而,通过优化第一辆车与待运输的一个或多个其它车辆的分组和/或捆绑,运输第一辆车可能变得有利可图。通过这种方式,可能无利可图的车辆运输区段(例如,异常值)可以与一个或多个有利可图的车辆运输区段一起包括在优化解集合中,并且该优化解集合仍可以为有利可图的(例如,与异常值和一个或多个有利可图的区段相关联的利润平均值大于零)。

在一些实施方案中,优化程序830可以利用多模态优化架构。利用多模态优化架构可包括利用多种运输模式优化一辆或多辆车的运输。例如,优化程序830可以确定运输车辆的最优方法包括第一承运人(例如,卡车1)在取货点提取车辆并且将该车辆运输至第一火车站,在该第一火车站处,该车辆可装载到火车的轨道车上以运输至第二火车站。火车可以将车辆运输至第二火车站,第二承运人从该第二火车站提取车辆。然后,第二承运人可以将车辆运输至目的地。通过这种方式,优化程序830在确定最优路线、解集合时可以利用多种运输模式。

在一些实施方案中,优化程序可以在多模态优化架构中利用任何类型的地面运输(例如,轨道车、铁路、火车、电车、雪橇等)、水面和/或水上交通工具、飞机等。利用不同的运输方式可以比利用单一的运输方式更优化,因为每种不同的运输方式可能具有不同的计划表、旅行时间、路线等,以便使优化架构中的一种或多种变量最小化或最大化。例如,利用轨道车运输车辆可能对于承运人运输车辆更有效率,因为利用轨道车可以使由承运人行驶的里程数最小化,或者避免因额外的较短途的车辆运输造成的延误,可能需要较短途的车辆运输使长途运输对于承运人更经济。另外,不同运输方式的承运人可具有不同的承运人配置(例如,轨道车大于牵引式挂车)。另选地,如果目的地位于岛上或其它难以到达的、隔离的和/或偏远环境中,则可能需要利用多种运输方式。在一些实施方案中,多模态优化架构利用可以为呈现给用户(例如,承运人)以供选择的可选择选项。

图11为示出根据本公开的一个实施方案用于优化一个或多个承运人提取和/或运送多个车辆的路线的示例性方法1110的细节的流程图。在块1110处,方法1100可包括接收承运人的一个或多个承运人约束条件,其中所述承运人被配置为运输一辆或多辆车。在块1120处,方法1100可包括接收与可由承运人运输的一辆或多辆车相关联的一种或多种车辆属性。在块1130处,方法1100可包括至少部分地基于一种或多种承运人约束条件和一种或多种车辆属性来确定一个或多个最优解集合,其中每个最优解集合包括可由承运人运输的一辆或多辆车中的至少一者。在块1140处,方法1100可包括提供一个或多个最优解集合以供用户选择。

本公开的示例性实施方案提供了许多技术特征、技术效益和技术效果。例如,根据本公开的示例性实施方案,可以利用多个处理器(例如,gpu)线程并行确定指定的解空间内的优化问题,从而减少获得及时、高质量的优化解所需的处理时间和处理负荷。另外,根据本公开的示例性实施方案,使用群论技术对优化问题建模并且将解空间分割成分区,该分区可以通过相应的处理线程进行处理,从而提供一种方法,使精英解得到更有效的识别,最终以较短的处理时间确定及时、高质量的解。应当认识到,本公开的示例性实施方案的技术特征和/或技术效果的上述实施例仅为说明性的而非穷举性的。

本公开的一种或多种例示性实施方案如上文所述。上述实施方案仅仅是本公开的范围的示例,并非旨在以任何方式进行限制。因此,本文所公开的实施方案的变型、修改和等同形式同样处于本公开的范围内。下文将参考附图详细描述本公开的上述实施方案及附加的和/或另选的实施方案。

例示性设备架构

图12为根据本公开的一个或多个示例性实施方案被配置为执行gtts处理的例示性服务器的示意性框图。在例示性配置中,gtts服务器1200可包括一个或多个处理器1202、一个或多个存储器设备1204(在本文中统称为存储器1004)、一个或多个输入/输出(“i/o”)接口1206、一个或多个网络接口1208和数据存储器1210。设备1200还可包括一条或多条总线1212,所述一条或多条总线1212功能性地耦接设备1200的各种部件。这些各种部件如下文所详述。

总线1212可包括系统总线、存储器总线、地址总线或消息总线中的至少一者,并且可允许在设备1200的各种部件之间进行信息交换(例如,数据(包括计算机可执行代码)、信令等)。总线1212可包括但不限于存储器总线或存储器控制器、外围总线、加速图形端口等等。总线1212可与任何合适的总线架构相关联,包括但不限于工业标准结构(isa)、微通道架构(mca)、增强isa(eisa)、视频电子标准协会(vesa)架构、加速图形端口(agp)架构、外围组件互连(pci)架构、pci-express架构、个人计算机存储器卡国际联合会(pcmcia)架构、通用串行总线(usb)架构等等。

设备1200的存储器1204可包括易失性存储器(在供电时保持其状态的存储器)诸如随机存取存储器(ram)和/或非易失性存储器(即使在不供电时也保持其状态的存储器)诸如只读存储器(rom)、闪存、铁电ram(fram)等等。在某些示例性实施方案中,易失性存储器可以比非易失性存储器更快速地读/写访问。然而,在某些其它示例性实施方案中,某些类型的非易失性存储器(例如,fram)可以比某些类型的易失性存储器更快速地读/写访问。

在各种具体实施中,存储器1204可包括多种不同类型的存储器,诸如各种类型的静态随机存取存储器(sram)、各种类型的动态随机存取存储器(dram)、各种类型的不可改变的rom和/或rom的可写入变体,诸如电擦除可编程只读存储器(eeprom)、闪存等等。存储器1204可包括主存储器以及各种形式的高速缓存存储器,诸如指令高速缓存、数据高速缓存、转译后备缓冲器(tlb)等等。另外,高速缓存存储器诸如数据高速缓存可以为多级高速缓存,该多级高速缓存被组织为一个或多个高速缓存级别的层次结构(l1、l2等)。

数据存储器1210可包括可移动存储器和/或不可移动存储器,包括但不限于磁存储器、光盘存储器、固态存储器和/或带存储器。数据存储器1210可提供计算机可执行指令及其它数据的非易失性存储。可移动和/或不可移动存储器1204和数据存储器1210为本文所用的计算机可读存储介质(crsm)的示例。

数据存储器1210可存储计算机可执行代码、指令等,所述计算机可执行代码、指令可被加载到存储器1204中并可由处理器1202执行以使处理器1202执行或引发各种操作。另外,数据存储器1214可存储可被复制到存储器1204以供处理器1202在执行计算机可执行指令时使用的数据。此外,由处理器1202执行计算机可执行指令所生成的输出数据最初可存储于存储器1204中,并且可最终复制到数据存储器1210以实现非易失性存储。

更具体地,数据存储器1210可存储一个或多个操作系统(o/s)1214;一个或多个数据库管理系统(dbms)1216;以及一个或多个程序模块、应用模块等,诸如一个或多个空间分割模块1218和一个或多个gtts处理模块1220。gtts处理模块1220还可包括一个或多个子模块,诸如一个或多个tm模块1222、一个或多个强化模块1224以及一个或多个多元化模块1226。

解空间分割模块1218可包括计算机可执行指令、代码等,当所述计算机可执行指令、代码由一个或多个处理器1202执行时,引起分割解空间的操作,该操作生成可由gtts处理模块(s)1220处理的解空间分区。在某些示例性实施方案中,gtts处理模块1220可包括计算机可执行指令、代码等,所述计算机可执行指令、代码在每个gpu线程128(1)-128(n)上执行以每个gpu线程探究相应的解空间分区以获得优化问题的精英解。stm模块1222可包括计算机可执行指令、代码等,当所述计算机可执行指令、代码由一个或多个处理器1202执行时,引起执行禁忌搜索的stm阶段的操作。stm阶段可包括探究多元化单元(例如,解空间片段)以确定精英解。强化模块1224可包括计算机可执行指令、代码等,当所述计算机可执行指令、代码由一个或多个处理器1202执行时,可引起执行禁忌搜索的强化阶段的操作。例如,当stm未能产生任何补充精英解时,gtts处理模块1218可回到迄今为止确定的最精英解并且可利用强化模块1224引发与该最精英解相关的强化阶段。例如,强化阶段可包括引发与该最精英解相关的新的stm阶段。多元化模块1226可包括计算机可执行指令、代码等,当所述计算机可执行指令、代码由一个或多个处理器1202执行时,引起对新的多元化单元进行多元化gtts处理的操作。

数据存储器1210还可存储各种其它类型模块中的任一种。另外,存储于数据存储器1210中的任何程序模块都可包括一个或多个子模块。另外,存储于数据存储器1210中的任何数据都可加载到存储器1204中以供处理器1202在执行计算机可执行代码时使用。另外,可能存储于数据库中的任何数据都可通过dbms1216进行访问并且加载到存储器1204中以供处理器1202在执行计算机可执行代码时使用。

处理器1202可以被配置为访问存储器1204并且执行其中加载的计算机可执行指令。例如,处理器1202可以被配置为执行服务器1200的各种程序模块的计算机可执行指令,以引起或促进根据本公开的一个或多个实施方案所述执行各种操作。处理器1202可包括任何合适的能够接受输入的数据、根据存储的计算机可执行指令处理输入数据并且生成输出数据的处理单元。处理器1202可包括任何类型的合适的处理单元,包括但不限于中央处理单元(例如,cpu102)、图形处理单元(例如,gpu104)、微处理器、精简指令集计算机(risc)微处理器、复杂指令集计算机(cisc)微处理器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)、芯片系统(soc)、数字信号处理器(dsp)等等。另外,处理器1202可具有任何合适的微结构设计,其包括任意数量的构件,诸如寄存器、多路复用器、算术逻辑单元、用于控制对高速缓存存储器的读/写操作的高速缓存控制器、分支预测器等。处理器1202的微结构设计能够支持各种指令集中的任一种。

现在参见被示为存储于数据存储器1210中的其它例示性部件,o/s1214可以从数据存储器1210加载到存储器1204中并且可提供在服务器1200上执行的其它应用软件与服务器1200的硬件资源之间的接口。更具体地,o/s1214可以包括用于计算机可执行指令集,所述计算机可执行指令集用于管理服务器1200的硬件资源,并且向其它应用程序提供公共服务(例如,管理各种应用程序之间的内存其分配)。o/s1214可包括现在已知的或将来可能开发的任何操作系统,包括但不限于任何服务器操作系统、任何大型机操作系统或任何其它专有或非专有的操作系统。

dbms1216可加载到存储器1204中并且可支持访问、检索、存储和/或操作存储于存储器1204中的数据、存储于数据存储器1210中的数据和/或存储于一个或多个数据库(例如,归档数据库120)中的数据。dbms1216可使用多种数据库模型(例如,关系模型、对象模型等)中的任一种并且可支持多种查询语言中的任一种。dbms1216可访问以一种或多种数据模式表示并存储在任何合适的数据储存库中的数据,所述数据储存库包括但不限于数据库(例如,关系数据库、面向对象的数据库等)、文件系统、平面文件、存储在计算机网络的多于一个节点上的分布式数据库、对等网络数据库等。在其中服务器1200为移动设备的那些示例性实施方案中,dbms1216可为任何合适的轻型dbms,其在移动设备上的性能经过优化。应当认识到,如本文所述用的术语“数据”可包括计算机可执行指令、代码等。

现在参见服务器1200的其它例示性部件,一个或多个输入/输出(i/o)接口1206可促进设备1000接收来自一个或多个i/o设备的输入信息以及从服务器1200到一个或多个i/o设备的输出信息。i/o设备可包括多种部件中的任一种,诸如具有触摸表面或触摸屏的显示器或显示屏;用于产生声音的音频输出设备,诸如扬声器;音频捕捉设备,诸如麦克风;图像和/或视频捕捉设备,诸如相机;触觉装置等等。这些部件中的任一种可集成到服务器1200中或者可以为单独的。i/o设备还可包括例如任何数量的外围设备诸如数据存储器设备、打印设备等等。

i/o接口1206还可包括用于外部外围设备连接的接口,诸如通用串行总线(usb)、firewire、thunderbolt、以太网端口或其它可连接到一个或多个网络的连接协议。i/o接口1206还可包括与一个或多个天线的连接,以经由无线局域网(wlan)(诸如wi-fi)无线电、蓝牙和/或无线网络无线电(诸如能够与无线通信网络诸如长期演进(lte)网络、wimax网络、3g网络等进行通信的无线电)连接至一个或多个网络。

服务器1200还可包括一个或多个网络接口1208,服务器1200可通过所述一个或多个网络接口与多种其它系统、平台、网络、设备等等进行通信。此类通信可以通过一种或多种网络来进行,所述网络包括但不限于任何一种或多种不同类型的通信网络,例如有线网络、公共网络(例如,因特网)、专用网络(例如,帧中继网络)、无线网络、蜂窝网络、电话网络(例如,公共交换电话网络)或任何其它合适的专用或公用分组交换或电路交换网络。另外,此类网络可具有与其相关联的任何合适的通信范围,并且可以包括例如全球网络(例如,因特网)、城域网(man)、广域网(wan)、局域网(lan)或个人局域网(pan)。另外,此类网络可包括用于通过任何合适的类型的介质传输网络业务的通信链路及相关网络设备(例如,链路层交换机、路由器等),所述介质包括但不限于同轴电缆、双绞线(例如,双绞铜线)、光纤、混合光纤同轴(hfc)介质、微波介质、射频通信介质、卫星通信介质或它们的任何组合。

应当认识到,图12中示出的存储于数据存储器1210中的程序模块、应用程序、计算机可执行指令、代码等仅为例示性的而非穷举性的,描述为由任何特定模块支持的处理均可另选地分布在多个模块中或由不同的模块执行。另外,可提供各种应用程序接口模块、脚本、插件、应用编程接口(api)或本地托管于服务器1200上和/或托管于可通过一个或多个网络访问的其它计算设备上的任何其它合适的计算机可执行代码,以支持由图12中所示的程序模块、应用程序或计算机可执行代码提供的功能和/或附加或另外的功能。另外,功能可采用不同方式模块化,使得被描述为由图12中所示的程序模块的集合共同支持的处理可以由更少或更多数量的模块执行,或者可以至少部分地由另一个模块支持被描述为由任何特定模块支持的功能。另外,支持本文所述的功能的程序模块可以根据任何合适的计算模型(诸如,客户端-服务器模型、对等模型等等)形成可在任意数量的系统或设备上执行的一种或多种应用程序的一部分。另外,被描述为由图12中所示的任意程序模块支持的任何功能可至少部分地在任意数量的设备上的硬件和/或固件中实现。

还应当认识到,在不脱离本公开的范围的情况下,服务器1200可包括所描述或示出的那些硬件、软件或固件组件之外的另选的和/或另外的硬件、软件或固件组件。更具体地,应当认识到,被示出为形成服务器1200的一部分的软件、固件或硬件组件仅为例示性的,并且在各种实施方案中,其中一些组件可以不存在或可以提供另外的组件。虽然各种例示性程序模块已被示出或描述为存储于数据存储器1210中的软件模块,但是应当认识到,被描述为由程序模块支持的功能可以由硬件、软件或固件的任何组合实现。还应当认识到,在各种实施方案中,上述模块中的每个模块表示所支持的功能的逻辑划分。该逻辑划分是为了便于解释功能而示出的,可能并不表示用于实现功能的软件、硬件和/或固件的结构。因此,应当认识到,在各种实施方案中,被描述为由特定模块提供的功能可至少部分地由一种或多种其它模块提供。另外,在某些实施方案中,可以不存在一种或多种所示出的模块,而在其它实施方案中,可以存在未示出的附加模块,并且可支持所述的功能和/或附加功能中的至少一部分。此外,虽然某些模块可以被示出并且描述为另一个模块的子模块,但是在某些实施方案中,此类模块可以提供为独立模块或作为其它模块的子模块。

方法600-700中的一个或多个操作可以由服务器1200的一个或多个组件来执行,或更具体地,由此类服务器1200上运行的一个或多个程序模块来执行。然而,应当认识到,方法600-700中的任何操作可以至少部分地以分布式方式由一个或多个其它设备或系统来执行,或更具体地,由此类设备上运行的一个或多个程序模块、应用程序等来执行。另外,应当认识到,响应于作为应用程序、程序模块等的一部分而提供的计算机可执行指令的执行而执行的处理在本文中可互换地被描述为由应用程序或程序模块本身执行或由其上执行应用程序、程序模块等的设备执行。虽然600-700方法中的任一项的操作可以在例示性服务器1200的上下文中进行描述,但是应当认识到,此类操作可以结合许多其它系统配置来实现。

在图6-7的例示性方法中描述和示出的操作可按照本公开的各种示例性实施方案中所期望的任何合适的顺序来进行或执行。另外,在某些示例性实施方案中,至少一部分操作可以并行进行。另外,在某些示例性实施方案中,可执行少于、多于或不同于如图6-7所示的那些操作。

尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文所述的例示性具体实施和架构的许多其它修改也处于本公开的范围内。

上文参考根据示例性实施方案所述的系统、方法、装置和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。

因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机系统或者专用硬件和计算机指令的组合来实现。

本文所述的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,所述计算机可执行指令响应于执行而使本文所述的功能的至少一部分(例如,本文所述的例示性方法的一种或多种操作)被执行。

软件组件可以用各种编程语言中的任一种来编码。一种例示性编程语言可以为低级编程语言,诸如与特定硬件体系结构和/或操作系统平台相关联的汇编语言。包括汇编语言指令的软件组件可能需要在由硬件架构和/或平台执行之前由汇编程序转换为可执行的机器代码。

另一种示例性编程语言可以为更高级的编程语言,其可以跨多种架构移植。包括更高级编程语言的软件组件在执行之前可能需要由解释器或编译器转换为中间表示。

编程语言的其它示例包括但不限于宏语言、外壳或命令语言、作业控制语言、脚本语言、数据库查询或搜索语言、或报告编写语言。在一个或多个示例性实施方案中,包含上述编程语言示例中的一者的指令的软件组件可直接由操作系统或其它软件组件执行,而无需首先转换成另一种形式。

软件组件可存储为文件或其它数据存储构造。具有相似类型或相关功能的软件组件可一起存储在诸如特定的目录、文件夹或库中。软件组件可为静态的(例如,预设的或固定的)或动态的(例如,在执行时创建或修改的)。

软件组件可通过各种机制调用其它软件组件或被其它软件组件调用。被调用或调用的软件组件可包括其它定制开发的应用软件、操作系统功能(例如,设备驱动程序、数据存储器(例如,文件管理)例程、其它常用例程和服务等)或第三方软件组件(例如,中间件、加密或其它安全软件、数据库管理软件、文件传输或其它网络通信软件、数学或统计软件、图像处理软件和格式转换软件)。

与特定解决方案或系统相关联的软件组件可驻留在单个平台上并且在单个平台上执行,或者可以跨多个平台分布。所述多个平台可与多于一家硬件供应商、底层芯片技术或操作系统相关联。此外,与特定解决方案或系统相关联的软件组件最初可以用一种或多种编程语言编写,但是可以调用由另一种编程语言编写的软件组件。

计算机可执行程序指令可以被加载到专用计算机或其它特定机器、处理器或其它可编程数据处理装置上以得到特定的机器,使得在计算机、处理器或其它可编程数据处理装置上执行指令,从而执行流程图中指定的一种或多种功能或操作。那些计算机程序指令也可存储在计算机可读存储介质(crsm)中,该计算机可读存储介质在执行时可指示计算机或其它可编程数据处理装置以特定的方式运行,使得存储在计算机可读存储介质中的指令产生包括实现流程图中指定的一种或多种功能或操作的指令手段的制品。计算机程序指令也可以被加载到计算机或其它可编程数据处理装置上,以使得在计算机或其它可编程数据处理装置上执行一系列运算元素或步骤以产生由计算机实现的处理。

可存在于本文所述的任意设备中的其它类型的crsm可包括但不限于:可编程随机存取存储器(pram)、sram、dram、ram、rom、电可擦除可编程只读存储器(eeprom)、闪存或其它存储器技术、光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其它光存储器、磁带盒、磁带、磁盘存储器或其它磁存储设备或任何其它可用于存储信息并可被访问的介质。上述介质的任意组合也包括在crsm的范围内。另选地,计算机可读通信介质(crcm)可包括计算机可读指令、程序模块或在数据信号诸如载波或其它传输手段内传输的其它数据。然而,如本文所述,crsm不包括crcm。

另外,尽管在语言上针对结构特征和/或方法步骤阐述了实施方案,但是应当理解,本公开不一定限于所述的具体特征或步骤。相反,本发明所公开的具体特征和步骤仅作为实现实施方案的示例性形式。除非另外特别说明,否则条件措词,诸如“能够”、“可”、“可能”或“可以”等在其所用的上下文中应当被理解为通常旨在表达某些实施方案可以包括而其它实施方案不包括某些特征、元素和/或步骤。因此,此类条件措辞通常并非旨在以任意方式暗示一个或多个实施方案所需的特征、元素和/或步骤,或者一个或多个实施方案必然包含在有无用户输入或提示的情况下决定这些特征、元素或步骤是否包括在任何特定实施方案中或将由任何特定实施方案执行的逻辑。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1