Matlab 세계와 슬롯 나라 세계 간에 데이터를 통신합니다.더 보기...
공개 회원 기능 | |
| 슬롯 나라control.Equation | addEquation(varargin) |
| 데이터베이스에 방정식 기호를 추가하세요. | |
| 슬롯 나라control.Parameter | addParameter(varargin) |
| 데이터베이스에 매개변수 기호를 추가합니다. | |
| 슬롯 나라control.Set | 추가세트(varargin) |
| 데이터베이스에 세트 기호를 추가합니다. | |
| 슬롯 나라control.Variable | 추가변수(varargin) |
| 데이터베이스에 변수 기호를 추가합니다. | |
| 논리적 | checkDomains () |
| 전체 도메인 확인기호데이터베이스의 인스턴스. | |
| 무효 | 지우기 () |
| 데이터베이스의 모든 기호 레코드를 삭제합니다. | |
| 무효 | 폐기 () |
| 비자바 라이브러리에 의해 보류된 외부 리소스를 해제합니다. | |
| 무효 | 내보내기(varargin) |
| 데이터베이스를 GDX 파일에 기록합니다. | |
| 셀 | getDatabaseDomainViolations(정수 maxViolation, 정수 maxViolationPerSymbol) |
| 모두 확인기호모든 레코드가 지정된 기호 도메인 내에 있는 경우 데이터베이스의 인스턴스. | |
| 슬롯 나라control.Equation | getEquation(문자열 식별자) |
| 가져오기수식이름으로. | |
| 슬롯 나라control.Parameter | getParameter(문자열 식별자) |
| 가져오기매개변수이름으로. | |
| 슬롯 나라control.Set | getSet(문자열 식별자) |
| 가져오기설정이름으로. | |
| 슬롯 나라control.Symbol | getSymbol(문자열 식별자) |
| 가져오기기호이름으로. | |
| 슬롯 나라control.Variable | get변수(문자열 식별자) |
| 가져오기변수이름으로. | |
| 논리적 | isDisposed () |
| 이 데이터베이스가 이미 삭제되었는지 문의하세요. | |
| 반복자 | 반복자 () |
| 세트에 대한 반복자를 반환합니다.기호. | |
공개 속성 | |
| 문자열 | 이름 |
| (읽기 전용)데이터베이스이름 | |
| 정수 | numberOfSymbols |
| (읽기 전용) 기호 수데이터베이스 | |
| 논리적 | suppressAutoDomainChecking |
| 내보낼 때 도메인 확인이 호출되는지 여부를 제어합니다.데이터베이스. | |
| 셀 | 기호 |
| (읽기 전용) 목록기호다음에 포함된 인스턴스데이터베이스 | |
자세한 설명
Matlab 세계와 슬롯 나라 세계 간에 데이터를 통신합니다.
A데이터베이스a의 기호를 통해 편리하게 반복할 수 있는 기호 모음으로 구성됩니다.데이터베이스. a에 사용할 수 있는 기호 유형데이터베이스슬롯 나라 언어에서 알려진 기호 유형에 해당합니다(설정, 매개변수, 변수및수식)은 Matlab에서 파생 클래스로 표현됩니다(상응하여설정, 매개변수, 변수및수식) 중기호클래스. 유형 외에도 a기호이름(슬롯 나라 모델 내부의 이름과 일치해야 함), 차원(현재 최대 20개, 참조)이 있습니다.글로벌.MAXDIM) 및 설명 텍스트.
변수와 방정식에는 하위 유형도 있습니다: 예: 변수에 대한 이진, 양수 등(참조globals.VarType) 및 예: 방정식의 경우 E, G 등(참조globals.EquType).
A데이터베이스비워두거나 기존 GDX 파일 또는 다른 파일에서 초기화할 수 있습니다.데이터베이스(사본). 기호는 언제든지 추가할 수 있습니다(예: withDatabase.addParameter메서드), 그러나 기호가 a의 일부인 경우데이터베이스, 제거할 수 없습니다. 관련 데이터만(심볼레코드)을 제거할 수 있습니다(참조심볼.클리어method) 또는 개별적으로 제거됨(Symbol.deleteRecord메서드). 이름이 '*'인 기호는 유형의 특수 기호로 예약되어 있습니다.설정우주 세트를 나타냅니다. 개별 데이터 요소는 기록별로 액세스됩니다. 레코드는 키(문자열 벡터)로 식별됩니다. 레코드 데이터는 기호 유형에 따라 다릅니다. 예를 들어, 매개변수 레코드에는 값 속성이 있고, 변수에는 수준, 하한, 상한, 한계 및 척도 속성이 있습니다. 이미 존재하는 키가 포함된 레코드를 추가하면 오류가 발생합니다. 마찬가지로 레코드 검색에 실패해도 오류가 발생합니다.
기호Java java.lang.Iterable 인터페이스를 구현하여 기호 레코드를 편리하게 반복합니다. 그러나를 사용하여 모든 레코드를 한 번에 쿼리할 수도 있습니다.Symbol.records속성(백그라운드에서 Iterator 사용) 일부 위치에서 고정 인덱스가 있는 모든 레코드를 반복할 수 있는 기호 레코드에 대한 슬라이스 액세스 방법도 있습니다.데이터베이스인스턴스는 영구 저장을 위해 GDX 파일로 내보낼 수 있습니다. 또한 외부 리소스를 관리하며 Java 가비지 수집기가 인스턴스를 회수하기 전에 적절하게 삭제되어야 합니다(참조Database.dispose).
Job.outDB그리고ModelInstance.syncDB인스턴스 제공데이터베이스슬롯 나라 실행 또는 해결 결과를 전달합니다. 이러한 데이터베이스는 기본 개체()의 컨텍스트에서만 사용해야 합니다.직업또는모델인스턴스). 해당 데이터베이스의 복사본이 필요한 경우데이터베이스a를 초기화하는 생성자데이터베이스다른 데이터베이스의 데이터베이스를 사용해야 합니다. 예를 들어:
* db = job.outDB; * newdb = 작업 공간.addDatabase(db); *
데이터베이스인스턴스는 종종 다음에 대한 입력 데이터를 제공합니다.직업. 이러한 인스턴스는 다음 목록에 나열되어 있습니다.Job.run. 슬롯 나라 모델 소스 내부에서데이터베이스GDX 파일을 통해 액세스할 수 있습니다. 슬롯 나라 모델 소스에는 적절한 GDX 파일(예: $GDXIN 파일 이름)에 연결하기 위해 특정 파일 이름이 필요합니다. 갑데이터베이스예를 들어 모델 내부에서 사용할 수 있는 지정된 이름으로 생성될 수 있습니다.
* db = 작업 공간.addDatabase('SupplyData');
*그리고 슬롯 나라 모델 소스 내부:
* $GDXIN 공급데이터 *
또는 자동으로 생성된 이름을 사용할 수 있습니다. 이 이름은 a의 정의 목록을 사용하여 슬롯 나라 모델로 전달될 수 있습니다.옵션인스턴스:
* db = 작업 공간.addDatabase();
* opt = 작업 공간.addOptions();
* opt.defines('SupplyDataFileName', db.getName());
* ...
* job.run(opt, db);
*슬롯 나라 모델 소스 내에서 이름은 다음과 같이 액세스됩니다:
* $GDXIN %SupplyDataFileName% *
예를 들어 주문된 세트에 관해서는 약간의 주의를 기울여 행동해야 합니다. 지연과 리드를 허용하십시오. 에 대해 '도메인 확인'을 시행하지 않음으로써데이터베이스class 우리는 주문한 세트에 대한 잠재적인 문제를 악화시켰습니다. 슬롯 나라의 경우 집합 요소의 레이블은 문자열이므로 집합의 순서는 해당 요소의 모양에 따라 결정됩니다. 예를 들어 'k / 2,3,4,1,5 /'를 설정했다면 k의 순서는 이 수열로 정확하게 주어진다. 따라서 k=4의 뒤(k-1)는 3이고 k=4의 앞(k+1)은 1입니다.
슬롯 나라는 확장된 숫자 범위로 산술을 수행합니다. 슬롯 나라에는 무한대(+INF, -INF), 엡실론(EPS), 사용할 수 없음(NA) 및 정의되지 않음(UNDEF)에 대한 특수 값이 있습니다. 슬롯 나라가 이러한 특수 값을 사용하여 표현식을 평가할 때 계산 엔진은 결과의 정확성을 보장합니다(예: 5*eps=eps 또는 5+eps=5). 슬롯 나라 모델 라이브러리의 슬롯 나라 모델 CRAZY는 특수 값과 관련된 산술 연산 결과를 문서화합니다.
슬롯 나라 Matlab 제어 API에서는 +/-무한대(Inf 및 -Inf) 및 NA(NaN)에 대한 IEEE 표준 값을 해당 슬롯 나라 값에 매핑합니다. UNDEF의 특수 값은 슬롯 나라 Matlab API를 통해 필터링되지 않습니다. UNDEF의 내부 double 값은 1.0E300입니다(또는 SpecialValues.UNDEFINED_VALUE를 사용하는 것이 더 좋습니다).
0 값에 특별한 주의가 필요합니다. 슬롯 나라는 희소 시스템이므로 실제 0이 있는 (매개변수) 레코드를 저장하지 않습니다. 숫자 값이 0인 레코드가 필요한 경우 EPS가 도움이 될 수 있습니다. 예를 들면:
* j /1*10 / 설정;
* 매개변수 b(j);
* b(j) = 1; b('5') = 0;
* 스칼라 s,c;
* s = 합(j, b(j));
* c = 카드(b);
* s,c를 표시합니다.
*결과는
* * ---- 3개 매개변수 = 9.000 * 매개변수 c = 9.000 *
하지만
* b(j) = 1; b('5') = EPS;
*결과는 다음과 같습니다
* ---- 3 PARAMETER s = 9.000 * 매개변수 c = 10.000 *
슬롯 나라 Matlab 제어 API의 결과는 무엇입니까? b('5')=0인 경우 매개변수 b를 읽으면,데이터베이스b('5')에 대한 기록이 없습니다. b('5')=EPS인 경우,데이터베이스SpecialValues.EPS 값이 4.94066E-324인 레코드가 있습니다. IEEE 값(예: Inf)과 달리 Matlab의 산술 연산은 EPS 값을 수정합니다(예: 5*Inf==Inf이지만 5*4.94066E-324 != 4.94066E-324). a에서 슬롯 나라용 입력 데이터를 준비하는 데에도 동일한 규칙이 적용됩니다.데이터베이스. 4.94066E-324 값이 기록되면 슬롯 나라는 특수 값 EPS를 확인합니다(SpecialValues 참조). EPS에 사용되는 값은 다음을 사용하여 재설정할 수 있습니다.Workspace.eps. 다른 모든 작은 값(0 포함)은 필터링되지 않은 상태로 슬롯 나라에 전달됩니다. 앞서 언급했듯이 슬롯 나라의 데이터 레코드에는 0이 입력되지 않습니다. 컴파일러 컨트롤 $on/offEPS는 0을 EPS에 자동으로 매핑하는 데 도움이 될 수 있습니다.
슬롯 나라 입력에는 1e-250보다 작은 값과 관련하여 한 가지 이상한 점이 있습니다. 다음 예를 고려해보세요.
* b = db.addParameter('b', 1, '');
* i = 1:10
* b.addRecord(int2str(i)).value = 1;
* b.findRecord('5').value = 1E-251;
* 작업.실행(db);
*슬롯 나라 코드 포함:
* $load j b * 스칼라 카드_b; * 카드_b = 카드(b); * 디스플레이 카드_b; * b(j) = 2*b(j); * 카드_b = 카드(b); * 디스플레이 카드_b; *
1E-250보다 작은 값을 가진 레코드가 슬롯 나라의 입력에 존재하지만 레코드가 슬롯 나라에 의해 업데이트되고 여전히 1E-250보다 작은 경우 레코드가 제거됩니다.
슬롯 나라에서 집합의 순서는 직관적이지 않을 수 있습니다. 'set i /5/, j /1*5/;'를 고려하세요. 요소 '5'는 내부 번호 1을 얻고, '1'은 2를 얻고, '2'는 3을 얻는 식입니다. j '5'의 마지막 요소에는 이미 내부 숫자 1이 있습니다. j의 내부 숫자 시퀀스는 오름차순이 아니므로 슬롯 나라는 집합 j를 정렬되지 않은 것으로 간주합니다. 즉, ord() 함수나 지연 또는 선행(-,–,+,++) 연산자를 사용할 수 없습니다. 이 예에서 'j'가 'i'보다 먼저 정의되었다면 '세트가 정렬되지 않음' 문제는 방지되었을 것입니다.
참고하세요데이터베이스실제로 데이터베이스 관리를 위한 관계형 모델을 구현하지 않습니다. 데이터 저장소 또는 데이터 컨테이너로 보아야 합니다.
멤버 함수 문서
◆ addEquation()
| 슬롯 나라control.Equation matlab.슬롯 나라control.Database.addEquation | ( | varargin | ) |
데이터베이스에 방정식 기호를 추가하세요.
이름이 '*'인 기호는 특수 유형 기호로 예약되어 있으므로 데이터베이스에 추가할 수 없습니다.설정.
유효한 VARARGIN 서명:
- 문자열 식별자, 정수 차원,globals.EquType globals.EquType
- 문자열 식별자,globals.EquType globals.EquType, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
- 문자열 식별자,globals.EquType globals.EquType, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
- 문자열 식별자, 정수 차원,globals.EquType globals.EquType, 문자열 설명텍스트
인수:
- 식별자:수식이름
- 차원:수식차원
- 슬롯 나라control.globals.EquType:수식하위 유형
- explanatoryText: 방정식의 설명 텍스트
- domain1,...,domainN: 방정식 도메인의 임의 인수
반환: a에 대한 참조수식인스턴스
- 또한 참조
- globals.EquType
◆ addParameter()
| 슬롯 나라control.Parameter matlab.슬롯 나라control.Database.addParameter | ( | varargin | ) |
데이터베이스에 매개변수 기호를 추가합니다.
이름이 '*'인 기호는 특수 유형 기호로 예약되어 있으므로 데이터베이스에 추가할 수 없습니다.설정.
유효한 VARARGIN 서명:
- 문자열 식별자, 정수 차원
- 문자열 식별자, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
- 문자열 식별자, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
- 문자열 식별자, 정수 차원,globals.EquType globals.EquType, 문자열 설명텍스트
인수:
반환: a에 대한 참조매개변수인스턴스
◆ 추가세트()
| 슬롯 나라control.Set matlab.슬롯 나라control.Database.addSet | ( | varargin | ) |
데이터베이스에 세트 기호를 추가합니다.
이름이 '*'인 기호는 특수 유형 기호로 예약되어 있으므로 데이터베이스에 추가할 수 없습니다.설정.
유효한 VARARGIN 서명:
- 문자열 식별자, 정수 차원
- 문자열 식별자, 정수 차원, 문자열 설명텍스트
- 문자열 식별자, 정수 차원,globals.SetType세트 유형
- 문자열 식별자, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
- 문자열 식별자, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
- 문자열 식별자, 정수 차원,globals.SetTypesetType, 문자열 설명텍스트
- 문자열 식별자,globals.SetTypesetType, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
- 문자열 식별자,globals.SetTypesetType, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
인수:
반환: a에 대한 참조설정인스턴스
◆ 추가변수()
| 슬롯 나라control.Variable matlab.슬롯 나라control.Database.addVariable | ( | varargin | ) |
데이터베이스에 변수 기호를 추가합니다.
이름이 '*'인 기호는 특수 유형 기호로 예약되어 있으므로 데이터베이스에 추가할 수 없습니다.설정.
유효한 VARARGIN 서명:
- 문자열 식별자, 정수 차원,globals.VarType globals.VarType
- 문자열 식별자,globals.VarType globals.VarType, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
- 문자열 식별자,globals.VarType globals.VarType, 문자열 설명 텍스트, 모든 도메인1, ..., 모든 도메인N
- 문자열 식별자, 정수 차원,globals.VarType globals.VarType, 문자열 설명텍스트
인수:
- 식별자:변수이름
- 차원:변수차원
- 슬롯 나라control.globals.VarType:변수하위 유형
- explanatoryText: 변수에 대한 설명 텍스트
- domain1,...,domainN: 변수 도메인의 임의 인수
반환: a에 대한 참조변수인스턴스
- 또한 참조
- globals.VarType
◆ 체크도메인()
| 논리 matlab.슬롯 나라control.Database.checkDomains | ( | ) |
모든 도메인 확인기호데이터베이스의 인스턴스.
반환: 모든 기호에 도메인 위반이 포함되어 있지 않으면 true, 그렇지 않으면 false
◆ 지우기()
| void matlab.슬롯 나라control.Database.clear | ( | ) |
데이터베이스의 모든 기호 레코드를 지우세요.
데이터베이스의 기호 수는 동일하게 유지됩니다.
◆ 처분()
| void matlab.슬롯 나라control.Database.dispose | ( | ) |
비Java 라이브러리에 의해 보류된 외부 리소스를 해제합니다.
삭제된 후 개체에 대한 후속 호출로 인해 예상치 못한 오류나 예외가 발생할 가능성이 있습니다. 객체가 더 이상 필요하지 않거나 리소스 관리가 애플리케이션에서 중요한 문제인 경우 이 메서드를 호출하세요.
◆ 내보내기()
| void matlab.슬롯 나라control.Database.export | ( | varargin | ) |
데이터베이스를 GDX 파일에 기록합니다.
파일 경로가 제공되지 않으면 파일은 데이터베이스 이름을 사용하여 작업 디렉토리에 기록됩니다.
유효한 VARARGIN 서명:
- 문자열 파일 경로
인수:
- filePath: GDX 파일을 쓰는 데 사용되는 경로입니다. 상대 경로는 슬롯 나라 작업 디렉터리를 기준으로 합니다.
◆ getDatabaseDomainViolations()
| cell matlab.슬롯 나라control.Database.getDatabaseDomainViolations | ( | 정수 | 최대 위반, |
| 정수 | maxViolationPerSymbol ) |
모두 확인기호모든 레코드가 지정된 기호 도메인 내에 있는 경우 데이터베이스의 인스턴스.
다음 목록을 반환합니다.DatabaseDomainViolation문제가 있는 기호에 대한 도메인 위반 정보가 포함된 인스턴스데이터베이스인스턴스. 각각DatabaseDomainViolation인스턴스에는 다음 정보가 포함되어 있습니다.기호도메인이 침해된 인스턴스 및 다음 목록DatabaseDomainViolation다음의 모든 도메인 위반 기록을 포함하는 인스턴스기호인스턴스.
인수:
- maxViolation: 저장해야 하는 도메인 위반 레코드의 최대 수(0은 제한 없음)
- maxViolationPerSymbol: 저장해야 하는 도메인 위반 레코드의 최대 수기호(0은 제한 없음)
반환: 목록DatabaseDomainViolation도메인 위반 정보가 포함되어 있음
◆ getEquation()
| 슬롯 나라control.Equation matlab.슬롯 나라control.Database.getEquation | ( | 문자열 | 식별자 | ) |
◆ getParameter()
| 슬롯 나라control.Parameter matlab.슬롯 나라control.Database.getParameter | ( | 문자열 | 식별자 | ) |
◆ getSet()
| 슬롯 나라control.Set matlab.슬롯 나라control.Database.getSet | ( | 문자열 | 식별자 | ) |
◆ getSymbol()
| 슬롯 나라control.Symbol matlab.슬롯 나라control.Database.getSymbol | ( | 문자열 | 식별자 | ) |
◆ getVariable()
| 슬롯 나라control.Variable matlab.슬롯 나라control.Database.getVariable | ( | 문자열 | 식별자 | ) |
◆ isDisposed()
| 논리 matlab.슬롯 나라control.Database.isDisposed | ( | ) |
이 데이터베이스가 이미 삭제되었는지 문의하세요.
반환: 폐기되면 true, 그렇지 않으면 false
◆ 반복자()
회원 데이터 문서
◆ numberOfSymbols
| 정수 matlab.슬롯 나라control.Database.numberOfSymbols |
◆ 기호
| cell matlab.슬롯 나라control.Database.symbols |
(읽기 전용) 목록기호다음에 포함된 인스턴스데이터베이스
성능 참고: 이 셀은 모든 읽기에 대해 Java 데이터 레코드에서 생성됩니다. 따라서 다음과 같은 루프는
* for i = 1:numel(db.symbols) * disp(db.symbolsi.name); * 끝 *
기호 목록 numel(db.symbols)+1 번을 생성합니다. 다음 중 하나를 사용하세요.
* Syms = db.symbols; * i = 1:numel(syms)의 경우 * disp(symsi.name); * 끝 * * Sym = db.symbols의 경우 * disp(sym1.이름); * 끝 *