2012-06-10 2 views
2

나는 다음과 같은 양식 방정식의 시스템을 해결하기 위해 노력하고있어 모든 변수와 숫자가 바이너리입니다 Matlab : 방정식의 이진 시스템을 해결하는 방법?

a5 + a6 + a7 + f5 + f6 + f7 = 11; 
b5 + b6 + b7 + e5 + e6 + e7 = 100; 
c5 + c6 + c7 + d5 + d6 + d7 = 100; 

a5 + b5 + c5 + d5 + e5 + f5 = 11; 
a6 + b6 + c6 + d6 + e6 + f6 = 100; 
a7 + b7 + c7 + d7 + e7 + f7 = 100; 

.

Matlab에서이를 수행 할 수있는 방법이 있습니까?

예를 들어,이 소수 값으로 이진수 치환함으로써 :

a5 + a6 + a7 + f5 + f6 + f7 = 3; 
b5 + b6 + b7 + e5 + e6 + e7 = 4; 
c5 + c6 + c7 + d5 + d6 + d7 = 4; 

a5 + b5 + c5 + d5 + e5 + f5 = 3; 
a6 + b6 + c6 + d6 + e6 + f6 = 4; 
a7 + b7 + c7 + d7 + e7 + f7 = 4; 

및 미지 정수가되어야한다는 든 매트랩 말해 간격에서 [0 : 1]?

A = [1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1; 
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0; 
0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0; 
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0; 
0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0; 
0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1]; 

b = [3 4 4 3 4 4]; 

은 다음 단계 무엇이 될 것이다 : 여기


는 X는 A = B 형태인가?

+3

* 도끼 = B * (여기서 목표 * x *)를 해결하는 것입니다. 이것은 적어도 다루기 쉽고 표기법이 더 간단합니다. –

+0

이것은 (메모리가 제공되는 경우) NP- 완료 인 2 진 변수 *로 정수 프로그래밍에 대한 문제처럼 보입니다. 일반적인 사용에는 2 가지 방법이 있습니다 : * branch-and-bound *와 * enumeration *. 개인적으로, @ OliCharlesworth의 답은 암시적인 것으로 읽혀질 수 있으므로 이것을 연립 방정식의 집합으로 다루지는 않을 것입니다. –

+0

@HighPerformanceMark : 선형 Ax + b 문제로 풀어야한다고 제안하는 것은 아니지만 벡터와 행렬에 캡슐화 된 경우 계수 등을 처리하는 것이 더 쉽습니다. –

답변

0

최적화 도구 상자가있는 경우 bintprog.

여러 솔루션이있을 수 있으므로 최소 합이있는 솔루션을 선택하겠습니다.

>> A = [1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1; 
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0; 
0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0; 
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0; 
0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0; 
0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1]; 

>> b = [3 4 4 3 4 4]; 

>> bintprog(ones(1,18),[],[],A,b) 
Optimization terminated. 
ans = 
    0 
    1 
    1 
    1 
    1 
    1 
    1 
    1 
    1 
    1 
    0 
    0 
    0 
    0 
    1 
    0 
    1 
    0 
넌 (http://en.wikipedia.org/wiki/System_of_linear_equations#Matrix_equation)에서 [선형 연립 방정식의 표준 매트릭스 형태] 이것을 정리함으로써 시작한다
+0

답변 해 주셔서 감사합니다. 가능한 모든 해결책을 얻는 방법을 알려주는 것이 좋을 것입니다. – Samsky

+0

이것은 일반적으로 어려운 문제입니다. 원래는 요구하지 않은 문제입니다. 여기에는 x (1) == 0, x (1) == 1과 같은 모든 가능한 솔루션을 먼저 요구하는 분기 및 바운드 방식이 포함됩니다. 이러한 각각의 가능성은 문제를 17 개의 미지수 . 반복. 또는이 문제에 대해 무엇이 가능한지, 가능한 모든 솔루션을 간단하게 테스트 할 수 있습니다. 단 2^20 = 1048576이므로 너무 오래 걸리지 않을 것입니다. –

+0

'x = b \ A' (또는'A \ b', 잊어 버렸습니다.)의 무엇이 잘못 되었나요? – rubenvb

관련 문제