|
| 무효 | 내보내기(문자열 filePath=null) |
| | GDX 파일에 데이터베이스를 기록합니다.
|
| |
| GAMSSymbol | GetSymbol(문자열 기호 식별자) |
| | 이름으로 GAMSSymbol을 가져옵니다.
|
| |
| 슬롯 사이트매개변수 | GetParameter(문자열 매개변수 식별자) |
| | 이름으로 GAMSParameter를 가져옵니다.
|
| |
| GAMSSet | GetSet(문자열 setIdentifier) |
| | 이름으로 GAMSSet을 가져옵니다.
|
| |
| 슬롯 사이트변수 | GetVariable(문자열 변수 식별자) |
| | 이름으로 GAMSVariable을 가져옵니다.
|
| |
| GAMSequation | GetEquation(문자열 방정식 식별자) |
| | 이름으로 GAMSequation을 가져옵니다.
|
| |
| 무효 | 지우기 () |
| | GAMSDatabase의 모든 기호를 삭제합니다.
|
| |
| 무효 | 폐기 () |
| | 관리되지 않는 리소스를 무료로 제공합니다.
|
| |
| GAMSequation | 계산 추가(문자열 식별자, 정수 차원,EquTypeequType, 문자열 설명텍스트="") |
| | 데이터베이스에 방정식 기호를 추가합니다.
|
| |
| GAMSequation | AddEquation(문자열 식별자,EquTypeequType, 문자열 설명 텍스트, 매개변수 개체[] 도메인) |
| | 데이터베이스에 방정식 기호를 추가하세요.
|
| |
| 슬롯 사이트매개변수 | AddParameter(문자열 식별자, int 차원, 문자열 설명Text="") |
| | 데이터베이스에 매개변수 기호를 추가합니다.
|
| |
| 슬롯 사이트매개변수 | 매개변수 추가(문자열 식별자, 문자열 설명 텍스트, 매개변수 개체[] 도메인) |
| | 데이터베이스에 매개변수 기호를 추가합니다.
|
| |
| GAMSSet | AddSet(문자열 식별자, 정수 차원, 문자열 설명텍스트="",세트 유형setType=SetType.multi) |
| | 데이터베이스에 세트 기호를 추가합니다.
|
| |
| GAMSSet | AddSet(문자열 식별자, 문자열 설명 텍스트, 매개변수 개체[] 도메인) |
| | 데이터베이스에 세트 기호를 추가합니다.
|
| |
| GAMSSet | AddSet(문자열 식별자, 문자열 설명 텍스트,세트 유형setType, params 개체[] 도메인) |
| | 데이터베이스에 세트 기호를 추가합니다.
|
| |
| 슬롯 사이트변수 | 변수 추가(문자열 식별자, 정수 차원,VarTypevarType, 문자열 설명텍스트="") |
| | 데이터베이스에 변수 기호를 추가합니다.
|
| |
| 슬롯 사이트변수 | 변수 추가(문자열 식별자,VarTypevarType, 문자열 설명 텍스트, 매개변수 개체[] 도메인) |
| | 데이터베이스에 변수 기호를 추가합니다.
|
| |
| 부울 | 체크도메인 () |
| | 모든 레코드가 지정된 기호 도메인 내에 있으면 모든 기호를 확인하십시오.
|
| |
| 목록<GAMSDatabaseDomainViolation> | GetDatabaseDVs(int MaxViol=0, int MaxViolPerSym=0) |
| | 모든 GAMSDatabaseDomainViolations를 반환합니다.
|
| |
| 무효 | 콤팩트 () |
| | 구식입니다.
|
| |
| IE분자기 | GetEnumerator () |
| | 열거자를 가져와 데이터베이스 기호를 반복합니다.
|
| |
GAMSDatabase 인스턴스는 .NET 세계와 슬롯 사이트 세계 간에 데이터를 통신합니다. GAMSDatabase는 기호 모음으로 구성됩니다(GAMSDatabase는 GAMSDatabase의 기호를 통해 편리하게 반복할 수 있는 IEnumerable 인터페이스를 구현합니다). GAMSDatabase에 사용할 수 있는 기호 유형은 슬롯 사이트 언어에서 알려진 기호 유형에 해당합니다. 집합, 매개변수, 변수 및 방정식은 .NET에서 파생 클래스(예: GAMSSet, GAMSParameter 등)로 표현됩니다. 유형 외에도 GAMSSymbol에는 이름(슬롯 사이트 모델 내부의 이름과 일치해야 함), 차원(현재 최대 20개 또는 gamsglobals.maxdim) 및 일부 설명 텍스트가 있습니다.
변수와 방정식에도 하위 유형이 있습니다: 예: 변수에 대한 바이너리, 포지티브 등(gamsglobals.VarType 유형 참조) 및 예: 방정식의 경우 E, G 등(gamsglobals.EquType 유형 참조).
GAMSDatabases는 빈 상태로 생성되거나 기존 GDX 파일 또는 다른 GAMSDatabase(사본)에서 초기화될 수 있습니다. 기호는 언제든지 추가할 수 있지만(예: GAMSDatabase.AddParameter) 기호가 GAMSDatabase의 일부가 되면 제거할 수 없습니다. 관련 데이터(GAMSSymbolRecord)만 제거(GAMSSymbol.Clear() 참조)하거나 개별적으로 제거(GAMSSymbol.DeleteRecord)할 수 있습니다. 개별 데이터 요소는 기록별로 액세스됩니다. 레코드는 키(문자열 벡터)로 식별됩니다. 레코드 데이터는 기호 유형에 따라 다릅니다. 예를 들어, 매개변수 레코드에는 값 속성이 있고, 변수에는 수준, 하한, 상한, 한계 및 척도 속성이 있습니다. 이미 존재하는 키가 포함된 레코드를 추가하면 예외가 발생합니다. 마찬가지로 레코드 검색에 실패해도 예외가 발생합니다.
GAMSSymbol은 IEnumerable 인터페이스를 구현하여 기호 레코드를 편리하게 반복합니다. 일부 위치에서 고정 인덱스가 있는 모든 레코드를 반복할 수 있는 기호 레코드에 대한 슬라이스 액세스 방법도 있습니다. 슬롯 사이트데이터베이스는 영구 저장을 위해 GDX 파일로 내보낼 수 있습니다. 또한 외부 리소스를 관리하며 .NET 가비지 수집기가 인스턴스를 회수하기 전에 적절하게 삭제되어야 합니다.
GAMSJob(OutDB) 및 GAMSModelInstance(SyncDB)는 슬롯 사이트 실행 또는 해결 결과를 전달하기 위해 GAMSDatabase 인스턴스를 제공합니다. 이러한 데이터베이스는 기본 개체(GAMSJob 또는 GAMSModelInstance)의 컨텍스트에서만 사용해야 합니다. 이러한 데이터베이스의 복사본이 필요한 경우 다른 데이터베이스에서 GAMSDatabase를 초기화하는 GAMSDatabase 생성자를 사용해야 합니다(예: GAMSDatabase newdb = 작업 공간.AddDatabase(GAMSJob.OutDB);).
GAMSDatabase는 종종 GAMSJob에 대한 입력 데이터를 제공합니다. 이러한 GAMSDatabase는 GAMSJob.Run 메소드에 나열됩니다. 슬롯 사이트 모델 소스 내에서 GAMSDatabase는 GDX 파일을 통해 액세스할 수 있습니다. 슬롯 사이트 모델 소스에는 적절한 GDX 파일(예: $GDXIN 파일 이름)에 연결하기 위해 특정 파일 이름이 필요합니다. GAMSDatabase는 모델 내부에서 사용할 수 있는 지정된 이름으로 생성될 수 있습니다(예: GAMSDatabase db = 작업 공간.AddDatabase(databaseName:"SupplyData"). 그런 다음 슬롯 사이트 모델 소스 내부: $GDXIN SupplyData) 또는 자동으로 생성된 이름을 사용할 수 있습니다. 이 이름은 GAMSOptions 인스턴스의 정의 목록을 사용하여 슬롯 사이트 모델로 전달될 수 있습니다.
선택.
정의.추가(
"공급데이터파일이름",db.
이름);
...
gamsjob.Run(opt, db);
문자열 이름
슬롯 사이트데이터베이스 이름을 가져옵니다.
정의GAMSDatabase.cs:311
사전< 문자열, 문자열 > 정의
슬롯 사이트 대시 옵션.
정의GAMSOptions.cs:47
슬롯 사이트 모델 소스 내에서 이름은 다음과 같이 액세스됩니다:
$GDXIN %SupplyDataFileName%
예를 들어 주문된 세트에 관해서는 약간의 주의를 기울여 행동해야 합니다. 지연과 리드를 허용하십시오. GAMSDatabase .NET 클래스에 대해 "도메인 확인"을 시행하지 않음으로써 우리는 정렬된 세트에 대한 잠재적인 문제를 악화시켰습니다. 슬롯 사이트의 경우 집합 요소의 레이블은 문자열이므로 집합의 순서는 해당 요소의 모양에 따라 결정됩니다. 예를 들어 '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는 특수 값과 관련된 산술 연산 결과를 문서화합니다.
슬롯 사이트 .NET API에서는 +/-무한대(예: double.PositiveInfinity) 및 NA(double.NaN)에 대한 IEEE 표준 값을 해당 슬롯 사이트 값에 매핑합니다. UNDEF의 특수 값은 슬롯 사이트 .NET API를 통해 필터링되지 않습니다. UNDEF의 내부 double 값은 1.0E300입니다(또는 gamsglobals의 상수 sv_valund를 사용하는 것이 더 좋습니다).
0 값에 특별한 주의가 필요합니다. 슬롯 사이트는 희소 시스템이므로 실제 0이 있는 (매개변수) 레코드를 저장하지 않습니다. 숫자 값이 0인 레코드가 필요한 경우 EPS가 도움이 될 수 있습니다. 예를 들면:
설정j /1*10 /; 매개변수 b(j); b(j) = 1; 비('5') = 0;
스칼라 s,c; s = 합(j, b(j)); c = 카드(b); s,c를 표시;
결과는
-- 3 PARAMETER s = 9.000
매개변수 c = 9.000
하지만
결과는 다음과 같습니다
---- 3 PARAMETER s = 9.000
매개변수 c = 10.000
슬롯 사이트 .NET API의 결과는 무엇입니까? b('5')=0인 경우 매개변수 b를 읽으면 GAMSDatabase에는 b('5')에 대한 레코드가 없습니다. b('5')=EPS인 경우 GAMSDatabase는 값이 double.Epsilon인 레코드를 갖게 됩니다. IEEE 값(예: double.PositivInfinity)과 달리 .NET의 산술 연산은 double.Epsilon을 수정합니다(예: 5*double.PositiveInfinity==double.PositiveInfinity이지만 5*double.Epsilon!=double.Epsilon). GAMSDatabase에서 슬롯 사이트용 입력 데이터를 준비하는 데에도 동일한 규칙이 적용됩니다. double.Epsilon 값이 기록되면 슬롯 사이트는 특수 값 EPS를 확인합니다. EPS에 사용되는 값은 GAMSWorkspace 속성 MyEPS를 사용하여 재설정할 수 있습니다. 다른 모든 작은 값(0 포함)은 필터링되지 않은 상태로 슬롯 사이트에 전달됩니다. 앞서 언급했듯이 슬롯 사이트의 데이터 레코드에는 0이 입력되지 않습니다. 컴파일러 컨트롤 $on/offEPS는 0을 EPS에 자동으로 매핑하는 데 도움이 될 수 있습니다.
슬롯 사이트 입력에는 1e-250보다 작은 값과 관련하여 한 가지 이상한 점이 있습니다. 다음 예를 고려해보세요.
for(
inti=1; 나는 < 11; i++) b.
AddRecord(i.ToString()).
값= 1;
job.Run(db);
이중 값
Get: 이 GAMSParameterRecord 값을 검색합니다. Set: 이 GAMSParameterRecord 값을 설정합니다.
정의GAMSParameterRecord.cs:38
이것은 슬롯 사이트의 매개변수 기호 표현입니다. GAMSDatabase에 존재하며 GA를 포함합니다...
정의GAMSParameter.cs:14
새 GAMSParameterRecord FindRecord(params 문자열[] 키)
GAMSParameter에서 레코드를 찾으세요.
정의GAMSParameter.cs:109
새 GAMSParameterRecord AddRecord(params 문자열[] 키)
GAMSParameter에 레코드를 추가합니다.
정의GAMSParameter.cs:99
$load j b
스칼라 카드_b; 카드_b = 카드(b); 디스플레이 카드_b;
b(j) = 2*b(j); 카드_b = 카드(b); 디스플레이 카드_b;
1e-250보다 작은 값을 가진 레코드가 슬롯 사이트의 입력에 존재하지만 레코드가 슬롯 사이트에 의해 업데이트되고 여전히 1e-250보다 작은 경우 레코드가 제거됩니다.
슬롯 사이트의 집합 순서는 직관적이지 않을 수 있습니다. "집합 i /5/, j /1*5/;"를 고려하세요. 요소 '5'는 내부 번호 1을 얻고, '1'은 2를 얻고, '2'는 3을 얻습니다. j '5'의 마지막 요소에는 이미 내부 숫자 1이 있습니다. j의 내부 숫자 시퀀스는 오름차순이 아니므로 슬롯 사이트는 집합 j를 정렬되지 않은 것으로 간주합니다. 즉, ord() 함수나 지연 또는 선행(-,–,+,++) 연산자를 사용할 수 없습니다. 이 예에서 'j'가 'i'보다 먼저 정의되었다면 "세트가 정렬되지 않음" 문제는 방지되었을 것입니다.
GAMSDatabase는 실제로 데이터베이스 관리를 위한 관계형 모델을 구현하지 않습니다. 데이터 저장소 또는 데이터 컨테이너로 보아야 합니다.