2

我希望使用 MATLAB 中的 OPTI 工具箱求解具有线性约束的混合整数二次程序。我希望我的一些决策变量是连续的,而一些决策变量是二元的。我该如何指定?

4

1 回答 1

2

我希望我的一些决策变量是连续的,而一些决策变量是二元的。我该如何指定?

本页底部显示了指定哪些变量属于哪种类型的方法。

报价:

示例 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)

我希望这有帮助!

于 2014-08-23T14:36:33.103 回答