用Octave计算整数规划问题(纯整数规划)
广告
{{v.name}}
例子:
\( \max\ Z = 10x_1 + 6x_2 + 4x_3 \\ \)
\( s.t. \begin{cases} x_1 + x_2 + x_3 \le 100 \\ 10x_1 + 4x_2 + 5x_3 \le 600 \\ 2x_1 + 2x_2 + 6x_3 \le 300 \\ x_1,x_2,x_3 \ge 0且为整数 \end{cases} \)
定义目标函数系数(max Z = 10x1 + 6x2 + 4x3),代码如下:
>> c = [10, 6, 4]';
定义约束系数矩阵 A,代码如下:
>> A = [ 1, 1, 1;
     10, 4, 5;
      2, 2, 6];
定义约束右端项 b,代码如下:
>> b = [100, 600, 300]';
定义变量下界,代码如下:
>> lb = [0, 0, 0]';
变量无上界,代码如下:
>> ub = [];
定义约束类型:3个约束都是 ≤,对应 'UUU',代码如下:
>> ctype = "UUU";
定义变量类型:3个变量都是整数变量,对应 'III',代码如下:
>> vartype = "III";
定义优化方向:最大化模型(-1),代码如下:
>> s = -1;
定义解算器为单纯形法(默认就是单纯形法),代码如下:
>> param.lpsolver = 1;
定义单纯形法迭代次数为最大100次,代码如下:
>> param.itlim = 100;
求解,代码如下:
>> [xmin, fmin, status, extra] = ...
   glpk (c, A, b, lb, ub, ctype, vartype, s, param)
xmin =

   33
   67
    0

fmin = 732
status = 0
extra =

  scalar structure containing the fields:

    time = 0
    status = 5
友链