我在matlab
中运行以下代码时遇到错误。我试图使用bnb20。
function [errmsg,Z,X,t,c,fail] = optimize_bnb_test
P = [34336 701 227 2860 32841 463 616 39769 331 1224 1515 472583
1021 969 9260 39380 4986 6567 3386 16926 4841 100635];
C = 31300;
A = [-C 0 0; 0 -C 0; 0 0 -C;];
B =[-P(1); -P(2); -P(3);];
function y = linear_objective(n)
y = [1, 1, 1] * n;
end
lb = [1; 1; 1;];
ub = [16; 16; 16; ];
[errmsg,Z,X,t,c,fail] = BNB20('linear_objective',lb,[],lb,ub,A,B,
[],[],[],[],[],[]);
end
我收到了一条错误消息,例如“有趣的原因错误”。'
我不知道为什么。
我只是在学习matlab
。
更新
function [errmsg,Z,X,t,c,fail] = optimize_bnb_test
P = [34336 701 227 2860 32841 463 616 39769 331 1224 1515 472583 1021 969 9260 39380 4986 6567 3386 16926 4841 100635];
C = 31300;
A = [-C 0 0; 0 -C 0; 0 0 -C;];
B =[-P(1); -P(2); -P(3);];
lb = [1; 1; 1;];
ub = [16; 16; 16;];
fun = @(x)x(1)+x(2)+x(3);
[errmsg,Z,X,t,c,fail] = BNB20('fun',lb,[],lb,ub,A,B,[],[],[],[],[]);
end
错误消息已更改:
我现在不知道该怎么做..
答案 0 :(得分:1)
错误发生在以下调用中:
eval(['z=',fun,'(x0,varargin{:});'],'errmsg=''fun caused error.''; evalreturn=1;');
我的猜测是varargin {:}给你的函数一个错误。看起来你没有使用它,它是空的。我会尝试以下任何一种:
1.-从调用,[]
中删除最后一个bnb20
,因为第13个输入参数是可选的,而不是给出一个空数组([]
),只是不要这样做。什么都没有。
2.-定义要评估的函数时,使用额外的输入参数定义它,然后转储(或者不要使用它们)。
function y = linear_objective(n,varargin)
y = [1, 1, 1] * n;
end