如何在Matlab中求解线性规划问题

如何在Matlab中求解线性规划问题,matlab,Matlab,我正在解决下面的线性规划问题,我正在指导自己的文档 每次执行时都会出现以下错误 被连接的矩阵的维数不一致 我的目标函数和限制条件如下 %F.O f=[0.669 0.654 0.503 0.683 0.670 0.673 0.749 0.655 0.660 0.583 1.243 0.639 2.024 2.156 1.672 0.473 0.139 0.687]; %Restrictions Aeq=[0.1 0.12 0.335 0.15 0.18 0.19 0.12 0.15 0.15

我正在解决下面的线性规划问题,我正在指导自己的文档

每次执行时都会出现以下错误

被连接的矩阵的维数不一致

我的目标函数和限制条件如下

%F.O
f=[0.669 0.654 0.503 0.683 0.670 0.673 0.749 0.655 0.660 0.583 1.243 0.639 2.024 2.156 1.672 0.473 0.139 0.687];

%Restrictions
Aeq=[0.1 0.12 0.335 0.15 0.18 0.19 0.12 0.15 0.15 0.15 0.15 0.11 0.13 0.46;
    0.3 0.24 0.03 0.05 0.04 0.27 0.03 0.24 0.15 0.52 0.52;
    0.1 0.12 0.31 0.15 0.19 0.08 0.2 0.12 0.15 0.50 0.34 0.44;
    0.26 0.50;
    0.06 0.17];

b=[285.71; 305.33; 450; 262.50; 41.50];
我用下面的命令执行它

x=linprog(f,Aeq,b)
这些限制将它们从下面的练习中删除

这应该是z的结果


矩阵每行的列数必须相同<代码>Aeq在您的案例中有不同的列数

如何修复它? 约束方程中缺少的变量具有零系数。因此:

%Objective Function
     %X1    X2    X3    X4    X5    X6    X7    X8    X9    X10   X11   X12   X13   X14   X15   X16   X17   X18
f = [0.669 0.654 0.503 0.683 0.670 0.673 0.749 0.655 0.660 0.583 1.243 0.639 2.024 2.156 1.672 0.473 0.139 0.687];

A = [];   b = [];   %No inequality constraints

%Equality Constraints are:
     %X1  X2    X3   X4   X5   X6   X7   X8   X9   X10  X11   X12  X13  X14  X15  X16  X17  X18
Aeq=[0.1 0.12 0.335 0.15 0.18 0.19 0.12 0.15 0.15 0.15   0   0.15 0.11  0   0.13  0     0  0.46; %Nitrogeno
     0.3 0.24   0   0.03 0.05 0.04 0.27 0.03 0.24 0.15   0    0   0.52 0.52  0    0     0    0 ; %Fosforo
     0.1 0.12   0   0.31 0.15 0.19 0.08 0.2  0.12 0.15  0.50  0    0   0.34 0.44  0     0    0 ; %Potasio
      0    0    0    0    0    0    0    0    0    0     0   0.26  0    0    0    0    0.50  0 ; %Calcio
      0    0    0    0   0.06  0    0    0    0    0     0    0    0    0    0   0.17   0    0]; %Magnesio

beq = [285.71; 305.33; 450; 262.50; 41.50]; %What you defined as 'b' is actually `beq`

lb = zeros(18,1);   ub = inf(18,1);         %Bounds

[x, Optimal_sol] = linprog(f, A, b, Aeq, beq, lb, ub);
>> x
x =
   1.0e+03 *
    0.7142
         0
         0
    1.0268
         0
         0
         0
         0
         0
    0.4018
         0
         0
         0
         0
         0
    0.2441
    0.5250
         0

>> Optimal_sol
Optimal_sol =
   1.6018e+03