이 스크립트를 확인하여 찾고 있던 내용인지 확인하십시오.
이름 기본값은 여기 ( 1 );
테이블 = N 테이블 ();
테이블 목록 = {};
을 위한 ( 나는 = 1 , 나는 <= Ntables, i++,
테이블 목록[i] = 데이터 테이블 ( 나 )
);
//표시(테이블리스트);
desTable = {};
conTable = {};
동일 테이블 경고 = 특급 (
대화 (
"각 선택 항목에 대해 다른 데이터 테이블을 선택하십시오." ,
텍스트 상자 ( " " ),
단추( "확인" )
)
);
noTableAlert = 특급 (
대화 ( "설계 데이터 테이블이 열려 있어야 합니다." , 텍스트 상자 ( " " ), 버튼( "확인" ) )
);
noMixtureFacAlert = 특급 (
대화 ( "설계 변수 테이블에는 혼합 요인이 없습니다." , 텍스트 상자 ( " " ), 버튼( "확인" ) )
);
할 일 = 특급 (
//디자인 테이블 평가
numCols = 엔콜 ( 테이블 );
numRows = N 행 ( 테이블 );
numMixFac = 0 ;
XMatrix = [];
혼합낮음 = [];
믹스어퍼 = [];
믹스합 = [];
믹스콘 = [];
//표시(numCols);
//표시(numRows);
현재 데이터 테이블 ( 테이블 );
을 위한 ( 나는 = 1 , 나는 <= numCols, 나는 ++,
열 = 열 ( 나 );
소품 = 열 << 재산을 얻다 ( "혼합물" );
//쇼(소품);
만약에 ( 목록임 ( 소품 ),
numMixFac++;
tmp = 열 << 행렬로 가져오기 ;
//표시(tmp);
XMatrix ||= tmp;
//쇼(X매트릭스);
mixLower ||= {소품[ 1 ]};
mixUpper ||= {소품[ 2 ]};
믹스섬 ||= {소품[ 삼 ]};
//표시(numMixFac);
);
);
만약에 ( numMixFac == 0 ,
noMixtureFacAlert,
토콘 = 제이 ( numRows, 1 , 0 );
//쇼(토콘);
//단순 제약 행렬 설정
numConstraintsOld = 2 * numMixFac + 1 ;
conMatrix = 제이 ( 1 , numMixFac, 1 );
conMatrix = conMatrix |/ 신원 ( numMixFac ) |/ 신원 ( numMixFac );
//쇼(콘매트릭스);
혼합합계 = 혼합합계[ 1 ];
믹스콘 = 믹스콘 || {mixSumVal} || 믹스로우 || 믹스어퍼;
//쇼(믹스콘);
// 제약 조건 테이블이 있는 경우 선형 부등식 제약 조건을 가져옵니다.
만약에 ( 컨밸 == 1 ,
numConstraintsNew = numConstraintsOld;
현재 데이터 테이블 ( 계속 );
numIneqRow = N 행 ( 계속 );
//중복 제약 조건 찾기
FullConMat = conMatrix || 믹스콘`;
을 위한 ( 나는 = 1 , 나는 <= numIneqCon, 나는 ++,
사기 = 열 ( 나 );
소품 = 콘 << 재산을 얻다 ( "제약 상태" );
charprop = 숯 ( 이름 Expr ( 소품 ) );
만약에 ( numIneqRow != numMixFac + 1 ,
던지다 ( "순수 혼합물 설계에서만 제약 조건을 사용할 수 있습니다." )
);
ineqConMat = con << 행렬로 가져오기 ;
//쇼(ineqConMat);
전체 테스트 = 0 ;
을 위한 ( j = 1 , (j <= numConstraintsOld), j++,
//0이 아닌 첫 번째 요소를 찾습니다.
을 위한 ( k = 1 , k <= numMixFac + 1 , k++,
만약에 ( FullConMat[j, k] != 0 ,
piv = FullConMat[j, k];
인드 = k;
k = numMixFac + 2 ;
)
);
테스트 = 0 ;
만약에 ( ineqConMat[ind] != 0 ,
mult = piv / ineqConMat[ind];
newRow = ineqConMat * mult;
newRow = newRow` - FullConMat[j, 0 ];
을 위한 ( k = 1 , k <= numMixFac + 1 , k++,
만약에 ( 복근 ( newRow[k] ) > 1e - 10 ,
테스트++
)
);
,
테스트++
);
만약에 ( 테스트 == 0 ,
전체 테스트++;
j = numConstraintsOld + 1 ;
);
);
//표시(전체 테스트);
만약에 (전체 테스트 == 0 ,
tmp = ineqConMat[ 1 :: numMixFac];
conMatrix = conMatrix |/ tmp`;
numConstraintsNew++;
tmp = ineqConMat[numMixFac + 1 :: numMixFac + 1 ];
믹스콘 = 믹스콘 || 시간;
);
//쇼(믹스콘);
);
,
numConstraintsNew = numConstraintsOld
);
//쇼(콘매트릭스);
//행이 제약 조건을 충족하는 방법 확인
resultMat = conMatrix * XMatrix`;
//표시(결과매트);
을 위한 ( j = 1 , j <= numRows, j++,
을 위한 ( 나는 = 1 , 나는 <= numConstraintsNew, 나는 ++,
만약에 ( 복근 ( 결과매트[i,j] - mixCon[i] ) < . 00000001 ,
새트콘[j, 1 ]++
)
)
);
//쇼(토콘);
//점에 라벨을 붙인다
현재 데이터 테이블 ( 테이블 );
pointCol = desTable << 새 열 ( "포인트 유형" , 문자, 공칭 );
을 위한 ( 나는 = 1 , 나는 <= numRows, 나는 ++,
만약에 (
(satCon[i] >= numMixFac),
pointCol[i] = "꼭지점" ;
행 상태 ( 나는 ) = 색상 상태 ( 삼 );,
(satCon[i] == numMixFac - 1 ),
pointCol[i] = "가장자리" ;
행 상태 ( 나는 ) = 색상 상태 ( 4 );,
(토콘[i] == 1 ),
pointCol[i] = "내부" ;
행 상태 ( 나는 ) = 색상 상태 ( 5 );,
numFace = numMixFac - satCon[i];
pointCol[i] = 숯 ( 숫자얼굴 ) || "디페이스" ;
행 상태 ( 나는 ) = 색상 상태 ( numMixFac - satCon[i] + 6 );
)
);
포인트콜 << 상표 ( 1 );
//삼항 플롯 스크립트 생성
xString = "" ;
을 위한 ( 나는 = 1 , 나는 <= numCols, 나는 ++,
열 = 열 ( 나 );
소품 = 열 << 재산을 얻다 ( "혼합물" );
만약에 ( 목록임 ( 소품 ),
컬럼명 = 숯 ( 열 이름 ( 나 ) );
//표시(열명);
xString = xString || 특급 ( " : " ) || 콜네임 || 특급 ( "," );
);
);
렌 = 길이 ( xString );
xString2 = 하위 문자열 ( xString, 1 , 렌 - 1 );
//표시(xString2);
만약에 ( numMixFac > 2 ,
프레임 문자열 = "" ;
만약에 ( numMixFac == 삼 ,
프레임 문자열 = 프레임 문자열 || "보고서(OBJ)[프레임박스(" || 숯 ( 1 ) ||
")]<<마커 크기(4);" ,
numPlots = (numMixFac * (numMixFac - 1 )) / 2 ;
을 위한 ( 나는 = 1 , 나는 < numPlots, i++,
프레임 문자열 = 프레임 문자열 || "보고서(OBJ)[프레임박스(" || 숯 ( 나는 ) ||
")]<<마커 크기(4); \!N "
);
프레임 문자열 = 프레임 문자열 || "보고서(OBJ)[프레임박스(" || 숯 ( 나는 ) ||
")]<<마커 크기(4);" ;
);
d1 = "obj=삼항 플롯(Y(" || xString2 || ")); \!N " || 프레임 문자열;
d2 = 평가 ( 특급 ( 구문 분석 ( d1 ) ) );
d3 = 특급 ( 데스테이블 << 새 테이블 속성 ( "삼항 플롯" , ㅏ ) );
평가 ( 대리자 ( 이름 Expr (d3), 특급 ( ㅏ ), 이름 Expr ( d2 ) ) );
);
만약에 ( NT테이블 > 1 ,
dlg << 창 닫기
);
);
);
초기화 상태 = 0 ;
만약에 (
(엔테이블 == 0 ), 테이블 경고 없음,
(엔테이블 == 1 ),
conVal = 0 ;
desTable = 테이블 목록[ 1 ];
일해;,
dlg = 새창 ( "혼합점 식별" ,
테두리 상자 ( 왼쪽 ( 삼 ), 맨 아래( 삼 ), 권리 ( 2 ), 측면( 28 ), 맨 위( 삼 ),
V 목록 상자 (
패널 박스 ( "테이블 설정" ,
체크 오브제 = 체크박스 (
{ "제약 테이블 사용" },
만약에 (초기 상태 == 0 ,
피박스 << 추가 (
pbox2 = 패널 박스 ( "제약조건 데이터 테이블 선택" ,
콤보 개체3 = 콤보 박스 ( 테이블 목록 )
)
);
피박스 << 다시 보여주다 ;
,
pbox2 << 삭제 ;
피박스 << 다시 보여주다 ;
);
만약에 (초기 상태 == 0 ,
초기화 상태 = 1 ,
초기화 상태 = 0
);
)
),
피박스 = 패널 박스 ( "데이터 테이블 선택" ,
패널 박스 ( "설계 데이터 테이블 선택" , 콤보 개체1 = 콤보 박스 ( 테이블 목록 ) ),
),
버튼 박스 ( "확인" ,
desTableNum = 콤보Obj1 << 가져 오기 ;
//show(desTableNum);
데스테이블 = 데이터 테이블 ( 평가 ( 테이블 번호 ) );
//쇼(데스테이블);
conVal = checkObj << 가져 오기 ( 1 );
만약에 ((conVal == 1 ) & (테이블 == 1 ),
던지다 ( "설계 테이블과 제약 조건 테이블이 모두 열려 있어야 합니다." )
);
만약에 ( 컨밸 == 1 ,
conTableNum = 콤보Obj3 << 가져 오기 ;
//표시(conTableNum);
conTable = 데이터 테이블 ( 평가 ( conTableNum ) );
//표시(conTable);
);
만약에 ((conVal == 1 ) & (desTableNum == conTableNum),
동일 테이블 경고,
만약에 ( 컨밸 == 1 ,
현재 데이터 테이블 ( 계속 );
numIneqCon = 엔콜 ( 계속 );
을 위한 ( 나는 = 1 , 나는 <= numIneqCon, 나는 ++,
사기 = 열 ( 나 );
소품 = 콘 << 재산을 얻다 ( "제약 상태" );
charprop = 숯 ( 이름 Expr ( 소품 ) );
만약에 (
(charprop != "제약 상태(미만)" ) & (charprop !=
"제약 상태(보다 큼)" ),
던지다 ( "제약조건 테이블을 사용해야 합니다." )
);
);
);
일해;
);
)
)
)
)
);