로드 중...
검색 중...
일치하는 항목 없음
피망 슬롯control.execution.GamsModelInstance 클래스 참조

공개 회원 기능

 __init__(자신,체크포인트=없음, modelinstance_name=없음, 소스=없음)
 생성자.
 
 copy_modelinstance(자기, modelinstance_name=없음)
 이 ModelInstance를 새 ModelInstance에 복사합니다.
 
 __del__(자신)
 관리되지 않는 리소스를 명시적으로 해제하려면 이를 사용하십시오.
 
 정리(자신)
 피망 슬롯의 실제 사용을 제한하는 라이선스를 사용할 때 라이선스 세션을 명시적으로 닫습니다.
 
 인스턴스화(self, model_definition, modifiers=[], 옵션=없음)
 GamsModelInstance를 인스턴스화합니다.
 
 해결(자신, 업데이트_유형=SymbolUpdateType.BaseCase, 출력=없음, mi_opt=없음)
 모델 인스턴스를 해결합니다.
 
 인터럽트(자신)
 GamsModelInstance 실행에 인터럽트 신호를 보냅니다.
 

속성

 모델_상태= 속성(get_model_status)
 모델의 상태.
 
 solver_status= 속성(get_solver_status)
 모델의 상태를 해결합니다.
 
 체크포인트= 속성(get_checkpoint)
 GamsCheckpoint를 검색하세요.
 
 이름= 속성(get_name)
 GamsModelInstance 이름을 검색합니다.
 
 sync_db= 속성(get_sync_db)
 수정 가능한 데이터를 동기화하는 데 사용되는 GamsDatabase를 검색합니다.
 

자세한 설명

GamsJob 클래스는 피망 슬롯 모델과 솔버가 제공하는 해당 솔루션을 처리하는 표준 방법입니다. 피망 슬롯 언어는 루프에서 모델을 해결하고 분해 알고리즘 구축과 같은 기타 정교한 작업을 수행할 수 있는 프로그래밍 흐름을 제공합니다.

드문 경우지만 피망 슬롯 모델 생성 시간이 솔버 솔루션 시간을 지배하고 피망 슬롯 자체가 최적화 응용 프로그램에서 병목 현상이 됩니다. 피망 슬롯 해석 문에 의해 생성된 단일 수학적 모델인 모델 인스턴스의 경우 GamsModelInstance 클래스는 디스크 IO를 사용하지 않고 모델 변경 사항만 솔버에 전달하고 핫 스타트(LP와 같은 연속 모델의 경우)를 수행함으로써 모델 인스턴스를 수정하고 결과 문제를 가장 효율적인 방법으로 해결하는 제어된 방법을 제공합니다.

GamsModelInstance에는 모델 정의가 포함된 GamsCheckpoint가 필요합니다. GamsModelInstance의 인스턴스화를 위해 피망 슬롯 해결의 중요한 부분이 제공되어야 합니다. 모델 인스턴스의 수정은 sync_db(GamsDatabase 유형의 GamsModelInstance 속성)의 데이터를 통해 수행됩니다. GamsModelInstance를 수정하는 방법에 대한 정보가 포함된 GamsModifier를 생성해야 합니다. 이러한 GamsModifier는 GamsParameter 또는 업데이트할 GamsVariable 또는 GamsEquation이 포함된 트리플, 수정 작업(예: 변수 경계를 업데이트하기 위한 상한, 하한 또는 고정 또는 주로 다른 시작점에서 비선형 모델을 시작하는 데 사용되는 변수 또는 방정식의 수준/한계를 업데이트하는 Primal/Dual) 및 수정을 위한 데이터를 보유하는 GamsParameter로 구성됩니다. GamsModifier의 GamsSymbol은 sync_db에 속해야 합니다. GamsModifiers 목록은 인스턴스화 호출 시 제공되어야 합니다. GamsModifiers인 GamsParameters의 사용은 피망 슬롯 모델 소스에서 제한됩니다. 예를 들어 $() 내에서는 매개변수를 사용할 수 없습니다. 이러한 매개변수는 모델에 내생적으로 적용되며 피망 슬롯 컴파일러에서 그대로 처리됩니다. 게다가 모델 인스턴스의 테두리는 고정되어 있어 변수 및 방정식의 추가가 불가능합니다.

인스턴스화 호출은 sync_db의 데이터가 아닌 GamsModifiers의 기호 정보만 쿼리합니다. 수정자의 차원을 검색합니다. 이것이 바로 인스턴스화가 호출될 때 sync_db에 수정자 기호가 존재해야 하는 이유입니다(그러나 데이터가 있을 필요는 없습니다). sync_db의 업데이트 데이터를 포함하는 GamsParameters는 해석 메소드를 실행하기 전에 언제든지 채워질 수 있습니다. 해석 메소드는 이 데이터를 사용하여 모델 인스턴스를 업데이트합니다. 해석 메소드는 모델 인스턴스에 있는 수정자 기호의 모든 레코드를 반복하고 sync_db에서 업데이트 데이터를 찾으려고 시도합니다. sync_db의 레코드가 발견되면 이 데이터 레코드가 모델 인스턴스에 복사됩니다. SyncDB에서 해당 레코드가 발견되지 않으면 다른 선택이 있습니다. 1) 기본값인 원본 데이터 레코드가 복원됩니다(update_type=SymbolUpdateType.BaseCase). 2) GamsParameter의 기본 레코드(0)가 사용됩니다(update_type=SymbolUpdateType.Zero). 3) 복사가 발생하지 않으며 이전에 복사한 레코드 값(update_type=SymbolUpdateType.Accumulate)이 사용됩니다. 모델 인스턴스가 업데이트된 후 모델은 선택한 솔버에 전달됩니다.

Solve 메소드가 완료된 후, sync_db에는 방금 해결된 모델의 원시 및 이중 솔루션이 포함됩니다. 또한 GamsModifier인 GamsParameter는 GamsParameter 이름에 "_var"를 더한 GamsVariables로 sync_db에서 액세스할 수도 있습니다. 이 GamsVariable의 한계는 매개변수 설정에 대한 민감도 정보를 제공할 수 있습니다. 해결 상태는 model_status 및solver_status 속성을 통해 액세스할 수 있습니다.

일반적으로 피망 슬롯 Python API의 파일 작업은 GamsWorkspace에 정의된 Working_directory에서 발생합니다. 이 규칙의 예외는 GamsModelInstance의 해석 루틴에 있는 해석기 특정 옵션으로 인해 읽거나 생성된 파일입니다. 이러한 파일은 현재 디렉터리, 즉 애플리케이션이 실행되는 디렉터리에 기록되거나 읽혀집니다.

GAMSJob의 Run 메소드에 의해 생성된 GAMSCheckpoint에서 GAMSModelInstance를 생성하는 방법에 대한 예.

ws = GamsWorkspace()
cp = ws.add_checkpoint()
ws.gamslib("trnsport")
작업 = ws.add_job_from_file("trnsport.gms")
job.run(체크포인트=cp)
mi = cp.add_modelinstance()
b = mi.sync_db.add_parameter("b", 1,"수요")
mi.instantiate("우리에게 lp min z를 수송해 주세요", GamsModifier(b))
bmult = [ 0.7, 0.9, 1.1, 1.3 ]
forbmbmult:
b.clear()
forrecjob.out_db.get_parameter("b"):
b.add_record(rec.keys).value = Rec.value * bm
mi.solve()
인쇄("시나리오 bmult="+ str(bm) +":")
인쇄(" 모델 상태: "+ str(mi.model_status))
인쇄(" 해결 상태: "+ str(mi.solver_status))
인쇄(" 개체: "+ str(mi.sync_db.get_variable("z")[()].level))

생성자 및 소멸자 문서

◆ __init__()

피망 슬롯control.execution.GamsModelInstance.__init__ ( 자신,
체크포인트=없음,
모델인스턴스_이름=없음,
출처=없음 )

생성자.

매개변수
체크포인트GamsCheckpoint
모델인스턴스_이름GamsModelInstance 식별자(생략 시 자동으로 결정)
출처복사할 모델 인스턴스

멤버 함수 문서

◆ 정리()

피망 슬롯control.execution.GamsModelInstance.cleanup ( 자신)

피망 슬롯의 실제 사용을 제한하는 라이센스를 사용할 때 라이센스 세션을 명시적으로 닫습니다.

이 메소드는 GamsModelInstance가 더 이상 사용되지 않을 때만 호출되어야 합니다.

◆ copy_modelinstance()

피망 슬롯control.execution.GamsModelInstance.copy_modelinstance ( 자신,
모델인스턴스_이름=없음 )

이 ModelInstance를 새 ModelInstance에 복사합니다.

매개변수
모델인스턴스_이름GamsModelInstance 식별자(생략 시 자동으로 결정)
반품
새 ModelInstance 참조

◆ 인스턴스화()

피망 슬롯control.execution.GamsModelInstance.instantiate ( 자신,
모델_정의,
수정자=[],
옵션=없음 )

GamsModelInstance를 인스턴스화하십시오.

매개변수
모델_정의모델 정의
수정자GamsModifier 목록
옵션GamsOptions

◆ 해결()

피망 슬롯control.execution.GamsModelInstance.solve ( 자신,
업데이트_유형=SymbolUpdateType.BaseCase,
출력=없음,
mi_opt=없음 )

모델 인스턴스를 해결하세요.

매개변수
업데이트_유형업데이트 유형
출력피망 슬롯 로그를 캡처하는 데 사용됩니다(예: sys.stdout 또는 내장 함수 open()에 의해 생성된 객체)
mi_optGamsModelInstance 옵션

속성 문서

◆ 모델_상태

피망 슬롯control.execution.GamsModelInstance.model_status = 속성(get_model_status)
정적

모델의 상태.

(해결 후 사용 가능)

◆ solver_status

피망 슬롯control.execution.GamsModelInstance.solver_status = 속성(get_solver_status)
정적

모델의 상태를 해결합니다.

(해결 후 사용 가능)