我遇到了在Ruby中生成循环的问题,该循环将被推送到GAMS包含文件。对于所有i和j,i,它应该显示c(i,j)向量的每个元组。即
Parameter c(i,j) /
c('i1','j1')=[value];
c('i1','j2')=[value];
.
.
.
c('iI','jJ')=[value];
/
问题是,有三个实体可以从中获取数据,因此我很难确定仓库和客户之间的距离。到目前为止这是循环:
printf(f, "Parameter c(i,j) / \n")
@warehouses.each { |wh| printf(f, "c('i" + wh.id.to_s + "',") +
@clients.each { |cl| printf(f, "'j" + cl.id.to_s + "')=") +
@transquans.distance.to_s(@warehouses, @clients) + "; \n"
}
}
其背后的结构已上传here。
返回的错误信息如下:“nil:NilClass的未定义方法`距离”。
答案 0 :(得分:0)
现在已经解决了!
printf(f, "Parameter c(i,j) / \n")
@warehouses.each do |wh|
@clients.each do |cl|
transquan = Transquan.where(:warehouse_id => wh.id, :client_id => cl.id).first
if transquan.nil?
else
printf(f, "c('i" + wh.id.to_s + "' , 'j" + cl.id.to_s + "')=" + transquan.distance.to_s + ";\n")
end
end
end