在这期特别的文章中,我有一个被分割成方块的想象中的城市--基本上是一个覆盖城市的MxN方块网格。M和N可以比较大,所以我有超过40,000平方单元格的案例。
另外,我还有以下几个限制/问题:
目前,我试图忽略成本问题--顾客多意味着店铺大,成本高--但也许在某个时候,我也会考虑到这一点。问题是,我不知道我正在研究的问题的名字,也不知道它可能的算法解决方案:这能作为线性规划问题来解决吗?
我通常是用Python编写代码的,所以任何关于可能的算法方法和/或一些代码/库来解决这个问题的建议都将非常感谢。
提前谢谢你。
编辑:作为后续,我发现我可以把这个问题作为一个MINLP“无能力设施问题”来解决,但是我找到的所有信息都太复杂了:我不关心哪个顾客是由哪个商店服务的,我只关心一个商店是不是建在哪里。我有一个次要的方法--作为后期处理--将一个客户关联到最合适的商店。
一定有更简单的方法来处理这件事...
我认为这可以制定为一套涵盖问题环节。
你说:
在像我这样的情况下,我可以很容易地得到一个有数百万行和列的线性系统,用整数/二进制变量来求解,大约需要宇宙的年龄
---- 22 PARAMETER cloc customer locations
x y
cust1 35 75
cust2 169 84
cust3 111 18
cust4 61 163
cust5 59 102
...
cust497 196 148
cust498 115 136
cust499 63 101
cust500 92 87
下一步是为每个客户c确定可到达的允许位置(i、j)。我为此创建了一个大型稀疏布尔矩阵reach(c,I,j)
。我用了一条规则:如果曼哈顿距离是
|i-cloc(c,'x')|+|j-cloc(c,'y')| <= 10
那么(i,j)处的商店就可以为顾客C服务。我的数据看起来像:
(不存储0)。这个数据结构有106k个元素。
---- 47 VARIABLE numStores.L = 113 number of stores
---- 47 VARIABLE placeStore.L store locations
j1 j6 j7 j8 j9 j15 j16 j17 j18
i4 1
i18 1
i40 1
i70 1
i79 1
i80 1
i107 1
i118 1
i136 1
i157 1
i167 1
i193 1
+ j21 j23 j26 j28 j29 j31 j32 j36 j38
i10 1
i28 1
i54 1
i72 1
i96 1
i113 1
i147 1
i158 1
i179 1
i184 1
i198 1
+ j39 j44 j45 j46 j49 j50 j56 j58 j59
i5 1
i18 1
i39 1
i62 1
i85 1
i102 1
i104 1
i133 1
i166 1
i195 1
+ j62 j66 j67 j68 j69 j73 j74 j76 j80
i11 1
i16 1
i36 1
i61 1
i76 1
i105 1
i112 1
i117 1
i128 1
i146 1
i190 1
+ j82 j84 j85 j88 j90 j92 j95 j96 j97
i17 1
i26 1
i35 1
i48 1
i68 1
i79 1
i97 1
i136 1
i156 1
i170 1
i183 1
i191 1
+ j98 j102 j107 j111 j112 j114 j115 j116 j118
i4 1
i22 1
i36 1
i56 1
i63 1
i68 1
i88 1
i100 1
i101 1
i111 1
i129 1
i140 1
+ j119 j121 j126 j127 j132 j133 j134 j136 j139
i11 1
i30 1
i53 1
i72 1
i111 1
i129 1
i144 1
i159 1
i183 1
i191 1
+ j140 j147 j149 j150 j152 j153 j154 j156 j158
i14 1
i35 1
i48 1
i83 1
i98 1
i117 1
i158 1
i174 1
i194 1
+ j161 j162 j163 j164 j166 j170 j172 j174 j175
i5 1
i32 1
i42 1
i61 1
i69 1
i103 1
i143 1
i145 1
i158 1
i192 1
i198 1
+ j176 j178 j179 j180 j182 j183 j184 j188 j191
i6 1
i13 1
i23 1
i47 1
i61 1
i81 1
i93 1
i103 1
i125 1
i182 1
i193 1
+ j192 j193 j196
i73 1
i120 1
i138 1
i167 1
注意,宇宙的年龄是137亿年或4.3e17秒。所以我们实现了1E17左右的提速。这是我的纪录。
注意,这个html" target="_blank">模型没有找到商店的最佳位置,而只是一个配置,使为所有客户服务所需的商店数量最小化。在这个意义上它是最优的。但该解决方案不会最大限度地减少顾客和商店之间的距离。
我有一个清单,上面有我想买的n个项目。(每项不同) 我的解决方案1我使用暴力DFS和记忆。这给出了最优解,但具有昂贵的复杂性(O(N!))不符合我的要求。(k和n有时可达300) 我的解决方案2我使用了一个贪婪的解决方案,在这个解决方案中,我会访问在我的清单上提供最大数量商品的商店。购买项目,并从列表中删除所有这些项目。我重复这个,除非我的购物清单不是空的。(所需物品均不买) 虽然解决方案2运行得
我运行jmeter脚本将近一周,今天观察到一件有趣的事情。以下是场景: 概述:我正在逐渐增加应用程序的负载。在上一次测试中,我给应用程序加载了100个用户,今天我将加载增加到150个用户。 150名用户测试结果: > 与上次测试相比,请求的响应时间减少了。(这是个好兆头) 吞吐量急剧下降到上一次测试的一半,负载更少。 我的问题是: > 当我的许多请求失败时,我得到了好的响应时间吗? 注:直到100
本文向大家介绍要减少DOM的数量有什么办法吗?相关面试题,主要包含被问及要减少DOM的数量有什么办法吗?时的应答技巧和注意事项,需要的朋友参考一下 类似长列表的话可以只渲染可视区域的DOM元素(比如10个),上面用空的DIV或者padding撑开 阴影效果、清除浮动等的使用伪元素 操作列表等大量的DOM元素,可以创建文档片段节点(Fragment)作为父节点,然后将操作DOM元素移步到Fragme
本文向大家介绍magento 获取所有Magento商店,包括了magento 获取所有Magento商店的使用技巧和注意事项,需要的朋友参考一下 示例 返回Mage_Core_Model_Store模型数组。
减少图层数量 初始化图层,处理图层,打包通过IPC发给渲染引擎,转化成OpenGL几何图形,这些是一个图层的大致资源开销。事实上,一次性能够在屏幕上显示的最大图层数量也是有限的。 确切的限制数量取决于iOS设备,图层类型,图层内容和属性等。但是总得说来可以容纳上百或上千个,下面我们将演示即使图层本身并没有做什么也会遇到的性能问题。 裁切 在对图层做任何优化之前,你需要确定你
本文向大家介绍为什么C ++程序员应尽量减少对“新”的使用?,包括了为什么C ++程序员应尽量减少对“新”的使用?的使用技巧和注意事项,需要的朋友参考一下 new用于动态内存分配。在这种情况下分配的内存在堆上。与这种类型的内存分配相关联的一些成本以及程序员必须进行手动的内存清理和管理。在以下情况下必须使用这种分配类型: 您不知道在编译时需要多少内存。 您想要分配在离开当前块后仍将保留的内存。 除