때때로 모델은 슬롯 사이트 추천이 실제 문제일 때 문제를 실행 불가능하거나 정체되거나 잘못된 최적으로 보고하는 등 이상한 작업을 수행합니다. 이를 방지하거나 이러한 문제를 해결하려면 스케일링을 확인하고 모델의 스케일을 다시 조정하거나 솔버에게 보다 공격적인 스케일링을 사용하도록 요청하는 것이 종종 바람직합니다.
솔버 스케일링 측면에서 대부분의 LP/MIP 솔버는 자동 스케일링을 수행하며 숫자가 어려운 모델에 더 공격적인 스케일링을 적용할 수 있는 옵션이 있는 경우도 있습니다. Cplex 옵션 scanind, Gurobi 옵션 scaleflag 또는 Xpress 옵션 크기 조정. 그러나 모델러는 특정 변수와 방정식이 어떻게 상호 연관되어 있는지 알고 솔버가 해당 지식을 갖고 있지 않은 동안 공통 요인으로 슬롯 사이트 추천할 수 있기 때문에 일반적으로 더 나은 작업을 수행할 수 있습니다. 일반적으로 어려운 문제의 경우 아래 설명된 대로 스케일링을 수행한 다음 솔버도 스케일링하도록 하는 것이 바람직합니다. 일반적으로 작은 문제에는 슬롯 사이트 추천이 문제가 되지 않습니다.
이상적으로는 스케일링 연습을 수행할 때 제약조건 행렬 계수의 절대값이 비선형 항의 도함수를 포함하는 값(시작점)을 중심으로 중심이 되도록 모델을 수정해야 합니다. 여기에는 변수 및 방정식 스케일링 조작이 포함됩니다. 이 조작의 목표는 가장 큰 행렬 계수를 가장 작은 행렬 계수로 나눌 때 비율을 조정한 후 비율이 1000에서 10000을 넘지 않아야 합니다. 즉 계수의 범위는 0.01에서 100 또는 이와 유사한 것입니다. CONOPT3 솔버 매뉴얼에서 CONOPT의 저자인 Arne Drud는 다음과 같이 나타냅니다.
- 기본 및 초기본 솔루션 값은 약 1이 될 것으로 예상됩니다. 0.01부터 100까지입니다. 기본이 아닌 변수는 경계에 있으며 경계 값은 100보다 커서는 안 됩니다.
- 활성 제약 조건의 이중 변수(또는 한계)는 약 1일 것으로 예상됩니다. 0.01에서 100까지. 비결합 제약 조건의 이중 변수는 물론 0이 됩니다.
- 미분(또는 야코비안 요소)은 약 1일 것으로 예상됩니다. 예: 0.01에서 100까지.
- 변수의 예상 값이 1에 가깝도록 변수의 측정 단위를 선택해야 합니다.
- 변수의 단위를 선택한 후 방정식의 측정 단위를 선택하여 개별 항의 예상 값이 약 1이 되도록 해야 합니다.
이 작업은 GAMS 외부에서 수행하거나 GAMS 내에서 슬롯 사이트 추천을 사용할 수 있습니다. 기본 개념은 McCarl and Spreen의 17장에서 논의됩니다.여기그리고 변수의 모든 계수를 같은 양만큼 변경하고 방정식의 모든 계수에 대해 동일한 작업을 수행하는 작업이 포함됩니다. 다음 예를 고려하십시오.
최대 X1- 500X2- 400X3- 500X4s.t. 엑스1- 10000X2- 8000X3≤ 0
엑스2+ 4X3- 50X4≤ 0
1500X2+ 2000X3≤ 1200
50X2+ 45X3≤ 60
엑스1X2X3X4≥ 0
다음으로 슬롯 사이트 추천될 수 있음
최대 20X1- X2- X3- 0.1X4s.t. 엑스1- X2- X3≤ 0
엑스2+ X3- X4≤ 0
엑스2+ 1.667X3≤ 0.8
엑스2+ 1.125X3≤ 1.2
엑스1'X2'X3'X4'≥ 0
이 작업은 다음에 의해 수행됩니다.
- 첫 번째 제약조건의 계수를 1000으로 나눕니다.
- 두 번째 제약조건의 계수를 5로 나눕니다.
- 세 번째 제약조건의 계수를 1500으로 나누면,
- 네 번째 제약조건의 계수를 50으로 나눕니다.
- 객관 계수의 계수를 50으로 나눕니다.
- X1의 계수에 1000을 곱함
- X2에 대한 계수만 남겨두고
- X3의 계수에 1.25를 곱함
- X4의 계수에 1/10을 곱함
원래 모델과 수동으로 크기를 조정한 모델이 모두 예시에 있습니다scale2.gms .
이 슬롯 사이트 추천된 모델을 해결한 후 McCarl 및 Spreen에서 설명한 대로 슬롯 사이트 추천 인자를 적절하게 곱하고 나누어 슬롯 사이트 추천된 솔루션을 복구할 수 있습니다. 특히 변수의 스케일링된 모델 솔루션 값에 변수 스케일링 계수를 곱하여 원래 모델에 대한 솔루션을 복구합니다(따라서 X1은 X1에 대한 스케일링된 솔루션 수준에 1000을 곱함). 유사하게 변수 한계값은 목적 함수 스케일링 계수로 곱해지고 다시 변수 스케일링 계수로 나누어집니다(따라서 X1의 경우 한계값은 스케일링된 한계 시간 0/10000이 됩니다). 동시에, 방정식 여유분 또는 수준은 행 스케일링 계수(첫 번째 방정식의 경우 1000을 곱함)를 곱하고 방정식 주변에는 목적 함수 스케일러를 제약 조건 스케일러로 나눈 값을 곱합니다(방정식 1의 경우 50/1000을 곱함). 마지막으로 목적 함수 값에 목적 함수 스칼라를 곱합니다.
이로부터 두 가지 질문이 발생합니다. 첫째, 정말 수동 스케일링과 디스케일링을 수행해야 합니까? 둘째, 배율 인수를 어떻게 형성합니까?
첫 번째 질문에서 당신은 운이 좋았습니다. 슬롯 사이트 추천에는 배율 인수를 지정하는 쉬운 방법이 있으며 자동으로 솔루션의 규모를 축소하므로 수동 절차가 필요하지 않습니다. 이에 대한 내용은 McCarl Expanded User Guide의 스케일링 섹션에서 다룹니다. 위의 예의 경우scale2.gms슬롯 사이트 추천 스케일링 절차의 구현이 포함되어 있으며 관련 부분은 다음과 같습니다.
매개변수 SCALEPROC(프로세스) 변수 스케일링
/ x1 10000, x2 1, x3 1.25,x4 0.1/
매개변수 스케일러(리소스) 방정식 스케일링
/c1 10000, c2 5, c3 1500,c4 50/;
스칼라 rhsscale /1/
스칼라 objscale /500/;
PRODUCTION.scale(PROCESS)=SCALEPROC(프로세스);
objt.scale=objscale;
AVAILABLE.scale(리소스)=SCALERESOR(리소스);
RESALLOC.scaleopt=1;
코드가 배율 인수를 지정하는 경우GAMS 슬롯 사이트 추천 메커니즘에 복사합니다.차례로GAMS에 슬롯 사이트 추천된 모델을 해결하도록 지시하는 모델 속성을 지정합니다.
두 번째 질문에서는 다음 접근 방식을 통해 계수 크기를 식별하는 데 대한 지원을 얻을 수 있습니다.
- Drud의 CONOPT3 문서에 따라 LIMROW, LIMCOL을 사용하고 열과 행 내에서 크거나 작은 크기 숫자를 검색한 다음 배율 인수를 고안할 수 있습니다.
- 먼저 BLOCKLIST 또는 BLOCKPIC 명령과 함께 GAMSCHK(여기에 대한 솔버 매뉴얼 참조)를 사용하여 크거나 작은 숫자 또는 1의 값에서 일관되게 벗어나는 변수 또는 방정식 블록을 찾은 다음 나중에 MATCHIT을 사용하여 개별 사례를 찾을 수 있습니다. 이러한 GAMSCHK 프로시저는 방정식과 변수에 있는 계수의 최대 및 최소 크기를 제공하므로 검색할 필요가 없습니다. 이는 DISPLAYCR을 사용하여 지원할 수도 있습니다.
- 또한 슬롯 사이트 추천 직원은 'jacobian' 옵션과 함께 CONVERT 솔버를 사용한다고 언급했습니다. 이는 비선형 항에 대한 비선형 항의 기울기(limrow/col 및 GAMSCHK와 같이 시작점에서 평가됨)를 포함하는 행렬 계수를 포함하는 gdx 파일을 제공합니다. 그런 다음 해당 파일을 Excel로 내보내고 조작할 수 있습니다. 이 작업을 수행할 때 변환은 모든 내부 변수 및 방정식 이름을 대체합니다. 이어서 변수 이름은 x1,x2,x3,…이고 방정식은 e1,e2,e3,…입니다.> 원래 이름으로 돌아가려면 CONVERT 생성 사전 파일을 사용하여 수동으로 역번역해야 합니다. 저는 이에 대한 경험이 없지만 GDX와 Excel이 다루기 힘들고 역번역이 어색할 수 있으므로 대형 모델에서는 실용적이지 않은 것 같습니다.
- 슬롯 사이트 추천 직원은 또한 Cplex 12.7의 새로운 옵션에 모델에서 의심스러운 항목을 "보고 보고"하는 새로운 옵션(datacheck=2)이 있다고 말했습니다. 로그 파일(LST 파일 아님)에는 크고 작은 계수, rhs 값 및 Cplex가 수치적 불안정성을 유발할 수 있다고 생각하는 모든 항목에 대한 정보가 포함되어 있습니다. 중간 크기 모델로 간주되는 제품에 이것을 시도했는데 다음과 같은 메시지를 받았습니다.
슬롯 사이트 추천 경고 1043: 오른쪽이 감지됨= CPX_FEAS_TOL at constraint 'AGTILLSTART(US.TxTranspec.Cropland.Zero)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_White_Fla.2)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_White_Fla.18)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_White_Fla.26)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_White_Fla.41)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_White_Fla.45)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_White_Fla.49)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_White_Fla.60)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_White_Fla.71)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_Red_Tex.2)'. 슬롯 사이트 추천 Warning 1045: Detected nonzero = CPX_CANCEL_TOL at constraint 'WELFAR', variable 'AGDEMANDS(2015.US.dom_demand.GrpfrtFrsh_Red_Tex.18)'. 슬롯 사이트 추천 Warning 1045: Too many warnings of this type have been detected. All further warnings of this type will be ignored. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'WELFAR' are fractions and can be scaled with 17/1. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'AGPRODBAL(2015.US.CB.RefSugar.base)' are fractions and can be scaled with 47/1. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'AGPRODBAL(2015.US.CB.CornforDairyCattle.base)' are fractions and can be scaled with 70/1. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'AGPRODBAL(2015.US.GP.Oats.base)' are fractions and can be scaled with 71/1. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'AGPRODBAL(2015.US.GP.Canola.base)' are fractions and can be scaled with 11/1. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'AGPRODBAL(2015.US.GP.RefSugar.base)' are fractions and can be scaled with 47/1. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'AGPRODBAL(2015.US.GP.CornforDairyCattle.base)' are fractions and can be scaled with 70/1. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'AGPRODBAL(2015.US.LS.Oats.base)' are fractions and can be scaled with 71/1. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'AGPRODBAL(2015.US.LS.RefSugar.base)' are fractions and can be scaled with 47/1. 슬롯 사이트 추천 Warning 1047: Decimal part of coefficients in constraint 'AGPRODBAL(2015.US.LS.CornforDairyCattle.base)' are fractions and can be scaled with 70/1. 슬롯 사이트 추천 Warning 1047: Too many warnings of this type have been detected. All further warnings of this type will be ignored. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'WELFAR' the ratio of largest and smallest (in absolute value) coefficients is 4.48036e+020. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'AGPRODBAL(2015.US.CB.Hay.base)' the ratio of largest and smallest (in absolute value) coefficients is 100000. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'AGPRODBAL(2015.US.CB.CottonseedMeal.base)' the ratio of largest and smallest (in absolute value) coefficients is 100000. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'AGPRODBAL(2015.US.CB.CottonseedOil.base)' the ratio of largest and smallest (in absolute value) coefficients is 776300. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'AGPRODBAL(2015.US.GP.Hay.base)' the ratio of largest and smallest (in absolute value) coefficients is 100000. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'AGPRODBAL(2015.US.GP.CottonseedMeal.base)' the ratio of largest and smallest (in absolute value) coefficients is 100000. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'AGPRODBAL(2015.US.GP.CottonseedOil.base)' the ratio of largest and smallest (in absolute value) coefficients is 776300. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'AGPRODBAL(2015.US.LS.Silage.base)' the ratio of largest and smallest (in absolute value) coefficients is 101350. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'AGPRODBAL(2015.US.LS.CottonseedOil.base)' the ratio of largest and smallest (in absolute value) coefficients is 776300. 슬롯 사이트 추천 Warning 1048: Detected constraint with wide range of coefficients. In constraint 'AGPRODBAL(2015.US.NE.CottonseedOil.base)' the ratio of largest and smallest (in absolute value) coefficients is 776300. 슬롯 사이트 추천 Warning 1048: Too many warnings of this type have been detected. All further warnings of this type will be ignored
이것들 중에서, 내가 쓴 이후로 나는 BLOCKLIST와 MATCHIT가 큰 숫자와 작은 숫자가 어디에 있는지 알려주는 GAMSCHK를 선호하고 그런 다음 DISPLAYCR을 통해 대상 디스플레이를 사용하여 사물을 살펴봅니다. GAMSCHK DISPLAYCR이 지원하는 CPLEX 정보도 훌륭해 보이지만 다른 솔버에서는 사용할 수 없습니다. 슬롯 사이트 추천 내부 스케일링 기능을 사용할 때 위에 언급된 모든 절차는 슬롯 사이트 추천 내부 스케일링이 적용된 후 계수를 보고합니다. 위의 GAMSCHK 기능은 하단에 구현되어 있습니다.scale2.gms예를 들어 LIMROW는 모델을 표시할 만큼 충분히 크게 설정되어 있습니다.
브루스 맥칼의 글에서슬롯 사이트 추천 뉴스레터 번호 41, 2017년 7월