1
나는 2-D 매트릭스 A를

최적화에 제약 조건을 추가하는 방법은 무엇입니까?

  A= [0 f1 0 f2] 
       [f3 f3 0 0] 
       ......... 

이 그리고 내가 작성해야 다른 2-D 매트릭스 B가 어디 최적화 문제를 공식화하는 작업입니다

. B는 A와 같은 크기입니다. a_ij = 0 (A의 요소)이면 b_ij (B의 요소)가 0이어야하고 a_ij가 0이 아닌 경우 b_ij가 0보다 크고 a_ij보다 작거나 같아야합니다.

제 제제에서 어떻게 표현할 수 있습니까? 나는이 제약/상태 추가 한 :

  b_ij<=a_ij 

을하지만이 a_ij가 동일 제로는하지 않을 때 제로와 동일 b_ij 아니라고 내용의 조건을 만족하지 않습니다. 어떤 도움이 필요합니까? 조건 답변되면 나타내는 논리 행렬을 생성 대안

B2 = min(A,B) 

과 함께 소자가 요소를 곱 모든 요소가 긍정적 인 경우

답변

0

요소와 비교하여 소자를 수행하여 각각의 행렬의 가장 작은 요소를 유지 매트릭스 B, 상기 조건을 만족하는 요소만을 유지, 나머지는 0으로 설정된다 :이

B = B.*(A~=0) 

이어서요소보다 작거나 동일하다고 B 요소를 유지 그렇지 않으면 A 값으로 바꿉니다.

B = B.*(B<=A) + A.*(B>A)) 

이 옵션을 사용하면 제약 조건을 일반화 할 수 있습니다.

a_ij의 요소가 0보다 큰 경우 b_ij의 필요 요소가 0보다 커야 함을 나타냅니다. 옵션 인 max을 사용하여 B의 모든 요소가 양수인지 확인하는 것입니다.

B = max(1e-2,B); % exact value is yours to set. 

이 단계는 귀하의 것이며 귀하의 문제에 달려 있습니다.

0

당신은 a이 사소한이다 (상수) 데이터 인 경우 의미를

a = 0 => b = 0 
a <> 0 => 0 < b <= a 

을 구현하고자합니다. a이 변수라면 일이 쉽지 않습니다. a>=0 :

당신은 a이 아닌 음이 의미

b <= a 

같은 의미의 일부를 구현했습니다. 또한 b이 음수가 아님을 의미합니다. 나머지 의미 a>0 => b>0 지금

a <= δ * 1000 
b >= δ/1000 
δ in {0,1} 

많은 MIP 솔버 지원 표시 제한으로 구현 될 수있다. 그러면 다음과 같이 말할 수 있습니다.

δ = 0 -> a = 0 
δ = 1 -> b >= 0.001 
δ in {0,1}