我正在解决以下线性编程问题,正在指导自己阅读文档
每次执行我都会遇到以下错误
要级联的矩阵的维数不一致。
我具有以下目标功能和限制
%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的结果
答案 0 :(得分:1)
矩阵在每一行中必须具有相同的列数。根据您的情况,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