2012-11-21 5 views
3

matlab 수학 도구 상자에서 linprog 함수를 사용하여 간단한 문제를 해결해야합니다. 문제는이 함수가 문제를 해결할 수 있도록 방정식의 형식을 지정하는 방법을 모르겠다는 것입니다.MATLAB에서 linprog 용 방정식 서식 지정

x = argmax min{a1*x1 + a2*x2, a2*x2 + a3*x3 + a4*x4, a4*x4 + a5*x5} 

주제 :이 같이 다시 표현 될 수

sum(x_i) = 3000 
all x_i >= 0 

내가 최소화하기 위해 노력하고 기능입니다 ( a_i 어떤 주어진 계수이다, x은 R^5 인) :

(x, lambda) = argmin(-lambda) 

:

a1*x1 + a2*x2 >= lambda 
a2*x2 + a3*x3 + a4*x4 >= lambda 
a4*x4 + a5*x5 >= lambda 
sum(x_i) = 3000 
all x_i >= 0 

최소/최대 인수가없는 간단한 선형 함수의 최소화 예제 만 찾을 수 있습니다. 내 구조를 linprog 함수에 대한 인수로 만드는 방법에 대한 힌트를 주시겠습니까?

답변

1

이의 시도하자 다음 당신의 x 벡터 지금

[x1 x2 x3 x4 x5 lambda] 

목적 벡터

f = [0 0 0 0 0 -1] 

평등 제약 :

Aeq = [1 1 1 1 1 0] beq = 3000 

불평등 제약 :

,
A = [-a1 -a2 0 0 0 1; 0 -a2 -a3 -a4 0 1; 0 0 0 -a4 -a5 1] b = [0;0;0] 

하한 :

lb = [0 0 0 0 0 -inf] 

지금 인수의 일부 이조까지

linprog (F, A, B, AEQ, BEQ, LB)

시도 트릭을해야합니다.

1

나는 당신이 문제를 linprog 문제로 제기 한 것처럼 생각할 수 있다고 생각하지 않습니다. "MIN"작동이 문제입니다. 목적 함수가

제약 조건이 선형 비록
y = f'x. 

으로 말로 표현 할 수 없기 때문에, 당신의 목적 함수는 없습니다.

일부 트릭이 있으면 선형화 할 수 있습니다. 그러나 그렇다면 수학 문제입니다. 참조 : https://math.stackexchange.com/

+0

내 대답은 정확하지 않습니다. 확장 된 "이것은 다음과 같이 표현할 수 있습니다"부분을 참조하십시오. 비선형 목표를 선형 목적 함수로 매핑하는 기법 – Pete