【发布时间】: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