想把一个1000行,100列的数据(路径为D:\C.xslx)导入lingo中,并将其定义为aij的形式.目标函数是每一行的累加和最小,约束条件是每一列的累加和求各位大神用lingo语言编一下.谢谢,急用!
可以用@ole导入 具体自己看教程 或者你不用@ole 直接把数据从excel里面复制出来放到data段也行
教你个导入方法:model:sets:var1/1..6/;var2/1..4/;link(var1,var2):q,w;endsetsdata:q=1 2 1 7 3 6 1 6 8 0 1 8 7 0 5 4 9 3 9 10 10 7 8 9;w=80 90 90 85 88 88 88 80 86 75 89 89 89 82 81 87 81 75 83 88 82 82 90 90;enddataend
下面我以一个实例来教大家如何调用,比如要调用下面这个excel表格.首先打开lingo.lingo调用excel表格需要用到一个专用的函数@ole,改函数的调用模式是:name=@ole('路径','name'),其中的路径是调用的文件的存储的地址,这个
比如导数一个矩阵,把矩阵赋值给data1,则先把excel中的数据选中,选择“插入|名称|定义”,然后输入定义名称data1,然后把excel保存为shuju.xls,保存在D盘.在lingo界面输入data1=@OLE('D:\shuju.xls',data1);就可以了
变量名=@OLE('文件名','数据块名')
excel里面定义区域 然后用@ole函数就可以 大部分教程都有详细介绍
当然能 这个在lingo里面相当于一个派生集 最好能找个教程看一下比如sets:s1/1..10/;s2/1..12/;link(s1,s2):a;endsets这里面link就是一个10*12的集 a就是其中的一个变量 可以在data段里面给a赋值
用@ole函数 a=@ole(\'路径\', 区域);区域本身在excel里面先定义好
Lingo不像matlab处理矩阵的,所以那些小数据还是直接复制上去好.如果要导入就:把数据放到 excel 中然后用@ole读出来,用法x=@OLE('D:/cost.xls',f) 基中前面的x是你想要得到值的表达式,后面'D:/cost.xls'是你要读的数据所在的文件,f比较难理解,它是你在要读的文件中做的标记,在你要读的文件中主要是EXECEL中选中要读的数据选中后释放鼠标按钮,选择“插入|名称|定义”,输入f,输入的f一定要和程序中'D:/cost.xls'后面的f一样,不然它就认不出来了.