Is bintprog still invokable post-R2013?

I'm still using R2013, and I notice that bintprog has no online documentation in the R2014 version of the Optimization Toolbox. I understand that intlinprog would render bintprog obsolete, and for that reason use of it should be discontinued. However, I am wondering if R2104 will be backward compatible with any current code I have that calls bintprog, once I do finally get around to upgrading. Is bintprog still alive in R2104, invisible in the documentation, but perhaps calling intlinprog under the hood?

 Accepted Answer

According to the ‘Tips’ section of the intlinprog documentation:
  • intlinprog replaces bintprog. To update old bintprog code to use intlinprog, make the following changes:
Set |intcon| to |1:numVars|, where |numVars| is the number of variables in your problem.
Set |lb| to |zeros(numVars,1)|.
Set |ub| to |ones(numVars,1)|.
Update any relevant options. Use |optimoptions| to create options for |intlinprog|.
Change your call to |bintprog| as follows:
[x,fval,exitflag,output] = bintprog(f,A,b,Aeq,Beq,x0,options)
% Change your call to:
[x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,Beq,lb,ub,options)
No recent experience with this. Just quoting from the documentation.

6 Comments

Thanks. Sounds ominous, though. Do you have the R2014 Optimization Toolbox? If so, could you tell me what you get in response to
>>which bintprog
My pleasure.
I do. I get:
C:\Program Files\MATLAB\R2014b\toolbox\optim\optim\bintprog.m
so it exists, but searching in the online or offline documentation for it brings up only intlinprog. (I wonder if intlinprog is a wrapper for it, or if bintprog is just there for legacy purposes?)
EDIT —
If you have a small sample routine you’d like to run to test bintprog on R2014b, send it along and I’ll see if it works.
I wonder if intlinprog is a wrapper for it, or if bintprog is just there for legacy purposes?
Yes, I'm still curious about that as well. I see now that the optimoptions for intlinprog are rather different than bintprog. That could be why making one a wrapper for the other isn't so simple.
If you have a small sample routine you’d like to run to test bintprog on R2014b, send it along and I’ll see if it works.
Could you try this,
>> bintprog(1,1,1,1,1)
I’ll be glad to.
Unfortunately, the bintprog call gets an mlint red underline with the same message as it throws when I run it:
Error using bintprog (line 7)
BINTPROG has been removed. Use INTLINPROG instead. See the Tips section in the INTLINPROG function reference page.
You have my sympathies!
Aargh. That is unfortunate, and a bit strange on the part of the developers not to at least leave a legacy version in there.
But, in my case, I can probably cook up a wrapper for intlinprog without too much pain.
Thanks again.
My pleasure, as always.
I was thinking that perhaps its .m file would offer the possibility of copying it and renaming it something convenient and using it as before, but when I opened its .m file in the Editor, I got this:
function [x,fval,exitflag,output] = bintprog(f,A,b,Aeq,beq,x0,options)
%BINTPROG has been removed. Use INTLINPROG instead.
% Copyright 1990-2014 The MathWorks, Inc.
% Error for deprecation
error(message('optim:bintprog:NotSupported', ...
addLink( 'Tips section', 'intlinprog_replaces_bintprog' )));

Sign in to comment.

More Answers (0)

Asked:

on 15 Nov 2014

Commented:

on 15 Nov 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!