목차
소개
무작위 매개변수의 개별 분포를 사용하는 확률론적 프로그램은 결정론적 프로그래밍 문제가 됩니다. (일부 또는 전체) 매개변수의 확률론적 특성을 무시하고 적절한 최적화 알고리즘을 통해 이러한 문제를 해결할 수 있습니다.
libInclude 파일scenred.gms,라고도 함센레드메가 슬롯 축소 및 무작위 데이터 프로세스를 모델링하는 메가 슬롯 트리 구축에 사용할 수 있습니다.
메가 슬롯 축소 알고리즘에는 메가 슬롯 하위 집합(규정된 카디널리티 또는 정확도)을 결정하고 보존된 메가 슬롯에 최적의 확률을 할당하는 것이 포함되어 있습니다. 그런 다음 축소된 문제는 GAMS에서 제공하는 결정론적 최적화 알고리즘을 통해 해결됩니다.
메가 슬롯 트리 구성을 사용하면 다단계 확률론적 프로그램에 대한 정확한 입력으로 메가 슬롯 트리를 구성할 수 있습니다. 입력은 팬 형태의 개별 메가 슬롯입니다.
- 참고
- libInclude 파일
scenred.gms실행 도구 SCENRED2를 기반으로 하며 해당 기능을 활용합니다.
배경
메가 슬롯 축소
확률론적 프로그램에 대한 많은 솔루션 방법은 해당 확률과 함께 일련의 메가 슬롯(즉, 불확실한 매개변수의 가능한 결과)에 의한 불확실한 데이터 프로세스의 이산 근사치를 사용합니다.
대부분의 실제 문제의 경우 가능한 모든 메가 슬롯를 포함하는 최적화 문제(소위 결정론적 등가 프로그램)가 너무 큽니다. 계산의 복잡성과 시간 제한으로 인해 이 프로그램은 (훨씬) 더 적은 수의 메가 슬롯를 포함하는 모델로 근사화되는 경우가 많습니다.
[1,2]에서 개발된 축소 알고리즘은 초기 메가 슬롯 세트의 하위 집합을 결정하고 보존된 메가 슬롯에 새로운 확률을 할당합니다. 삭제된 메가 슬롯는 모두 확률이 0입니다.
ScenRed는 두 가지 축소 알고리즘을 사용합니다: Forward 및 Backward 방법. 일반적으로 메서드의 계산 성능(정확도, 실행 시간)이 다릅니다. 거대한 메가 슬롯 트리의 경우 Backward 방법은 실행 시간 측면에서 가장 기대되는 성능을 갖습니다. Forward 방법은 정확도를 비교할 때 가장 좋은 알고리즘이지만 보존된 메가 슬롯의 수가 적은 경우(강한 감소)에만 권장될 수 있습니다. 감소 방법을 선택하지 않으면 실행 시간과 관련하여 가장 기대되는 성능이 가장 좋은 방법이 선택됩니다.
축소 알고리즘은 원본과 축소된 확률 측정값의 특정 확률 거리를 활용합니다. 확률 거리는 메가 슬롯 확률과 메가 슬롯 값의 거리를 절충합니다. 따라서 메가 슬롯가 근접하거나 가능성이 낮은 경우 삭제가 발생합니다.
축소 개념은 일반적이고 보편적입니다. 확률론적 데이터 프로세스(예: 메가 슬롯의 종속성 또는 상관 구조, 메가 슬롯 확률 또는 프로세스 차원) 또는 메가 슬롯 구조(예: 트리 구조 여부)에 대한 요구 사항은 없습니다. 사용자가 추가 정보(얼마나 많은 결정 단계가 관련되어 있는지, 무작위 매개변수가 모델에 입력되는 위치는 객관적 및/또는 우변 및/또는 기술 매트릭스에서)를 제공하는 경우 확률론적 모델에 맞게 축소 알고리즘을 조정할 수 있습니다. 정보는 확률 거리를 선택하는 데 사용됩니다.
참조:
- J. Dupaéccaron;ová, N. Gröwe-Kuska, W. Römisch: 확률론적 계획법의 메가 슬롯 축소: 확률 측정법을 사용한 접근 방식, 수학적 계획법, 95:493-511, 2003
- H. Heitsch, W. Römisch: 확률론적 프로그래밍, 계산 최적화 및 애플리케이션의 메가 슬롯 축소 알고리즘, 24:187–206, 2003
메가 슬롯 트리 구성
다단계 확률론적 프로그램을 해결하기 위한 중요한 문제는 (다변량) 확률론적 입력 프로세스를 메가 슬롯 트리 형태로 대략적으로 표현하는 것입니다.
메가 슬롯 트리는 불확실성이 초기 기간의 루트 노드에서 시작하여 후속 기간의 노드로 분기되는 여러 단계에 걸쳐 전개되는 방식을 나타냅니다. 각 노드는 특정 시간의 시스템 상태를 나타내고 분기는 미래 상태로의 가능한 전환을 나타냅니다. 최종 노드 또는 잎은 모델에서 고려되는 다양한 메가 슬롯에 해당합니다.
메가 슬롯 트리의 구성은 일반적으로 대규모 개별 메가 슬롯 세트로 시작되며, 체계적으로 축소되어 문제를 계산적으로 관리할 수 있도록 만듭니다. 여기에는 트리 구조를 수정하고 유사한 메가 슬롯를 함께 그룹화하는 작업이 포함됩니다. 목표는 원본 세트의 필수 기능을 포착하는 대표적인 메가 슬롯 하위 세트를 유지하는 것입니다.
참조:
- H. Heitsch 및 W. Römisch: 다단계 확률론적 프로그램을 위한 메가 슬롯 트리 모델링, 수학적 계획법, 118:371–406, 2009
사용법
모델 및 데이터 준비
ScenRed를 사용하려면 확률론적 프로그래밍 모델을 위한 GAMS 프로그램의 추가 데이터 준비 및 재구성이 필요합니다.
- 확률론적 프로그래밍 모델의 GAMS 프로그램을 분석합니다.
초기 메가 슬롯와 다수의 입력 매개변수를 지정해야 하므로 GAMS 모델의 해당 구성요소를 식별하고 아직 존재하지 않는 경우 이를 생성하거나 계산해야 합니다. - GAMS 프로그램을 재구성하십시오.
모델이 다양한 메가 슬롯 또는 노드 확률을 처리할 수 있는지 확인하고 방정식이 (아마도 축소된) 트리 측면에서 정의되었는지 확인하세요. 모델에 아직 메가 슬롯 트리가 포함되어 있지 않으면 하나를 추가해야 합니다. 그렇다면 원래 노드 또는 트리의 하위 집합 측면에서 방정식 정의(및 다른 명령문도 가능)를 다시 작성하는 것은 간단한 작업입니다.
초기 메가 슬롯의 축소는 보존된 메가 슬롯(즉, 축소된 하위 트리)에 해당하는 모델 부분을 생성할 수 있는 경우에만 의미가 있습니다. 이는 원래 트리에 있는 노드의 하위 집합을 선언하여 수행됩니다. 매개변수와 방정식은 원래 노드 세트에 대해 선언되지만 하위 트리에 대해서만 정의됩니다. 이에 대해서는 섹션 뒷부분에서 예시를 통해 설명하겠습니다.
또한 모델이 변화하는 확률을 처리할 수 있는지 확인해야 합니다. 많은 실제 모델에는 동일한 확률의 메가 슬롯가 포함됩니다. 이 속성은 축소된 하위 트리의 확률에 의해 유지되지 않습니다.
예를 들어 다음을 고려해보세요.srkandwGAMS 모델 라이브러리의 모델 및칸드그것의 기반이 되는 모델입니다. 생산하다srkandwfrom칸드, 먼저 축소된 트리에 대한 솔루션을 허용하기 위해 원본을 재구성합니다. 이를 위해 노드 세트의 하위 세트를 소개합니다.sn(n) '축소된 트리의 노드' 설정;편의성과 명확성을 위해 동시에 두 번째 하위 집합인 리프 노드 집합을 소개합니다.leaf(n) '원본 트리의 리프 노드' 설정;기존 시간 노드 매핑을 기반으로 이 세트를 계산하는 일부 코드도 포함됩니다. 또한 축소된 트리에 대한 확률이라는 새로운 매개변수를 선언합니다.매개변수 sprob(n) '축소 트리의 노드 확률';이것이 선언되면 방정식을 빠르게 편집할 수 있습니다.정의그래서 그들은 축소된 하위 트리에서만 실행됩니다. 우리는 단순히 축소된 확률을 대체합니다.sprob원본의 경우문제및 축소된 노드 세트sn원래 노드 세트의 경우n. 참고하세요선언방정식은 변하지 않습니다.
이 예는 필요할 수 있는 또 다른 변경 사항을 보여줍니다. 확률론적 데이터는 노드가 마지막 인덱스로 설정된 매개변수에 있어야 합니다. 이 경우는 그렇지 않습니다.칸드모델이므로 우리는 단순히dem요구사항을 충족하는 매개변수srkandw. 원본 데이터를 편리하게 변경할 수 없는 경우 원본 데이터의 전치된 복사본을 생성하여 ScenRed에 전달할 수도 있습니다.
매개변수화
ScenRed를 사용하기 전에 몇 가지 입력 및 출력 매개변수를 정의해야 합니다. 1차원 매개변수로 수집됩니다.ScenRedParms. ScenRedParms는 다음 문에 포함될 수 있습니다.
$libInclude 스크린됨
- 참고
- libInclude 파일인 경우
scenred.gms인수 없이 호출됩니다.ScenRedParms로드되었습니다. 실제 메가 슬롯 축소/트리 구성이 완료되기 전에 libInclude를 명시해야 합니다.
이 명령문 이후에는 해당 매개변수에 값을 할당하여 필요한 모든 설정을 지정할 수 있습니다. 매개변수 값이 0(기본값)이면 설정이 비활성화됩니다. 사용 가능한 매개변수 목록은 아래에서 확인할 수 있습니다.
표 1:ScenRedParms에서 지원되는 매개변수
| 기호 | 설명 |
|---|---|
num_time_steps | 루트에서 리프까지의 경로 길이 |
num_leaves | 초기 트리의 나뭇잎/메가 슬롯 |
num_nodes | 초기 트리의 노드 |
num_random | 메가 슬롯 또는 노드에 할당된 무작위 변수 |
red_num_leaves | 원하는 보존 메가 슬롯 또는 잎 수 |
red_percentage | 원하는 상대 거리(정확도), 0.0에서 1.0 사이의 숫자 |
reduction_method | 원하는 축소 방법, 1 - 앞으로, 2 - 뒤로, 0 - 기본값 |
construction_method | 원하는 트리 구성 방법, 1 - Forward, 2 - Backward |
num_stages | 숫자 단계 |
sroption | 다음의 사용을 활성화옵션 파일 |
run_time_limit | 초 단위의 시간 제한 |
report_level | 보고서 수준: 값이 높을수록 더 많은 메시지 |
visual_init | 시각화 초기 트리 |
visual_red | 시각화 축소(구성) 트리 |
plot_scen | 시각화 메가 슬롯 프로세스 |
out_scen | 메가 슬롯 원시 데이터 출력 |
out_tree | 메가 슬롯 트리 데이터 출력 |
매개변수 값num_time_steps, num_leaves, num_nodes및num_random은 입력 데이터에서 자동으로 파생됩니다. 어쨌든 사용자가 이러한 필드를 설정하면 프로그램은 내부적으로 계산된 숫자와 사용자가 지정한 숫자가 일치하는지 확인합니다.
매개변수 중 하나 이상red_percentage그리고red_num_leaves설정되어야 합니다. 의 값red_percentage매개변수인 경우 무시됩니다.red_num_leaves은 0이 아닙니다. 그렇지 않으면 다음과 같은 경우 트리가 줄어들지 않습니다.red_percentage=0, 반면에 트리 축소는 최대가 됩니다(즉, 하나의 메가 슬롯만 유지됩니다).red_percentage=1. 숫자 값 0.4는 축소된 트리가 원래 트리에 포함된 정보의 60%를 유지함을 의미합니다. 다음과 같은 경우 축소 알고리즘을 건너뜁니다.red_num_leaves=num_leaves또는 만약에red_num_leaves=0그리고red_percentage=0. 사용자가 메가 슬롯 트리 진단을 실행하려는 경우 이러한 값을 할당할 수 있습니다.
예:
다음 명령문은 메가 슬롯 트리 시각화 및 이후 원시 데이터 파일로의 메가 슬롯 출력을 통해 메가 슬롯 트리 구성을 진행하기 위한 가능한 예제 설정을 설명합니다. ScenRed 작업(메가 슬롯 트리 구성 또는 메가 슬롯 축소)의 실제 선택은 libInclude가 완료될 때 결정됩니다. 참조아래.
* 일반 매개변수
ScenRedParms('num_leaves') = 100;
ScenRedParms('num_nodes') = 200;
ScenRedParms('num_time_steps') = 5;
ScenRedParms('num_random') = 2;
ScenRedParms('report_level') = 2;
ScenRedParms('run_time_limit') = 30;
* 실행 명령
ScenRedParms('visual_red') = 1;
ScenRedParms('out_scen') = 1;
libInclude 문
모든 것을 준비하고 나면입력, ScenRed를 사용할 준비가 되었습니다:
- 참고
- 초기 메가 슬롯와 다수의 입력 매개변수를 지정해야 하므로 실제 메가 슬롯 축소/트리 구성이 완료되기 전에 GAMS 프로그램의 해당 구성요소를 정의해야 합니다. (축소된) 확률론적 프로그래밍 모델의 방정식이 풀이 문에 사용되기 전에 축소 메가 슬롯를 정의해야 합니다. 그러므로
$libInclude 검사됨 [args]문은 GAMS 매개변수의 정의와 축소 확률론적 프로그래밍 모델의 해결 문 사이 어디에든 배치될 수 있습니다.
$libInclude scenred myprefix tree_con n tree p rtree rp rv1 rv2
표 2:ScenRed 인수:
| 인수 | 설명 | |
|---|---|---|
| 1 | myprefix | libInclude와 함께 사용되는 파일의 기본 이름 |
| 2 | tree_con또는scen_red | libInclude 작업 선택: 메가 슬롯 트리 구성 또는 메가 슬롯 축소 |
| 3 | n | 트리의 노드 집합 |
| 4 | 나무 | 나무를 설명하는 조상 관계 집합 |
| 5 | p | 노드 확률을 포함하는 매개변수 |
| 6 | r트리 | 축소된 트리의 조상 관계 집합(출력) |
| 7 | rp | 축소된 트리(출력)에 대한 노드 확률을 포함하는 매개변수 |
| 8 | rv1, rv2, ... | 노드의 임의 값을 포함하는 매개변수 |
인수 2는 ScenRed에게 트리를 구성하도록 지시합니다(tree_con) 또는 트리를 축소하려면(scen_red).
인수 3(여기:n)는 메가 슬롯 트리를 구성하는 노드 집합입니다. 이 세트의 카디널리티는 다음의 일부입니다.ScenRedParms.
인수 4(여기:나무)는 노드 간의 상위 매핑입니다. 이 매핑은 메가 슬롯 트리를 결정합니다. 매핑은 상위 매핑(즉, 하위-상위) 또는 후속 매핑(상위-하위)일 수 있습니다. 기본적으로 상위 매핑이 예상됩니다. 이에 대한 확인이 실패하면 후속 매핑을 찾습니다.
인수 5(여기:p)은 원래 트리의 노드에 대한 확률 매개변수입니다. 메가 슬롯(즉, 리프 노드)에 대한 확률만 제공하면 되지만 매개변수에는 리프가 아닌 노드에 대한 확률도 포함될 수 있습니다.
인수 8 및 다음은 초기 메가 슬롯 또는 메가 슬롯 트리의 노드에 할당된 무작위 값을 구성하는 매개변수를 지정합니다. 순서에 관계없이 이러한 매개변수가 두 개 이상 포함될 수 있습니다. 유일한 요구 사항은 노드 세트가 이러한 각 매개변수의 최종 색인이어야 한다는 것입니다.
출력 인수r트리그리고rp에서 가져온 기호에 해당출력 파일. 매개변수ScenRedParms그리고ScenRedReport눈에 보이지 않게 전달됩니다.
사용된 모든 다른 파일에 대해 명시적인 이름을 제공하는 대신 첫 번째 인수는 간단한 명명 체계를 사용하여 모든 파일의 이름을 결정합니다:
| 파일 이름 | 명령 옵션 | 설명 |
|---|---|---|
sr2myprefix.log | 로그_파일 | 로그 파일 이름 |
sr2myprefix_in.gdx | input_gdx | gdx 입력 파일 이름 |
sr2myprefix_out.gdx | output_gdx | gdx 출력 파일 이름 |
sr2myprefix.opt | sr_option | 옵션 파일 이름 |
sr2myprefix_vi.plt | visual_init | 입력 트리 시각화를 위한 파일 이름 |
sr2myprefix_vr.plt | visual_red | 축소/구성된 트리 시각화를 위한 파일 이름 |
sr2myprefix_plot.plt | plot_scen | 메가 슬롯 프로세스 시각화를 위한 파일 이름 |
sr2myprefix_raw.dat | out_scen | 팬 형식의 메가 슬롯 데이터 출력 파일 이름 |
sr2myprefix_tree.dat | out_tree | 트리 형식의 메가 슬롯 데이터 출력용 파일 이름 |
처음 세 파일(로그_파일, input_gdx그리고output_gdx)이 항상 사용됩니다. 유일한 선택적 입력 파일sr_optionScenRed가 읽은 경우ScenRedParms('sroption')=1. 이 파일을 생성할 때 적절한 파일 이름을 사용해야 합니다. 해당 옵션이 1 in으로 설정된 경우 출력 파일이 생성됩니다.ScenRedParms, 예ScenRedParms('out_tree')=1.
옵션 파일
옵션 파일은 선택 사항이며 어떤 종류의 방법(메가 슬롯 축소 또는 메가 슬롯 구성)이 사용되는지에 따라 보다 구체적인 옵션을 정의하는 데 사용할 수 있습니다. 메가 슬롯 축소 및 메가 슬롯 구성 장치에 대한 옵션 목록과 예제가 아래에 제공됩니다(섹션 참조)메가 슬롯 축소그리고메가 슬롯 트리 구성, 각각). 위에서 언급했듯이,옵션 파일다음의 경우 읽음ScenRedParms('sroption')=1. 파일 이름은 다음과 같아야 합니다.명명 체계.
메가 슬롯 축소
ScenRed에 포함된 감소 알고리즘의 적용은 특정 옵션을 구성하여 개별화할 수 있습니다. 가장 중요한 것은 옵션에 의해 제공됩니다.메트릭_유형이를 통해 다양한 유형의 확률 거리로 축소 과정을 제어할 수 있습니다. 총 3가지 거리를 선택할 수 있습니다(아래 표 3 참조). 모든 확률 거리는 옵션으로 설정할 수 있는 특별 주문 사양과 연관되어 있습니다.주문.
표 3:메가 슬롯 축소 옵션
| 옵션 | 설명 |
|---|---|
메트릭_유형 | 1 - 운송(기본값), 2 - Fortet-Mourier, 3 - Wasserstein |
p_norm | 표준 선택(예: 0 - 최대, 1 - 합계, 2 - 유클리드) |
확장 | 0 - 스케일링 오프, 1 - 스케일링 온(기본값) |
주문 | 메트릭 순서(정수, 기본값은 1) |
예:
예를 들어, 유효한 메가 슬롯 축소 설정은 다음과 같습니다:
ScenRedParms문장:
ScenRedParms('reduction_method') = 1;
ScenRedParms('red_percentage') = 0.3;
ScenRedParms('sroption') = 1;
옵션 파일과 함께:
* ScenRed 옵션 파일 metric_type 2 주문 2 p_norm 1 스케일링 0
별표로 시작하는 줄은 주석입니다.
메가 슬롯 트리 구축
트리 구성 과정을 제어하기 위해 몇 가지 옵션이 제공됩니다. 어떤 경우에는 특정 매개변수의 민감성으로 인해 좋은 결과를 얻기 위해 일부 조정이 필수적이라는 점에 유의하세요.
표 4메가 슬롯 트리 구성을 위한 옵션(기본)
| 옵션 | 설명 |
|---|---|
first_branch | 첫 번째 분기 기간(정수) |
eps_growth | 1 - 선형, 2 - 지수 |
eps_evolution | 트리 구조 매개변수(0.0~1.0) |
확장 | 0 - 축소, 1 - 축소(기본값) |
주문 | 측정항목 순서 |
위의 표 4는 트리 구성 프로세스를 제어하는 주요 옵션을 표시합니다. 축소 옵션과 매우 유사합니다.
매개변수의 역할red_percentageinScenRedParms은 근사 방식에 대한 총 엡실론 정확도(레벨)를 규정하는 것입니다. 그러나 근사 방식은 전체 수준을 단계로 분할해야 하는 단계적 근사를 기반으로 합니다. ScenRed는 전체 수준을 중간 수준으로 매핑하는 선형 및 지수 매핑이라는 두 가지 전략을 제공합니다. 옵션 사용eps_growth둘 중 하나를 선택하세요. 두 전략 모두 두 번째 조정 매개변수를 허용합니다.eps_evolution엡실론 분할의 기울기에 영향을 줍니다.
이러한 종류의 제어가 많은 응용 프로그램에 대해 좋은 결과를 생성할 수 있더라도 때로는 더 개별적인 제어가 필요할 수 있습니다. 예를 들어 일부 애플리케이션에는 분기 단계의 현지화가 필요합니다. 더욱이, 근사 범위를 단계에 직접 설정하는 것은 매우 유용할 수 있습니다. 이를 위해 표준 옵션이 새로운 섹션 환경으로 확장되었습니다.
추가 옵션 - 섹션 환경
섹션 환경을 사용하여 정확한 구성을 위한 대체 제어가 제공됩니다. 구역 환경은 건설 프로세스에 대한 더 나은 모니터링을 구축하는 것을 목표로 합니다. 동일한 구문으로 지원되는 섹션 유형은 전체적으로 세 가지입니다.
분기 제어:
이 섹션 환경에서는 분기 지점을 지정할 수 있습니다. 즉, 분기를 위해 제공되는 단계를 명시적으로 선택할 수 있습니다. 예를 들어, 다음을 사용하세요.
섹션 분기 2 4 6 끝
기간 2, 4, 6에서만 분기를 허용합니다. 각 단계 명령문은 한 줄에 배치되어야 합니다. 그러나 단계는 병합될 수 있습니다. 동일한 내용에 대해 더 짧은 형식으로 작성할 수 있습니다.
섹션 분기 2*6 2 끝
이 명령문은 기간 2에서 기간 6까지 2단계씩 증가하는 기간 내에서 분기를 읽습니다. 두 할당을 결합할 수 있으며 다음과 함께 사용해야 합니다.red_percentage매개변수 inScenRedParms.
엡실론 제어:
엡실론 섹션에서는 스테이지 근사값에 대한 엡실론 공차를 명시적으로 할당할 수 있습니다. 이러한 환경은 자동 엡실론 제어를 통해 때때로 발생하는 어려움을 극복합니다. 이 환경에서는 매개변수가 비활성화됩니다.red_percentage에ScenRedParms. 예를 들어, 다음을 사용하세요.
섹션 엡실론 2 0.04 3*4 0.03 5 0.02 6 0.01 끝
단계별로 서로 다른 엡실론 값을 할당하여 근사 방식을 제어합니다. 값은 참고하세요.0.03기간에 할당됨3그리고4예제에서.
노드 제어:
노드 제어는 트리 구성에 대한 가장 구체적인 제어입니다. 이 환경에서는 생성될 트리의 노드 수를 각 단계에 대해 명시적으로 할당할 수 있습니다. 예를 들어, 다음을 사용하세요.
섹션 num_nodes 1 1 2*3 5 4*5 10 6 15 끝
구문은 이전과 동일합니다. 한 번에 하나의 섹션 환경만 사용할 수 있습니다. 특히, 옵션 파일에서 감지된 첫 번째 섹션 환경만 사용됩니다. 섹션 환경도 표준 옵션처럼 주석 처리할 수 있습니다.
실험적 옵션:
완전히 동일한 입력 데이터에서 다양한 메가 슬롯 트리를 구축할 때 계산 속도를 높이는 또 다른 유용한 옵션이 있습니다. 이 경우 나무를 계산하는 데 필요한 메가 슬롯 거리는 첫 번째 실행 시 외부 파일에 저장되고 나중에 실행될 때 다시 로드될 수 있습니다. 따라서 거리는 한 번만 계산되어야 합니다. 예를 들어 다음 옵션을 사용하세요.
write_distance dist.sr2
계산된 거리를 'dist.sr2' 파일에 저장합니다. 다음 실행 시 다시 로드하려면 옵션을 사용하세요.
read_distance dist.sr2
입력 파일의 유효성 검사가 수행되지 않으므로 옵션은 실험적 옵션으로 분류됩니다. 이 옵션을 사용하기 전에, 다음과 같이 로드된 거리를 확인하십시오.read_distance옵션이 올바른 옵션입니다.
예:
마지막으로 옵션 파일과 유효한 조합을 보려면 다음 예를 보십시오.ScenRedParms메가 슬롯 트리 구성에 전달될 수 있습니다:
ScenRedParms('construction_method') = 2;
ScenRedParms('reduction_method') = 1;
ScenRedParms('sroption') = 1;
* 트리 구성 옵션 파일 주문 1 스케일링 0 단면 엡실론 2*4 0.1 5 0.2 6 0.1 끝
예
작은 예제 문제가 GAMS 모델 라이브러리에 포함되었습니다. 구현은 GAMS 프로그램에서 찾을 수 있습니다.sr트리그리고srpchase. sr트리팬 형식 메가 슬롯 표현을 트리 형식 표현으로 변환한 다음 트리 크기를 줄입니다.srpchase3단계를 포함하는 간단한 확률론적 구매 문제를 해결하는 것입니다. 임의 값 생성기를 사용하여 고정 분포에서 생성된 샘플 메가 슬롯는 트리 구성을 위한 입력 역할을 합니다.
출력
ScenRed 사용의 출력은 축소된 메가 슬롯 트리와 다음을 포함하는 GDX(GAMS 데이터 교환) 파일입니다.ScenRedReport매개변수.
출력 파일의 첫 번째 데이터 요소는ScenRedReport56765_56869표 5. 두 번째 데이터 요소는 축소된 메가 슬롯 트리의 노드 확률을 포함하는 매개변수입니다. 이러한 노드 확률은 축소된 트리를 구성하는 데 필요합니다. 세 번째이자 마지막 데이터 요소는 축소된 메가 슬롯 트리의 조상 지도입니다. 이 지도는 GDX 파일에서 읽을 수 있으며, 축소된 확률을 사용하여 원본에서 축소된 트리를 만들 수 있습니다. 데이터 출력 파일의 내용은 다음과 같이 요약됩니다.표 6.
| 요소 | 설명 |
|---|---|
ScenRedWarnings | 경고 횟수 |
ScenRedErrors | 오류 수 |
런_타임 | 실행 시간(초) |
orig_nodes | 초기 메가 슬롯 트리의 노드 수 |
orig_leaves | 초기 메가 슬롯 트리의 리프(메가 슬롯) 수 |
red_nodes | 축소된 메가 슬롯 트리의 노드 수 |
red_leaves | 축소된 트리의 리프(메가 슬롯) 수 |
red_percentage | 초기 및 축소 메가 슬롯 트리의 상대 거리 |
red_absolute | 초기 메가 슬롯 트리와 축소 메가 슬롯 트리 사이의 절대 거리 |
reduction_method | 사용된 축소 방법: 0: 메소드를 선택하기 전에 프로그램이 중지되었습니다. 1: 전달 방법 2: 역방향 방법 |
construction_method | 사용된 구성 방법(트리 구성) |
| 아니요. | 기호 | 유형 | 차원 | 콘텐츠 |
|---|---|---|---|---|
| 1 | ScenRedReport | 매개변수 | 1 | ScenRed 보고서 |
| 2 | red_prob | 매개변수 | 1 | 축소된 메가 슬롯에 대한 노드 확률 |
| 3 | red_ancestor | 설정 | 2 | 축소된 메가 슬롯의 조상 맵 |
출력 파일을 읽으려면 GAMSexecute_load문이 사용되었습니다. 이 명령문은 실행 시 GDX 데이터를 GAMS로 전송하는 데 사용됩니다. 예를 들어,라는 이름의 GDX 파일을 읽으려면srrun_out.gdx생성되었으므로 다음 명령문이 있을 수 있습니다:
execute_load 'srrun_out.gdx', ScenRedReport, sprob=red_prob, sanc=red_ancestor;
위의 문장에서 등호=은 GDX 매개변수의 데이터가 있음을 나타내는 데 사용됩니다.red_probGAMS 매개변수로 읽어야 합니다sprob및 GDX 세트의 데이터red_ancestorGAMS 세트로 읽어야 합니다sanc.
귀하의 모델이 원본의 하위 트리를 사용하도록 공식화되었다고 가정하면 이제 해결 및 후속 보고를 계속할 수 있습니다.
시각화
이 섹션에서는 메가 슬롯 프로세스 및 트리 구조의 플롯을 만드는 쉬운 방법이 설명됩니다. 이를 위해서는 무료 Gnuplot 소프트웨어나 간단한 데이터 파일에서 직접 플로팅할 수 있는 기타 플로팅 소프트웨어가 필요합니다.
작성 작업의 개념은 다음과 같습니다. 각 플롯에 대해 Gnuplot 액세스 파일(name.plt)과 원시 데이터 파일(name.dat)이라는 두 개의 파일이 생성됩니다. 액세스 파일에는 기본 Gnuplot 옵션이 포함되어 있으며 나중에 개인의 취향에 맞게 조정할 수 있습니다. 기본 출력은 디스플레이입니다. 지원되는 플로팅 명령은 다음과 같습니다.
visual_init,visual_red,plot_scen
초기 트리 구조, 축소/구성된 트리 구조 및 메가 슬롯 프로세스를 각각 플롯팅하기 위한 것입니다.
예:
예를 들어, 구성된 트리를 시각화하려면 ScenRedParms 매개변수를 활성화하세요
ScenRedParms('visual_red') = 1;63245_63349myprefix에서위의 예), 결과는 'myprefix.plt' 및 'myprefix.dat' 출력 파일입니다. 이제 그림을 계산하려면 두 출력 파일이 모두 있는 디렉터리(작업 디렉터리여야 함)에서 Gnuplot을 사용하여 'myprefix.plt' 파일을 열면 됩니다. 또는 명령줄 프롬프트 호출에서
>gnuplot myprefix.plt
Gnuplot은 자동으로 그림을 생성합니다. 개별 요구 사항에 따라 Gnuplot 액세스 파일의 옵션을 자유롭게 변경하세요. 자세한 내용은 Gnuplot 매뉴얼을 참조하세요. 특히, 잘 확장된 캡슐화된 포스트스크립트 그림(eps)을 계산하려면 위의 Gnuplot 옵션 파일에서 몇 줄의 주석 처리를 해제하고 다시 Gnuplot으로 열면 됩니다.
매개변수 포함plot_scen메가 슬롯 프로세스를 시각화할 수 있습니다. 랜덤값 개수에 따라 Gnuplot 접속 및 데이터 파일이 생성되니 참고하세요.
데이터 내보내기
메가 슬롯 축소 또는 메가 슬롯 트리 구성을 계산한 후 메가 슬롯 데이터를 외부 데이터 파일로 내보낼 수 있습니다. 이를 위해 두 개의 출력 매개변수out_tree그리고out_scen을 사용할 수 있습니다. 이러한 옵션은 각각 트리 및 팬 형식에 따라 데이터 파일을 생성합니다. 데이터 파일의 이름은 다음과 같습니다.명명 체계.
메가 슬롯 트리 진단 확인
입력 데이터를 읽을 때 데이터가 올바른지 확인하기 위해 여러 가지 검사가 수행됩니다. 여기에는 다음이 포함됩니다.
- 원하는 입력 매개변수와 사용자 입력 내용(노드 수, 리프 수, 시간 단계 수, 노드에 할당된 무작위 값 수)의 일관성.
- 원하는 입력 매개변수 및 옵션의 범위를 확인합니다.
- 메가 슬롯 및 노드 확률을 확인합니다.
- 조상 행렬 확인(그래프 방향 확인, 그래프에 주기가 포함되어 있는지 확인, 그래프에 불완전한 포리스트 또는 메가 슬롯가 포함되어 있는지 확인, 매개변수의 일관성 확인)
num_time_steps조상 행렬 포함).
메가 슬롯 트리 사양의 다음 오류로 인해 프로그램이 축소 알고리즘을 건너뛰게 됩니다.
- 입력 파일을 열 수 없습니다.
- 필수 입력 매개변수가 모두 제공되지 않았습니다.
- 필수 입력 매개변수가 사용자 입력과 일치하지 않습니다.
- 필수 입력 매개변수가 범위를 벗어났습니다.
- 누락되거나 부정적인 메가 슬롯 확률(떠날 확률).
- 상위 세트에 너무 많은 항목이 포함되어 있습니다(보다
2*num_nodes). - 조상 세트의 순환.
- 조상 세트의 메가 슬롯가 불완전합니다.
- 실행 시간 제한에 도달했습니다.
오류 및 오류 번호
심각한 오류가 발생하면 로그 파일에 오류 메시지가 표시됩니다. 이 메시지는 항상로 시작합니다.
**** SCENRED 런타임 오류 ...
매개변수에 오류 개수가 포함되어 있습니다.ScenRedReport의출력 파일(만들 수 있는 경우). 오류 발생은 로그의 마지막 ScenRed 관련 줄에서도 감지할 수 있습니다.
**** SCENRED ErrCode=...
숫자 값ErrCode그 의미는 아래에 나와 있습니다.
| ErrCode | 의미 |
|---|---|
| 1 | (내부용) |
| 2 | 입력 파일에서 읽는 중 치명적인 오류 |
| 3 | 출력 파일에 쓰는 중 치명적인 오류 |
| 4 | 옵션 파일을 읽는 중 치명적인 오류 |
| 5 | 로그 파일을 열 수 없습니다. |
| 6 | 메모리 할당 오류가 발생했습니다. |
| 7 | 입력 매개변수가 누락되었습니다. |
| 8 | 노드의 GAMS 이름에 액세스할 수 없습니다. |
| 9 | (내부용) |
| 10 | 상위 세트가 제공되지 않았거나 너무 많은 항목을 포함함 |
| 11 | 노드 확률을 읽을 수 없거나 잘못되었습니다. |
| 12 | 노드의 임의 값을 읽을 수 없습니다. |
| 13 | 입력 매개변수가 범위를 벗어났습니다. |
| 14 | 상위 세트에 주기가 포함되어 있습니다. |
| 15 | 불완전한 메가 슬롯 또는 숲이 감지됨 |
| 16 | 축소 알고리즘의 치명적인 오류(메모리 부족) |
| 17 | 실행 시간 제한에 도달함 |
경고
경고는 수정 가능한 초기 메가 슬롯의 잘못된 지정으로 인해 발생합니다. 입력 파일이나 메가 슬롯 트리에서 이러한 오류가 발생하면 로그 파일에 메시지가 표시됩니다. 이 메시지는 항상로 시작합니다.
**** SCENRED 경고 ...
다음 목록은 경고를 생성하는 사례와 이러한 경우 ScenRed가 취하는 조치에 대한 개요를 제공합니다.
- 사용자가 범위를 벗어난 옵션 값을 할당했습니다.
작업:기본값을 지정하십시오. - 두 매개변수 모두
red_num_leaves그리고red_percentage중요한 값이 할당되었습니다.
작업:값red_percentage무시됩니다. - 메가 슬롯 확률(잎이 나올 확률)의 합은 1이 아닙니다.
작업:메가 슬롯 확률이 재조정되었습니다. 메가 슬롯 확률과 일치하는 나머지 (내부) 노드에 새로운 확률을 할당합니다. - 내부 노드의 확률이 누락되었습니다.
작업:메가 슬롯 확률과 일치하는 노드 확률을 할당하십시오. - 상위 세트에는 노드에 대한 상위가 두 개 이상 포함되어 있습니다.
작업:조상 집합 대신에 후속 집합이 주어진다고 가정합니다(즉, 조상 행렬의 전치. 이는 조상 집합에 해당하는 그래프의 방향이 잘못되었음을 의미합니다). ScenRed는 후속 세트에 대한 트리 진단을 시작합니다. 축소된 트리는 후속 세트의 측면에서도 정의됩니다(후속 세트가 트리 진단을 통과하고 ScenRed가 실행 중에 치명적인 오류를 찾지 못한 경우).