MATLAB中使用Opti Toolbox的混合整数二次规划

时间:2014-08-22 11:19:58

标签: mathematical-optimization quadprog

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

1 个答案:

答案 0 :(得分:2)

  

我希望我的一些决策变量是连续的和一些   决策变量是二进制的。我该如何指定?

指定哪些变量属于哪种类型的方式显示在bottom of this page

引用:

  

示例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对象,如this example所示:

% 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)

我希望这有帮助!