当前位置: 首页 > 知识库问答 >
问题:

设施选址--在距离约束下最小化为客户服务的设施的算法

严兴旺
2023-03-14

例如,我有1000个客户位于欧洲不同的纬度和经度。我想找到能够为所有客户服务的最小设施数量,以必须在24小时送达内为每个客户提供服务为约束条件(这里我使用一个从设施到客户的最大允许运输距离作为确保24小时送达服务的约束条件(距离是两个地点之间的直线,基于欧几里德距离/直线计算)。

那么,每个仓库只能为一定距离(例如600公里)内的客户提供服务,有什么算法可以帮助我找到为所有客户提供服务所需的最小设备数量,以及它们各自的经纬度。下面附上的一张图片显示了一个例子。

查找最小仓库及其位置的示例

共有1个答案

邢同
2023-03-14

这属于设施选址问题的范畴。关于这些问题有相当丰富的文献。P中心问题接近你想要的。

一些注意事项:

  1. 除了求解一个形式化的数学html" target="_blank">优化模型外,还经常使用启发式(和元启发式)。
  2. 这些距离是真实旅行时间的粗略近似。这也意味着近似解可能足够好。
  3. 除了找到为所有客户提供服务所需的最少设施数量外,我们还可以通过最小化距离来优化位置。
  4. 将纯“最小化设施数”的数学规划模型表述为一个混合整数二次约束问题(MIQCP)。这可以用标准求解器(例如Cplex和Gurobi)来解决。下面是我拼凑的一个示例:
    ----     57 VARIABLE n.L                   =        4.000  number of open facilties

    ----     57 VARIABLE isopen.L  use facility

    facility1 1.000,    facility2 1.000,    facility3 1.000,    facility4 1.000


    ----     60 PARAMETER locations  

                        x           y

    facility1      26.707      31.796
    facility2      68.739      68.980
    facility3      28.044      67.880
    facility4      76.921      34.929

基本上我们解决了两个模型:

  1. 模型1查找所需仓库的数量(在最大距离约束下最小化数量)
  2. 模型2找到仓库的最优位置(最小化总距离)

这两个模型都属于凸混合整数二次约束问题类型(MIQCP)。我使用了一个现成的求解器来求解这些模型。

 类似资料:
  • Rest is not idleness, and to lie sometimes on the grass under trees on a summer’s day, listening to the murmur of the water, or watching the clouds float across the sky, is by no means a waste of time

  • 最近设施分析是指在网络上给定一个事件点和一组设施点,为事件点查找以最小耗费能到达的一个或几个设施点,结果显示从事件点到设施点(或从设施点到事件点)的最佳路径,耗费,及行驶方向。例如事件发生点是一起交通事故,要求查找在10分钟内能到达的最近医院,超过10分钟能到达的都不予考虑。此例中,事故发生地即是一个事件点,周边的医院则是设施点。最近设施查找实际上也是一种路径分析,因此,同样可以应用障碍边和障碍点

  • 问题内容: 我没有找到关于如何注册一个将接口实现为Windows服务的类的非常好的示例(实际上我没有找到一个示例)。 我是否必须使用procrun注册该实现?但是实现该接口似乎没有意义,因为procrun可以将任何程序注册为Windows服务。 此外,procrun页面(http://commons.apache.org/proper/commons- daemon/procrun.html )上

  • 设施是扩展容器的主要方式。使用设施可以将外部框架与容器集成,比如 WCF 或 NHibernate,为容器添加新的功能,比如事件连接(event wiring),事务支持(transaction support)……,或为组件(synchronization, startable semantics...)。 如何使用设施 在使用设施前需要将其注册到容器,通过代码(如下所示)或者XML 配置。作为

  • tape(测试断言) https://github.com/shadow-node/tape istanbul(代码覆盖率) 安装 nyc 包 npm 工具下拉对应的包,目前 runtime 已经添加 nyc 工具包的依赖,直接 npm install 即可。 准备工作 初始化函数,目的是为了准备覆盖率统计环境:确保当前代码是最新;清除上次可能构建遗留的历史数据; init() { echo

  • 我有一个多边形类型的几何体,我正在计算一个点的最小距离可能在多边形几何体内部(由360个点组成,作为闭合几何体)或多边形几何体外部。使用postgis的ST_distance方法,当点在几何体外部时,我得到精确的距离,但如果点在几何体内部,则得到0作为距离,我想要与多边形几何体最近点的点之间的最小距离,无论该点位于几何体内部还是外部。