簡體   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