Matrix 从AMPL中的文本文件中提取数据而不添加索引

Matrix 从AMPL中的文本文件中提取数据而不添加索引,matrix,indexing,ampl,Matrix,Indexing,Ampl,我是AMPL的新手,我的文本文件中有矩阵形式的数据,我需要从中使用某些值。但是,我不知道如何直接使用矩阵,而不必手动向矩阵添加列和行索引。有办法解决这个问题吗 因此,我需要使用的数据看起来像这样,有数百行和数百列(还有更多类似的矩阵),我想将其用作索引I的参数,索引I用于行,索引j用于列 t=1 0.0 40.95 40.36 38.14 44.87 29.7 26.85 28.61 29.73 39.15 41.49 32.37 33.13 59.63 38.72 42.34 40.59 33

我是AMPL的新手,我的文本文件中有矩阵形式的数据,我需要从中使用某些值。但是,我不知道如何直接使用矩阵,而不必手动向矩阵添加列和行索引。有办法解决这个问题吗

因此,我需要使用的数据看起来像这样,有数百行和数百列(还有更多类似的矩阵),我想将其用作索引I的参数,索引I用于行,索引j用于列

t=1


0.0 40.95 40.36 38.14 44.87 29.7 26.85 28.61 29.73 39.15 41.49 32.37 33.13 59.63 38.72 42.34 40.59 33.77 44.69 38.14 33.45 47.27 38.93 56.43 44.74 35.38 58.27 31.57 55.76 35.83 51.01 59.39.11 30.91 58.24 52.83 42.65 32.25 41.13 41.88 46.94 30.72 46.6955.5 45.15 42.28 47.86 54.6 42.25 48.57 32.83 37.52 58.18 46.27 43.98 33.43 39.41 34.0 57.23 32.98 33.4 47.8 40.36 53.84 51.66 47.76 30.95 50.34…
我不知道有什么简单的方法可以做到这一点。最接近的可能是中给出的表格格式。这避免了需要为每个术语单独提供索引,但仍然需要显式地声明行和列索引

AMPL似乎对基于位置的输入格式没有太多作用,可能是因为它默认将索引集视为无序的,所以“第一行”等概念没有意义

如果您真的想在AMPL中实现这一点,您可能可以围绕以下几点展开工作:

  • 声明一个长度等于矩阵总大小的索引参数(例如,如果矩阵为10 x 100,则此参数的长度为1000)
  • 编辑“矩阵”数据文件的开头和结尾,将其转换为索引范围为1到n的单个索引参数的适当格式
  • 然后定义矩阵,如下所示:

    参数m{i in 1..nrows,j in 1..ncols}:=x[j+i*(ncols-1)]

(未测试,我不会保证我的行和列在那里是正确的!)

但您最好将输入文件编辑为标准AMPL矩阵格式之一。AMPL并不是专门为数据争用而设计的—您可以在必要时完成它,但如果您重复执行这类操作,那么使用通用语言(如Python)编写代码就不会那么麻烦了