[Cbc] 回复: 回复: How to add cuts?
不入角蜗牛
1164651620 at qq.com
Thu Mar 17 11:33:39 EDT 2016
Dear Haroldo, Thank you very much. I can add cuts now. But I wanted to add lazy constraints. I have solved my question by calling "branchAndBound" repeatedly.
Best wishes.
Meng Chen.
------------------ 原始邮件 ------------------
发件人: "Haroldo Gambini Santos"<haroldo.santos at gmail.com>;
发送时间: 2016年3月17日(星期四) 晚上10:47
收件人: "不入角蜗牛"<1164651620 at qq.com>; "cbc"<cbc at list.coin-or.org>;
主题: Re: 回复: [Cbc] How to add cuts?
Dear Meng,
You should create a new class inheriting from CglCutGenrator. Here goes one I create (just one file as example, will not compile because other files are not included).
After creating this class, beforing calling branch and bound (or CbcMain) you should add this cut generator:
cbcModel.addCutGenrator
Cheers
On 14-03-2016 11:44, 不入角蜗牛 wrote:
What class inherited from CglCutGenerator should I to use? I can't find one to adjust my question which should add some cuts during function branchAndBound through the CbcEventHandler.
Best wishes.
Meng Chen
------------------ 原始邮件 ------------------
发件人: "Haroldo Gambini Santos"<haroldo.santos at gmail.com>;
发送时间: 2016年3月14日(星期一) 上午9:17
收件人: "不入角蜗牛"<1164651620 at qq.com>; "cbc"<cbc at list.coin-or.org>;
主题: Re: [Cbc] How to add cuts?
Hi,
You should specialize a CglCutGenerator class to implement cut generation.
Then you need to implement:
generateCuts( const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info )
Use si to obtain the fractional solution and add discovered cuts in cs.
Cheers,
Haroldo
Em 13-03-2016 22:07, 不入角蜗牛 escreveu:
Hello.
I try to use the class CbcEventHandler to add cuts to solve my problem, but it doesn't work.
for example :
min: x2
s.t. x0 + x1 >= 1;
x1 + x2 >= 1;
x0,x1,x2 in {0,1}
Add the question normally. I get x0 = 1, x1 = 1 and x2 = 0. But when I try to add a cut x0 = 0 with codes:
<\code
auto refSolver = model->referenceSolver();
CoinPackedVector solution_cut;
solution_cut.setVector(len, &cols[cols.size()-len], &values[values.size()-len]);
refSolver->addRow(solution_cut, rhs_lower.back(), rhs_upper.back());
model->resetToReferenceSolver();
code\>
But failed. I save the model as mps file and it can be read as:
TITLE BLANK;
[ OBJROW] MIN = C0000002;
[ R0000000] C0000000 + C0000001 >= 1;
[ R0000001] C0000001 + C0000002 >= 1;
[ R0000002] C0000000 = 0;
@BND( 0, C0000000, 0); @BND( 0, C0000001, 0);
@BND( 0, C0000002, 0);
Thanks.
_______________________________________________ Cbc mailing list Cbc at list.coin-or.org http://list.coin-or.org/mailman/listinfo/cbc
-- ================================================== Haroldo Gambini Santos D.Sc, Computer Science Universidade Federal de Ouro Preto http://www.decom.ufop.br/haroldo/
-- ================================================== Haroldo Gambini Santos D.Sc, Computer Science Universidade Federal de Ouro Preto http://www.decom.ufop.br/haroldo/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20160317/b0ece959/attachment-0001.html>
More information about the Cbc
mailing list