2015-11-21 3 views
3

У меня есть простая линейная задача определяется как:решения линейной оптимизации в MATLAB

min f(x) such that :A.x <=b 
       Aeq.x = beq 
       lb<= x <=ub 

вектор моих переменных:

x =[x(1)i;x(2)i;x(3)i;x(4)i;x(5);x(6)] i=1...n 

я есть трудности в написании верхней границы ограничения, определенные как следуйте за:

x(1).i <= x(5) 
x(2).i <= x(5) 
x(3).i <= x(6) 

Как я могу создать вектор, связанный с ограничителем? следует ли положить все переменные с левой стороны и записать их как ограничения неравенства?

благодарит за помощь.

+0

Я смущен, что вы просите ... 'lb = [1; 2; 5]; ub = [4; 10; 12]; 'будет использоваться для ограничений 1 <= x1 <= 4, 2 <= x2 <= 10, 5 <= x3 <= 12 –

+0

Я спрашиваю о том, как написать lb и ub для моего случая: 0 <= x (1) .i <= x (5), 0 <= x (2) .i <= x (5), 0 <= x (3) .i <= x (6). такие, что x (5), x (3) также являются проблемными переменными? должен ли я писать lb = нули (4 * n + 2,1) и рассматривать верхние границы как ограничения неравенства? – dinjake

+0

Что это? Что имеется в виду? –

ответ

0

Ограничение верхней границы ub есть для, если верхняя граница номера (точнее, вектор удвоений). ub is не для обобщенных ограничений линейного неравенства!

Я проигнорирую вашу запись .i, потому что я понятия не имею, что это значит.

Ваши ограничения: x1 <= x5, x2 <= x5, x3 <= x6 можно записать в матричной форме:

[1 0 0 0 -1 0  [x1  [0 
0 1 0 0 -1 0 * x2 <= 0 
0 0 1 0 0 -1]  x3   0]; 
         x4 
         x5 
         x6 

Поэтому использовать несколько решателей Matlab вы могли бы сделать:

A = [1, 0, 0, 0, -1, 0;   
    0, 1, 0, 0, -1, 0; 
    0, 0, 1, 0, 0, -1]; 
b = zeros(3, 1); 

Теперь ваши ограничения написаны в виде A * x < = b

Смежные вопросы