2017-02-07 8 views
2

나는 Gauss-Jordan 제거를 사용하여 이미 행 방정식 행렬로 줄인 선형 방정식 시스템을 가지고 있습니다. n 변수 Xn (여기서 Xn은 N0 (= 양의 정수))에있는 시스템은 여러 가지 솔루션을 가지고 있으며 마녀를위한 솔루션을 찾고 싶습니다. 모든 Xn의 합이 최소입니다.최소 변수의 추가 제한이있는 선형 방정식 시스템 sum

어떻게하면됩니까 프로그래밍 방식으로? 선형 방정식의 시스템을 고려 예를 들어

: 나는 취득 할 최소한의 솔루션의

x1 +    + x5 + x6 = 2 
    x2   + x5  = 1  
      x3   + x6 = 1 
       x4 + x5 + x6 = 1 

하나입니다 :

x3 = x4 = x5 = 0 
x1 = x2 = x6 = 1 

또 다른 하나가 될 것

x2 = x4 = x6 = 0 
    x1 = x3 = x5 = 1 

그러나 나는 싫어.

x1 = 2 
x2 = x3 = x4 = 1 
x5 = x6 = 0 

도이 시스템의 솔루션이지만 x1 + x2 + x3 + x4 + x5 + x6 = 5로 내 기준에 따른 최소값은 아닙니다 (두 번째 첫 번째 솔루션의 경우 3 임)

여러 최소한의 솔루션의 경우

(솔루션 1과 2 모두 최소한 어디에 여기처럼), 내가 오래는 최소한의 것들 중 하나

+0

변수가 음수가 아니어야합니까? 다른 합계를 갖는 해가 존재하기 때문에 달성 가능한 합계는 아래에 한정되지 않습니다. –

+0

예 변수가 음수가 아닙니다. 그들은 양의 정수 {0,1,2, ...}의 집합에 속합니다. –

+1

인스턴스에 몇 개의 변수가 있습니까? 방정식은 몇 개입니까? – sascha

답변

0

이후이기 때문에 반환되는 최소한의 솔루션에 대한 상관 없어 변수는 모두 음이 아니며,이 문제는 근본적으로 정수 프로그래밍과 같습니다. 기존의 정수 프로그램 솔버를 사용하여

minimize x1 + x2 + x3 + x4 + x5 + x6 
subject to 
x1    + x5 + x6 = 2 
    x2   + x5  = 1 
      x3   + x6 = 1 
       x4 + x5 + x6 = 1 
integers 
x1, x2, x3, x4, x5, x6 >= 0 

(정확한 구문은 도구에 따라 다름)과 같은 공식을 사용하십시오.

+0

그럼 외부 도구를 사용하고 싶지 않습니다. 이 솔버를 직접 프로그래밍해야합니다 (프로그래밍하는 게임에 통합하기 위해). 그것은 내 질문의 목표였습니다 ... –

+2

@ThomasBernard : 많은 언어에 대한 선형 프로그래밍 패키지가 있습니다. 게임에 하나를 통합 할 수 있습니다. 직접 프로그래밍하고 싶다면 [simplex method or simplex algorithm] (https://en.wikipedia.org/wiki/Simplex_algorithm)을 검색하여 구현하십시오. –

+0

@RoryDaulton Simplex는 충분하지 않으며 Simplex는 가장 중요한 프로그래밍 작업 중 하나입니다 (성능이 중요 할 경우 Simplex는 인스턴스의 크기를 알지 못합니다). – sascha