설명
기고자: Lutz Westermann, 2017년 9월
소형 모델 유형 :슬롯 커뮤니티
카테고리 : 슬롯 커뮤니티 테스트 라이브러리
메인 파일 : embpy03.gms
$title '임베디드 코드에서 데이터를 로드할 때 투영 연산자 테스트' (EMBPY03,SEQ=739)
$onText
기고자: Lutz Westermann, 2017년 9월
$offText
$log --- Python 라이브러리 %sysEnv.GMSPYTHONLIB% 사용
매개변수 ud1dataUniverse;
d1Want / i1 / 설정
d2원함 / j1, j2 /
d3원하다 / k1, k3 /
ud1d1, ud1d2, ud1d3;
$macro checkIfAinB(a,b,Error) 오류 설정; 오류(a) = b(a)가 아님; 중단$카드(오류) 오류;
* 매개변수 자체가 아닌 매개변수의 지정된 치수에서 세트 요소를 가져옵니다.
$offECImplicitLoad
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('ud1dataUniverse', 데이터)
$offEmbeddedCode ud1d1<ud1dataUniverse.dim1 ud1d2<ud1dataUniverse.dim2 ud1d3<ud1dataUniverse.dim3
checkIfAinB(ud1d1,d1Want,ud1Error1a)
checkIfAinB(ud1d2,d2Want,ud1Error2a)
checkIfAinB(ud1d3,d3Want,ud1Error3a)
checkIfAinB(d1Want,ud1d1,ud1Error1b)
checkIfAinB(d2Want,ud1d2,ud1Error2b)
checkIfAinB(d3Want,ud1d3,ud1Error3b)
$if 정의된 ud1dataUniverse $abort ud1dataUniverse의 데이터가 로드되지 않을 것으로 예상됩니다.
$if errorFree $abbor 이전 컴파일 오류
$if 차원 20 ud1dataUniverse $log 우리는 ud1dataUniverse의 차원에 액세스할 수 없어 이 줄이 컴파일 오류를 유발합니다.
$if errorFree $abort ud1dataUniverse의 차원에 접근할 수 없어야 합니다.
$오류가 아닌 경우Free $clearErrors
$onECImplicitLoad
매개변수 ud2dataUniverse;
ud2d1, ud2d2, ud2d3을 설정하십시오.
* 암시적 로딩을 통해 매개변수의 지정된 치수와 매개변수 자체에서 세트 요소를 가져옵니다.
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('ud2dataUniverse', 데이터)
$offEmbeddedCode ud2d1<ud2dataUniverse.dim1 ud2d2<ud2dataUniverse.dim2 ud2d3<ud2dataUniverse.dim3
checkIfAinB(ud2d1,d1Want,ud2Error1a)
checkIfAinB(ud2d2,d2Want,ud2Error2a)
checkIfAinB(ud2d3,d3Want,ud2Error3a)
checkIfAinB(d1Want,ud2d1,ud2Error1b)
checkIfAinB(d2Want,ud2d2,ud2Error2b)
checkIfAinB(d3Want,ud2d3,ud2Error3b)
$ 정의되지 않은 경우 ud2dataUniverse $abort ud2dataUniverse의 데이터가 로드될 것으로 예상합니다.
$3차원이 아닌 경우 ud2dataUniverse $abort ud2dataUniverse의 차원은 3이 될 것으로 예상합니다.
매개변수 dataUniverse(*,*,*);
d1(*), d2(*), d3(*)을 설정합니다.
* 매개변수 자체가 아닌 매개변수의 지정된 치수에서 세트 요소를 가져옵니다.
$offECImplicitLoad
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('dataUniverse', 데이터)
$offEmbeddedCode d1<dataUniverse.dim1 d2<dataUniverse.dim2 d3<dataUniverse.dim3
checkIfAinB(d1,d1Want,Error1a)
checkIfAinB(d2,d2Want,Error2a)
checkIfAinB(d3,d3Want,Error3a)
checkIfAinB(d1Want,d1,Error1b)
checkIfAinB(d2Want,d2,Error2b)
checkIfAinB(d3Want,d3,Error3b)
$if 정의된 dataUniverse $abort dataUniverse의 데이터가 로드되지 않을 것으로 예상됩니다.
$onECImplicitLoad
$kill d1 d2 d3
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('dataUniverse', 데이터)
$offEmbeddedCode d1<dataUniverse.dim1 d2<dataUniverse.dim2 d3<dataUniverse.dim3
checkIfAinB(d1,d1Want,Error1a)
checkIfAinB(d2,d2Want,Error2a)
checkIfAinB(d3,d3Want,Error3a)
checkIfAinB(d1Want,d1,Error1b)
checkIfAinB(d2Want,d2,Error2b)
checkIfAinB(d3Want,d3,Error3b)
$ 정의되지 않은 경우 dataUniverse $abort dataUniverse의 데이터가 로드될 것으로 예상
e1(*), e2(*), e3(*)을 설정합니다.
매개변수 dataDomain(e1,e2,e3);
* 매개변수의 도메인 일치로 세트 요소 가져오기
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('dataDomain', 데이터)
$offEmbeddedCode e1<dataDomain e2<dataDomain e3<dataDomain
checkIfAinB(e1,d1Want,Error1c)
checkIfAinB(e2,d2Want,Error2c)
checkIfAinB(e3,d3Want,Error3c)
checkIfAinB(d1Want,e1,Error1d)
checkIfAinB(d2Want,e2,Error2d)
checkIfAinB(d3Want,e3,Error3d)
f1(*)을 설정합니다.
매개변수 데이터DomainF1(f1,f1,f1);
* 매개변수의 도메인 일치로 설정된 요소를 가져오고 왼쪽부터 검색을 시작합니다.
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('dataDomainF1', 데이터)
$offEmbeddedCode f1<=dataDomainF1
checkIfAinB(f1,d1Want,Error1e)
checkIfAinB(d1Want,f1,Error1f)
f2(*)를 설정합니다.
매개변수 dataDomainF2(f2,f2,f2);
* 매개변수의 도메인 일치로 설정된 요소를 가져오고 오른쪽부터 검색을 시작합니다.
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('dataDomainF2', 데이터)
$offEmbeddedCode f2<dataDomainF2
checkIfAinB(f2,d3Want,Error3e)
checkIfAinB(d3Want,f2,Error3f)
* 필터링된 데이터 로드 - 이 예에서는 GDX에 쓸 때 순서가 잘못된 UEL로 인해 일부 단계에서 오류가 발생합니다. #5016을 참조하세요.
코드 설정, labId, rr(code,labId);
매개변수 raw(*,*,*);
$onEmbeddedCode 파이썬:
슬롯 커뮤니티wsWorkingDir = '.'
cdb = 슬롯 커뮤니티ws.add_database_from_gdx('getdata.gdx')
cdb['raw'].copy_symbol(슬롯 커뮤니티db['raw'])
cdb['rr'].copy_symbol(슬롯 커뮤니티db['rr'])
$offEmbeddedCode 코드<raw.dim1 labId<raw.dim2 rr
Execute_unload 'dd.gdx' rr;
$if errorFree $abort 현재까지는 오류가 없을 것으로 예상됩니다.
* 다음 작업에서는 실패가 예상됩니다.
$onEcho > noDomMatch.gms
매개변수 dataUniverse(*,*,*);
d1(*), d2(*), d3(*)을 설정합니다.
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('dataUniverse', 데이터)
$offEmbeddedCode d1<dataUniverse d2<dataUniverse d3<dataUniverse
$offEcho
$call 게임 noDomMatch.gms lo=%슬롯 커뮤니티lo%
$errorlevel 1이 아닌 경우 $abort noDomMatch.gms에서 예상되는 오류
$onEcho > noParameter.gms
매개변수 dataUniverse(*,*,*);
매개변수 d1(*), d2(*), d3(*);
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('dataUniverse', 데이터)
$offEmbeddedCode d1<dataUniverse.dim1 d2<dataUniverse.dim2 d3<dataUniverse.dim3
$offEcho
$call 슬롯 커뮤니티 noParameter.gms lo=%슬롯 커뮤니티lo%
$if errorlevel 1 $abort noParameter.gms에서 예상되는 오류
$onEcho >잘못Dim.gms
매개변수 dataUniverse(*,*,*);
d1(*,*), d2(*,*,*), d3(*,*,*)를 설정합니다.
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('dataUniverse', 데이터)
$offEmbeddedCode d1<dataUniverse.dim1 d2<dataUniverse.dim2 d3<dataUniverse.dim3
$offEcho
$call gamswrongDim.gms lo=%슬롯 커뮤니티lo%
$errorlevel 1이 아닌 경우 $abortwrongDim.gms에서 예상되는 오류
$clearErrors
$onEcho >잘못Dim.gms
매개변수 dataUniverse;
d1, d2, d3을 설정합니다.
$offECImplicitLoad
$onEmbeddedCode 파이썬:
데이터 = [('i1', 'j1', 'k1', 11.9), ('i1', 'j2', 'k3', 9.11)]
슬롯 커뮤니티set('dataUniverse', 데이터)
$offEmbeddedCode d1<dataUniverse.dim1 d2<dataUniverse.dim2 d3<dataUniverse.dim7
$offEcho
$call gamswrongDim.gms lo=%슬롯 커뮤니티lo%
$errorlevel 1이 아닌 경우 $abortwrongDim.gms에서 예상되는 오류