繁体   English   中英

LoadError:MethodError:没有与getname(:: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM