2013-11-24 5 views
1

내 모델은 그렇게 시작합니다 최소화 :개 이상의 변수

Minimize 
+T 

\* Constraints *\ 
Subject To 
+T -Ta >= 0 //T >= Ta 
+T -Tb >= 0 //T >= Tb 
+T -Tc >= 0 //and so on 
+T -Td >= 0 
+T -Te >= 0 

Tx 변수없이 상한으로 만 낮은 경계입니다. 무슨 일 CPLEX가 제대로 중요한 변수를 식별하는이지만, 다른 모든 것들은 "뻗어"결국 - 예를 들어, Ta >= 1000Tb >= 10, TbT 최소화 "나는 해결사를 말하고 싶어 1000

될 것입니다 개의 변수를 모두 최소화해야합니다. 단, 영향을 미치지 않는 경우에만 T "이 부정적입니다." 내가 어떻게 그럴 수 있니?

답변

1

공식화 된 문제는 축약입니다 (변수가 여러 값을 가질 수 있으며 여전히 최적 일 수 있다는 의미에서). 원하는 솔루션 효과를 변경하지 않고도 객관적인 기능에 용어를 추가함으로써 혼란 스러울 수 있습니다.

한 가지 방법은 다른 변수 (사용자의 Tx 변수)를 Objective Function에도 포함시키는 것입니다.

예를 들어, obj가 될 수 있도록 수 :

Minimize T + Ta + Tb + Tc + Td + Te 

이 나쁜 주 T 변수의 값에 영향을 미치지 않습니다. 엡실론은 몇 가지 작은 음수가 아닌 수 (말은 1E-5)이다

Minimize 
    T + epsilon(Ta + Tb + Tc + Td + Te) 

:

는 더 일반적으로,이 협약은 그런 짓을하는 것입니다. CPLEX (또는 어떤 솔버)가 "가격을 지불하기"를 원하지 않기 때문에 각 Tx 변수 (따라서 T)는 필요한만큼 커질 것입니다. Tb는 원래 솔루션과 마찬가지로 1000이 아니라 10이됩니다.

최적의 솔루션을보고 할 때는 T 변수의 값을보고하고 Objective function 값은보고하지 말아야합니다.

+0

영리한 작품, 고마워요 (다시) :) –

+0

다행, Maciej. –

관련 문제