注册地址 登录
数学建模社区-数学中国 返回首页

子夜虚竹的个人空间 http://www.madio.net/?698085 [收藏] [复制] [分享] [RSS]

日志

bnb20工具箱版

已有 685 次阅读2013-7-24 17:49 |个人分类:matlab| function, possibly, minimum, several, 实际应用

bnb20工具箱版本比较老,很多地方与Maltab新版本不兼容,甚至没法使用,不建议一般用户使用
附件中提供了4个版本的Matlab中的bnb20函数,第一个是5.3版本的(提供了GUI界面,而其他三个没有),建议下载最新版本的bnb_ml70.rar
该工具箱的主要功能是完成,一般非线性整数规划
在实际应用着经常需要求解非线性整数规划或混合规划问题,该领域中的一种常用的算法是分支定界(branch and bound)算法,但是matlab工具箱中没有相关的函数。荷兰Groningen大学的Koert Kuipers编写的的BNB20工具箱可以用来求解一般非线性整数规划问题。

% BNB20 Finds the constrained minimum of a function of several possibly integer variables.
% Usage: [errmsg,Z,X,t,c,fail] =
%        BNB20(fun,x0,xstatus,xlb,xub,A,B,Aeq,Beq,nonlcon,settings,options,P1,P2,...)
%
% BNB solves problems of the form:
% Minimize F(x) subject to: xlb <= x0 <=xub
%                           A*x <= B  Aeq*x=Beq
%                           C(x)<=0  Ceq(x)=0
%                           x(i) is continuous for xstatus(i)=0 
%                           x(i) integer for xstatus(i)= 1
%                           x(i) fixed for xstatus(i)=2

注意:在使用该工具箱之前请保证安装了优化工具箱,由于该工具箱需要调用Matlab中的fmincon函数
下面给出一个例子说明bnb20的使用方法
对著名的Rosenbrock函数稍加修改,使得下面的方程
%===================================主调函数===================================
 
%一般非线性整数型优化问题
%bnb20工具箱优化工具箱使用实例说明
%建议使用最新版本的,老版本会出现不兼容
%平台Matlab7.6 for windows
%使用程序bnb20_7.0
 
 
clc
clear
disp('按任意键开始执行')
pause();
display('正在求解........')
%目标函数,注意必须是字符串(就是M函数名),不支持inline和@()函数
objfun= 'objfun';
%初值,必须是列向量
x0= [1 1]';
%变量类型,0为实数,1为整数,2为常数
xstatus= [0 1]';
%边界,必须和x0具有相同的size,同时如果说变量的类型是整数,那么对应的边界也必须是整数,即使给出的边界不是,也要将它改为最近的整数
xlb= -100*[1 1]';
xub= 100*[1  1]';
%线性不等式约束
A= [];
b= [];
%线性等式约束
Aeq = [];        
beq= [];
%非线性约束,必须是字符串
nonlcon= 'nonlcon';
%相关一些设置,具体看说明
settings= [];
%优化选项,必须给出tolx和maxsqpiter两个参数
options= optimset('display','off','MaxSQPIter',1000,'tolx',1e-4);
%调用bnb20工具箱
[errmsg,Z,X,t,c,fail]= bnb20(objfun,x0,xstatus,xlb,xub,A,b,Aeq,beq,nonlcon,settings,options)
%调用优化工具箱验证下
[x,fval,exitflag,output] = fmincon(objfun,x0,A,b,Aeq,beq,xlb,xub,nonlcon,options)
 
%===================================bnb20工具箱的运行结果===================================
 
    Branch and Bound completed
    time elapsed:                       0.1 secs
    total cycles:                         9 cycles
    cycles failed:                        0 cycles
    response value at optimum:  9.8479e+000
    optimum design points for subproblem:
 
    1.4181    2.0000
 
errmsg =
 
     ''
 
 
Z =
 
    9.8479
 
X =
 
    1.4181
    2.0000
 
t =
 
    0.1247
 
c =
 
    10
 
fail =
 
     0
 
%===================================优化工具箱的运行结果===================================
x =
 
    1.5434
    2.3705
 
fval =
 
    9.0791
 
exitflag =
 
     1
 
output =
 
         iterations: 8
          funcCount: 39
       lssteplength: 1
           stepsize: 1.5650e-006
          algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
      firstorderopt: 5.8883e-007
    constrviolation: 3.3005e-012
            message: [1x144 char]
 
%注意到了,两个工具箱的运行结果不一样,这是因为我们在bnb20中设置x2必须是整数,可是优化工具箱中没有如此限制
复制代码%===================================目标函数===================================
function f=objfun(x)
f=100.*(x(2)-x(1).^2).^2+(4.5543-x(1)).^2;
复制代码%===================================非线性约束===================================
function [c,ceq] = nonlcon(x)
%nonlinear inequality constraints
c = -8.63*x(1)+x(2)^3;
%nonlinear equality constraints
ceq=[];
复制代码

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-10-11 23:24 , Processed in 0.233346 second(s), 28 queries .

回顶部