![](/img/trans.png)
[英]ERROR: LoadError: MethodError: no method matching Array(::Type{Int8}, ::Int64, ::Int64, ::Int64)
[英]LoadError: MethodError: no method matching getname(::Int64)
我尝试运行以下代码块:
using JuMP
using CPLEX
function solveRMP(cust::Int64,
routes::Array{Float64,2},
routeCost::Array{Float64,1},
m::Int64)
cust_dep = cust+2;
rmp = Model(solver = CplexSolver())
# Add decistion variables
@variable(rmp, 0<=x[1:size(routes,2)])
#
# Add objective
@objective(rmp, Min, sum(routeCost[r]*x[r] for r=1:size(routes,2)))
# #####################
# ### Constraints
@constraint(rmp, cVisitCust[i=2:cust_dep-1], sum(routes[i,r]*x[r] for r=1:size(routes,2)) == 1)
@constraint(rmp, cMaxNrRoutes, sum(x[r] for r=1:size(routes,2)) <= m )
allConstraints = vcat(cVisitCust,cMaxNrRoutes)
writeLP(rmp, "myRMP.lp", genericnames=false);
solve(rmp)
duals = zeros(1,1)
append!(duals,getdual(allConstraints))
return getvalue(x), duals
end
我收到以下错误:
**LoadError: MethodError: no method matching getname(::Int64)
Closest candidates are:
getname(!Matched::Expr) at
(...) **
在变量x
的声明中,
@variable(rmp, 0<=x[1:size(routes,2)])
约束必须在变量名的右侧
@variable(rmp, x[1:size(routes,2)] >= 0)
否则,将0
解释为变量名,从而导致错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.