Originally posted by: skkim
Guys, this is sort of a report on my trial on branchcallback for the project I have been working on. I hope this note could be useful for somebody. The basic algorith is branch and price and the solution process is as follows. I had developed BNP for my thesis, and I think it should work, but for the last couple weeks' effort fail me in doing so.
1. Initialize the master LP.
2. Solving the master LP until no vaild new column appears.
3. After the first BB tree node is done, I used conversion to convert MLP to a MIP.
4. Here I added branchcallback function. Inside the branchcallback function,
4-1. there is a method to solve the MLP, but I made this method skipped at the root node since the step 2 solves the rootnode.
4-2. based on results of step 3, two makebranches are executed. Here the branch directions are branchdown as all selected branching variables should be zero.
5. the process goes through nodecallback function, and gives the next node.
6. It comes to the branchcallback function.
6-1. In this case, it goes through the method to solve the MLP. ** Here is the first problem. Since I did makebranch at step 4, some of columns should be fixed to zero, but it didn't happen. But don't get me wrong. For BNP, I used this approach for my thesis and it worked out well though I used JAVA, not C++ though. ***
----------------------------------------------------------------------
Not only this process, but also did I try 4 or 5 other processes to make this work. If you want, I could upload those scenarios too.
I suspected it is likely I chose wrong objects for makebranch, and I tried many ways I could think of, but any of them still didn't work.
So, right now, I am going to use a very unproductive way - creating BBTree, BBNodes, and managing BBTree by myself, not by Cplex.
Even though I really don't like this due to possible ineffectiveness, long and painful code structure, etc, at least I have a design on how to implement.
Later after making this work, I will come back to use branchcallback function. Let me know if you have any other thought. I can tell you if I have tried or not. If I didn't, I can go for it later.
#CPLEXOptimizers#DecisionOptimization