설명
대부분의 혼합 정수 솔버는 선형 프로그래밍 엔진을 기반으로 합니다. 부동 소수점 연산을 사용합니다. 가끔 이로 인해 잘못된 해결책. 이 예에서는 많은 MIP 솔버가 실패했습니다. Neumaier와 Shcherbina는 이를 극복하기 위한 절차를 제안했습니다. 이 문제. 아래 MIP에는 실행 가능한 공간이 있어야 합니다. 이는 하나의 단일 지점일 뿐이며 편안한 솔루션은 멀습니다. 정수 솔루션에서 벗어나십시오. 대부분의 MIP 코드는 다음과 같은 경우 실패합니다. 변수의 상한이 큽니다. 실제로는 이 정수 변수에 대해 엄격한 상한을 사용하여 극복할 수 있습니다. 좋은 휴식을 취하기 위해. 풀린 문제를 보면 더 많은 통찰력을 제공할 것입니다.
소형 모델 유형 :MIP
카테고리 : 슬롯 사이트 추천 모델 라이브러리
메인 파일 : badmip.gms
$title MIP 반올림 문제(BADMIP,SEQ=290)
$onText
대부분의 혼합 정수 솔버는 선형 계획법 엔진을 기반으로 합니다.
부동 소수점 연산을 사용합니다. 가끔 이로 인해
잘못된 해결책. 이 예에서는 많은 MIP 솔버가 실패했습니다.
Neumaier와 Shcherbina는 이를 극복하기 위한 절차를 제안했습니다.
이 문제. 아래 MIP에는 실행 가능한 공간이 있어야 합니다.
이는 하나의 단일 지점일 뿐이며 편안한 솔루션은 멀습니다.
정수 솔루션에서 벗어나십시오. 대부분의 MIP 코드는 다음과 같은 경우 실패합니다.
변수의 상한이 큽니다. 실제로는 이
정수 변수에 대해 엄격한 상한을 사용하여 극복할 수 있습니다.
좋은 휴식을 취하기 위해. 풀린 문제를 보면
더 많은 통찰력을 제공할 것입니다.
Neumaier, A 및 Shcherbina, O, 선형 및 안전 경계
혼합 정수 프로그래밍. 수학적 계획법 A 등장, (2003)
키워드: 혼합 정수 선형 계획법, 반올림 오류, 부동 소수점 연산,
혼합 정수 반올림
$offText
세트
나는 / 1*20 /
ii(i) / 2*19 /;
스칼라 s / 6 /;
변수 obj, x(i);
정수 변수 x;
방정식 eq1, eq2(i), eq3, defobj;
eq1..(s+1)*x('1') - x('2') =g= s - 1;
eq2(ii(i)).. -s*x(i-1) + (s+1)*x(i) - x(i+1) =g= power(-1,ord(i))*(s+1);
eq3.. -s*x('18') - (3*s-1)*x('19') + 3*x('20') =g= -(5*s-7);
defobj..obj =e= - x('20');
모델 m / 모두 /;
x.up(i)$(ord(i) <= 13) = 10;
x.up(i)$(ord(i) >= 14) = 1e6;
m.limCol = 0;
m.limRow = 0;
mip min obj를 사용하여 m을 해결합니다.
매개변수
sol(i) '단일 포인트 솔루션'
diff(i) '알려진 솔루션과의 차이점';
sol(i) = round(2 - mod(ord(i),2));
if(m.modelStat = %modelStat.optimal% 또는
m.modelStat = %modelStat.integerSolution%,
diff(i) = round(x.l(i) - sol(i),6);
if(카드(차이) = 0,
'올바른 해결책을 찾았습니다. 축하합니다'를 표시합니다.
그렇지 않으면
'해법이 잘못되었습니다' 표시, sol;
abort$1 'MIP에서 잘못된 솔루션을 찾았습니다.';
);
그렇지 않으면
rmip min obj를 사용하여 m을 해결합니다.
abort$1 'MIP 실패';
);