설명
통계 기관은 필요한 항목이 포함된 데이터를 게시합니다. 비밀을 보호하기 위해 변경되었습니다. 제어된 표 형식 조정(CTA) 공개를 제한하는 최근의 방법으로 우아하게 표현할 수 있습니다. 혼합 정수 프로그래밍 문제로. 프로그래밍 프레임워크는 다음과 같습니다. 다차원과 같은 다른 데이터 관계를 쉽게 표현할 수 있습니다. 조건을 추가합니다. 다음 모델은 의 3차원 테이블을 사용합니다. Cox, Kelly 및 Patil(2005)에서 이 방법을 설명합니다. 데이터는 Excel 스프레드시트에 저장됩니다.
대형 모델 유형 :MIP
카테고리 : 피망 슬롯 모델 라이브러리
$title 제어된 표 형식 조정(CTA,SEQ=310)
$onText
통계기관은 반드시 확인해야 할 항목이 포함된 데이터를 공개합니다.
비밀을 보호하기 위해 변경되었습니다. 제어된 표 형식 조정(CTA)
공개를 제한하는 최근의 방법으로 우아하게 표현할 수 있습니다.
혼합 정수 프로그래밍 문제로. 프로그래밍 프레임워크는 다음과 같습니다.
다차원과 같은 다른 데이터 관계를 쉽게 표현할 수 있습니다.
조건을 추가합니다. 다음 모델은 의 3차원 테이블을 사용합니다.
Cox, Kelly 및 Patil(2005)에서 이 방법을 설명합니다.
데이터는 Excel 스프레드시트에 저장됩니다.
Lawrence H Cox, James P Kelly 및 Rahul J Patil, 전산 측면
제어된 표 형식 조정: 알고리즘 및 분석(다음 항목)
컴퓨팅, 최적화 및 의사 결정 기술의 물결, Eds Bruce L Golden,
S Raghavan 및 Edward A Wasil, Springer, 2005, pp 45-59.
키워드: 혼합 정수 선형 계획법, 통계 공개 제한
$offText
세트
나는 '행'
j '열'
k '비행기';
매개변수
dat(k<,i<,j<) '보호되지 않은 데이터 테이블'
pro(k,i,j) '정보에 민감한 셀';
* 엑셀에서 데이터 추출
$onEmbeddedCode 연결:
- 엑셀리더:
파일: cox3.xlsx
기호:
- 이름 : dat
범위: Sheet1!A1
행차원: 2
열차원: 1
- 이름 : 프로
범위: Sheet2!A1
행차원: 2
열차원: 1
- 피망 슬롯작성기:
기호: 모두
$offEmbeddedCode
* 몇 가지 기본 데이터 확인을 수행합니다.
abort$sum((i,k), round(sum(j, dat(k,i,j)) - 2*dat(k,i,'total'))) '행 합계가 잘못되었습니다.', dat;
abort$sum((j,k), round(sum(i, dat(k,i,j)) - 2*dat(k,'total',j))) '열 합계가 잘못되었습니다.', dat;
abort$sum((i,j), round(sum(k, dat(k,i,j)) - 2*dat('total',i,j))) '평면 합계가 올바르지 않습니다.', dat;
변수
t(i,j,k) '조정된 셀 값'
obj;
양수 변수 adjN(i,j,k), adjP(i,j,k);
이진변수 b(i,j,k);
방정식
defadj(i,j,k) '새 셀 값 정의'
addrow(i,k) '행 합산'
addcol(j,k) '열 합산'
addpla(i,j) '평면에 대한 합산'
pmin(i,j,k) '민감한 셀에 대한 작은 값'
pmax(i,j,k) '민감한 세포에 대한 큰 값'
defobj;
세트
v(i,j,k) '0이 아닌 셀'
s(i,j,k) '민감한 세포';
매개변수 BigM '유명한 빅 M - 가능한 한 작게 만듭니다';
defadj(v(i,j,k)).. t(v) =e= dat(k,i,j) + adjP(v) - adjN(v);
addrow(i,k).. sum(v(i,j,k), t(v)) =e= 2*t(i,'total',k);
addcol(j,k).. sum(v(i,j,k), t(v)) =e= 2*t('total',j,k);
addpla(i,j).. sum(v(i,j,k), t(v)) =e= 2*t(i,j,'total');
pmin(s(i,j,k))..adjN(s) =g= pro(k,i,j)*(1 - b(s));
pmax(s(i,j,k))..adjP(s) =g= pro(k,i,j)*b(s);
방정식 pminx, pmaxx;
pminx(s(i,j,k)).. adjN(s) =l= BigM*pro(k,i,j)*(1 - b(s));
pmaxx(s(i,j,k)).. adjP(s) =l= BigM*pro(k,i,j)*b(s);
defobj..obj =e= sum(v, adjN(v) + adjP(v));
모델 cox3 / 모두 /;
v(i,j,k) = dat(k,i,j);
s(i,j,k) = pro(k,i,j);
옵션 limCol = 0, limRow = 0, solPrint = 끄기, optCr = 0, optCa = 0.99, resLim = 10;
빅엠 = 2;
mip를 사용하여 cox3 min obj를 해결합니다.
매개변수
rep(k,i,j) '요약 보고서'
adjsum(k,i,j,*) '조정 요약'
adjrep(k,i,j) '조정 보고서';
옵션 담당자:0:2:1, adjrep:0:2:1, adjsum:3:3:1;
담당자(k,i,j) = t.l(i,j,k);
adjsum(k,i,j,'neg') = adjn.l(i,j,k);
adjsum(k,i,j,'pos') = adjp.l(i,j,k);
adjsum(k,i,j,'min') = pro(k,i,j);
adjrep(k,i,j) = -adjN.l(i,j,k) + adjp.l(i,j,k);
임베디드 코드 연결:
- 피망 슬롯리더:
기호:
- 이름 : adjrep
- 이름 : 담당자
- 이름 : adjsum
- 엑셀작성기:
파일: 결과.xlsx
클리어시트: 참
기호:
- 이름 : adjrep
- 이름 : 담당자
- 이름 : adjsum
endEmbeddedCode
* 이제 차선책 5가지 솔루션을 찾았습니다.
세트
l '솔루션 라벨' / Solution1*solution5 /
ll(l) 'l의 동적 버전';
매개변수
binrep(*,*,*,l) '보호된 변수에 대한 바이너리'
최고의 '최고의 객관적인 가치';
옵션 binrep:0:3:1;
방정식
cutone(l) '이전 솔루션을 제외하기 위해 잘라냄'
cuttwo(l) '이전 솔루션을 제외하기 위해 잘라내기';
* 모든 기호를 바꾸는 것만으로도 항상 보완적인 솔루션이 있습니다
* cut(ll).. sum(s, abs(b(s) - binrep(s,ll)) =g= 1;
cutone(ll).. sum(s$binrep(s,ll), 1 - b(s)) + sum(s$(binrep(s,ll) 아님), b(s)) =g= 1;
cuttwo(ll).. sum(s$(binrep(s,ll) 아님), 1 - b(s)) + sum(s$binrep(s,ll), b(s)) =g= 1;
모델 cox3c '컷 포함' / 모두 /;
* 전 세계 1% 이내의 카드(l) 최상의 솔루션을 찾습니다.
최고 = round(obj.l);
cox3c.resUsd = cox3.resUsd;
cox3c.nodUsd = cox3.nodUsd;
loop(l$((obj.l - best)/best <= 0.01),
ll(1) = 예;
binrep(s,l) = round(b.l(s));
binrep('','','Obj',l) = obj.l;
binrep('','','mSec',l) = cox3c.resUsd*1000;
binrep('','','nodes',l) = cox3c.nodUsd;
binrep('Comp','Cells','Adjusted',l) = sum((i,j,k)$(s(i,j,k) 아님), 1$round(adjn.l(i,j,k) + adjp.l(i,j,k)));
mip를 사용하여 cox3c min obj를 해결합니다.
);
임베디드 코드 연결:
- 피망 슬롯리더:
기호:
- 이름 : binrep
- 엑셀작성기:
파일: 결과.xlsx
클리어시트: 참
기호:
- 이름 : binrep
endEmbeddedCode