로드 중...
검색 중...
일치하는 항목 없음
기록

기호 레코드는 실제 데이터입니다. GAMS Transfer Matlab에서는 Matlab 기본 데이터 구조(구조체, 테이블, 조밀 또는 희소 행렬)에 저장됩니다(참조)레코드 형식자세한 정보는). GDX에서 레코드는 무료 슬롯 게임 항목 데이터와 값 데이터의 조합입니다. 무료 슬롯 게임 항목은 다음과 같이 제공됩니다.UEL. 값은기호레코드당 저장 수는 기호 유형에 따라 다릅니다.세트가지고element_text, 매개변수가지고그리고방정식그리고변수가지고레벨, 한계, 하위, 상부그리고규모. 이러한 값 필드 중 일부가 제공되지 않으면 기본값이 사용됩니다. 갑레코드 형식은 각 기호에 대해 선택되며 각 값에 대해 독립적으로 선택되지 않습니다. 그러므로 참고하세요, a컨테이너다른 기호를 다른 기호로 저장할 수 있음레코드 형식.

기호 레코드로 작업할 때 잘못될 수 있는 두 가지 사항이 있습니다.

  • 레코드 데이터에는 무료 슬롯 게임 위반이라고 불리는 잘못된 무료 슬롯 게임 항목이 포함되어 있습니다.
    symbol.Abstract.[has|count|get|find]DomainViolations를 사용하여 무료 슬롯 게임 위반을 요청하면 됩니다.무료 슬롯 게임 위반.

레코드 형식

GAMS Transfer Matlab은 네 가지 형식으로 기호 레코드를 읽고 유지 관리할 수 있습니다.구조체, 테이블, dense_matrix그리고sparse_matrix. 둘 다구조체그리고테이블테이블과 같은 형식이며dense_matrix그리고sparse_matrix– 분명히 – 행렬과 같은 형식입니다. 기본값은테이블좋은 데이터 표시 및 개요가 가능하기 때문입니다. 그러나 참고하세요테이블가장 효율적인 형식은 아닙니다.

  • 표와 같은 형식:

    형식테이블그리고구조체첫 번째에 무료 슬롯 게임 항목을 저장차원열 다음에 값 열(element_textfor설정, 매개변수그리고레벨, 한계, 하위, 상위, 규모for변수그리고수식) 및 레코드를 행으로 표시합니다. 의 경우구조체, 열은 구조체 필드로 제공됩니다. 무료 슬롯 게임 항목 열의 열 이름은 다음과 같이 표시하고 변경할 수 있습니다.symbol.Abstract.domain_labels.

    예를 들어,xas테이블:

    >> x.records
    ans =
    6×7 테이블
    i j 레벨 한계 하위 상위 스케일
    _________ ________ _____ ________ _____ _____ _____
    시애틀신규-요크 50 0 0 정보 1
    시애틀 시카고 300 0 0 Inf 1
    시애틀 토피카 0 0.036 0 Inf 1
    샌디에고신규-요크 275 0 0 정보 1
    샌디에고 시카고 0 0.009 0 Inf 1
    산디에고 토피카 275 0 0 Inf 1

    예를 들어,xas구조체:

    >> x.records
    ans =
    구조체필드 포함:
    i: [6×1 범주형]
    j: [6×1 범주형]
    레벨: [6×1 더블]
    한계: [6×1 더블]
    하위: [6×1 더블]
    상단: [6×1 더블]
    규모: [6×1 더블]
    >> x.records.level
    ans =
    50
    300
    0
    275
    0
    275
    참고
    세트테이블과 같은 형식으로만 유지 관리할 수 있습니다.구조체그리고테이블.
  • 매트릭스 유사 형식:

    형식dense_matrix그리고sparse_matrix레코드 값을 차원이 있는 행렬로 개별적으로 저장최대(2,d), 여기서d기호입니다차원및 모양크기. 만일크기정의되지 않음(참조심볼 무료 슬롯 게임), 행렬과 같은 형식은 불가능합니다. 무료 슬롯 게임 항목은 매트릭스에 저장할 수 없지만 기호 방법을 사용하여 쿼리할 수 있습니다.getUELs(또한 참조고유 요소(UEL)). 기호를 가정s두 가지 차원이 있습니다. 그럼, 가(행,열)행렬 항목은 무료 슬롯 게임 항목에 해당합니다.s.getUELs(1, [행, 열]). 논리는 다양한 차원에 대해 유사합니다.

    예를 들어,xin으로dense_matrix:

    >> x.records
    ans =
    구조체필드 포함:
    레벨: [2×3 더블]
    한계: [2×3 더블]
    하위: [2×3 더블]
    상단: [2×3 더블]
    규모: [2×3 더블]
    >> x.records.level
    ans =
    50 300 0
    275 0 275

    예를 들어,xassparse_matrix:

    >> x.records
    ans =
    구조체필드 포함:
    레벨: [2×3 더블]
    한계: [2×3 더블]
    하위: [2×3 더블]
    상단: [2×3 더블]
    규모: [2×3 더블]
    >> x.records.level
    ans =
    (1,1) 50
    (2,1) 275
    (1,2) 300
    (2,3) 275

    행렬 요소에 대한 무료 슬롯 게임 항목을 얻으려면 위의 예에서 다음 사항이 적용된다는 점에 유의하십시오.

    x.getUELs(1, 1:2)는 과 같습니다.'시애틀', '샌디에고'}
    x.getUELs(2, 1:3)은 과 같습니다.'뉴욕', '시카고', '토페카'}
참고
스칼라 기호의 경우(차원0), 형식구조체그리고dense_matrix동등합니다.

각 형식에는 장점과 단점이 있습니다. 다음 표를 참조하세요. 거기, 평점은++(아주 좋아),+, o, -, --(다소 나쁨), 각 카테고리에 대해 상대적으로 평가되었습니다.

레코드 형식최대 크기효율성메모리(일반)메모리(밀도 데이터)디스플레이
구조체 20 (GAMS 제한)++ + - -
테이블 20 (GAMS 제한)-- o -- ++
dense_matrix 20 (GAMS 제한)+ -- ++ -
sparse_matrix 2(Matlab 제한)o ++ + --

기록 형식을 선택하거나 변경하는 가능성은 다음과 같습니다:

기호 레코드 유효성 검사

GAMS Transfer Matlab에서는 지원되는 저장소 중 하나에 기호 레코드를 저장해야 합니다.레코드 형식이해하고 GDX에 쓰기 위해. 그러나 형식의 특정 기준이 충족되지 않고 기호가 유효하지 않은 것으로 표시되는 경우가 쉽게 발생할 수 있습니다. 즉, 기호 방법symbol.Abstract.isValid반환거짓. 이 경우 인수 설정상세symbol.Abstract.isValid무효 이유를 인쇄하여 문제 해결에 도움이 될 수 있습니다.

예를 들어, 다음을 취하세요.x, 물론 유효합니다:

>> x.transformRecords('구조체');
>> x.isValid(사실)
ans =
논리적
1

이 기호를 잘못된 모양으로 저장하여 무효화합시다:

>> x.records.level = transpose(x.records.level);
>> x.isValid()
경고: 레코드 값 열'레벨'열 벡터여야 합니다.
> gams.transfer.symbol/Abstract/isValid(라인 912)
ans =
논리적
0

고유 요소(UEL)

고유 요소(UEL)는(i,s)여기서 쌍i(문자열) 라벨의 식별 번호(또는 색인)입니다.s. GDX는 UEL 인덱스를 저장하여 레코드의 무료 슬롯 게임 항목을 효율적으로 저장하기 위해 UEL을 사용합니다.i실제 문자열 대신 무료 슬롯 게임 항목s. 이렇게 하면 동일한 문자열을 여러 번 저장하는 것을 방지할 수 있습니다. UEL의 개념은 Matlab에도 존재하며 a범주형. 처음이시라면범주형: 협력범주형문자열을 사용하여 작업하는 것처럼 – 이는 단지 메모리를 절약하는 방법일 뿐입니다. 를 변환하는 중범주형uint64(또는 유사)는 식별 번호를 나타냅니다. GAMS Transfer Matlab에서는 다음 중 하나로 식별 번호를 지정할 수 있습니다.범주형(보통 기본값) 또는 숫자를 직접 제공합니다.

참고
범주형문자열을 자르므로 접두사 또는 후행 공백은 지원되지 않습니다. 이를 사용하여 GDX 파일을 읽는 경우 GAMS Transfer Maltab은 대신 식별 번호를 사용합니다.

예를 들어 다음을 참고하세요.범주형inx

>> 전치(x.records.i)
ans =
1×6 범주형 배열
시애틀 시애틀 시애틀 샌디에고 샌디에고 샌디에고
>> 조옮김(x.records.j)
ans =
1×6 범주형 배열
뉴욕 시카고 토피카 뉴욕 시카고 토피카
>> 전치(int64(x.records.i))
ans =
1 1 1 2 2 2
>> 전치(int64(x.records.j))
ans =
1×6 int64 행 벡터
1 2 3 1 2 3
주의
매우 드물지만 Matlab(또는 Octave) 버전이 지원하지 않는 경우범주형(R2013b 이전의 Matlab 또는 Octave 버전) 계속해서 UEL에 대해 주의 깊게 읽어 보십시오. 의 무료 슬롯 게임 열에 UEL 색인을 저장해야 합니다.symbol.Abstract.records. 문자열 저장은 지원되지 않습니다. 해당 문자열을 찾으려면 다음 메소드를 사용하세요.symbol.Abstract.getUELs. 그렇지 않으면 사용할 수 있는 경우범주형– 가능성이 매우 높음 – 필요하지 않을 것입니다.기호UEL 추가 또는 수정에 관한 방법, 아래 설명.

각 기호는 차원당 고유한 UEL 목록을 유지하며, 이는 메소드를 통해 액세스하고 수정할 수 있습니다.symbol.Abstract.getUELs, symbol.Abstract.setUELs, symbol.Abstract.addUELs, symbol.Abstract.removeUELs, symbol.Abstract.renameUELs그리고symbol.Abstract.reorderUELs(또는 수정을 위한 Matlab 함수범주형직접). UEL 인덱스는 1부터 각 차원에 대해 독립적으로 저장된 UEL 수까지 번호가 지정됩니다.

주의
방법symbol.Abstract.setUELs그리고symbol.Abstract.removeUELs다른 UEL 색인을 UEL 라벨에 재할당할 수 있습니다. 이러한 변경 사항은 다음에서 사용되는 인덱스에 적용됩니다.symbol.Abstract.records. 이는에서 사용되는 UEL을 제거함을 의미합니다.symbol.Abstract.records그러면 잘못된 무료 슬롯 게임 항목이 발생합니다(다음과 같이 표시됨<정의되지 않음>Matlab에서). 에 대한symbol.Abstract.setUELs, ''rename', true` 인수를 전달하여 이러한 업데이트를 비활성화할 수 있습니다.

예를 들어, 계속해서위에서 UEL은 다음과 같습니다.

>> 전치(x.getUELs(1))
ans =
1×2 셀 배열
{'시애틀'} {'샌디에고'}
>> 전치(x.getUELs(2))
ans =
1×3 셀 배열
{'뉴욕'} {'시카고'} {'토페카'}

이를 변경하면 일부 기록이 무효화될 수 있습니다:

>> x.setUEL('매디슨', '뉴욕', '시애틀'}, 1);
>> 카테고리(x.records.i)
ans =
3×1 셀 배열
{'매디슨'}
{'뉴욕'}
{'시애틀'}
>> 전치(x.records.i)
ans =
1×6 범주형 배열
시애틀 시애틀 시애틀 <정의되지 않음> <정의되지 않음> <정의되지 않음>
고급 사용자 전용:
다음의 지원에도 불구하고범주형다음을 사용하여 명시적으로 UEL을 추가하는 것이 유용할 수 있습니다.symbol.Abstract.addUELs, 단순히 새로운 UEL을 사용하더라도symbol.Abstract.recordsUEL 목록에 자동으로 추가됩니다. 그러나 실제로 사용된 UEL보다 더 많은 UEL을 저장할 수 있습니다.기록. 고급 사용자는 이 사실을 사용하여 필요에 따라 GDX 파일의 유니버스 세트를 정렬할 수 있습니다. 또한 참조하세요GDX에 쓰는 중.

무료 슬롯 게임 위반

기호가 다른 기호를 사용할 때 무료 슬롯 게임 위반이 발생합니다.세트으로무료 슬롯 게임(s) – 따라서 무료 슬롯 게임 유형입니다.일반, 참조심볼 무료 슬롯 게임– 해당 무료 슬롯 게임 항목을 사용합니다.기록해당 참조 무료 슬롯 게임 세트에 존재하지 않습니다. 이러한 무료 슬롯 게임 위반은 데이터를 쓸 때 GDX 오류로 이어집니다!

참고
무료 슬롯 게임 위반 확인은 다음의 일부가 아닙니다.symbol.Abstract.isValid성능상의 이유로.

예를 들어, 변경xin– 기억하세요x무료 슬롯 게임 있음i,j, 여기서i그리고j아르세트그리고매디슨세트의 일부가 아닙니다i– 다음과 같습니다:

>> x.records.i(끝) ="매디슨";

무료 슬롯 게임 세트를 업데이트하지 않습니다i:

>> i.records.uni'
ans =
1×2 범주형 배열
시애틀 샌디에이고

이것을 GDX 파일에 쓰려는 시도는 실패합니다:

>> m.write();
오류사용 중gt_gdx_write
레코드 x(madison,topeka)의 GDX 오류: 무료 슬롯 게임 위반
gams.transfer.Container/write 오류 (라인 341)
gams.transfer.gt_gdx_write(obj.system_directory, 파일 이름, obj.data, ...

무료 슬롯 게임 위반을 요청하려면 메소드를 호출하세요.symbol.Abstract.getDomainViolations. 다음 목록을 반환합니다.무료 슬롯 게임 위반객체 w.r.t. 무료 슬롯 게임 위반을 해결하는 데 사용할 수 있는 기호의 각 차원: GAMS Transfer Matlab 방법symbol.Abstract.resolveDomainViolations그리고DomainViolation.resolve무료 슬롯 게임 위반을 제거하기 위해 위반된 항목이 있는 무료 슬롯 게임 세트의 자동 확장을 제공합니다.

예를 들어, 위의 예를 계속하면,

>> dv = x.getDomainViolations();

무료 슬롯 게임 위반을 보여줍니다:

>> dv1
ans =
속성 위반:
기호: [1x1 gams.transfer.symbol.Variable]
차원: 1
위반:'매디슨'}

다음 중 하나를 호출

>> x.resolveDomainViolations();
>> dv1.resolve();

해결합니다:

>> dv = x.getDomainViolations()
dv =
0×0 빈 셀 배열
>> i.records.uni'
ans =
1×3 범주형 배열
시애틀 샌디에고 매디슨

이 해결 기능은 기호 속성을 설정하여 자동으로 추가로 트리거될 수 있습니다.symbol.Abstract.domain_forwarding. 만일기록직접 액세스로 업데이트됩니다(참조기호 레코드 할당), 효율성 향상을 위해 무료 슬롯 게임 업데이트가 지연되지만 호출을 통해 강제로 업데이트될 수 있습니다.isValid또는 위에서 언급한 해결 방법.

참고
무료 슬롯 게임 위반을 자동으로 해결하는 방법은 편리할 수 있지만 오류 감지를 위한 유용한 도구인 무료 슬롯 게임 검사를 효과적으로 비활성화합니다. 다음을 사용하는 것이 좋습니다.symbol.Abstract.resolveDomainViolations, DomainViolation.resolve또는symbol.Abstract.domain_forwarding가능한 한 드물게 활성화됩니다. 사용에도 동일하게 적용됩니다.편안한무료 슬롯 게임 정보는 다음과 같습니다.일반무료 슬롯 게임 정보가 가능할 것입니다. 참조심볼 무료 슬롯 게임.