我使用GLPK与朱莉娅,并使用由spencerlyon书面朱莉娅 - 发送GLPK.Prob到工人
sendto(2, lp = lp) #lp is type GLPK.Prob
然而methods,我似乎无法派遣工之间的类型GLPK.Prob。每当我试图发送一个类型GLPK.Prob,它就会被“发送”,并呼吁
remotecall_fetch(2, whos)
确认GLPK.Prob被罚
当我试图通过调用
解决出现的问题simplex(lp)
错误
GLPK.GLPKError("invalid GLPK.Prob")
出现。我知道GLPK.Prob心不是原来的无效GLPK.Prob,如果我决定明确构建在另一名工人,工人FX 2 GLPK.Prob类型,调用单纯运行就好
这是一个问题,因为GLPK.Prob是从一个自定义类型的矿产生成的,这是一个很重的方面
tl; dr是否可能有一些类型不能在工人之间正确发送?
更新
我现在看到,在调用
remotecall_fetch(2, simplex, lp)
将返回上面GLPK错误
而且我刚刚注意到,GLPK模块已经得到了一个名为
方法GLPK.copy_prob(GLPK.Prob, GLPK.Prob, Int)
但是deepcopy的(当然不要复制)不会工作拷贝GLPK.Prob
当实例
function create_lp()
lp = GLPK.Prob()
GLPK.set_prob_name(lp, "sample")
GLPK.term_out(GLPK.OFF)
GLPK.set_obj_dir(lp, GLPK.MAX)
GLPK.add_rows(lp, 3)
GLPK.set_row_bnds(lp,1,GLPK.UP,0,100)
GLPK.set_row_bnds(lp,2,GLPK.UP,0,600)
GLPK.set_row_bnds(lp,3,GLPK.UP,0,300)
GLPK.add_cols(lp, 3)
GLPK.set_col_bnds(lp,1,GLPK.LO,0,0)
GLPK.set_obj_coef(lp,1,10)
GLPK.set_col_bnds(lp,2,GLPK.LO,0,0)
GLPK.set_obj_coef(lp,2,6)
GLPK.set_col_bnds(lp,3,GLPK.LO,0,0)
GLPK.set_obj_coef(lp,3,4)
s = spzeros(3,3)
s[1,1] = 1
s[1,2] = 1
s[1,3] = 1
s[2,1] = 10
s[3,1] = 2
s[2,2] = 4
s[3,2] = 2
s[2,3] = 5
s[3,3] = 6
GLPK.load_matrix(lp, s)
return lp
end
这将返回一个LP :: GLPK.Prob()将返回733.33运行
时simplex(lp)
result = get_obj_val(lp)#returns 733.33
但是,这样做
addprocs(1)
remotecall_fetch(2, simplex, lp)
将导致在上面的错误
你能发布一个可重复的例子吗? –