1

최적화 도구 상자의 bintprog 명령은 부등호 제약 조건과 선택적 동등 제약 조건이있는 0-1 프로그래밍 문제를 해결합니다. Ax < = b 여기서 A는 행렬입니다 및 바 열 벡터.절대 값 0-1 최적화 (equiv., 두 개의 부등식 포함)

다음과 같은 형식의 문제가 있습니다. | Ax | < = b 또는 이와 동등하게 -b < = Ax < = b. Matlab에서 이런 종류의 문제를 해결할 수있는 방법이 있습니까? 크기 (A) = [N, m]을

답변

1

이 매우 간단합니다 :

당신은 |Ax| <= b 있습니다. 이는 (사용자가 명시한대로) -b <= Ax <= b에 해당합니다.
Ax <= b-Ax <= b이라는 추가 부등식 제약 조건이 있습니다.
따라서 모든 AA = [ A ; -A ]bb = [b;b]은 복근 값 제약 조건을 정의 이상이 :

x = bintprog(f, AA, bb); 
+0

가 보이는 당신이 43 초 동일한 대답으로 날 이길처럼! 좋은 작업. 두 가지 동일한 대답으로 여기 에티켓은 무엇입니까? 내 것을 삭제해야합니까? – raoulcousins

+1

@raoulcousins ​​: 제발 지켜주세요! – Charles

+0

@denis 참으로 - 잡은 고마워! – Shai

2

, 제약 조건이 제약 조건의 두 세트와 동일

for each {i in 1..m} 
    -b <= sum {j in 1..n} a_{ij} * x_{ij} <= b 

의 형식은

for each {i in 1..m} 
    sum {j in 1..n} a_{ij} * x_{ij} <= b 
    sum {j in 1..n} a_{ij} * x_{ij} >= -b 

가 작성하고 있으므로 이 양식 도끼에 < = B가, 그것은 원래 주어진, MATLAB에서

for each {i in 1..m} 
    sum {j in 1..n} a_{ij} * x_{ij} <= b 
    sum {j in 1..n} -a_{ij} * x_{ij} <= b 

처럼 보일 것이고, B, 당신이

A = [A; -A]; 
b = [b; b]; 

이러한 "배"제약 행렬을 만들고이 새와 정수 프로그램을 해결할 수 있습니다 (A, B).