【问题标题】:Linprog error-MatlabLinprog错误-Matlab
【发布时间】:2016-04-29 23:04:31
【问题描述】:

我刚刚尝试使用matlab解决一个简单的线性规划问题,这很容易:

找到最小化 f(x) = –5x1 – 4x2 –6x3 的 x,服从

x1 – x2 + x3 ≤ 20
3x1 + 2x2 + 4x3 ≤ 42
3x1 + 2x2 ≤ 30
0 ≤ x1, 0 ≤ x2, 0 ≤ x3.

%mfile: 首先输入系数

clc;
clear all;
close all;
f = [-5; -4; -6];
A =  [1 -1  1
  3  2  4
  3  2  0];
b = [20; 42; 30];
lb=zeros(3,1);
x = linprog(f,A,b,[],[],lb);

当我运行这个程序时,它不返回 x 值,并返回这个错误:

Error in linprog1 (line 10)
x = linprog(f,A,b,[],[],lb); 

什么问题,我的matlab有优化工具箱,为什么不知道linprog?我现在该怎么办?

谢谢大家

-玛丽亚姆

【问题讨论】:

  • 这是 complete 错误信息吗? linprog1 是您的 MATLAB 函数的名称,还是 MATLAB 的 linprog 内部的名称? (我猜是前者,因为对 linprog 的调用位于此处列出的代码的第 10 行。)
  • MATLAB 文档似乎表明,如果您提供下限,则还应提供上限;在传递给linprog 的参数中添加额外的,[] 有帮助吗?
  • 呃,或者应该是[inf; inf; inf]而不是[]
  • linprog1 只是我的 m 文件的名称。它返回的正是这个错误: linprog1 中的错误(第 10 行)x = linprog(f,A,b,[],[],lb);
  • 是的,我现在添加了 [] 并尝试了 [inf;信息; inf] 以及它仍然返回此错误: linprog1 中的错误(第 10 行)x = linprog(f,A,b,[],[],lb,[inf; inf; inf]);

标签: matlab mathematical-optimization


【解决方案1】:

经过一番调查(有关详细信息,请参阅原始问题的 cmets),发现除了 MATLAB 优化工具箱的 linprog,提问者在她的计算机上拥有类似 @ 的副本987654321@——我怀疑它是现在优化工具箱中的祖先,但它的参数顺序不同。

“老”linprog.m 或 OT 中的那个都能够解决提问者的线性程序。所以选项是:

  • 使用“旧”的,适当调整代码。
  • 删除(或移至其他地方,或重命名)“旧”的并使用优化工具箱中的那个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    相关资源
    最近更新 更多