简单的问题!
我有4种产品的订单 P1,P2,P3,P4,我有3个供应商S1,S2,S3,每个供应商为每种产品提供一个价格,供应商之间有距离,每个供应商可能有0到4个我的产品。
Product1 Product2 Product3 Product4
供应商1....... 12$ ................. 18$ ............. 22$ .............10$ .............. 运费 40元
供应商2....... 12$ ................. 16$ ............ 19$ ............. 15$ .............. 运费20元
供应商3....... 11$ ................. 20$ ............ 20$ .............. 20$ .............. 运费 30元
如何才能以最低的价格买到这种产品,并减少旅行次数.我发现总的状态是供应商^产品,在我的简单案例中,3^4=81个状态发生了。
P1S1,P2S1,P3S1,P4S1=62元。
P1S1,P2S1,P3S1,P4S2=67元。
...
.所有可能性的清单
...
供应商之间有运输成本.我的卡车在我的公司.卡车必须知道去哪里(哪个供应商).以及在每个供应商必须采取什么产品。
所以我们必须找到 哪些供应商 必须满足和 什么产品 (更低的价格)必须从该供应商那里得到。
所以81个状态,每个状态都有价格.如果我有10个产品和10个供应商,我将有10^10=10,000,000,000个状态,它需要至少20GB的内存和lang时间来创建这个矩阵。在c#中
首先,我创建所有的国家,然后找到其中的最佳价格。这种方法需要千兆字节的内存和大量的CPU使用和小时的计算是否有一个更好的方法(最佳算法我的目标是找到我的卡车必须满足的供应商名单,以及哪些产品必须从每个供应商,也有供应商之间的运输成本。
最好的价格,更少的行程。
我的应用程序最终必须给我一些东西,如。
P1S1,P2S1,P3S2,P4S2=62$。
这意味着卡车必须去供应商S1拿p1,p2产品,然后去供应商S2拿p3 & p4,因为这是基于价格和行程数的最佳方式。
之后,我可以优化我的C#代码,或者改用GPU进行计算。