MATLAB:bnb20(分支定界法)优化

时间:2015-06-15 08:30:50

标签: matlab optimization

我在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

enter image description here

更新

    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

错误消息已更改:

enter image description here

我现在不知道该怎么做..

1 个答案:

答案 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