循环三个实体的算法

时间:2012-02-09 19:00:31

标签: ruby loops

我遇到了在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的未定义方法`距离”。

1 个答案:

答案 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