GAMS Transfer Matlab 슬롯 나라는 다음 컬렉션을 저장합니다.기호따라서 GDX 파일과 유사합니다. 실제로 GDX 파일을 읽거나 쓰는 것은 슬롯 나라의 기본 기능입니다.
슬롯 나라 생성
슬롯 나라를 만드는 것은 쉽습니다. 다음 중 하나:
- 빈 슬롯 나라 생성:
- c = 슬롯 나라();
- GDX 파일의 기호로 슬롯 나라 생성:
- c = 슬롯 나라('경로/to/file.gdx');
- 다른 슬롯 나라의 기호로 슬롯 나라 생성:
- c1 = 슬롯 나라('경로/to/file.gdx');...c2 = 슬롯 나라(c1);
GDX에서 읽는 중
위는 전체 GDX 파일을 슬롯 나라로 읽는 방법의 첫 번째 예입니다. 그러나 특정 기호만 읽거나 레코드 형식을 지정하는 것이 유용한 경우가 많습니다. 슬롯 나라의슬롯 나라.읽기방법을 사용하면 더 많은 제어권을 얻을 수 있습니다.
다음 사항을 고려하십시오.c슬롯 나라이고출처GDX 파일(예:출처 = "경로/to/file.gdx") 또는 다른 슬롯 나라 개체입니다. 그런 다음:
- 모든 기호 읽기:
- 다음으로 모든 기호 읽기c.read(출처);
- 기호 하위 집합 읽기:
- 기호만 읽으려면
x그리고zGDX 파일에서 다음을 수행하세요c.read(출처,'기호', {'x', 'z'});
- 특정 레코드 형식의 기호 읽기:
- GAMS 전송은 레코드 형식이라고도 하는 다양한 Matlab 데이터 구조에 기호 레코드를 로드할 수 있습니다. 있습니다
구조체,테이블(기본값),dense_matrix그리고sparse_matrix각각에는 특정한 장점과 단점이 있습니다. 기호를 다음과 같이 읽으려면dense_matrix, 해c.read(출처,'형식', 'dense_matrix');
- 인덱스된 GDX 파일 읽기:
- 표준 GDX 파일 외에도 소위 인덱스된 GDX 파일이 존재합니다. 다음 방법으로 해당 파일을 읽으십시오.c.read(출처,'색인이 생성됨', 참);
- ...그리고 물론 위의 모든 것을 혼합하고 일치시키는 것도 가능합니다.
- 참고
- 다른 GDX 파일에서 읽을 때 두 개의 다른 기호가 동일한 이름을 가질 수 있습니다. 예를 들어 로드 시 기호 이름을 바꾸거나 기호 내용을 병합하는 것은 현재 불가능합니다. GAMS Transfer Matlab에서는 단순히 오류가 발생합니다.
GDX에 쓰는 중
모든 기호와 기호 레코드가 포함된 슬롯 나라는 다음과 함께 GDX 파일에 기록될 수 있습니다.슬롯 나라.쓰기방법. 압축된 GDX 파일을 작성하는 것이 가능합니다. 간단히 다음과 같이 작성하세요:
- 모든 기호 작성:
- 다음을 사용하여 모든 기호를 GDX 파일에 쓰기c.write('경로/to/file.gdx');
- 기호 하위 집합 작성:
- 기호만 쓰기 위해서
x그리고zGDX 파일로 이동c.write('경로/to/file.gdx', '기호', {'x', 'z'});
- 압축된 GDX 파일 작성:
- 압축하여 쓰려면 매개변수를 설정하세요.
압축에참:c.write('경로/to/file.gdx', '압축', 사실);
- 색인된 GDX 파일 작성:
- 매개변수 설정
색인이 생성됨에참색인된 GDX 파일을 작성하려면:이것은 색인화를 지원하는 파일에만 기호를 기록합니다. 또한 참조symbol.Abstract.indexed. (1) 다음과 같은 경우 기호가 색인화됩니다.매개변수, (2) 그UEL범위는 1부터까지입니다.크기(i)그리고 (3) 그기록정수로 색인이 생성되지만 그렇지 않음c.write('경로/to/file.gdx', '색인이 생성됨', 참);범주형테이블과 같은 형식으로. 표준 GDX 파일에 색인 기호를 쓰는 것도 가능하지만 의미는 다를 수 있습니다.
- 참고
- 작성하려는 기호 중 하나라도 유효하지 않으면 슬롯 나라를 작성할 수 없습니다(또한 참조기호 레코드 유효성 검사). 또한 기호는 유효한 것으로 간주될 수 있지만 여전히 도메인 위반이 있어 작성할 때 오류가 발생할 수 있습니다. 또한 참조하세요.도메인 위반.
- 고급 사용자 전용:
- GDX는 기호 레코드가 특정 순서로 정렬될 것으로 예상합니다. 사용자가 이를 달성하기 어려울 수 있으므로 GDX에 쓸 때 기본적으로 레코드는 덮어쓰지 않고 정렬됩니다. 자신의 기호 레코드가 올바르게 정렬되어 있음을 알고 있는 사용자는 다음을 설정할 수 있습니다.슬롯 나라.쓰기메서드 인수
정렬에참효율성을 높이기 위해. 기호 기록dense_matrix그리고sparse_matrix정의에 따라 정렬됩니다(정렬효과가 없습니다). GDX는 다음과 같은 순서를 예상합니다.구조체그리고테이블형식. 기호 레코드는 도메인별로 정렬됩니다.UEL오름차순 코드 w.r.t. 먼저 차원 1, 그 다음 2, 3 등입니다. 그러나UEL여기서 코드는 기호와 관련된 것이 아니라 첫 번째 발생만 관련된 전체 슬롯 나라에 전역적입니다. 이는 또한 슬롯 나라 내의 기호 순서도 영향을 미친다는 것을 의미합니다.UEL순서이므로 기호 레코드 순서입니다. 방법Container.getUELs이 전역을 반환합니다.UEL순서이며 올바른 순서를 정하는 데 도움이 될 수 있습니다. 참고하세요Container.getUELs요청이 있을 때만 이 세트를 생성하며 그다지 효율적이지 않습니다.
기호 명명
GAMS 전송은 기호 이름 지정에 대한 GDX 규칙을 따릅니다. 즉, 기호 이름은 영숫자 문자로 구성될 수 있으며_(그러나 처음에는 아님). 이름 길이는 64자보다 짧아야 합니다. 기호 이름은 대소문자를 구분하지 않는 것으로 간주됩니다. 즉, 이름이 붙은 기호를 추가하면 됩니다.X1추가 후X1이름이 동일한 것으로 간주되므로 허용되지 않습니다. 기호 이름을 입력으로 받아들이는 메서드는 어떤 경우에도 기호 이름을 받아들입니다.
슬롯 나라에 등록된 기호의 원래 이름을 얻으려면 다음을 사용하십시오.Container.getSymbolNames. 기호가 존재하는지 확인하려면 다음을 사용하세요.Container.hasSymbols. 예를 들어 슬롯 나라를 생각해 보세요.m기호 포함sym1:
기호 액세스
기호는 구조체에 저장됩니다.슬롯 나라.데이터, 필드 이름은 기호 이름과 동일합니다. 에 대한예이것은:
액세스 외에슬롯 나라.데이터직접, 메소드를 통해 기호 핸들 목록을 쿼리할 수 있습니다.Container.getSets, Container.getParameters, Container.getVariables, Container.getEquations, Container.getAliases또는 경유Container.getSymbols기호 이름 목록이 주어졌습니다.
이 기능과 함께 사용하면 특히 유용할 수 있습니다.Container.listSymbols, Container.listSets, Container.listAliases, Container.listParameters, Container.listVariables그리고Container.listEquations다음과 같이 해당 유형의 기호 이름을 나열합니다.
- 참고
- 다음을 통해 기호에 액세스할 때슬롯 나라.데이터, 그렇다면 문자의 대소문자가 중요합니다. 다음의 경우는 그렇지 않습니다.Container.getSymbols.
기호 제거
에서 기호를 제거하려면슬롯 나라, 간단히 전화하세요Container.removeSymbols:
- 참고
- a 제거 중설정다른 기호의 도메인에 사용되는 것은 해당 기호 도메인을 완화합니다.
기호 개요
방법Container.describeSets, Container.describeAliases, Container.describeParameters, Container.describeVariables그리고Container.describeEquations에 저장된 해당 유형의 기호에 대한 개요를 허용합니다.슬롯 나라. 이러한 메소드는 각 기호에 대해 다음 표에 제공된 속성/통계를 나열하는 표를 반환합니다. 여기서는x이 속성/통계는 기호 유형에 사용할 수 있음을 의미합니다.
| 속성 / 통계 | 설명 | 설정 | 별칭 | 매개변수 | 변수 | 수식 |
|---|---|---|---|---|---|---|
| 이름 | 기호 이름 | x | x | x | x | x |
| is_singleton | 세트가 싱글톤 세트인지(true) 아닌지(false)를 나타냅니다. | x | x | |||
| alias_with | 별칭이 연결된 설정 | x | ||||
| 유형 | 변수 또는 방정식 유형, 참조변수유형그리고수식 유형 | x | x | |||
| 형식 | 형식기록저장되어 있습니다. 참조레코드 형식 | x | x | x | x | x |
| 차원 | 차원기호 | x | x | x | x | x |
| 도메인_유형 | 도메인 유형, 예: 편안하거나 규칙적임 | x | x | x | x | x |
| 도메인 | 도메인상징 | x | x | x | x | x |
| 크기 | 크기또는 기호의 모양 | x | x | x | x | x |
| 숫자_기록 | 기호 GDX 수기록 | x | x | x | x | x |
| 숫자_값 | 저장된 개수기록값 | x | x | x | x | x |
| 희소성 | 기호의 희소성기록w.r.t. 계산하다 | x | x | x | x | x |
| 분 | 최소값 | x | ||||
| 평균 | 평균값 | x | ||||
| 최대 | 최대값 | x | ||||
| where_min | 최소값을 가진 레코드의 도메인 항목 | x | ||||
| where_max | 최대값을 가진 레코드의 도메인 항목 | x | ||||
| 최소레벨 | 레벨 값의 최소값 | x | x | |||
| 평균_수준 | 레벨 값의 평균값 | x | x | |||
| 최대_레벨 | 레벨 값의 최대값 | x | x | |||
| where_max_abs_level | 최대 절대 레벨 값을 가진 레코드의 도메인 항목 | x | x |
용예, 이것은 다음과 같습니다: