在google上做了大量的搜索之后,我无法在python中找到任何传输算法求解者。我希望能在西西找到一些没有用的东西。有人能引导我找到正确的消息来源吗?
我知道一些策展人会问我这个代码,或者说这不是一个合适的地方。那样的话,请别忘了带我去正确的地方。
我的问题是:
Max(Sum_{i,j}( Cij*Xij) )
x11 + x12 + x13 = D1
X21 + X22 + x23 = D2
X11<10
X23 <100我通常有10万个接收器(创建需求)和大约1000个源(提供需求)。
发布于 2015-07-27 21:48:55
我将使用线性规划技术,并借助纸浆,一种python线性规划API。与纸浆一起分发的默认解决程序是cbc (您可以切换到商业解决程序)。
我只是提出一些代码,适合您的问题/问题描述(一个“玩具问题”)。纸浆的github存储库中有一些示例。
# Import PuLP modeler functions
from pulp import *
# INSTANCE
EDGES = [ (0,10), (0,20), (0,50), (0,30), (0,10), (0,40) ] # lower/upper flow
COSTS = [0.3, 0.7, 0.2, 0.6, 0.2, 0.5]
D1, D2 = [24, 10]
# MODEL
prob = LpProblem("Problem",LpMaximize)
# VARS
x11, x12, x13 = LpVariable("x11", *EDGES[0]), LpVariable("x12", *EDGES[1]), LpVariable("x13", *EDGES[2])
x21, x22, x23 = LpVariable("x21", *EDGES[3]), LpVariable("x22", *EDGES[4]), LpVariable("x23", *EDGES[5])
# OBJECTIVE FUNCTION -> added before constraints => important ,
prob += lpDot(COSTS, [x11,x12,x13,x21,x22,x23]), "Costs"
# CONSTRAINTS
prob += x11 + x12 + x13 == D1
prob += x21 + x22 + x23 == D2
# SOLVE
status = prob.solve()
# PRINT SOLUTION
print LpStatus[status]
for var in [x11,x12,x13]:
print value(var)
print
for var in [x21,x22,x23]:
print value(var)
print("Total Costs = ", value(prob.objective))输出:
Optimal
4.0
20.0
0.0
10.0
0.0
0.0
('Total Costs = ', 21.2)https://stackoverflow.com/questions/31657837
复制相似问题