使用Python和dask进行优化
我正在编写一个使用gurobipy开发的代码,目标是将Dask包集成到其中。目的是在更大的随机生成的数据集上运行代码 下面是代码,我来到的壁橱就是这个代码下面的代码。我在努力完成它。我不知道如何以及在哪里输入Dask包使用Python和dask进行优化,python,Python,我正在编写一个使用gurobipy开发的代码,目标是将Dask包集成到其中。目的是在更大的随机生成的数据集上运行代码 下面是代码,我来到的壁橱就是这个代码下面的代码。我在努力完成它。我不知道如何以及在哪里输入Dask包 import numpy as np import gurobipy as gbp import time import dask.array as da def GuTransProb(): t1 = time.time() Demand # 10
import numpy as np
import gurobipy as gbp
import time
import dask.array as da
def GuTransProb():
t1 = time.time()
Demand
# 1000x1000
Cij = np.random.randint(100, 1000, 250000)
Cij = Cij.reshape(500,500)
print Cij
# Supply
Si = np.random.randint(500, 2000, 500)
Si = Si.reshape(500,1)
SiSum = np.sum(Si)
print SiSum
# Demand
Dj = np.sort(Si, axis=None)
DjSum = np.sum(Dj)
client_nodes = range(len(Cij))
print client_nodes
# 2. Create Model, Set MIP Focus, Add Variables, & Update Model
m = gbp.Model(' -- The Transportation Problem -- ')
# Set MIP Focus to 2 for optimality
gbp.setParam('MIPFocus', 2)
client_var = []
for orig in client_nodes:
client_var.append([])
for dest in client_nodes:
client_var[orig].append(m.addVar(vtype=gbp.GRB.CONTINUOUS,
obj=Cij[orig][dest],
name='x'+str(orig+1)+'_'+str(dest+1)))
print client_var
# Update Model Variables
m.update()
# 3. Set Objective Function
m.setObjective(gbp.quicksum(Cij[orig][dest]*client_var[orig][dest]
for orig in client_nodes for dest in client_nodes),
gbp.GRB.MINIMIZE)
# 4. Add Constraints
# Add Supply Constraints
for orig in client_nodes:
m.addConstr(gbp.quicksum(client_var[dest][orig]
for dest in client_nodes) - Si[orig] == 0,
'Supply_Constraint_%d' % orig)
# Add Demand Constraints
for orig in client_nodes:
m.addConstr(gbp.quicksum(client_var[orig][dest]
for dest in client_nodes) - Dj[orig] == 0,
'Demand_Constraint_%d' % orig)
# 5. Optimize and Print Results
try:
m.optimize()
except Exception as e:
print e
t2 = time.time()-t1
print '*****************************************************************************************'
print ' | From SUPPLY Facility to DEMAND Facility x(Si)_(Dj) shipping # of units '
print ' | ↓ ↓ ↓↓ ↓↓'
selected = []
for v in m.getVars():
if v.x > 0:
var = '%s' % v.VarName
value = '%i' % v.x
selected.append(v.x)
print ' | ', var, '_____ Units: ' ,value
print ' | Selected Facility Locations --------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ '
print ' | Candidate Facilities [p] ------------ ', len(selected)
print ' | Supply Sum -------------------------- ', SiSum
print ' | Demand Sum -------------------------- ', DjSum
val = m.objVal
print ' | Objective Value --------------------- ', int(val)
print ' | Real Time to Optimize (sec.) -------- ', t2
print '*****************************************************************************************'
print ' -- The Transportation Problem --'
m.write('path.lp')
try:
GuTransProb()
except Exception as e:
print e
#500x500 Cij=np.random.randint(1001000250000) 打印Cij Cij=Cij.整形(500500) 打印Cij Cij=da.from_数组(Cij,chunks=(10001000)) 打印Cij
# Supply
#Si = np.random.randint(500, 2000, 500)
#Si = Si.reshape(500,1)
#Si = da.from_array(Si, chunks=(100, 100))
Si = np.random.randint(500, 2000, 500)
print Si
Si = Si.reshape(500,1)
print Si
Si = da.from_array(Si, chunks=(1000, 1000))
print Si
SiSum = Si.sum()
print SiSum
# Demand
Dj = np.sort(Si, axis=None)
print Dj
DjSum = np.sum(Dj)
print DjSum
client_nodes = range(len(Cij))
print client_nodes
# 2. Create Model, Set MIP Focus, Add Variables, & Update Model
m = gbp.Model(' -- The Transportation Problem -- ')
# Set MIP Focus to 2 for optimality
gbp.setParam('MIPFocus', 2)
client_var = []
for orig in client_nodes:
client_var.append([])
for dest in client_nodes:
client_var[orig].append(m.addVar(vtype=gbp.GRB.CONTINUOUS,
obj=Cij[orig][dest],
name='x'+str(orig+1)+'_'+str(dest+1)))
print client_var
# Update Model Variables
m.update()
# 3. Set Objective Function
m.setObjective(gbp.quicksum(Cij[orig][dest]*client_var[orig][dest]
for orig in client_nodes for dest in client_nodes),
gbp.GRB.MINIMIZE)
# 4. Add Constraints
# Add Supply Constraints
for orig in client_nodes:
m.addConstr(gbp.quicksum(client_var[dest][orig]
for dest in client_nodes) - Si[orig] == 0,
'Supply_Constraint_%d' % orig)
# Add Demand Constraints
for orig in client_nodes:
m.addConstr(gbp.quicksum(client_var[orig][dest]
for dest in client_nodes) - Dj[orig] == 0,
'Demand_Constraint_%d' % orig)
# 5. Optimize and Print Results
try:
m.optimize()
except Exception as e:
print e
t2 = time.time()-t1
print '*****************************************************************************************'
print ' | From SUPPLY Facility to DEMAND Facility x(Si)_(Dj) shipping # of units '
print ' | ↓ ↓ ↓↓ ↓↓'
selected = []
for v in m.getVars():
if v.x > 0:
var = '%s' % v.VarName
value = '%i' % v.x
selected.append(v.x)
print ' | ', var, '_____ Units: ' ,value
print ' | Selected Facility Locations --------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ '
print ' | Candidate Facilities [p] ------------ ', len(selected)
print ' | Supply Sum -------------------------- ', SiSum
print ' | Demand Sum -------------------------- ', DjSum
val = m.objVal
print ' | Objective Value --------------------- ', int(val)
print ' | Real Time to Optimize (sec.) -------- ', t2
print '*****************************************************************************************'
print ' -- The Transportation Problem --'
m.write('path.lp')
尝试:
古特普罗布()
例外情况除外,如e:
打印e我想你没有添加代码耶…添加一些代码伙伴。我已经添加了代码。非常感谢!你想达到什么目标?预期的输出是什么?我正在尝试将dask包集成到原始python代码中。有了这个,我将能够在更大的数据上运行代码,而不会耗尽内存。
# Supply
#Si = np.random.randint(500, 2000, 500)
#Si = Si.reshape(500,1)
#Si = da.from_array(Si, chunks=(100, 100))
Si = np.random.randint(500, 2000, 500)
print Si
Si = Si.reshape(500,1)
print Si
Si = da.from_array(Si, chunks=(1000, 1000))
print Si
SiSum = Si.sum()
print SiSum
# Demand
Dj = np.sort(Si, axis=None)
print Dj
DjSum = np.sum(Dj)
print DjSum
client_nodes = range(len(Cij))
print client_nodes
# 2. Create Model, Set MIP Focus, Add Variables, & Update Model
m = gbp.Model(' -- The Transportation Problem -- ')
# Set MIP Focus to 2 for optimality
gbp.setParam('MIPFocus', 2)
client_var = []
for orig in client_nodes:
client_var.append([])
for dest in client_nodes:
client_var[orig].append(m.addVar(vtype=gbp.GRB.CONTINUOUS,
obj=Cij[orig][dest],
name='x'+str(orig+1)+'_'+str(dest+1)))
print client_var
# Update Model Variables
m.update()
# 3. Set Objective Function
m.setObjective(gbp.quicksum(Cij[orig][dest]*client_var[orig][dest]
for orig in client_nodes for dest in client_nodes),
gbp.GRB.MINIMIZE)
# 4. Add Constraints
# Add Supply Constraints
for orig in client_nodes:
m.addConstr(gbp.quicksum(client_var[dest][orig]
for dest in client_nodes) - Si[orig] == 0,
'Supply_Constraint_%d' % orig)
# Add Demand Constraints
for orig in client_nodes:
m.addConstr(gbp.quicksum(client_var[orig][dest]
for dest in client_nodes) - Dj[orig] == 0,
'Demand_Constraint_%d' % orig)
# 5. Optimize and Print Results
try:
m.optimize()
except Exception as e:
print e
t2 = time.time()-t1
print '*****************************************************************************************'
print ' | From SUPPLY Facility to DEMAND Facility x(Si)_(Dj) shipping # of units '
print ' | ↓ ↓ ↓↓ ↓↓'
selected = []
for v in m.getVars():
if v.x > 0:
var = '%s' % v.VarName
value = '%i' % v.x
selected.append(v.x)
print ' | ', var, '_____ Units: ' ,value
print ' | Selected Facility Locations --------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ '
print ' | Candidate Facilities [p] ------------ ', len(selected)
print ' | Supply Sum -------------------------- ', SiSum
print ' | Demand Sum -------------------------- ', DjSum
val = m.objVal
print ' | Objective Value --------------------- ', int(val)
print ' | Real Time to Optimize (sec.) -------- ', t2
print '*****************************************************************************************'
print ' -- The Transportation Problem --'
m.write('path.lp')