我有一个MATLAB代码中的错误,我找不到它

我有一个MATLAB代码中的错误,我找不到它,matlab,mathematical-optimization,Matlab,Mathematical Optimization,我试图用MatlabR2012B做一个简单的线性规划优化。我想出了这个密码: clear; y=1663; f=[100; 100; 100; 100; 100; 100; 100; 100]; A=[1/867.2 1/704.7 1/619.2 1/679 1/770.3 1/658.5 1/749 1/783.1 -105.2 -74.4 -94.3 -88.2 -108.9 999 -112.7 -91.4 -94.1 -71.2 -87.6 -87.8 -99.4 999 -

我试图用MatlabR2012B做一个简单的线性规划优化。我想出了这个密码:

clear;
y=1663;
f=[100; 100; 100; 100; 100; 100; 100; 100];
A=[1/867.2 1/704.7 1/619.2 1/679 1/770.3 1/658.5 1/749 1/783.1
  -105.2 -74.4 -94.3 -88.2 -108.9 999 -112.7 -91.4 
  -94.1 -71.2 -87.6 -87.8 -99.4 999 -100 -81.2 
  0.5 0.6 4.5 3 28 15 4.5 12.5
  0.78 2.11 0.01 0.01 0.56 0.09 0.02 0.9
  93.63 16.3 0.01 0.01 1.44 0.09 0.03 37.64
  0.82 3.23 0.03 0.36 3.13 29.97 0.04 16.16];
b=[y/0.775; -95*y; -85*y; 10*y; 1*y; 35*y; 18*y];
Aeq=[1; 1; 1; 1; 1; 1; 1; 1];
beq=y;
lb=zeros(8,1);
hb=[550; 250; 50; 200; 50; 350; 400];
linprog(f, A, b, Aeq, beq, lb, hb);
当我试图运行这个源代码时,它说A中的行数必须与b中的元素数相同

可以看到,A有7行,b有7个元素。我看不出这个错误。它在哪里


谢谢。

您必须重新定义Aeq。因为只有一个相等约束,所以它应该是1xn。我还将x作为linprog的输出

   Aeq=[1, 1, 1, 1, 1, 1, 1, 1];
   x=linprog(f, A, b, Aeq, beq, lb, hb);
结果是

x =

  200.7466
   59.3486
   30.1325
   62.8837
   35.7733
    1.6669
  341.6570
  930.7914

A有一排。再看看。尝试“whosa”了解更多信息。我做了,我得到了这个结果:Name Size Bytes类属性A 7x8 448 doubleLol;问题的原因不是MATLAB所说的,一个小细节毁掉了一切。典型的MATLAB风格。问题解决了。非常感谢。