Смешанное целочисленное квадратичное программирование с использованием Opti Toolbox в MATLAB

Я хочу решить смешанную целочисленно-квадратичную программу с линейными ограничениями, используя набор инструментов OPTI в MATLAB. Я хочу, чтобы некоторые из моих переменных решения были непрерывными, а некоторые переменные решения были бинарными. Как это указать?


person S_S    schedule 22.08.2014    source источник


Ответы (1)


Я хочу, чтобы некоторые из моих переменных решения были непрерывными, а некоторые переменные решения были бинарными. Как это указать?

Способ указать, какие переменные относятся к какому типу, показан на внизу этой страницы.

Цитата:

Пример 5. Указание длинных строк целочисленных переменных

Распространенный вопрос, который мы получаем, заключается в том, как указать xtype, когда у вас много целочисленных переменных. Предполагая, что ваши переменные упорядочены (т. е. непрерывные, целые и двоичные переменные находятся в последовательных группах), в следующем примере показан способ их ввода.

% Objective
nC = 10; %Number of Continuous Variables
nI = 10; %Number of Integer Variables
nB = 10; %Number of Binary Variables

% Build xtype vector
xtype = [repmat('C',1,nC),repmat('I',1,nI),repmat('B',1,nB)]

Таким образом, xtype — это вектор с таким же количеством компонентов, как и переменных, и каждый компонент определяет тип каждой переменной, который может быть

  • Непрерывный ('C')
  • Целое число ('I')
  • Двоичный ('B')

После указания xtype вам необходимо передать его объекту OPTI, как показано в этот пример:

% Objective
H = [1 -1; -1  2];          %Objective Function (min 0.5x'Hx + f'x)
f = -[2 6]';                

% Constraints
A = [1,1; -1,2; 2, 1];      %Linear Inequality Constraints (Ax <= b)
b = [2;2;3];    
lb = [0;0];                 %Bounds on x (lb <= x)

% Integer Constraints - We do it as above (using repmat) in your case
xtype = 'IC';

% Create OPTI Object
Opt = opti('qp',H,f,'ineq',A,b,'lb',lb,'xtype',xtype)

% Solve the MIQP problem
[x,fval,exitflag,info] = solve(Opt)

Надеюсь, это поможет!

person Ioannis    schedule 23.08.2014