scnred02.gms : Scenred2 테스트 - 트리 축소 및 0 값

설명

SCENRED에서 트리 감소의 간단한 확인

먼저 명백한 감소가 수행되었는지 확인합니다.
제거할 노드에는 0이 아닌 임의의 값이 있고 모든 경우에는
값 중 하나가 0입니다.

기여자: Steve Dirkse

소형 모델 유형 :크레이지 슬롯


카테고리 : 크레이지 슬롯 테스트 라이브러리


메인 파일 : scnred02.gms

$title Scenred 테스트 - 트리 축소 및 0 값 (SCNRED02,SEQ=434)

$onText
SCENRED에서 트리 감소의 간단한 확인

먼저 명백한 감소가 수행되었는지 확인합니다.
제거할 노드에는 0이 아닌 임의의 값이 있고 모든 경우에는
값 중 하나가 0입니다.

기여자: Steve Dirkse
$offText

세트
  g '상품' / g1, g2 /,
  n '노드' /
     n0 '루트 - 1단계',
    (n1*n5) '2단계'
  /
  stage2(n) / (n1*n5) /,
  조상(n,n) '(하위,부모) 순서로 스크린에 입력'
  newAncestor(n,n) '스크린샷의 출력'
  wantAnc(n,n) '새 트리가 예상됨' /
    (n1*n4).n0
  /
  anc차이(n,n)
  ;
별칭(n,n2);
매개변수
  prob(n) 노드 확률 /
    n0 1
    (n1*n4) 0.24
    n5 0.04
  /
  newProb(n) '검토된 노드 확률 출력'
  pErr(n) '원하는 확률 - 있음'
  rData(g,n) '무작위 데이터' /
    g1.(n1,n2) .1
    g1.(n3,n4) 5
    g2.(n1,n3) .1
    g2.(n2,n4) 5
    g1.n5 0
    g2.n5 5
  /
  ;

조상(stage2(n),'n0') = 예;

* 로드 스크린 기호 *
$set srprefix scnred02
$libInclude 검열됨

* SCENRED2 방법 선택 *
scenRedParms('reduction_method') = 1;
scenRedParms('red_num_leaves') = 4;

스칼라 작은 / 1e-3 /;

* 테스트 1: parms [tiny,5]를 사용하여 노드를 추가하고 노드 n2와 병합해야 합니다.
rData('g1','n5') = 아주 작음;
rData('g2','n5') = 5;

$libInclude scenred %srprefix% tree_con n 조상 prob newancestor newprob rData

ancDiff(n,n2) = wantAnc(n,n2) - newAncestor(n,n2);
abort$[card(ancDiff) 또는 (card(wantAnc)-card(newAncestor))] 'bad newAncestor';
pErr(n) = prob(n);  pErr('n5') = 0;  pErr('n2') = .28;
pErr(n) = abs(pErr(n)-newProb(n));
abort$[smaxn, pErr(n) > 1e-7] 'bad newProb';

* 테스트 2: parms [5,tiny]를 사용하여 노드를 추가하고 노드 n3과 병합해야 합니다.
rData('g1','n5') = 5;
rData('g2','n5') = 아주 작음;

$libInclude scenred %srprefix% tree_con n 조상 prob newancestor newprob rData

ancDiff(n,n2) = wantAnc(n,n2) - newAncestor(n,n2);
abort$[card(ancDiff) 또는 (card(wantAnc)-card(newAncestor))] 'bad newAncestor';
pErr(n) = prob(n);  pErr('n5') = 0;  pErr('n3') = .28;
pErr(n) = abs(pErr(n)-newProb(n));
abort$[smaxn, pErr(n) > 1e-7] 'bad newProb';

* 테스트 3: 매개변수 [0,5]를 사용하여 노드를 추가하고 노드 n2와 병합해야 합니다.
rData('g1','n5') = 0;
rData('g2','n5') = 5;

$libInclude scenred %srprefix% tree_con n 조상 prob newancestor newprob rData

ancDiff(n,n2) = wantAnc(n,n2) - newAncestor(n,n2);
abort$[card(ancDiff) 또는 (card(wantAnc)-card(newAncestor))] 'bad newAncestor';
pErr(n) = prob(n);  pErr('n5') = 0;  pErr('n2') = .28;
pErr(n) = abs(pErr(n)-newProb(n));
abort$[smaxn, pErr(n) > 1e-7] 'bad newProb';

* 테스트 4: parms [5,0]을 사용하여 노드를 추가하고 노드 n3과 병합해야 합니다.
rData('g1','n5') = 5;
rData('g2','n5') = 0;

$libInclude scenred %srprefix% tree_con n 조상 prob newancestor newprob rData

ancDiff(n,n2) = wantAnc(n,n2) - newAncestor(n,n2);
abort$[card(ancDiff) 또는 (card(wantAnc)-card(newAncestor))] 'bad newAncestor';
pErr(n) = prob(n);  pErr('n5') = 0;  pErr('n3') = .28;
pErr(n) = abs(pErr(n)-newProb(n));
abort$[smaxn, pErr(n) > 1e-7] 'bad newProb';