AAuto 언어와 AMPL 표 데이터 통신 인터페이스 및 AAuto 언어는 AMPL 코드 함수를 실행합니다
namespace ampl
readtbl=function(tblname){
var file=assert(..io.open(tblname++".tab","r"))
//
var str=file.read()
assert(str!=""," ")
var ss=..string.split(str,'\t ')
assert(ss[1]=="ampl.tab"," ampl ")
var nkey=tonumber(ss[2])
var ndata=tonumber(ss[3])
//
str=file.read()
var kdname=..string.split(str,'\t ')
//
var kdval={key={};data={}}
for i=1;nkey+ndata
if i<=nkey
kdval.key[kdname[i]]={}
else
kdval.data[kdname[i]]={}
str=file.read()
var pos=0
while(str!=null){
ss=..string.split(str,'\t ')
pos++
for i=1;nkey
kdval.key[kdname[i]][pos]=ss[i]
for i=nkey+1;nkey+ndata
kdval.data[kdname[i]][pos]=tonumber(ss[i])
str=file.read()
}
file.close()
return kdval
}
writetbl=function(tblname,kd){
if tblname==''
return null
if #kd%2!=0
return null
var nkey=0
for i=1;#kd;2{
if kd[i][#kd[i]]=='_'#
nkey++
else
break
}
var rownum
for i=2;#kd;2
if rownum==null
rownum=#kd[i]
elseif rownum!=#kd[i]
return null
if nkey==0
return null
var file=assert(..io.open(tblname++".tab","w"))
//
file.write("ampl.tab ",nkey," ",#kd/2-nkey)
//
file.write('
')
for i=1;#kd;2
if kd[i][#kd[i]]=='_'#
file.write(..string.sub(kd[i],1,#kd[i]-1),' ')
for i=1+2*nkey;#kd;2
file.write(kd[i],' ')
//
for j=1;rownum{
file.write('
')
for i=2;#kd;2
file.write(kd[i][j],' ')
}
file.write('
')
file.close()
}
runamplcode=function(modstr){
var str=..string.replace(modstr,'#.*?[
\r]','');
str=..string.replace(str,'[\r
]','');
str=..string.replace(str,'"','""')
outmod=assert(..io.exist("outmodstr.exe"),'outmodstr.exe ')
execute(outmod++' "'++str++'" | ampl')
}
예제 AAuto 코드:
import ampl
io.open()
x={}
ind={}
n=5000
for i=1;n{
x[i]=i
ind[i]=i
}
ampl.writetbl("ex1",{"i_";ind;"x";x})
modstr=/*
set S;
param x{S};
table ex1 IN: S<-[i], x;
read table ex1;
table ex2 OUT: {1..1}->[i],(sum{j in S}x[j])~re;
write table ex2;
*/
ampl.runamplcode(modstr)
re=ampl.readtbl("ex2")
io.print(re.data.re[1])
execute("pause")
io.close()
AMPL과 스피드 시스템을 설치하고outmodstr를 다운로드할 것을 요구합니다.exe는 빠른 프로젝트의 현재 디렉터리에 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.