®”Œv‰æ–@ƒƒ‚
ƒgƒbƒvƒy[ƒW‚Ö–ß‚é
–{ƒy[ƒW‚ÌURL‚ª https://www.jskrtf.com/~miya/ipmemo.html ‚©‚ç https://web.jskrtf.com/~miya/ipmemo.html ‚Ö•ÏX‚É‚È‚è‚Ü‚µ‚½D
‚»‚ê‚ɉž‚¶‚ÄC–{ƒy[ƒW‚©‚烊ƒ“ƒN‚³‚ê‚Ä‚¢‚éƒ_ƒEƒ“ƒ[ƒh‰Â”\‚ȃtƒ@ƒCƒ‹‚ɂ‚¢‚Ä‚àCURL‚ª•ÏX‚É‚È‚Á‚Ä‚¢‚Ü‚·D
‚Í‚¶‚ß‚É
@‚±‚̃y[ƒW‚É‚ÍC®”Å“K‰»–â‘èi®”Œv‰æ–â‘èj‚ðƒ\ƒ‹ƒo[‚ʼnð‚Û‚ÉC’m‚Á‚Ä‚¢‚é‚Æ–ð‚É—§‚‚©‚à‚µ‚ê‚È‚¢î•ñ‚ðŽG‘½‚É‹L‚µ‚Ä‚¢‚Ü‚·D
®”Å“K‰»i®”Œv‰æ–@j‚Í‹—Í‚ÈÅ“K‰»Žè–@‚̈ê‚‚Ȃ̂ł·‚ªCuŽÀÛ‚É‰ð‚«‚½‚¢Žž‚É“ú–{Œê‚Ìî•ñ‚ª‚ ‚Ü‚è–³‚¢v‚ÆŽ¨‚É‚µ‚½‚Ì‚ª‚±‚̃y[ƒW‚ðì‚Á‚½‚«‚Á‚©‚¯‚Å‚·D
‚¨‚±‚Æ‚í‚è
@‚±‚̃y[ƒW‚É‘‚¢‚Ä‚ ‚éî•ñ‚Í–³•ÛØ‚Å‚ ‚èC•MŽÒ‚͈êØ‚ÌÓ”C‚ðŽ‚¿‚Ü‚¹‚ñD
Ž©ŒÈÓ”C‚Å‚²—˜—p‚‚¾‚³‚¢D
‚à‚¿‚ë‚ñC‚È‚é‚ׂ³‚µ‚¢‚±‚Ƃ𑂂悤‚É‚µ‚Ü‚·‚ªCî•ñ‚ªŒÃ‚‚È‚Á‚Ä‚¢‚½‚èŠÔˆá‚Á‚Ä‚¢‚½‚è‚·‚邱‚Æ‚à‚ ‚é‚ÆŽv‚í‚ê‚Ü‚·D
‚¨‹C‚«‚Ì•û‚Í•MŽÒ‚Ü‚Å‚²˜A—‚¢‚½‚¾‚¯‚é‚ÆK‚¢‚Å‚·D
“Á‚ÉCƒŠƒ“ƒNæiURL/‚»‚Ì“à—ej‚âƒ\ƒ‹ƒo[‹@”\‚Ì•ÏXC®”Å“K‰»‚âŒvŽZ‹@‚Ìi•à‚É‚æ‚é’è΂̕ω»‚È‚Ç‚É‚²’ˆÓ‚‚¾‚³‚¢D
XV—š—ð
@‚±‚̃y[ƒW‚Í2013”N4ŒŽ‚ÉŒöŠJ‚µC‚»‚ÌŒã‚à‰ü’ù‚ðs‚Á‚Ä‚«‚Ü‚µ‚½‚ªC2020”N12ŒŽ‚©‚çXV—š—ð‚ð‚‚¯‚é‚悤‚É‚µ‚Ü‚µ‚½D
‚È‚¨CŒëŽš’EŽš‚â‚»‚Ì‘¼‚Ì”÷ׂȒù³‚ÍXV—š—ð‚É‹L‚µ‚Ü‚¹‚ñD
2024”N9ŒŽ
- SCIP 9.1.0 ‚©‚ç SCIP 9.1.1 ‚É‹Lq‚ðXV‚µ‚Ü‚µ‚½D
2024”N8ŒŽ
2024”N5ŒŽ
2024”N3ŒŽ
- SCIP 8.1.0 ‚©‚ç SCIP 9.0.0 ‚É‹Lq‚ðXV‚µ‚Ü‚µ‚½D
2024”N1ŒŽ
- SCIP 8.0.4 ‚©‚ç SCIP 8.1.0 ‚É‹Lq‚ðXV‚µ‚Ü‚µ‚½D
2023”N8ŒŽ
- SCIP 8.0.3 ‚©‚ç SCIP 8.0.4 ‚É‹Lq‚ðXV‚µ‚Ü‚µ‚½D
2023”N1ŒŽ
- SCIP 8.0.0 ‚©‚ç SCIP 8.0.3 ‚É‹Lq‚ðXV‚µ‚Ü‚µ‚½D
‘å‚«‚È•ÏX“_‚Æ‚µ‚ÄCSCIP 8.0.3 ‚©‚ç Apache 2.0 ƒ‰ƒCƒZƒ“ƒX‚ª“K—p ‚³‚ê‚Ä‚¢‚Ü‚·D
SCIP 8.0.2 ‚܂ł̓AƒJƒfƒ~ƒbƒN—p“r‚ÉŒÀ‚è–³ž—˜—p‚ª‰Â”\‚Å‚µ‚½‚ªCSCIP 8.0.3 ‚©‚ç‚Í Apache 2.0 ƒ‰ƒCƒZƒ“ƒX ‚̉º‚ʼnc—˜—p“r‚Ì–³ž—˜—p‚È‚Ç‚à‰Â”\‚É‚È‚Á‚Ä‚¢‚Ü‚·D
‚»‚ê‚ɉž‚¶‚ÄCuƒ\ƒ‹ƒo[‚ð“üŽè‚µ‚½‚¢v‚É‚¨‚¢‚Ä SCIP ‚ÉŠÖ‚·‚é‹Lq‚ðXV‚µ‚Ü‚µ‚½D
- uƒ\ƒ‹ƒo[‚ð“üŽè‚µ‚½‚¢vu¤—pƒ\ƒ‹ƒo[‚ðŽŽ‚µ‚Ä‚Ý‚½‚¢v‚É‚¨‚¢‚ÄCNEOS ƒT[ƒo[‚ÉŠÖ‚·‚é‹Lq‚ðC³‚µ‚Ü‚µ‚½D
- Gurobi 9.5 ‚©‚ç Gurobi 10.0 ‚ɑΉž‚³‚¹‚Ü‚µ‚½D
2022”N8ŒŽ
2022”N5ŒŽ
- CPLEX 20.1 ‚©‚ç CPLEX 22.1 ‚ɑΉž‚³‚¹‚Ü‚µ‚½i20.1 ‚ÌŽŸ‚̃o[ƒWƒ‡ƒ“‚ª 22.1 ‚Å‚·jD
- SCIP 7.0.3 ‚©‚ç SCIP 8.0.0 ‚É‹Lq‚ðXV‚µ‚Ü‚µ‚½D
2022”N2ŒŽ
2021”N11ŒŽ
2021”N9ŒŽ
- –{ƒy[ƒW‚Å—p‚¢‚Ä‚¢‚½u®”Œv‰æ–@vu®”Œv‰æ–â‘èv‚Æ‚¢‚¤’PŒê‚ðC‚»‚ꂼ‚êu®”Å“K‰»vu®”Å“K‰»–â‘èv‚É•ÏX‚µ‚Ü‚µ‚½D
‚±‚ê‚Í‘Û“I‚É integer programming ¨ integer optimization ‚Æ‚¢‚¤’uŠ·‚¦‚ªi‚ñ‚Å‚¢‚邱‚Æ‚ÆC“ú–{Œê‚łஔœK‰»C®”Å“K‰»–â‘è‚Æ‚¢‚¤’PŒê‚ª‚µ‚¸‚Â’è’…‚µ‚Ä‚«‚½‚½‚ß‚Å‚·D
•K—v‚ɉž‚¶‚ÄC®”Å“K‰»‚𮔌v‰æ–@‚ÉC®”Å“K‰»–â‘è‚𮔌v‰æ–â‘è‚É“Ç‚Ý‘Ö‚¦‚Ä‚‚¾‚³‚¢D
–{ƒy[ƒW‚̃^ƒCƒgƒ‹u®”Œv‰æ–@ƒƒ‚v‚Í‚Æ‚è‚ ‚¦‚¸‚»‚Ì‚Ü‚Ü‚É‚µ‚Ü‚·D
2021”N8ŒŽ
- u•À—ñ•ªŽ}ŒÀ’è–@‚ŃXƒŒƒbƒh”‚ðŽw’肵‚½‚¢v‚ÉCGurobi ‚ŃXƒŒƒbƒh”‚ª 32 ‚ð’´‚¦‚éꇂɂ‚¢‚Ä’Ç‹L‚µ‚Ü‚µ‚½D
- SCIP 7.0.2 ‚©‚ç SCIP 7.0.3 ‚É‹Lq‚ðXV‚µ‚Ü‚µ‚½D
- ŽQl•¶Œ£ 19 ‚̃Šƒ“ƒNæ‚ðCƒvƒŒƒvƒŠƒ“ƒg”Å‚©‚çƒWƒƒ[ƒiƒ‹”Å‚ÉXV‚µ‚Ü‚µ‚½D
- ŽQl•¶Œ£ 22 ‚̃Šƒ“ƒNæ‚ðCƒo[ƒWƒ‡ƒ“ 3.2.2 ‚©‚ç 3.2.3 ‚ÉXV‚µ‚Ü‚µ‚½D
2021”N3ŒŽ
- SCIP 7.0.1 ‚©‚ç SCIP 7.0.2 ‚É‹Lq‚ðXV‚µ‚Ü‚µ‚½D
2020”N12ŒŽ
‹{‘ã —²•½i“Œ‹ž”_H‘åŠw HŠw•” ’m”\î•ñƒVƒXƒeƒ€HŠw‰Èj
ŽQl•¶Œ£
@“ü–åŒü‚¯C‚¨‚æ‚Ñ‚±‚̃y[ƒW‚ÉŠÖŒW‚·‚é‚à‚Ì‚©‚ç‚¢‚‚‚©‚ðЉ‚Ü‚·D
•¶Œ£ 9 ‚ÍC”ñ¤—pƒ\ƒ‹ƒo[‚̃_ƒEƒ“ƒ[ƒh‚È‚Ç‚àŠÜ‚ßCƒ\ƒ‹ƒo[‚ð‰‚ß‚ÄŽg‚¤Û‚̃KƒCƒh‚ð‹L‚µ‚Ä‚¢‚Ü‚·D
LP ƒtƒ@ƒCƒ‹‚ÌŠÈ’P‚ȉðà‚àŠÜ‚ñ‚Å‚¢‚Ü‚·D
•¶Œ£ 7 ‚ÍC‚µŒÃ‚‚È‚Á‚Ä‚µ‚Ü‚¢‚Ü‚µ‚½‚ªC®”Å“K‰»‚ɂ‚¢‚Ä‚²‚ŠÈ’P‚É‚Ü‚Æ‚ß‚Ä‚ ‚è‚Ü‚·D
•¶Œ£ 15 ‚ÍC®”Å“K‰»‚Æ‚Í‚Ç‚ñ‚È‚à‚Ì‚©C‹ß”N‚Ìî•ñ‚ªƒXƒ‰ƒCƒhŒ`Ž®‚Å‚í‚©‚èˆÕ‚‚Ü‚Æ‚ß‚ç‚ê‚Ä‚¢‚Ü‚·D
•¶Œ£ 18 ‚àC“¯‚¶‚®”Å“K‰»‚Ì“ü–å“I‚È’mŽ¯‚ðƒXƒ‰ƒCƒhŒ`Ž®‚Å‚Ü‚Æ‚ß‚Ä‚¢‚Ü‚·D
•¶Œ£ 1, 5 ‚ÍC®”Å“K‰»‚É‚¨‚¯‚é’莮‰»‚̃eƒNƒjƒbƒN‚ª“ú–{Œê‚Å‚Ü‚Æ‚Ü‚Á‚Ä‚¢‚Ü‚·D
•¶Œ£ 5, 12 ‚ÍC®”Å“K‰»‚ðŽg‚Á‚½’莮‰»‚̗Ⴊ‘½”‹Lq‚³‚ê‚Ä‚¢‚Ü‚·D
•¶Œ£ 8 ‚ÍC‚â‚âê–å“I‚É‚È‚è‚Ü‚·‚ªC‹ß”N‚Ì•ªŽ}ŒÀ’è–@‚Ì”“W‚ɂ‚¢‚Äq‚ׂĂ¢‚Ü‚·D
‰º‹L‚Ìu‚æ‚‚ ‚鎿–âv‚Å“Á’è‚̃\ƒ‹ƒo[‚ð‘ÎÛ‚É‚µ‚½€‚Å‚ÍCƒ\ƒ‹ƒo[‚ɉž‚¶‚Ä•¶Œ£ 2, 3, 13 ‚©‚ç‚Ìî•ñ‚ðŒ³‚É‚µ‚Ä‚¢‚Ü‚·D
•¶Œ£ 4, 6, 10, 11, 14, 16, 17, 19, 20, 21, 22 ‚ÉŠÖ‚µ‚Ä‚ÍCu‚æ‚‚ ‚鎿–âv‚ÌŒÂX‚Ì€‚©‚çŽQÆ‚µ‚Ä‚¢‚Ü‚·D
- “¡]“N–çF ®”Œv‰æ–@‚É‚æ‚é’莮‰»“ü–åD
ƒIƒyƒŒ[ƒVƒ‡ƒ“ƒYEƒŠƒT[ƒ`C57-4 (2012)Cpp. 190-197.
PDF ƒtƒ@ƒCƒ‹
i“¡]涂̂²ŒúˆÓ‚É‚æ‚èC•¶Œ£ƒtƒ@ƒCƒ‹‚ÌŒfÚ‹–‰Â‚𒸂¢‚Ä‚¢‚Ü‚·j
- Gurobi Optimization: Gurobi Optimizer Reference Manual Version 10.0.
Gurobi Optimization, 2022.
- IBM ILOG: IBM ILOG CPLEX Optimization Studio 22.1.0 documentation.
IBM ILOG, 2022.
- T. Koch, T. Achterberg, E. Andersen, O. Bastert, T. Berthold, R. E. Bixby, E. Danna, G. Gamrath, A. M. Gleixner, S. Heinz, A. Lodi, H. Mittelmann, T. Ralphs, D. Salvagnin, D. E. Steffy, K. Wolter:
MIPLIB 2010. Mathematical Programming Computation, 3 (2011), pp. 103-163.
doi:10.1007/s12532-011-0025-9
- ‹v•ÛŠ²—YCJ. P. ƒyƒhƒƒ\C‘º¼³˜aCA. ƒŒƒCƒXF V‚µ‚¢”—Å“K‰» `Python Œ¾Œê‚Æ Gurobi ‚ʼnð‚`D
‹ß‘ã‰ÈŠwŽÐC2012D ISBN 978-4-7649-0433-0
- H. Mittelmann: Benchmarks for Optimization Software.
https://plato.asu.edu/bench.html
- ‹{‘ã—²•½C¼ˆä’mŒÈF ‚±‚±‚Ü‚Å‰ð‚¯‚é®”Œv‰æD
ƒVƒXƒeƒ€/§Œä/î•ñC50-9 (2006), pp. 363-368.
i‰p‘èFR. Miyashiro, T. Matsui: Recent Progress in Integer Programming.
Systems, Control and Information, 50-9 (2006), pp. 363-368.j
doi:10.11509/isciesci.50.9_363@PDF ƒtƒ@ƒCƒ‹
- ‹{‘ã—²•½F ‚±‚±‚Ü‚Å‰ð‚¯‚é®”Œv‰æ\‹ß”N‚Ì”“W\D
‘æ20‰ñRAMPƒVƒ“ƒ|ƒWƒEƒ€˜_•¶W (2008)C“ú–{ƒIƒyƒŒ[ƒVƒ‡ƒ“ƒYEƒŠƒT[ƒ`Šw‰ïCpp. 1-21.
- ‹{‘ã—²•½F ®”Œv‰æƒ\ƒ‹ƒo[“ü–åD
ƒIƒyƒŒ[ƒVƒ‡ƒ“ƒYEƒŠƒT[ƒ`C57-4 (2012)Cpp. 183-189.
PDF ƒtƒ@ƒCƒ‹
- NEOS Server: NEOS Server for Optimization.
University of Wisconsin-Madison, 2024.
https://www.neos-server.org/neos/
- E. Rothberg: An Evolutionary Algorithm for Polishing Mixed Integer Programming Solutions.
INFORMS Journal on Computing, 19 (2007), pp. 534-541.
doi:10.1287/ijoc.1060.0189
- H. P. Williams: Model Building in Mathematical Programming (5th edition).
Wiley, 2013. ISBN 978-1-118-44333-0
i‘æ 3 ”Å‚Ì–ó‘‚ÍwH. P. ƒEƒCƒŠƒAƒ€ƒX’˜C¬—щpŽO–óF ”—Œv‰æƒ‚ƒfƒ‹‚Ì쬖@DŽY‹Æ}‘C1995CISBN 978-4-782-84601-8x‚Å‚·j
- Zuse Institute Berlin: SCIP (Version 9.1.1).
Zuse Institute Berlin, 2024.
https://www.scipopt.org/@
https://www.scipopt.org/doc/html/
- H. D. Sherali, J. C. Smith: An Improved Linearization Strategy for Zero-one Quadratic Programming Problems.
Optimization Letters, 1 (2007), pp. 33-47.
doi:10.1007/s11590-006-0019-0
- “¡]“N–çF ‚Í‚¶‚߂悤®”Œv‰æ–@D
ƒ`ƒ…[ƒgƒŠƒAƒ‹u‰‰C“ú–{ƒIƒyƒŒ[ƒVƒ‡ƒ“ƒYEƒŠƒT[ƒ`Šw‰ï 2014”Nt‹GŒ¤‹†”•\‰ïC2014D
PDF ƒtƒ@ƒCƒ‹
i“¡]涂̂²ŒúˆÓ‚É‚æ‚èCƒXƒ‰ƒCƒh‚ÌŒfÚ‹–‰Â‚𒸂¢‚Ä‚¢‚Ü‚·j
- E. Balas: Disjunctive Programming.
50 Years of Integer Programming 1958-2008, Chapter 10,
pp. 283-340, Springer, 2010.
doi:10.1007/978-3-540-68279-0_10
- ‚–ì—SˆêF ZIMPLŒ¾Œê‚ÆSCIP‚É‚æ‚é”—Å“K‰»D
êCƒlƒbƒgƒ[ƒN•ƒCƒ“ƒtƒHƒ[ƒVƒ‡ƒ“C
24 (2016)Cpp. 9-14.
doi:10.34360/00005129
- ‹{‘ã—²•½F ®”Å“K‰»ƒAƒvƒ[ƒ`‚Ö‚Ì“ü–åD
ƒ`ƒ…[ƒgƒŠƒAƒ‹u‰‰C“dŽqî•ñ’ÊMŠw‰ï 2019”N‘‡‘å‰ïC2019D
PDF ƒtƒ@ƒCƒ‹
- A. Gleixner, G. Hendel, G. Gamrath, T. Achterberg, M. Bastubbe, T. Berthold, P. Christophel, K. Jarck, T. Koch, J. Linderoth, M. Lübbecke, H. D. Mittelmann, D. Ozyurt, T. K. Ralphs, D. Salvagnin, Y. Shinano:
MIPLIB 2017: Data-Driven Compilation of the 6th Mixed-Integer Programming Library.
Mathematical Programming Computation, 13 (2021), pp. 443-490.
doi:10.1007/s12532-020-00194-3
- O. Günlük, J. Linderoth: Perspective Reformulations of Mixed Integer Nonlinear Programs with Indicator Variables.
Mathematical Programming, Series B, 124 (2010), pp. 183-205.
doi:10.1007/s10107-010-0360-z
- E. Balas: Disjunctive Programming.
Springer, 2018. ISBN 978-3-030-00147-6
doi:10.1007/978-3-030-00148-3
- MOSEK: MOSEK Modeling Cookbook 3.3.0.
https://docs.mosek.com/modeling-cookbook/index.html
- “c’†‘å‹BF —ñ‹“‚Ì•û–@‚É‚æ‚émarket split–â‘è‚̉ð–@D
“ú–{ƒIƒyƒŒ[ƒVƒ‡ƒ“ƒYEƒŠƒT[ƒ`Šw‰ï 2024”Nt‹GŒ¤‹†”•\‰ï ƒAƒuƒXƒgƒ‰ƒNƒgWCpp. 230-231D
‚æ‚‚ ‚鎿–â
‘O‘‚«
@®”Å“K‰»ƒ\ƒ‹ƒo[‚ÉŠÖ‚·‚éC‚æ‚‚ ‚鎿–â‚Æ‚»‚ê‚ɂ‚¢‚Ä‚Ìi‚Æ‚è‚ ‚¦‚¸‚Ìj‘Έ•û–@‚ð‘‚«‚Ü‚µ‚½D
‚±‚±‚É‘‚©‚ê‚Ä‚¢‚é•û–@‚âƒeƒNƒjƒbƒN‚ÌŒø‰Ê‚͈µ‚¤–â‘è‚Ì«Ž¿‚É‘å‚«‚ˆË‘¶‚·‚邽‚ßC–œ”\‚Ìô‚Í–³‚¢‚±‚Æ‚É‚²—¯ˆÓ‚‚¾‚³‚¢D
‚È‚¨C‚ ‚éƒ\ƒ‹ƒo[ã‚Å“Á’è‚Ì‹@”\‚ðЉ‚Ä‚¢‚éê‡C‹LÚ‚µ‚Ä‚¢‚È‚¢ƒ\ƒ‹ƒo[‚É‚»‚Ì‹@”\‚ª–³‚¢‚±‚Æ‚ðˆÓ–¡‚·‚é‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñD
î•ñ‚ª“Á’è‚̃\ƒ‹ƒo[‚ɕ΂Á‚Ä‚¢‚é‚Ì‚Í’P‚É–{ƒy[ƒW쬎҂̃\ƒ‹ƒo[Žg—pŒoŒ±‚Ì·‚É‚æ‚é‚à‚Ì‚ÅC‘¼‚É‚à‘½”‚̃\ƒ‹ƒo[‚ª‚ ‚è‚Ü‚·D
ŒÂX‚̃\ƒ‹ƒo[‚ÉŠÖ‚·‚é‹Lڂɂ‚¢‚Ä‚Í [CPLEX] [Gurobi] [SCIP] ‚Æ‚¢‚¤ƒ}[ƒN‚ð‚‚¯‚Ü‚µ‚½D
[CPLEX] ‚Í IBM ILOG CPLEX 22.1i ŽQl•¶Œ£ 3 jC[Gurobi] ‚Í Gurobi Optimizer 10.0i ŽQl•¶Œ£ 2 jC[SCIP] ‚Í SCIP 9.1.1i ŽQl•¶Œ£ 13 j‚É‚¨‚¯‚éî•ñ‚Å‚·D
@‰º‹L‚Ìu‚æ‚‚ ‚鎿–âv‚Å‚ÍCŠî–{“I‚Éu‰ð‚«‚½‚¢–â‘è‚ð LP ƒtƒ@ƒCƒ‹‚Æ‚µ‚Ä쬂µC‚»‚ê‚ðŠeƒ\ƒ‹ƒo[‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“ƒCƒ“ƒ^[ƒtƒF[ƒXiCLIj‚É“ü—Í‚µ‚ÄŽg‚¤•û–@v‚ð”O“ª‚É‚¨‚¢‚Ä‚¢‚Ü‚·i[CPLEX]: Interactive Optimizer, [Gurobi]: Interactive Shell, [SCIP]: ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“jD
LP ƒtƒ@ƒCƒ‹‚Æ CLI ‚Ì‘g‡‚¹‚̓\ƒ‹ƒo[‚ðŽg‚¤Å‚à’Pƒ‚È•û–@‚Å‚·‚ªC‚±‚ꂾ‚¯‚Å‚à‚©‚È‚è‚Ì‚±‚Æ‚ª‚Å‚«‚Ü‚·D
‚½‚¾‚µC‘¼‚̃vƒƒOƒ‰ƒ€‚Æ‘g‚݇‚킹‚½“®“I‚Èì‹Æ‚âC—ñ¶¬–@‚È‚Ç‚É‘ã•\‚³‚ê‚镪Ž}ŒÀ’è–@‚̧Œä‚ðs‚¤ê‡‚ÍCŠeƒ\ƒ‹ƒo[‚Ì API ‚ðŽg‚¤‚±‚Æ‚ð‚¨‚·‚·‚ß‚µ‚Ü‚·D
‚±‚Ì‚ ‚½‚è‚ɂ‚¢‚Ä‚ÍCu‹‘å‚È LP ƒtƒ@ƒCƒ‹‚ð‚Ç‚¤‚â‚Á‚Ķ¬‚·‚ê‚΂悢‚©v‚àŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
@‚È‚¨C–{ƒy[ƒW‚É‹LÚ‚µ‚½ƒpƒ‰ƒ[ƒ^–¼‚È‚Ç‚ÍŠeƒ\ƒ‹ƒo[‚Ì CLI ‚É€‹’‚µ‚Ä‚¢‚é‚Ì‚ÅCAPI ‚ð‰î‚µ‚ÄŽg‚¤‚È‚Ç‘¼‚Ì•û–@‚ÌŽž‚É‚Í‹LÚ‚µ‚½ƒpƒ‰ƒ[ƒ^–¼‚Ń}ƒjƒ…ƒAƒ‹‚ðŒŸõ‚µ‚Ä‚‚¾‚³‚¢D
‚Ü‚½Cƒ\ƒ‹ƒo[‚̃o[ƒWƒ‡ƒ“ƒAƒbƒv‚É‚æ‚Á‚ăpƒ‰ƒ[ƒ^–¼‚È‚Ç‚ª‚µ‚΂µ‚ΕÏX‚É‚È‚è‚Ü‚·‚Ì‚ÅC‚²’ˆÓ‚‚¾‚³‚¢D
–ÚŽŸ
- ƒ\ƒ‹ƒo[‚Ì“üŽèC–â‘è‚Ì‹LqCŠî–{“I‚ȃ\ƒ‹ƒo[‚Ì‘€ì
- ƒ\ƒ‹ƒo[‚ð“üŽè‚µ‚½‚¢
- –â‘è‚ðƒ\ƒ‹ƒo[‚É“ü—Í‚·‚邽‚ß‚É‚Í
- ƒ\ƒ‹ƒo[‚¨‚æ‚Ñ LP ƒtƒ@ƒCƒ‹‚Í€”õ‚ª‚Å‚«‚½D¡‚·‚®‰ð‚«‚½‚¢
- ŒvŽZ‚ð“r’†‚Å’âŽ~‚µ‚½‚¢
- –â‘è‚Ì“Ç‚Ýž‚ÝŽž‚É’ˆÓ‚·‚邱‚Æ
- ƒ\ƒ‹ƒo[‚ւ̃Rƒ}ƒ“ƒh“ü—͂ɂ‚¢‚Ä
- ƒ\ƒ‹ƒo[‚̃wƒ‹ƒvƒRƒ}ƒ“ƒh‚ð•\Ž¦‚µ‚½‚¢
- –â‘è‚ð‰ð‚ۂɃGƒ‰[‚ªo‚é
- §–ñŽ®‚ª’·‚·‚¬‚Ĉês‚É“ü‚ç‚È‚¢D ‚Ü‚½‚Í general, binary 錾‚ÌŒã‚Ɉês‚ÉŽû‚Ü‚ç‚È‚¢
- LP ƒtƒ@ƒCƒ‹‚Ì“Ç‚Ýž‚݂ŃGƒ‰[‚ªo‚é
- §–ñŽ® 5 x + y = 7 ‚ð•\‚·‚Ì‚ÉCLP ƒtƒ@ƒCƒ‹‚Å a x + y = 7 ‚¨‚æ‚Ñ a = 5 (‚Ü‚½‚Í a * x + y = 7 ‚¨‚æ‚Ñ a = 5) ‚Æ‘‚¢‚½‚çƒGƒ‰[‚É‚È‚Á‚½
- •ªŽ}ŒÀ’è–@‚Ì“r’†‚Ńƒ‚ƒŠ‚ª‘«‚è‚È‚‚È‚é
- ”’l”j’]‚ð‹N‚±‚µ‚ăGƒ‰[‚É‚È‚é
- –Ú“IŠÖ”‚Ü‚½‚ͧ–ñŽ®‚É“ñŽŸ€‚ð‘‚¢‚½‚ªƒGƒ‰[‚É‚È‚Á‚½
- [CPLEX] ILOG CPLEX Optimization Studio ‚ªŽÀs‚Å‚«‚È‚¢
- ‰ð‚¢‚Ä‚Ý‚½‚ªŒ‹‰Ê‚ª‚¨‚©‚µ‚¢
- ‰ð‚É’l‚ª•\Ž¦‚³‚ê‚È‚¢•Ï”‚ª‚ ‚é
- x < 7 ‚Æ‚¢‚¤§–ñŽ®‚ð“ü‚ꂽ‚Ì‚ÉCŒvŽZ‚·‚é‚Æ x ‚ª 7 ‚̉ð‚ªo‚é
- LP ƒtƒ@ƒCƒ‹‚ðì‚Á‚½‚çCŸŽè‚É”ñ•‰•Ï”‚É‚È‚Á‚Ä‚¢‚éDƒ}ƒCƒiƒX‚Ì’l‚ðŽæ‚肤‚é•Ï”iŽ©—R•Ï”j‚ðì‚肽‚¢
- ‰ð‚¯‚é‚É‚Í‰ð‚¯‚½‚ªCˆÓ}‚µ‚½–â‘è‚Æ‚µ‚Ä“Ç‚Ýž‚Ü‚ê‚Ä‚¢‚È‚¢‚悤‚¾
- Ž©•ª‚Å LP ƒtƒ@ƒCƒ‹‚𶬂µ‚½‚ªC‹–—e‰ð‚ª‚ ‚é‚Í‚¸‚Ì–â‘è‚È‚Ì‚É•s”\ (infeasible) ‚É‚È‚é
- •Ê‚̃\ƒ‹ƒo[‚ʼnð‚‚ÆÅ“K‰ð‚ªˆá‚¤
- ®”•Ï”‚È‚Ì‚ÉC0.000001 ‚Ü‚½‚Í 0.999999 ‚̂悤‚ȉð‚ªo‚é
- •ªŽ}ŒÀ’è–@‚ði‚ß‚½‚çCÅ“K«ƒMƒƒƒbƒv‚ª‘‚¦‚½
- [CPLEX]@ILOG CPLEX Optimization Studio ‚Å LP ƒtƒ@ƒCƒ‹‚𶬂µ‚½‚ªC“YŽš‚ª‚¸‚ê‚é
- LP ƒtƒ@ƒCƒ‹‚ɂ‚¢‚Ä
- LP ƒtƒ@ƒCƒ‹‚ÌÚׂȕ¶–@‚ª’m‚肽‚¢
- –Ú“IŠÖ”‚ª–³‚¢–â‘è‚ðˆµ‚¢‚½‚¢
- LP ƒtƒ@ƒCƒ‹‚ŃVƒOƒ}‹L†‚â”z—ñ‚É‘Š“–‚·‚é‚à‚Ì‚ð—p‚¢‚½‚¢
- ‹‘å‚È LP ƒtƒ@ƒCƒ‹‚ð‚Ç‚¤‚â‚Á‚Ķ¬‚·‚ê‚΂悢‚©
- LP ƒtƒ@ƒCƒ‹‚ðŽ©“®“I‚É®Œ`‚µ‚½‚¢
- MPS ƒtƒ@ƒCƒ‹‚Ƃ͉½‚©DMPS ƒtƒ@ƒCƒ‹‚Æ LP ƒtƒ@ƒCƒ‹‚ð•ÏŠ·‚µ‚½‚¢
- LP ƒtƒ@ƒCƒ‹‚ð MPS ƒtƒ@ƒCƒ‹‚É•ÏŠ·‚µ‚½‚çC–Ú“IŠÖ”’l‚ªƒ}ƒCƒiƒX 1 ”{‚É‚È‚Á‚½
- LP ƒtƒ@ƒCƒ‹‚Å“ñŽŸ‚Ì–Ú“IŠÖ”‚ð•\‚µ‚½‚¢
- LP ƒtƒ@ƒCƒ‹‚Å“ñŽŸ‚̧–ñŽ®‚ð•\‚µ‚½‚¢
- LP ƒtƒ@ƒCƒ‹‚Å–Ú“IŠÖ”‚ɒ蔀‚ðŠÜ‚ß‚½‚¢
- LP ƒtƒ@ƒCƒ‹‚É‘‚•Ï”‚⧖ñŽ®‚̇”Ô‚ð•Ï‚¦‚½‚çŒvŽZŽžŠÔ‚ª•Ï‚í‚Á‚½
- Lazy Constraints ‚ðŽg‚¢‚½‚¢
- ƒ\ƒ‹ƒo[‚Ì’²®‚ÆŒvŽZ‘¬“x‚ɂ‚¢‚Ä
- Ŭ‰»–â‘è‚Å‚È‚©‚È‚©‰ºŠE‚ªã‚ª‚ç‚È‚¢Dő剻–â‘è‚Å‚È‚©‚È‚©ãŠE‚ª‰º‚ª‚ç‚È‚¢
- Å“K‰ð‚É‚±‚¾‚í‚ç‚È‚¢‚Ì‚ÅC‚È‚é‚ׂ‚‘¬‚ÉŽ¿‚Ì—Ç‚¢‰ð‚ª‚Ù‚µ‚¢
- ŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚ÄC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚é‚悤‚É‚µ‚½‚¢
- ’è‚ß‚½è‡’l‚Æ“¯‚¶‚©‚æ‚è—Ç‚¢–Ú“IŠÖ”’l‚Ì‹–—e‰ð‚ªo‚½‚çC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚é‚悤‚É‚µ‚½‚¢
- ‹–—e‰ð‚ð—^‚¦‚½ó‘Ô‚Å•ªŽ}ŒÀ’è–@‚ðƒXƒ^[ƒg‚µ‚½‚¢
- ƒ\ƒ‹ƒo[‚ðƒqƒ…[ƒŠƒXƒeƒBƒNƒX‚Æ‚µ‚ÄŽg‚¢‚½‚¢
- •ªŽ}‡˜‚ðŽè“®‚ÅŽw’肵‚½‚¢
- •À—ñ•ªŽ}ŒÀ’è–@‚ŃXƒŒƒbƒh”‚ðŽw’肵‚½‚¢
- •À—ñ•ªŽ}ŒÀ’è–@‚É‚¨‚¢‚ÄCƒXƒŒƒbƒh”‚ð‘‚₵‚½‚ç’x‚‚È‚Á‚Ä‚µ‚Ü‚Á‚½
- ƒ\ƒ‹ƒo[‚̃IƒvƒVƒ‡ƒ“ A ‚Ì‚Ý‚ðƒIƒ“‚É‚µ‚½‚çŒvŽZ‚ª‘¬‚‚È‚èCƒIƒvƒVƒ‡ƒ“ B ‚Ì‚Ý‚ðƒIƒ“‚É‚µ‚½‚çŒvŽZ‚ª‘¬‚‚È‚Á‚½‚Ì‚ÅCƒIƒvƒVƒ‡ƒ“ A ‚Æ B ‚𗼕ûƒIƒ“‚É‚µ‚½‚Æ‚±‚ëŒvŽZ‚ª’x‚‚È‚Á‚Ä‚µ‚Ü‚Á‚½
- ŒvŽZ‚ðˆê“x’†’f‚µ‚Ä‚©‚çÄŠJ‚µ‚½‚çC’†’f‚µ‚È‚¢ê‡‚ÆŒvŽZ‰ß’ö‚ªˆÙ‚È‚Á‚½
- ŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚½‚çC§ŒÀ‚µ‚È‚¢ê‡‚ÆŒvŽZ‰ß’ö‚ªˆÙ‚È‚Á‚½
- üŒ`Å“K‰»–â‘è‚ð•¡”‰ñ‰ð‚¢‚Ä‚Ý‚½‚çCÅ“K‰ð‚ªˆÙ‚È‚Á‚½
- ƒ\ƒ‹ƒo[‚ð‚à‚Á‚Æ•Ö—˜‚ÉŽg‚¢‚½‚¢
- ƒ\ƒ‹ƒo[‚ª‘Oˆ—‚ð‚µ‚½ LP ƒtƒ@ƒCƒ‹‚ðŒ©‚½‚¢
- ‚ǂ̂悤‚É•ªŽ}ŒÀ’è–@‚ªi‚ñ‚Å‚¢‚é‚©‚ðÚׂɊώ@‚µ‚½‚¢
- ®”•Ï”‚Ì’l‚ªˆÙ‚È‚éÅ“K‰ð‚̌”‚𔂦‚½‚¢
- ƒƒOƒtƒ@ƒCƒ‹‚Ìo—Íæ‚ð•ÏX‚µ‚½‚¢
- •¡”‚Ì–â‘è‚ðŽ©“®“I‚É‰ð‚©‚¹‚½‚¢
- •¡”‚Ì–â‘èŠÔ‚Åî•ñ‚ð‚â‚è‚Ƃ肵‚½‚¢D‘¼‚̃vƒƒOƒ‰ƒ€‚ƘAŒg‚µ‚½‚¢
- ŒvŽZ‚ð’†’f‚·‚邱‚Æ‚È‚CŽb’è‰ð‚»‚Ì‚à‚Ì‚ðŽ©“®“I‚É‹L˜^‚µ‚½‚¢
- •ÏX‚µ‚½ƒpƒ‰ƒ[ƒ^Ý’è‚ð•\Ž¦E•Û‘¶E•œŒ³‚µ‚½‚¢
- –â‘è‚Ì“Œvî•ñ‚ªŒ©‚½‚¢
- —^‚¦‚½®”Å“K‰»–â‘è‚̘A‘±ŠÉ˜a–â‘è‚𓾂½‚¢
- —^‚¦‚½üŒ`Å“K‰»–â‘è‚Ì‘o‘Ζâ‘è‚𓾂½‚¢
- [CPLEX] Žb’è‰ð‚ª“¾‚ç‚ꂽ‚Æ‚«‚ÌŒo‰ßŽžŠÔ‚ðŽ©“®“I‚É‹L˜^‚µ‚½‚¢
- [CPLEX] Benders •ª‰ð‚ðs‚¢‚½‚¢
- ’莮‰»‚ɂ‚¢‚Ä
- ŽÀÛ‚ÌŒ»ê‚Å‚ÍŽg‚¦‚È‚¢‚悤‚È“š‚¦‚ªo‚Ä‚‚é
- üŒ`Ž®‚Å‘‚¯‚È‚¢‚ÆŽv‚í‚ê‚駖ñðŒ‚Ü‚½‚Í–Ú“IŠÖ”‚ª‚ ‚é
- 0-1 •Ï” x, y ‚ɑ΂µ‚ÄCuz = x * yv‚ɑΉž‚·‚é 0-1 •Ï” z ‚ðŽg‚¢‚½‚¢
- §–ñŽ®‚𑼂̕ϔ‚ɉž‚¶‚ăIƒ“EƒIƒt‚µ‚½‚¢Du‚à‚µ~~‚È‚ç‚΢¢v‚Æ‚¢‚¤‚悤‚ȧ–ñŽ®‚ª‘‚«‚½‚¢
- •Ï”‚̌”‚ª‚È‚¢–â‘è‚È‚Ì‚É‰ð‚¯‚È‚¢D•Ï”‚̌”‚ª‚È‚¢’莮‰»‚É•Ï‚¦‚½‚ç’x‚‚È‚Á‚½
- üŒ`‚â“ñŽŸ‚Å‚È‚¢–Ú“IŠÖ”‚ðˆµ‚¢‚½‚¢
- ‚»‚Ì‘¼‚Ìî•ñ
- ®”Å“K‰»–â‘è‚̃xƒ“ƒ`ƒ}[ƒN–â‘èW‚ª’m‚肽‚¢
- ¤—pƒ\ƒ‹ƒo[‚Æ”ñ¤—pƒ\ƒ‹ƒo[‚ÍŒvŽZŽžŠÔ‚ª‚Ç‚Ì’ö“xˆÙ‚È‚é‚Ì‚©
- ‚ǂ̤—pƒ\ƒ‹ƒo[‚ª‘¬‚¢‚Ì‚©
- ¤—pƒ\ƒ‹ƒo[‚ðŽŽ‚µ‚Ä‚Ý‚½‚¢
ƒ\ƒ‹ƒo[‚Ì“üŽèC–â‘è‚Ì‹LqCŠî–{“I‚ȃ\ƒ‹ƒo[‚Ì‘€ì
@‚±‚±‚Å‚ÍC”ñ¤—pƒ\ƒ‹ƒo[‚Ì“üŽè‚©‚çCƒ\ƒ‹ƒo[‚ÌŠÈ’P‚È‘€ì‚Ü‚Å‚ðЉ‚Ü‚·D
ŽQl•¶Œ£ 9 ‚É‚àCˆê’Ê‚è‚Ì—¬‚ꂪ‚Ü‚Æ‚ß‚Ä‘‚¢‚Ä‚ ‚è‚Ü‚·‚Ì‚ÅŽQl‚É‚µ‚Ä‚‚¾‚³‚¢D
ƒ\ƒ‹ƒo[‚ð“üŽè‚µ‚½‚¢
@‚Ü‚¸‚ÍC”ñ¤—pƒ\ƒ‹ƒo[ SCIP ‚ðŽŽ‚µ‚Ä‚Ý‚Ü‚µ‚傤D
‘¼‚É‚àŠeŽí‚̃\ƒ‹ƒo[‚Í‚ ‚è‚Ü‚·‚ªC‚Æ‚è‚ ‚¦‚¸‚Í SCIP ‚©‚çƒXƒ^[ƒg‚·‚é‚Ì‚ª‚¨ŽèŒy‚©‚ÆŽv‚í‚ê‚Ü‚·D
SCIP ‚Í 2023 ”N––‚ÌŽž“_‚ÅC”ñ¤—p‚Å‚ÍÅ‚à‚‘¬‚ȃ\ƒ‹ƒo[‚̈ê‚‚ł·i¤—pƒ\ƒ‹ƒo[‚Å‚Í SCIP ‚æ‚è‚‘¬‚È‚à‚Ì‚à‘¶Ý‚µ‚Ü‚·jD
‚³‚ç‚ÉC2022”N 12 ŒŽ‚ÉŒöŠJ‚³‚ꂽ SCIP 8.0.3 ˆÈ~‚©‚ç‚Í Apache 2.0 ƒ‰ƒCƒZƒ“ƒX ‚ª“K—p‚³‚ê‚Ä‚¢‚Ü‚·D
‚±‚ê‚É‚æ‚èC‰c—˜—p“r‚É‚¨‚¢‚Ä‚àƒ‰ƒCƒZƒ“ƒX‚͈͓̔à‚Å–³ž—˜—p‚ª‰Â”\‚É‚È‚Á‚Ä‚¢‚Ü‚·D
@SCIPi ŽQl•¶Œ£ 13 j‚̃_ƒEƒ“ƒ[ƒhƒy[ƒWi https://www.scipopt.org/ j‚©‚çCŽèŽ‚¿‚ÌŒvŽZ‹@ŠÂ‹«‚É‚ ‚Á‚½ƒtƒ@ƒCƒ‹‚ðƒ_ƒEƒ“ƒ[ƒh‚µ‚Ü‚·D
‚È‚¨CApache 2.0 ƒ‰ƒCƒZƒ“ƒX‚ª“K—p‚³‚ê‚Ä‚¢‚é‚Ì‚Í SCIP 8.0.3 ˆÈ~‚Å‚·‚Ì‚Å‚²’ˆÓ‚‚¾‚³‚¢D
@ƒAƒJƒfƒ~ƒbƒNŠÂ‹«‚ÉŠ‘®‚µ‚Ä‚¢‚é•û‚ÍCNEOS ƒT[ƒo[‚É‚¨‚¯‚餗pƒ\ƒ‹ƒo[‚Ì—˜—p‚à‰Â”\‚Å‚·D
u¤—pƒ\ƒ‹ƒo[‚ðŽŽ‚µ‚Ä‚Ý‚½‚¢v‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
–â‘è‚ðƒ\ƒ‹ƒo[‚É“ü—Í‚·‚邽‚ß‚É‚Í
@‚¢‚ë‚¢‚ë‚È•û–@‚ª‚ ‚è‚Ü‚·‚ªCʼn‚Í LP ƒtƒ@ƒCƒ‹‚ð—˜—p‚·‚é‚Ì‚ªŠÈ’P‚¾‚ÆŽv‚í‚ê‚Ü‚·D
LP ƒtƒ@ƒCƒ‹‚Æ‚ÍC”—Å“K‰»–â‘è‚ð•\‚·ƒtƒ@ƒCƒ‹Œ`Ž®‚̈êŽí‚ÅCŠg’£Žq‚ª .lp ‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚Å‚·D
”Ž®‚ð‚Ù‚Ú‚»‚̂܂܃eƒLƒXƒg‚É‚µ‚½Œ`‚É‚È‚Á‚Ä‚¢‚Ü‚·D
LP ƒtƒ@ƒCƒ‹‚ÍC–{ƒy[ƒW‚Å“Á‚ÉÚ‚µ‚Љ‚Ä‚ ‚é CPLEXCGurobiCSCIP ‚Ì‚¢‚¸‚ê‚̃\ƒ‹ƒo[‚É‚¨‚¢‚Ä‚àŽg—p‰Â”\‚ÅC‘¼‚É‚à‘Ήž‚µ‚Ä‚¢‚éƒ\ƒ‹ƒo[‚ª‚¢‚‚‚©‘¶Ý‚µ‚Ü‚·D
LP ƒtƒ@ƒCƒ‹‚Ì—á‚ðˆÈ‰º‚ÉÚ‚¹‚Ü‚·D
ŠÈ’P‚È•¶–@‚ɂ‚¢‚Ä‚ÍCŽQl•¶Œ£ 9 ‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
\ LP ƒtƒ@ƒCƒ‹‚̃Tƒ“ƒvƒ‹
\ ƒRƒƒ“ƒg‚Í \ ‚ÌŒã‚낪ˆêsƒRƒƒ“ƒg‚É‚È‚è‚Ü‚·
minimize \ minimize ‚Í—\–ñŒêDő剻‚Ìê‡‚Í maximize
- 3 x + 4.5 y - 2 z(1) + f \ –Ú“IŠÖ”i•¡”s‚É‚È‚Á‚Ä‚à‚æ‚¢j
subject to \ subject to ‚Í—\–ñŒêD‚±‚±‚©‚çŒã‚ë‚ɧ–ñŽ®
c1: - g(1,1) + g(1,2) <= 5 \ §–ñŽ®‚É‚Í擪‚É–¼‘O‚ð‚‚¯‚ç‚ê‚éi–¼‘O{ƒRƒƒ“j
c2: 3 g(1,1) - 7 g(1,2) \ ‡‚É c1, c2, ... ‚ƔԆ‚ðU‚Á‚Ä‚¨‚‚Æ‚æ‚¢
+ z(2) >= -10 \ “¯—Þ€‚͈ê‚‚ɂ܂ƂßC•Ï”€‚Ͷ•Ó‚ÉC’蔀‚͉E•Ó‚É’u‚
c3: 2 f - g(1,1) \ §–ñŽ®‚Í•¡”s‚É‚Ü‚½‚ª‚Á‚Ä‚à‚æ‚¢
= 6 \ ‚½‚¾‚µ”äŠr‰‰ŽZŽq‚ƒ蔀‚Í“¯‚¶s‚É‘‚
c4: + 1 x + 0.5 y = -4.6 \ 擪‚Ì + ‚âŒW”‚Ì 1 ‚Í‚ ‚Á‚Ä‚à–³‚‚Ä‚à‚æ‚¢
bounds \ bounds ‚Í—\–ñŒêD‚±‚±‚©‚玩—R•Ï”‚Ì錾‚È‚Ç‚ðs‚¤
x free \ ˆês‚Ɉê‚‚̕ϔC‚»‚ê‚É‘±‚¯‚Ä free ‚Æ‚·‚é‚ÆC
g(1,1) free \ ‚»‚Ì•Ï”‚ÍŽ©—R•Ï”‚É‚È‚é
\ free 錾‚ð‚µ‚È‚¢•Ï”‚Í”ñ•‰ðŒ‚ª‰Û‚³‚ê‚é
general \ general ‚Í—\–ñŒêD®”•Ï”‚É‚·‚é•Ï”‚ð‘‚
g(1,1) g(1,2) \ free 錾‚ð‚µ‚Ä‚¢‚È‚¯‚ê‚ÎŽ©“®“I‚É”ñ•‰ðŒ‚ª‚‚‚±‚Æ‚É’ˆÓ
\ ‚±‚Ìê‡Cg(1,2) ‚Í”ñ•‰‚Ì®”•Ï”
binary \ binary ‚Í—\–ñŒêD0-1 •Ï”‚É‚·‚é•Ï”‚ð‘‚
z(1) \ ‚±‚Ìê‡Cz(1) ‚Æ z(2) ‚Í 0-1 •Ï”
z(2) \ general, binary 錾‚Æ‚à•¡”s‚É“n‚Á‚Ä\‚í‚È‚¢
end \ end ‚Í—\–ñŒêDƒtƒ@ƒCƒ‹‚ÌÅŒã‚É‘‚
ƒ\ƒ‹ƒo[‚¨‚æ‚Ñ LP ƒtƒ@ƒCƒ‹‚Í€”õ‚ª‚Å‚«‚½D¡‚·‚®‰ð‚«‚½‚¢
@LP ƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð‚±‚±‚ł͉¼‚É test1.lp ‚Æ‚µ‚Ü‚·D
ˆÈ‰º‚̃Rƒ}ƒ“ƒh‚ÅC–â‘è‚Ì“Ç‚Ýž‚ÝCŒvŽZ‚ÌŽÀsCÅ“K‰ð‚Ì•\Ž¦‚ª‚Å‚«‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚ð‹N“®‚µCuread test1.lpvuoptimizevudisplay solution variable - viÅŒã‚Ì variable ‚ÌŒã‚ë‚̓Xƒy[ƒX‚ð‹ó‚¯‚ănƒCƒtƒ“j‚Æ‚·‚é‚Ɖæ–Ê‚É‰ð‚ª•\Ž¦‚³‚ê‚Ü‚·D
‚Ü‚½Ccplex.log ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ɉæ–Êo—Í‚ª•Û‘¶‚³‚ê‚Ä‚¢‚Ü‚·D
uquitv‚ÅI—¹‚µ‚Ü‚·D
- [Gurobi]@Interactive Shell ‚ð‹N“®‚µCum = read("test1.lp")vum.optimize()vum.printAttr('x')v‚Æ‚·‚é‚Ɖæ–Ê‚É‰ð‚ª•\Ž¦‚³‚ê‚Ü‚·im ‚̓‚ƒfƒ‹–¼‚Ȃ̂ňႤ–¼‘O‚Å‚à\‚¢‚Ü‚¹‚ñjD
um.write("test1.sol")v‚Æ‚·‚é‚Æ test1.sol ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ɉð‚ªo—Í‚³‚ê‚Ü‚·D
‚Ü‚½Cgurobi.log ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ɉæ–Êo—Í‚ª•Û‘¶‚³‚ê‚Ä‚¢‚Ü‚·D
uquit()v‚ÅI—¹‚µ‚Ü‚·D
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å SCIP ‚ð‹N“®‚µCuread test1.lpvuoptimizevudisplay solutionv‚Æ‚·‚é‚Ɖæ–Ê‚É‰ð‚ª•\Ž¦‚³‚ê‚Ü‚·D
‚Ü‚½Cuwrite solution test1.solv‚Æ‚·‚é‚Æ test1.sol ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ɉð‚ªo—Í‚³‚ê‚Ü‚·D
uquitv‚ÅI—¹‚µ‚Ü‚·D
ŒvŽZ‚ð“r’†‚Å’âŽ~‚µ‚½‚¢
@“‚¢®”Å“K‰»–â‘è‚ðÅŒã‚Ü‚Å‰ð‚«‚«‚ê‚È‚¢‚Æ‚«‚ÉCŒvŽZ‚ðŽè“®‚Å’âŽ~‚·‚é•û–@‚Å‚·D
‚ ‚ç‚©‚¶‚ߌvŽZŽžŠÔ‚ð§ŒÀ‚·‚éꇂÍCuŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚ÄC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚é‚悤‚É‚µ‚½‚¢v‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
- [CPLEX][SCIP]@Interactive Optimizer/ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCCtrl-C ‚Å•ªŽ}ŒÀ’è–@‚ÌŒvŽZ‚ð’âŽ~‚Å‚«‚Ü‚·D
ƒTƒCƒY‚Ì‘å‚«‚È–â‘è‚Å‚Í’âŽ~‚·‚é‚Ü‚Å‚ÉŽžŠÔ‚ª‚©‚©‚é‚Ì‚ÅCCtrl-C ‚ð˜A‘Å‚µ‚È‚¢‚悤‚É’ˆÓ‚µ‚Ä‚‚¾‚³‚¢D
uoptimizev‚Å’†’f‚µ‚½•”•ª‚©‚çŒvŽZ‚ðÄŠJ‚Å‚«‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCCtrl-C ‚Å•ªŽ}ŒÀ’è–@‚ÌŒvŽZ‚ð’âŽ~‚Å‚«‚Ü‚·D
ƒTƒCƒY‚Ì‘å‚«‚È–â‘è‚Å‚Í’âŽ~‚·‚é‚Ü‚Å‚ÉŽžŠÔ‚ª‚©‚©‚é‚Ì‚ÅCCtrl-C ‚ð˜A‘Å‚µ‚È‚¢‚悤‚É’ˆÓ‚µ‚Ä‚‚¾‚³‚¢D
um.optimize()v‚Å’†’f‚µ‚½•”•ª‚©‚çŒvŽZ‚ðÄŠJ‚Å‚«‚Ü‚·i‚±‚±‚Å m ‚ÍŒ»Ýˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹–¼jD
–â‘è‚Ì“Ç‚Ýž‚ÝŽž‚É’ˆÓ‚·‚邱‚Æ
@LP ƒtƒ@ƒCƒ‹‚ð“Ç‚Ýž‚ÞÛ‚Ì’ˆÓ‚Å‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCLP ƒtƒ@ƒCƒ‹i‚ ‚é‚¢‚Í MPS ƒtƒ@ƒCƒ‹‚È‚Ç‚Ì–â‘èƒtƒ@ƒCƒ‹j‚ð read ‚Å“Ç‚Ýž‚Þ‚ÆC‚»‚Ì‘O‚É“Ç‚Ýž‚ñ‚Å‚¢‚½–â‘è‚Ìî•ñ‚ÍÁ‚¦‚Ä‚µ‚Ü‚¢‚Ü‚·i“¯ˆê‚Ì LP ƒtƒ@ƒCƒ‹‚ÌÄ“Ç‚Ýž‚Ý‚Å‚àjD
‰ð‚¢‚½–â‘è‚Ì•ªÍ‚Í•Ê‚Ì–â‘è‚ð“Ç‚Ýž‚Þ‘O‚És‚¢‚Ü‚µ‚傤D
udisplay problem statsv‚ÅŒ»Ý“Ç‚Ýž‚ñ‚Å‚¢‚é–â‘è‚Ìî•ñ‚ð•\Ž¦‚Å‚«‚Ü‚·D
- [Gurobi]@“¯Žž‚É•¡”‚̃‚ƒfƒ‹‚ðˆµ‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·i‚½‚¾‚µCƒ‚ƒfƒ‹–¼‚͈قȂé‚à‚Ì‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·jD
Œ»Ýˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹‚̈ꗗ‚ÆC•ÏX‚³‚ꂽƒpƒ‰ƒ[ƒ^‚ɂ‚¢‚Ä‚Íumodels()v‚Å•\Ž¦‚Å‚«‚Ü‚·D
‚È‚¨Cˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹‚ð”jŠü‚µ‚½‚¢ê‡‚Íum.dispose()v‚ ‚é‚¢‚Íudel mv‚Æ‚µ‚Ü‚·i‚±‚±‚Å m ‚Í”jŠü‚µ‚½‚¢ƒ‚ƒfƒ‹‚Ì–¼‘OjD
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCLP ƒtƒ@ƒCƒ‹i‚ ‚é‚¢‚Í MPS ƒtƒ@ƒCƒ‹j‚È‚Ç‚Ì–â‘èƒtƒ@ƒCƒ‹‚ð read ‚Å“Ç‚Ýž‚Þ‚ÆC‚»‚êˆÈ‘O‚É“Ç‚Ýž‚ñ‚Å‚¢‚½–â‘è‚Ìî•ñ‚ÍÁ‚¦‚Ä‚µ‚Ü‚¢‚Ü‚·i“¯ˆê‚Ì LP ƒtƒ@ƒCƒ‹‚ÌÄ“Ç‚Ýž‚Ý‚Å‚àjD
‰ð‚¢‚½–â‘è‚Ì•ªÍ‚Í•Ê‚Ì–â‘è‚ð“Ç‚Ýž‚Þ‘O‚És‚¢‚Ü‚µ‚傤D
udisplay statisticsv‚ÅŒ»Ý“Ç‚Ýž‚ñ‚Å‚¢‚é–â‘è‚Ìî•ñ‚ð•\Ž¦‚Å‚«‚Ü‚·D
ƒ\ƒ‹ƒo[‚ւ̃Rƒ}ƒ“ƒh“ü—͂ɂ‚¢‚Ä
@ƒRƒ}ƒ“ƒh“ü—Í‚ÌÈ—ª•û–@‚ɂ‚¢‚Ä‚Å‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCƒRƒ}ƒ“ƒh“ü—͂̓\ƒ‹ƒo[‚ªˆêˆÓ‚É”»’f‚Å‚«‚é”͈͂ŒZ‚‚Å‚«‚Ü‚·D
—Ⴆ‚ÎCƒgƒbƒvƒŒƒxƒ‹‚̃Rƒ}ƒ“ƒh‚É‚Í d ‚©‚çŽn‚Ü‚é‚à‚Ì‚Í display ‚µ‚©‚È‚¢‚Ì‚ÅCudisplayv‚Æ“ü—Í‚·‚é‚Ì‚Æudv‚Æ“ü—Í‚·‚é‚Ì‚Í“¯‚¶‚É‚È‚è‚Ü‚·D
‚±‚ê‚ð—p‚¢‚é‚ÆC—Ⴆ‚Îuset mip display 4v‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh“ü—Í‚Íus mi d 4v‚Æ‚¢‚¤‚悤‚ÉŠÈ—ª‰»‚Å‚«‚Ü‚·i–{ƒy[ƒW‚ł̓Rƒ}ƒ“ƒh–¼‚ÍÈ—ª‚¹‚¸‚É‹Lq‚µ‚Ü‚·jD
ˆê•û‚ÅCƒgƒbƒvƒŒƒxƒ‹‚̃Rƒ}ƒ“ƒh‚Å p ‚©‚çŽn‚Ü‚é‚à‚Ì‚Í•¡”‚ ‚é‚Ì‚ÅCp ‚¾‚¯‚Å‚Í“ü—Í‚ªŠ®—¹‚µ‚Ü‚¹‚ñD
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCƒRƒ}ƒ“ƒh“ü—͂̓\ƒ‹ƒo[‚ªˆêˆÓ‚É”»’f‚Å‚«‚é”͈͂ŒZ‚‚Å‚«‚Ü‚·D
—Ⴆ‚ÎCƒgƒbƒvƒŒƒxƒ‹‚̃Rƒ}ƒ“ƒh‚É‚Í d ‚©‚çŽn‚Ü‚é‚à‚Ì‚Í display ‚µ‚©‚È‚¢‚Ì‚ÅCudisplayv‚Æ“ü—Í‚·‚é‚Ì‚Æudv‚Æ“ü—Í‚·‚é‚Ì‚Í“¯‚¶‚É‚È‚è‚Ü‚·D
‚±‚ê‚ð—p‚¢‚é‚ÆC—Ⴆ‚Îudisplay statisticsv‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh“ü—Í‚Íud stv‚Æ‚¢‚¤‚悤‚ÉŠÈ—ª‰»‚Å‚«‚Ü‚·i–{ƒy[ƒW‚ł̓Rƒ}ƒ“ƒh–¼‚ÍÈ—ª‚¹‚¸‚É‹Lq‚µ‚Ü‚·jD
ˆê•û‚ÅCƒgƒbƒvƒŒƒxƒ‹‚̃Rƒ}ƒ“ƒh‚Å c ‚©‚çŽn‚Ü‚é‚à‚Ì‚Í•¡”‚ ‚é‚Ì‚ÅCc ‚¾‚¯‚Å‚Í“ü—Í‚ªŠ®—¹‚µ‚Ü‚¹‚ñD
ƒ\ƒ‹ƒo[‚̃wƒ‹ƒvƒRƒ}ƒ“ƒh‚ð•\Ž¦‚µ‚½‚¢
@Šeƒ\ƒ‹ƒo[‚ÌÚׂ̓}ƒjƒ…ƒAƒ‹‚É‹LÚ‚³‚ê‚Ä‚¢‚Ü‚·‚ªCƒ\ƒ‹ƒo[ã‚Å‚àŠÈˆÕƒwƒ‹ƒv‚ðŽQÆ‚Å‚«‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuhelpv‚ŃgƒbƒvƒŒƒxƒ‹‚̃Rƒ}ƒ“ƒhˆê——‚ª•\Ž¦‚³‚êCuhelp ƒRƒ}ƒ“ƒh–¼v‚Å‚»‚̃Rƒ}ƒ“ƒh‚̃wƒ‹ƒv‚ª•\Ž¦‚³‚ê‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCuhelp()v‚Ńwƒ‹ƒvƒRƒ}ƒ“ƒh‚̃wƒ‹ƒv‚ª•\Ž¦‚³‚ê‚Ü‚·D
uparamHelp("ƒpƒ‰ƒ[ƒ^–¼")v‚Ńpƒ‰ƒ[ƒ^‚̃wƒ‹ƒv‚ª•\Ž¦‚³‚ê‚Ü‚·D
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuhelpv‚ŃgƒbƒvƒŒƒxƒ‹‚̃Rƒ}ƒ“ƒhˆê——‚ª•\Ž¦‚³‚ê‚Ü‚·D
–ÚŽŸ‚Ö–ß‚é
–â‘è‚ð‰ð‚ۂɃGƒ‰[‚ªo‚é
@ƒ\ƒ‹ƒo[‚Å–â‘è‚ð‰ð‚ۂɃGƒ‰[‚ªo‚éꇂ̑Έ•û–@‚Å‚·D
§–ñŽ®‚ª’·‚·‚¬‚Ĉês‚É“ü‚ç‚È‚¢D
‚Ü‚½‚Í general, binary 錾‚ÌŒã‚Ɉês‚ÉŽû‚Ü‚ç‚È‚¢
@ˆês‚ÉŽû‚ß‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñD
LP ƒtƒ@ƒCƒ‹‚̈ês‚Ì•¶Žš”‚ª‚ ‚Ü‚è‚É‘½‚·‚¬‚é‚ÆCƒ\ƒ‹ƒo[‚É‚æ‚Á‚Ä‚ÍØ‚èŽÌ‚Ä‚Ä‚µ‚Ü‚¢‚Ü‚·‚Ì‚Å“K‹X‰üs‚ª•K—v‚Å‚·D
—\–ñŒê‚â•Ï”–¼‚Ì“r’†‚Å‚È‚¯‚ê‚ÎCˆê‚‚̧–ñŽ®‚Ì“r’†‚ʼnüs‚µ‚Ä\‚¢‚Ü‚¹‚ñi‚½‚¾‚µC”äŠr‰‰ŽZŽq‚ƉE•Ó€‚Í“¯‚¶s‚É‘‚«‚Ü‚·jD
ˆês‚É•Ï”‚ª 1 ŒÂ‚µ‚©‚È‚¢‚悤‚Èc’·‚Ì LP ƒtƒ@ƒCƒ‹‚Å‚à–â‘è‚ ‚è‚Ü‚¹‚ñiLP ƒtƒ@ƒCƒ‹‚Ì®Œ` ‚̓\ƒ‹ƒo[‚Ås‚¦‚Ü‚·jD
LP ƒtƒ@ƒCƒ‹‚Ì“Ç‚Ýž‚݂ŃGƒ‰[‚ªo‚é
@‚Ü‚¸‚ÍC—\–ñŒêiminimize “™j‚̃Xƒyƒ‹ƒ~ƒX‚ª–³‚¢‚©Šm”F‚µ‚Ä‚‚¾‚³‚¢D
‘å•”•ª‚Ì—\–ñŒê‚ÍŠî–{“I‚ÉV‚µ‚¢s‚©‚çŽn‚ßC‚»‚ÌŒã‚ë‚ʼnüs‚µ‚Ü‚·D
üŒ`§–ñŽ®‚ð‘‚‚Ì‚É [ ] ‚â / ‚â * ‚È‚Ç‚ðŽg‚Á‚Ä‚¢‚È‚¢‚Å‚µ‚傤‚©i‚±‚ê‚ç‚Ì‹L†‚Í“ñŽŸ€‚ð•\‚·‚Ì‚ÉŽg‚¢‚Ü‚·jD
’蔌W”‚Æ•Ï”‚ÌÏ‚ÍCƒXƒy[ƒX‚ðŽg‚Á‚Ä•\‚µ‚Ü‚·D
‚Ü‚½Ce ‚â E ‚Í 1e4 y ‚È‚Ç‚ÌŽw”•\‹L‚É‚àŽg‚í‚ê‚邽‚ßC•Ï”–¼‚̂‚¯•û‚É’ˆÓ‚µ‚Ü‚µ‚傤D
- [CPLEX]@¡‚Ì‚Æ‚±‚ë CPLEX ‚Ì LP ƒtƒ@ƒCƒ‹‚Å‚ÍCxx yy ‚Æ‚¢‚¤•Ï”ixx ‚Æ yy ‚̊ԂɃXƒy[ƒXj‚ð‘‚‚Æ xxyy ‚Æ‚¢‚¤ˆê‚‚̕ϔ‚Æ‚µ‚Ä”FŽ¯‚³‚ê‚Ü‚·D
‚µ‚©‚µ‘¼‚̃\ƒ‹ƒo[‚Ƃ̌݊·«‚Ì‚½‚ß‚É‚àC•¶Žš—ñ‚̊ԂɃXƒy[ƒX‚ðŠÜ‚Þ•Ï”‚Í”ð‚¯‚½•û‚ª–³“ï‚Å‚·D
- [Gurobi]@¡‚Ì‚Æ‚±‚ë Gurobi ‚Ì LP ƒtƒ@ƒCƒ‹‚Å‚ÍCx + y ‚Æ x+y ‚͈ႤˆÓ–¡‚ðŽ‚¿‚Ü‚·D
‘OŽÒ‚Í•Ï” x ‚Æ y ‚̘a‚ÅCŒãŽÒ‚Í x+y ‚Æ‚¢‚¤ˆê‚‚̕ϔ‚É”FŽ¯‚³‚ê‚Ü‚·D
‚Ü‚½C“ñŽŸ€‚ð•\‚· x * y ‚àCx*y ‚Å‚Í‚È‚ * ‚Ì‘OŒã‚ɃXƒy[ƒX‚ª•K—v‚Å‚·D
•Ï”‚≉ŽZŽq‚̊Ԃ̃Xƒy[ƒX‚ÍŠî–{“I‚ÉÈ—ª‚Å‚«‚Ü‚¹‚ñD
§–ñŽ® 5 x + y = 7 ‚ð•\‚·‚Ì‚ÉCLP ƒtƒ@ƒCƒ‹‚Å a x + y = 7 ‚¨‚æ‚Ñ a = 5 (‚Ü‚½‚Í a * x + y = 7 ‚¨‚æ‚Ñ a = 5) ‚Æ‘‚¢‚½‚çƒGƒ‰[‚É‚È‚Á‚½
@a ‚ª•Ï”‚Æ‚Ý‚È‚³‚ê‚ÄC§–ñŽ®‚É•Ï”‚ÌÏ‚ªŠÜ‚Ü‚ê‚Ä‚µ‚Ü‚¤‚½‚ß‚Å‚·D
LP ƒtƒ@ƒCƒ‹‚Å‚ÍC’蔌W”‚Í”Žš‚ð’¼Ú‘‚«C‚»‚ÌŒã‚ë‚ɃXƒy[ƒX‚ð‹ó‚¯‚ÄŒW‚é•Ï”‚ð’u‚«‚Ü‚·D
‚½‚¾‚µC’蔂ð•Ï”‚É‚µ‚Ă৖ñŽ®‚ªüŒ`‚É‚È‚é‚Ü‚Ü‚È‚çC’蔂ð•Ï”‚É’u‚«‚©‚¦‚Ä‘‚¢‚Ä‚¨‚‚±‚Ƃ͉”\‚Å‚·D
—Ⴆ‚ÎC§–ñŽ® 5 x + y = 7 ‚ð LP ƒtƒ@ƒCƒ‹‚Å 5 x + y - b = 0 ‚¨‚æ‚Ñ b = 7 ‚Æ‘‚¢‚Ä‚àC•Ï”‚ÌÏ‚É‚Í‚È‚Á‚Ä‚¢‚È‚¢‚Ì‚ÅüŒ`§–ñŽ®‚Æ‚Ý‚È‚³‚ê‚Ü‚·D
Œ«‚¢ƒ\ƒ‹ƒo[‚È‚ç‚ÎC’l‚ªŒÅ’肳‚ꂽ•Ï”‚Í‘Oˆ—‚Åœ‹Ž‚µ‚Ä‚µ‚Ü‚¤‚½‚ßCŽÀÛ‚ÌŒø—¦‚à•Ï‚í‚è‚ ‚è‚Ü‚¹‚ñD
•ªŽ}ŒÀ’è–@‚Ì“r’†‚Ńƒ‚ƒŠ‚ª‘«‚è‚È‚‚È‚é
@–â‘è‚̃TƒCƒY‚ª‚»‚ê‚Ù‚Ç‘å‚«‚‚È‚¢‚̂Ƀƒ‚ƒŠ•s‘«‚É‚È‚éꇂÍC–â‘è‚Ì«Ž¿‚à‚µ‚‚͒莮‰»i‚ ‚é‚¢‚Í‚»‚Ì—¼•ûj‚ª‚ ‚Ü‚è—Ç‚‚È‚¢‚±‚Æ‚ðŽ¦´‚µ‚Ä‚¢‚Ü‚·D
‰Â”\‚È‚ç‚Ηǂ¢’莮‰»‚É•Ï‚¦‚é‚Ì‚ª–]‚Ü‚µ‚¢‚Å‚·‚ªC‚Æ‚è‚ ‚¦‚¸ƒ\ƒ‹ƒo[‚̃IƒvƒVƒ‡ƒ“‚Å‘Îô‚ð‚Ƃ邱‚Æ‚Í‚Å‚«‚Ü‚·D
‚È‚¨C•ªŽ}ŒÀ’è–@‚Å” GB ‚̃ƒ‚ƒŠ‚ðH‚¢‚‚Ԃµ‚Ä‚¢‚é‚悤‚ÈꇂɂÍCŒvŽZ‚𑱂¯‚é‚Æ‚·‚®‚É‚»‚Ì”{‚̃ƒ‚ƒŠ‚ðÁ”‚Ä‚µ‚Ü‚¤‚±‚Æ‚à‘½‚Cƒƒ‚ƒŠ‚𑽑݂µ‚Ä‚à‚ ‚Ü‚èŒø‰Ê‚ª‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset workmem 8192v‚Æ‚·‚é‚ÆC•ªŽ}ŒÀ’è–@‚ÅŽg—p‚·‚郃‚ƒŠ‚ð 8192 MB ‚ÉÝ’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·D
”Žš‚Í MB ‚ð’PˆÊ‚Æ‚µ‚ÄŽ©—R‚ÉÝ’è‚Å‚«‚Ü‚·D
‚Ü‚½Cuset emphasis memory yesv‚ÆÝ’è‚·‚邱‚Æ‚ÅCƒƒ‚ƒŠ‚ðß–ñ‚·‚邱‚Æ‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
uset mip strategy file 2v‚ÆÝ’è‚·‚邱‚Æ‚ÅCƒm[ƒhî•ñ‚ª‘å‚«‚‚È‚Á‚½ê‡‚̓n[ƒhƒfƒBƒXƒN‚É‘‚«ž‚ނ悤‚É‚Å‚«‚Ü‚·D
‚³‚ç‚Éuset mip strategy file 3v‚Æ‚·‚é‚ÆCˆ³k‚µ‚ăn[ƒhƒfƒBƒXƒN‚É•Û‘¶‚µ‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCusetParam("NodefileStart", 0.5)v‚ÆÝ’è‚·‚邱‚Æ‚ÅCƒm[ƒhî•ñ‚ª 0.5 GB ‚ð’´‚¦‚é‚ƃn[ƒhƒfƒBƒXƒN‚É‘‚«ž‚ނ悤‚É‚Å‚«‚Ü‚·D
”Žš‚Í GB ‚ð’PˆÊ‚Æ‚µ‚ÄŽ©—R‚ÉÝ’è‚Å‚«‚Ü‚·D
”’l”j’]‚ð‹N‚±‚µ‚ăGƒ‰[‚É‚È‚é
@”ñí‚É‘å‚«‚ÈŒW”‚ðŽ‚§–ñŽ®‚ª¬Ý‚·‚é–â‘è‚È‚ÇC”’l“I‚É•sˆÀ’è‚É‚È‚éƒP[ƒX‚ª‚¢‚‚‚©‚ ‚è‚Ü‚·D
“Á‚ÉC§–ñŽ®‚É“ñŽŸ€‚ðŠÜ‚Þ–â‘è‚Í”’l“I‚É•sˆÀ’è‚ɂȂ肪‚¿‚Å‚·D
‚±‚̂悤‚Èê‡C§–ñŽ®‚ð‘O‚à‚Á‚ăXƒP[ƒŠƒ“ƒO‚µ‚Ä‚¨‚‚Æ—Ç‚¢Œ‹‰Ê‚ɂȂ邱‚Æ‚à‚ ‚è‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset emphasis numerical yesv‚Å”’lˆÀ’è«‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCusetParam("NumericFocus", 1)v‚Å”’lˆÀ’è«‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
‚³‚ç‚É”’l‚ð 2 ‚ ‚é‚¢‚Í 3 ‚Æ‚·‚邱‚Æ‚Å‚æ‚è”’lˆÀ’è«‚Éd“_‚ð‚¨‚«‚Ü‚·iƒfƒtƒHƒ‹ƒg’l‚Í 0jD
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuset emphasis numericsv‚Å”’lˆÀ’è«‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
@‚Ü‚½C–Ú“IŠÖ”‚ª“Ê“ñŽŸŠÖ”iő剻–â‘è‚Ìꇂ͉š“ñŽŸŠÖ”j‚Ì‚Í‚¸‚È‚Ì‚ÉC”’lŒë·‚̉e‹¿‚Åu“Ê‚Å‚È‚¢v‚Æ‚¢‚¤ƒGƒ‰[‚ªo‚éꇂª‚ ‚è‚Ü‚·D
‚±‚Ìê‡C–Ú“IŠÖ”‚ÌŒW”‚ð‘S‚Ä®”‚ɃXƒP[ƒŠƒ“ƒO‚·‚éC‘Ίp€‚ÌŒW”‚ð”÷¬‚É‘‰Á‚³‚¹‚éCV‚µ‚¢•Ï”‚Ƨ–ñŽ®‚𓱓ü‚µ‚ÄŒW”s—ñ‚ð‘a‚É‚·‚é‚È‚Ç‚Ì‘Îô‚ðŽŽ‚µ‚Ä‚Ý‚Ä‚‚¾‚³‚¢D
–Ú“IŠÖ”‚Ü‚½‚ͧ–ñŽ®‚É“ñŽŸ€‚ð‘‚¢‚½‚ªƒGƒ‰[‚É‚È‚Á‚½
@‚¢‚‚‚©‚Ì—áŠO‚𜂢‚ÄC–Ú“IŠÖ”‚ÍüŒ`ŠÖ”‚Ü‚½‚Í“Ê“ñŽŸŠÖ”iő剻–â‘è‚Ìꇂɂ͉š“ñŽŸŠÖ”j‚Å‚È‚‚Ä‚Í‚È‚è‚Ü‚¹‚ñD
‚³‚ç‚ÉC§–ñŽ®‚Ìꇂͮ”ðŒ‚𜂢‚½‹–—e—̈悪“Ê‚Å‚ ‚邱‚Æ‚ª•K—v‚Å‚·D
‚Ü‚½“ñŽŸ€‚ª‚ ‚éꇂɂÍC–Ú“IŠÖ”‚©§–ñŽ®‚©‚Å LP ƒtƒ@ƒCƒ‹‚Ì‘‚«•û‚ªŽáŠ±•Ï‚í‚è‚Ü‚·D
uLP ƒtƒ@ƒCƒ‹‚ÅC“ñŽŸ‚Ì–Ú“IŠÖ”‚ð•\‚µ‚½‚¢vuLP ƒtƒ@ƒCƒ‹‚ÅC“ñŽŸ‚̧–ñŽ®‚ð•\‚µ‚½‚¢v ‚Ì€‚àŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
‚È‚¨C0-1 •Ï”‚ÌÏ‚ÉŠÖ‚µ‚Ä‚ÍC“Á•Ê‚È‘Oˆ—‚ðŽ{‚µ‚Ä”CˆÓ‚ÌŒ`‚Ì“ñŽŸ€‚ªˆµ‚¦‚éƒ\ƒ‹ƒo[‚ª‚ ‚é‚悤‚Å‚·D
u0-1 •Ï” x, y ‚ɑ΂µ‚ÄCuz = x * yv‚ɑΉž‚·‚é 0-1 •Ï” z ‚ðŽg‚¢‚½‚¢v‚àŽQl‚É‚µ‚Ä‚‚¾‚³‚¢D
- [CPLEX]@CPLEX 12.6 ‚©‚çC§–ñŽ®‚ªüŒ`‚Å‚ ‚é‚悤‚È“ñŽŸÅ“K‰»–â‘è‚à‚µ‚‚Í®”“ñŽŸÅ“K‰»–â‘è‚ɂ‚¢‚Ä‚ÍCwŬ‰»–â‘è‚Ìꇂɂ͓ʓñŽŸ–Ú“IŠÖ”Cő剻–â‘è‚Ìꇂ͉š“ñŽŸ–Ú“IŠÖ”xˆÈŠO‚Ì–Ú“IŠÖ”‚ªˆµ‚¦‚é‚悤‚É‚È‚è‚Ü‚µ‚½D
•’Ê‚É‰ð‚¢‚Ä‚Ý‚ÄC"Q in objective is not positive semi-definite." ‚Æ‚¢‚¤ƒGƒ‰[ƒƒbƒZ[ƒW‚ª•\Ž¦‚³‚ꂽê‡Cw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚Ü‚¹‚ñD
uset optimalitytarget 3v‚Æ‚µ‚Ä–â‘è‚ð‰ð‚«’¼‚µ‚Ä‚‚¾‚³‚¢i‚±‚̃IƒvƒVƒ‡ƒ“‚ÍCˆÈ‘O‚Í solutiontarget ‚Æ‚¢‚¤–¼‘O‚Å‚µ‚½jD
‚½‚¾‚µCw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚é–â‘è‚Æ”ä‚ׂé‚Æ‚©‚È‚èŒvŽZ‚ÉŽžŠÔ‚ª‚©‚©‚é‚Ì‚Å’ˆÓ‚ª•K—v‚Å‚·D
- [Gurobi]@Gurobi 9.0 ‚©‚çCwŬ‰»–â‘è‚Ìꇂɂ͓ʓñŽŸ–Ú“IŠÖ”Cő剻–â‘è‚Ìꇂ͉š“ñŽŸ–Ú“IŠÖ”xˆÈŠO‚Ì“ñŽŸ‚Ì–Ú“IŠÖ”‚ªˆµ‚¦‚é‚悤‚É‚È‚è‚Ü‚µ‚½D
‚Ü‚½Cw§–ñŽ®‚ÉŠÜ‚Ü‚ê‚é•Ï”‚ð˜A‘±•Ï”‚Æ‚Ý‚È‚µ‚½ŽžC‹–—e—̈悪“Ê‚É‚È‚é“ñŽŸ•s“™Ž®xˆÈŠO‚Ì“ñŽŸ§–ñŽ®‚ªˆµ‚¦‚é‚悤‚É‚È‚è‚Ü‚µ‚½i—Ⴆ‚ÎCz = x * y ‚Æ‚¢‚¤‚悤‚È‘oüŒ`“™Ž®§–ñ‚ªˆµ‚¦‚Ü‚·jD
•’Ê‚É‰ð‚¢‚Ä‚Ý‚ÄCƒGƒ‰[ƒƒbƒZ[ƒW‚ª•\Ž¦‚³‚ꂽê‡Cw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚Ü‚¹‚ñD
usetParam("NonConvex", 2)v‚Æ‚µ‚Ä–â‘è‚ð‰ð‚«’¼‚µ‚Ä‚‚¾‚³‚¢D
‚½‚¾‚µCw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚é–â‘è‚Æ”ä‚ׂé‚Æ‚©‚È‚èŒvŽZ‚ÉŽžŠÔ‚ª‚©‚©‚é‚Ì‚Å’ˆÓ‚ª•K—v‚Å‚·D
@‚Ü‚½C–Ú“IŠÖ”‚ª“Ê“ñŽŸŠÖ”iő剻–â‘è‚Ìꇂ͉š“ñŽŸŠÖ”j‚Ì‚Í‚¸‚È‚Ì‚ÉC”’lŒë·‚̉e‹¿‚Åu“Ê‚Å‚È‚¢v‚Æ‚¢‚¤ƒGƒ‰[‚ªo‚éꇂª‚ ‚è‚Ü‚·D
‚±‚Ìê‡C–Ú“IŠÖ”‚ÌŒW”‚ð‘S‚Ä®”‚ɃXƒP[ƒŠƒ“ƒO‚·‚éC‘Ίp€‚ÌŒW”‚ð”÷¬‚É‘‰Á‚³‚¹‚éCV‚µ‚¢•Ï”‚Ƨ–ñŽ®‚𓱓ü‚µ‚ÄŒW”s—ñ‚ð‘a‚É‚·‚é‚È‚Ç‚Ì‘Îô‚ðŽŽ‚µ‚Ä‚Ý‚Ä‚‚¾‚³‚¢D
[CPLEX]@ILOG CPLEX Optimization Studio ‚ªŽÀs‚Å‚«‚È‚¢
@CPLEX ‚É•t‘®‚µ‚Ä‚¢‚é CPLEX Optimization Studio ‚ðŽg—p‚µ‚Ä‚¢‚ÄC–â‘è‚ð OPL Œ¾Œê‚ų‚µ‚‹Lq‚µ‚½‚É‚à‚©‚©‚í‚炸CŽÀs‚·‚é‚Æu‘I‘ð‚ð‹N“®‚Å‚«‚Ü‚¹‚ñD‚Ü‚½CÅ‹ß‹N“®‚³‚ê‚Ä‚¢‚Ü‚¹‚ñv‚Æ•\Ž¦‚³‚ê‚Äi‚Ü‚È‚¢C‚ ‚é‚¢‚ÍŽÀs‚Å‚«‚Ä‚àu•s–¾‚ȃGƒ‰[v‚ªo‚ÄŽ~‚Ü‚Á‚Ä‚µ‚Ü‚¤ê‡‚É‚ÍCƒfƒtƒHƒ‹ƒg‚Åu\¬1v‚É‚È‚Á‚Ä‚¢‚éŽÀs\¬‚Ì–¼‘O‚𔼊p‰p”Žš‚É•ÏX‚µ‚Ä‚‚¾‚³‚¢D
@‚Ü‚½‚ÍCCPLEX Optimization Studio ‚̃Cƒ“ƒ^[ƒtƒF[ƒX‚ð‘S‚ĉpŒê‚É‚µ‚Ä‚µ‚Ü‚¤•û–@‚ª‚ ‚è‚Ü‚·D
Windows ‚ÌꇂÍCƒVƒ‡[ƒgƒJƒbƒg‚̃vƒƒpƒeƒB‚̃Šƒ“ƒNæ‚ð "C:\...\oplide.exe" -nl en_US ‚̂悤‚É’¼‚·‚±‚ƂʼnpŒê”Å‚ª‹N“®‚µ‚Ü‚·i-nl en_US ‚Í " " ‚ÌŠO‘¤‚É‘‚jD
ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚©‚ç‚Ì‹N“®‚ÌꇂÍCˆø”‚É -nl en_US ‚ð‚‚¯‚Ä‹N“®‚µ‚Ä‚‚¾‚³‚¢D
–ÚŽŸ‚Ö–ß‚é
‰ð‚¢‚Ä‚Ý‚½‚ªŒ‹‰Ê‚ª‚¨‚©‚µ‚¢
@–â‘è‚Í‰ð‚¯‚½‚ªC‚Ç‚¤‚àŒ‹‰Ê‚ª•Ï‚¾‚Æ‚¢‚¤‚Æ‚«‚É‚Í‚±‚¿‚ç‚ðŽQl‚É‚µ‚Ä‚‚¾‚³‚¢D
‰ð‚É’l‚ª•\Ž¦‚³‚ê‚È‚¢•Ï”‚ª‚ ‚é
@‘å•”•ª‚̃\ƒ‹ƒo[‚ÅC’l‚ª 0 ‚Ì•Ï”‚Í•\Ž¦‚³‚ê‚Ü‚¹‚ñi‘å‹K–Í‚ÈÅ“K‰»–â‘è‚̉ð‚Å‚ÍC•Ï”‚Ì’l‚Ì‚¤‚¿‚Ù‚Æ‚ñ‚Ç‚ª 0 ‚Å‚ ‚邱‚Æ‚ª‘½‚¢‚½‚ßjD
x < 7 ‚Æ‚¢‚¤§–ñŽ®‚ð“ü‚ꂽ‚Ì‚ÉCŒvŽZ‚·‚é‚Æ x ‚ª 7 ‚̉ð‚ªo‚é
@LP ƒtƒ@ƒCƒ‹‚Å‚ÍC“™†–³‚µ‚Ì•s“™†‚ÍC“™†•t‚«‚Ì•s“™†‚Æ“¯‚¶ˆÓ–¡‚É‚È‚è‚Ü‚·D
LP ƒtƒ@ƒCƒ‹‚ðì‚Á‚½‚çCŸŽè‚É”ñ•‰•Ï”‚É‚È‚Á‚Ä‚¢‚éDƒ}ƒCƒiƒX‚Ì’l‚ðŽæ‚肤‚é•Ï”iŽ©—R•Ï”j‚ðì‚肽‚¢
@LP ƒtƒ@ƒCƒ‹‚Å‚ÍC’è‹`‚µ‚½•Ï”‚̓fƒtƒHƒ‹ƒg‚Å”ñ•‰ðŒ‚ª‰Û‚³‚ê‚Ä‚¢‚Ü‚·D
‚±‚ê‚ðŽæ‚蜂‚É‚ÍCfree 錾‚ð—p‚¢‚Ü‚·D
u–â‘è‚ðƒ\ƒ‹ƒo[‚É“ü—Í‚·‚邽‚ß‚É‚Ív‚Ü‚½‚Í ŽQl•¶Œ£ 9 ‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
‰ð‚¯‚é‚É‚Í‰ð‚¯‚½‚ªCˆÓ}‚µ‚½–â‘è‚Æ‚µ‚Ä“Ç‚Ýž‚Ü‚ê‚Ä‚¢‚È‚¢‚悤‚¾
@ˆÓ}‚µ‚½’Ê‚è‚Ì–â‘è‚É‚È‚Á‚Ä‚¢‚È‚¢‚ÆŽv‚í‚ê‚éꇂÍCƒ\ƒ‹ƒo[‚É“Ç‚Ýž‚Ü‚¹‚½ LP ƒtƒ@ƒCƒ‹‚ðˆê“x‘‚«o‚³‚¹‚é‚ÆC–â‘肪³‚µ‚¢‚©‚Ç‚¤‚©Šm‚©‚ß‚ç‚ê‚Ü‚·D
ˆÈ‰ºCLP ƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð‰¼‚É test1.lp ‚Æ‚µ‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuread test1.lpvuwrite test2.lpv‚Æ‚·‚é‚ÆCtest2.lp ‚Ƀ\ƒ‹ƒo[‚ª”FŽ¯‚µ‚Ä‚¢‚é–â‘肪‘‚«o‚³‚ê‚Ü‚·D
‚Ü‚½C¡‚Ì‚Æ‚±‚ë CPLEX ‚Ì LP ƒtƒ@ƒCƒ‹‚Å‚ÍCxx yy ‚Æ‚¢‚¤•Ï”ixx ‚Æ yy ‚̊ԂɃXƒy[ƒXj‚ð‘‚‚ÆCxxyy ‚Æ‚¢‚¤ˆê‚‚̕ϔ‚Æ‚µ‚Ä”FŽ¯‚·‚é‚Ì‚Å’ˆÓ‚ª•K—v‚Å‚·D
‘½‚‚̃\ƒ‹ƒo[‚ł̓Gƒ‰[‚Æ‚µ‚Ĉ—‚³‚ê‚Ü‚·‚ªCŒÝŠ·«‚Ì‚½‚ß‚É‚à•¶Žš—ñ‚̊ԂɃXƒy[ƒX‚ðŠÜ‚Þ•Ï”‚Í”ð‚¯‚½•û‚ª–³“ï‚Å‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCum = read("test1.lp")vum.write("test2.lp")v‚Æ‚·‚é‚Æ test2.lp ‚Ƀ\ƒ‹ƒo[‚ª”FŽ¯‚µ‚Ä‚¢‚é–â‘肪‘‚«o‚³‚ê‚Ü‚·im ‚̓‚ƒfƒ‹–¼‚Ȃ̂ňႤ–¼‘O‚Å‚à\‚¢‚Ü‚¹‚ñjD
‚Ü‚½C¡‚Ì‚Æ‚±‚ë Gurobi ‚Ì LP ƒtƒ@ƒCƒ‹‚Å‚ÍCx + y ‚Æ x+y ‚͈ႤˆÓ–¡‚ðŽ‚¿‚Ü‚·D
‘OŽÒ‚Í•Ï” x ‚Æ y ‚̘a‚ÅCŒãŽÒ‚Í x+y ‚Æ‚¢‚¤ˆê‚‚̕ϔ‚É”FŽ¯‚³‚ê‚Ü‚·D
•Ï”‚≉ŽZŽq‚̊Ԃ̃Xƒy[ƒX‚ÍŠî–{“I‚ÉÈ—ª‚Å‚«‚Ü‚¹‚ñD
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuread test1.lpvuwrite problem test2.lpv‚Æ‚·‚é‚ÆCtest2.lp ‚Ƀ\ƒ‹ƒo[‚ª”FŽ¯‚µ‚Ä‚¢‚é–â‘肪‘‚«o‚³‚ê‚Ü‚·D
Ž©•ª‚Å LP ƒtƒ@ƒCƒ‹‚𶬂µ‚½‚ªC‹–—e‰ð‚ª‚ ‚é‚Í‚¸‚Ì–â‘è‚È‚Ì‚É•s”\ (infeasible) ‚É‚È‚é
@ŋ߂̃\ƒ‹ƒo[‚É‚ÍCŒÝ‚¢‚É‘Š”½‚·‚éŬ‚̧–ñW‡‚ðo—Í‚·‚é‹@”\‚ª‚‚¢‚Ä‚¢‚邱‚Æ‚ª‚ ‚è‚Ü‚·D
‚±‚Ì‹@”\‚ÍCÅ“K‰»–â‘肪•s”\iŽÀs•s”\Cinfeasiblej‚ÈŽž‚Éô‚ðŒŸ“¢‚·‚邾‚¯‚Å‚È‚CLP ƒtƒ@ƒCƒ‹¶¬‚̃oƒO‚ðŽæ‚é‚Ì‚É‚à‚Æ‚Ä‚à•Ö—˜‚Å‚·D
‚½‚¾‚µC–â‘èƒTƒCƒY‚𬂳‚‚µ‚È‚¢‚ÆŒvŽZŽžŠÔ‚ª‚©‚©‚邽‚ßC‚È‚é‚ׂ‹K–̬͂‚³‚È–â‘è‚©‚çƒeƒXƒg‚·‚é‚Ì‚ª‚æ‚¢‚Å‚µ‚傤D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍC–â‘è‚ð‰ð‚«•s”\‚¾‚Æo‚Ä‚©‚çutools conflictv‚ÆŽÀs‚µ‚Ü‚·i‚±‚̃Rƒ}ƒ“ƒh‚ÍCˆÈ‘O‚̓gƒbƒvƒŒƒxƒ‹‚Ì conflict ‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh‚Å‚µ‚½jD
ƒRƒ}ƒ“ƒh‚̈—‚ªI—¹‚µ‚½‚çCudisplay conflict allv‚Ō݂¢‚É–µ‚‚·‚駖ñŽ®‚È‚Ç‚ªo—Í‚³‚ê‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍC–â‘è‚ð‰ð‚«•s”\‚¾‚Æo‚Ä‚©‚çCcomputeIIS ƒƒ\ƒbƒh‚ðŽg‚¢‚Ü‚·D
computeIIS ƒƒ\ƒbƒh‚̈—‚ªI—¹‚µ‚½‚çCŠg’£Žq‚ª .ilp ‚̃tƒ@ƒCƒ‹‚ðo—Í‚·‚邱‚ƂŌ݂¢‚É–µ‚‚·‚駖ñŽ®‚È‚Ç‚ªo—Í‚³‚ê‚Ü‚·D
—áFum = read("test1.lp")vum.optimize()vum.computeIIS()vum.write("test1.ilp")v
•Ê‚̃\ƒ‹ƒo[‚ʼnð‚‚ÆÅ“K‰ð‚ªˆá‚¤
@Å“K‰ð‚ª•¡”‘¶Ý‚·‚éê‡C‰ð‚ªˆÙ‚Ȃ邱‚Æ‚Í‚ ‚肦‚Ü‚·D
Å“K’l‚»‚Ì‚à‚Ì‚ªˆá‚Á‚Ä‚¢‚éꇂÍC‚¨‚»‚ç‚•ªŽ}ŒÀ’è–@‚ðI—¹‚³‚¹‚é”»’èðŒ‚Ì–â‘è‚Å‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCƒfƒtƒHƒ‹ƒg‚ÌI—¹ðŒ‚ªÅ“K«ƒMƒƒƒbƒv 0.0001 (= 0.01%) ‚É‚È‚Á‚Ä‚¢‚邽‚ßCÅ“K’l‚Ìâ‘Î’l‚ª‘å‚«‚È–â‘è‚Å‚ÍÅ“K‰ð‚Å‚È‚¢‰ð‚ÅI—¹‚µ‚Ä‚µ‚Ü‚¤‚±‚Æ‚ª‚ ‚è‚Ü‚·D
‚±‚ê‚ð”ð‚¯‚é‚É‚ÍCuset mip tolerances mipgap 0vuset mip tolerances absmipgap 0v‚Æݒ肵‚Ü‚·D
- [Gurobi]@ƒfƒtƒHƒ‹ƒg‚ÌI—¹ðŒ‚ªÅ“K«ƒMƒƒƒbƒv 0.0001 (= 0.01%) ‚É‚È‚Á‚Ä‚¢‚邽‚ßCÅ“K’l‚Ìâ‘Î’l‚ª‘å‚«‚È–â‘è‚Å‚ÍÅ“K‰ð‚Å‚È‚¢‰ð‚ÅI—¹‚µ‚Ä‚µ‚Ü‚¤‚±‚Æ‚ª‚ ‚è‚Ü‚·D
‚±‚ê‚ð”ð‚¯‚é‚É‚ÍCInteractive Shell ‚Å‚ÍusetParam("MIPGap", 0)vusetParam("MIPGapAbs", 0)v‚Æݒ肵‚Ü‚·D
@‚È‚¨C¬‡®”“ñŽŸÅ“K‰»–â‘è (MISOCO) ‚È‚ÇC§–ñŽ®‚É“ñŽŸ€‚ðŠÜ‚Þ®”Å“K‰»–â‘è‚Í”’lŒë·‚ÉŽã‚Cƒ\ƒ‹ƒo[‚ªŠÔˆá‚Á‚½‰ð‚ðÅ“K‰ð‚Æ‚µ‚Ä•Ô‚µ‚Ä‚‚邱‚Æ‚ª‚ ‚è‚Ü‚·D
‚±‚ê‚É‚ÍŒˆ’è“I‚È‘Îô‚Í‚È‚¢‚Ì‚Å‚·‚ªC‰Â”\‚È‚ç‚Ε¡”‚̃\ƒ‹ƒo[‚ȂǂŃ`ƒFƒbƒN‚·‚é‚ƃGƒ‰[‚ðŒ¸‚ç‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·D
®”•Ï”‚È‚Ì‚ÉC0.000001 ‚Ü‚½‚Í 0.999999 ‚̂悤‚ȉð‚ªo‚é
@‚Ü‚¸‚ÍC“¾‚ç‚ꂽ‰ð‚ð®”‚ÉŠÛ‚ß‚Ä‚Ý‚ÄC‹–—e‰ð‚ª‚«‚¿‚ñ‚Æ“¾‚ç‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ðŠm”F‚µ‚Ü‚µ‚傤D
ŽŸ‚ÉCbig-M –@‚Å‹‘å‚Ȓ蔂ðŽg‚Á‚Ä‚¢‚È‚¢‚©Šm”F‚µ‚Ä‚‚¾‚³‚¢D
Big-M –@‚Å•K—vˆÈã‚É‘å‚«‚Ȓ蔂ðŽg‚¤‚±‚Æ‚ÍC”’lˆÀ’è«‚¨‚æ‚ÑŒvŽZ‘¬“x‚𑹂˂܂·D
‚È‚¨CŒvŽZ‚ɂ͌뷂ªŠÜ‚Ü‚ê‚Ü‚·‚Ì‚Å“¾‚ç‚ꂽŒ‹‰Ê‚ðˆ—‚·‚éÛ‚É‚Í’ˆÓ‚ª•K—v‚Å‚·D
—Ⴆ‚ÎC0-1 •Ï”‚Æ‚µ‚Ä‚¢‚Ä‚à 0.000001 ‚̂悤‚È’l‚ª“¾‚ç‚ê‚邱‚Æ‚ª‚ ‚邽‚ßCuint Œ^‚Ì 0 ‚Æ”äŠr‚·‚év‚Æ‚¢‚¤‚悤‚Ȉ—‚ÍŒë‚Á‚½Œ‹‰Ê‚𵂂±‚Æ‚ª‚ ‚è‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset emphasis numerical yesv‚Å”’lˆÀ’è«‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
‚ ‚é‚¢‚ÍCuset mip tolerances integrality 0v‚Æݒ肵‚Ä‚Ý‚Ä‚‚¾‚³‚¢D
- [Gurobi]@Interactive Shell ‚Å‚ÍCusetParam("NumericFocus", 1)v‚Å”’lˆÀ’è«‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
‚³‚ç‚É”’l‚ð 2 ‚ ‚é‚¢‚Í 3 ‚Æ‚·‚邱‚Æ‚Å‚æ‚è”’lˆÀ’è«‚Éd“_‚ð‚¨‚«‚Ü‚·iƒfƒtƒHƒ‹ƒg’l‚Í 0jD
‚ ‚é‚¢‚ÍCusetParam("IntegralityFocus", 1)v‚©‚Â/‚Ü‚½‚ÍusetParam("IntFeasTol", 1e-9)v‚Æݒ肵‚Ä‚Ý‚Ä‚‚¾‚³‚¢D
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuset emphasis numericsv‚Å”’lˆÀ’è«‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
•ªŽ}ŒÀ’è–@‚ði‚ß‚½‚çCÅ“K«ƒMƒƒƒbƒv‚ª‘‚¦‚½
@’ÊíC•ªŽ}ŒÀ’è–@‚É‚¨‚¯‚é‘Š‘ΓI‚ÈÅ“K«ƒMƒƒƒbƒviãŠE‚ƉºŠE‚ÌŠ„‡j‚Í’P’²‚ÉŒ¸‚µ‚Ü‚·‚ªCãŠE‚ƉºŠE‚̳•‰‚ªˆÙ‚È‚é’iŠK‚Å‚ÍC㉺ŠE‚ª‰ü‘P‚³‚ꂽ‚Æ‚«‚Ɉꎞ“I‚ÉÅ“K«ƒMƒƒƒbƒv‚Ì’l‚ª‘‰Á‚µ‚½‚悤‚ÉŒ©‚¦‚邱‚Æ‚ª‚ ‚è‚Ü‚·D
‚±‚ê‚ÍCƒ\ƒ‹ƒo[‚É‚æ‚éÅ“K«ƒMƒƒƒbƒv‚ÌŒvŽZ•û–@‚É‹Nˆö‚·‚é‚à‚Ì‚Å‚·D
‚±‚̂悤‚È’iŠK‚É‚¨‚¢‚Ä‚ÍC‘Š‘ΓI‚ÈÅ“K«ƒMƒƒƒbƒv‚Ì’l‚Í•ªŽ}ŒÀ’è–@‚Ìis󋵂̖ڈÀ‚Æ‚µ‚Ä‚ ‚Ü‚èŽQl‚É‚È‚è‚Ü‚¹‚ñD
â‘ΓI‚ÈÅ“K«ƒMƒƒƒbƒviãŠE‚ƉºŠE‚Ì·j‚ðŠÏŽ@‚µ‚Ä‚‚¾‚³‚¢D
@‚Ü‚½CÅ“K’l‚ª 0 ‚Å‚ ‚é‚悤‚È–â‘è‚Ìê‡C‘Š‘ΓI‚ÈÅ“K«ƒMƒƒƒbƒv‚Í•ªŽ}ŒÀ’è–@‚Ìis󋵂̖ڈÀ‚Æ‚µ‚Ä‚Ù‚Æ‚ñ‚Ç–ð‚É—§‚¿‚Ü‚¹‚ñD
‚±‚ÌꇂɂàCâ‘ΓI‚ÈÅ“K«ƒMƒƒƒbƒv‚ðŽQl‚É‚µ‚Ä‚‚¾‚³‚¢D
[CPLEX]@ILOG CPLEX Optimization Studio ‚Å LP ƒtƒ@ƒCƒ‹‚𶬂µ‚½‚ªC“YŽš‚ª‚¸‚ê‚é
@CPLEX ‚É•t‘®‚µ‚Ä‚¢‚é CPLEX Optimization Studio ‚É‚¨‚¢‚Ä OPL Œ¾Œê‚Å–â‘è‚ð‹Lq‚µCŽÀs‚·‚é‚Æ LP ƒtƒ@ƒCƒ‹‚𶬂·‚é‚悤‚Éݒ肵‚Ä‚¢‚é‚Æ‚«C”z—ñ•Ï”‚Ì“YŽš‚ð 1 ‚©‚çŽn‚ß‚é‚悤‚É‚µ‚Ä‚¢‚Ä‚àCLP ƒtƒ@ƒCƒ‹‚Å‚Í 0 ‚©‚çŽn‚Ü‚é‚悤‚É‚È‚Á‚Ä‚¢‚éꇂª‚ ‚è‚Ü‚·i‚»‚¤‚È‚ç‚È‚¢Žž‚à‚ ‚è‚Ü‚·jD
LP ƒtƒ@ƒCƒ‹‚É‚à–â‘莩‘̂ͳ‚µ‚‹Lq‚³‚ê‚Ä‚¢‚é‚Ì‚Å‚·‚ªC‚±‚ÌŒ»Û‚ª‹N‚«‚é‚Æ“YŽš‚ª‚¸‚ê‚Ä‚¢‚é‚Ì‚ÅlŠÔ‚ª‰ð‚ð‰ðŽß‚·‚éÛ‚ÉŠÔˆá‚Á‚Ä‚µ‚Ü‚¤‰Â”\«‚ª‚ ‚è‚Ü‚·D
‚±‚Ì–â‘肪”¶‚µ‚½ê‡‚ÍCOPL Œ¾Œêã‚Å”z—ñ•Ï”‚Ì“YŽš‚ð 0 ‚©‚çŽn‚ß‚é‚悤‚É‚µC“YŽš 0 ‚ɑΉž‚·‚é•Ï”‚ɂ͒蔂ð—^‚¦‚Ä‚µ‚Ü‚¦‚ΓYŽš‚ª‚¸‚ê‚邱‚Æ‚Í‚Æ‚è‚ ‚¦‚¸‚È‚‚È‚è‚Ü‚·D
–ÚŽŸ‚Ö–ß‚é
LP ƒtƒ@ƒCƒ‹‚ɂ‚¢‚Ä
@LP ƒtƒ@ƒCƒ‹‚ɂ‚¢‚Ä‚ÌC‚æ‚èׂ©‚¢î•ñ‚Å‚·D
LP ƒtƒ@ƒCƒ‹‚ÌÚׂȕ¶–@‚ª’m‚肽‚¢
@LP ƒtƒ@ƒCƒ‹‚É‚ÍC“ˆê‚³‚ꂽƒtƒH[ƒ}ƒbƒg‚ª‘¶Ý‚¹‚¸Cƒ\ƒ‹ƒo[‚²‚Æ‚É“ÆŽ©‚ÌŠg’£‚ª‚³‚ê‚Ä‚¢‚Ü‚·D
–{ƒy[ƒW‚¨‚æ‚Ñ ŽQl•¶Œ£ 9 ‚Å‚ÍC‘½‚‚̊‹«‚ňµ‚¦‚é‚ÆŽv‚í‚ê‚éCCPLEX ‚Å—p‚¢‚ç‚ê‚Ä‚¢‚é LP ƒtƒ@ƒCƒ‹Œ`Ž®‚̈ꕔ•ª‚ð‚à‚Æ‚É‹Lq‚µ‚Ä‚¢‚Ü‚·D
ƒ\ƒ‹ƒo[‚²‚Æ‚É’è‚ß‚ç‚ê‚Ä‚¢‚é LP ƒtƒ@ƒCƒ‹‚ÌÚׂȕ¶–@‚ÍCˆÈ‰º‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
- [CPLEX]@"LP file format" ‚Ń}ƒjƒ…ƒAƒ‹‚ðŒŸõ‚µ‚Ä‚‚¾‚³‚¢D
’ˆÓ“_‚Æ‚µ‚ÄCCPLEX ‚Ì LP ƒtƒ@ƒCƒ‹‚Å‚ÍCxx yy ‚Æ‚¢‚¤•Ï”ixx ‚Æ yy ‚̊ԂɃXƒy[ƒXj‚ð‘‚‚Æ xxyy ‚Æ‚¢‚¤ˆê‚‚̕ϔ‚Æ‚µ‚Ä”FŽ¯‚³‚ê‚Ü‚·D
‚µ‚©‚µ‘¼‚̃\ƒ‹ƒo[‚Ƃ̌݊·«‚Ì‚½‚ß‚É‚àC•¶Žš—ñ‚̊ԂɃXƒy[ƒX‚ðŠÜ‚Þ•Ï”‚Í”ð‚¯‚½•û‚ª–³“ï‚Å‚·D
- [Gurobi]@"LP file format" ‚Ń}ƒjƒ…ƒAƒ‹‚ðŒŸõ‚µ‚Ä‚‚¾‚³‚¢D
’ˆÓ“_‚Æ‚µ‚ÄCGurobi ‚Ì LP ƒtƒ@ƒCƒ‹‚Å‚ÍCx + y ‚Æ x+y ‚͈ႤˆÓ–¡‚ðŽ‚¿‚Ü‚·D
‘OŽÒ‚Í•Ï” x ‚Æ y ‚̘a‚ÅCŒãŽÒ‚Í x+y ‚Æ‚¢‚¤ˆê‚‚̕ϔ‚É”FŽ¯‚³‚ê‚Ü‚·D
‚Ü‚½C“ñŽŸ€‚ð•\‚· x * y ‚àCx*y ‚Å‚Í‚È‚ * ‚Ì‘OŒã‚ɃXƒy[ƒX‚ª•K—v‚Å‚·D
•Ï”‚≉ŽZŽq‚̊Ԃ̃Xƒy[ƒX‚ÍŠî–{“I‚ÉÈ—ª‚Å‚«‚Ü‚¹‚ñD
–Ú“IŠÖ”‚ª–³‚¢–â‘è‚ðˆµ‚¢‚½‚¢
@minimizei‚ ‚é‚¢‚Í maximizej‚ÌŽŸ‚Ìs‚É subject to ‚Æ‚µ‚ħ–ñŽ®‚ð‘‚«Žn‚ß‚Ä‚‚¾‚³‚¢D
‚½‚¾‚µC–Ú“IŠÖ”‚ª–³‚¢–â‘è‚Å‚àC“K“–‚È–Ú“IŠÖ”‚ðݒ肵‚Ä‚â‚邱‚Æ‚É‚æ‚èŒvŽZ‚ª‚‘¬‚ɂȂ邱‚Æ‚ª‚ ‚è‚Ü‚·i’x‚‚Ȃ邱‚Æ‚à‚ ‚è‚Ü‚·jD
—Ⴆ‚ÎC•Ï”‚ÌoŒ»‚µ‚½‡‚Éd‚Ý‚ÌŒW”‚ð 1, 2, ... ‚Æ‚µ‚Ä–Ú“IŠÖ”‚É“ü‚ê‚Ä‚â‚é“™‚Å‚·D
LP ƒtƒ@ƒCƒ‹‚ŃVƒOƒ}‹L†‚â”z—ñ‚É‘Š“–‚·‚é‚à‚Ì‚ð—p‚¢‚½‚¢
@LP ƒtƒ@ƒCƒ‹‚É‚»‚̂悤‚È‹@”\‚Í‚È‚¢‚½‚ßC1000 ŒÂ‚Ì•Ï”‚̘a‚Íi“K‹X‰üs‚µ‚È‚ª‚çjƒxƒ^‚É‘‚‚±‚Æ‚É‚È‚è‚Ü‚·D
‚Ü‚½ x(1) ‚Æ‘‚¢‚Ä‚àCx(2) ‚Æ‚Í“Á‚ÉŠÖŒW‚ª‚ ‚è‚Ü‚¹‚ñ‚µCx2)))) ‚Æ‚¢‚¤‚悤‚È•Ï”‚à‰Â”\‚Å‚·D
‚à‚¿‚ë‚ñClŠÔ‚ª•Ï”‚̈Ӗ¡‚ð—‰ð‚µ‚â‚·‚¢‚悤‚ÉCx(1), y(3,4), z_7_5_6 ‚È‚Ç‚Æ”z—ñ•—‚É‘‚‚±‚Æ‚Í„§‚³‚ê‚Ü‚·D
i‚½‚¾‚µC[ ] ‚Í LP ƒtƒ@ƒCƒ‹‚Å“ñŽŸŽ®‚ð•\‚·Û‚Ì‹L†‚Ì‚½‚ß—p‚¢‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñDj
‹‘å‚È LP ƒtƒ@ƒCƒ‹‚ð‚Ç‚¤‚â‚Á‚Ķ¬‚·‚ê‚΂悢‚©
@‘å‚«‚•ª‚¯‚Ĉȉº‚Ì 3 ‚‚̕û–@‚ª‚ ‚è‚Ü‚·F
uƒvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚Å LP ƒtƒ@ƒCƒ‹‚𶬂·‚év
u”—Å“K‰»ƒ‚ƒfƒŠƒ“ƒOƒc[ƒ‹‚ðŽg‚¤v
uƒ\ƒ‹ƒo[‚É€”õ‚³‚ê‚Ä‚¢‚é API ‚È‚Ç‚ÅCiLP ƒtƒ@ƒCƒ‹‚ð‰î‚³‚¸jƒ_ƒCƒŒƒNƒg‚É–â‘趬‚¨‚æ‚Ñ‹‰ð‚ðs‚¤vD
‚»‚ꂼ‚ê‚Ì—˜“_‚ÆŒ‡“_‚͈ȉº‚Ì’Ê‚è‚Å‚·D
@uƒvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚Å LP ƒtƒ@ƒCƒ‹‚𶬂·‚évF
Žg‚¢Šµ‚ê‚Ä‚¢‚éƒvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ŃeƒLƒXƒg‚ðo—Í‚³‚¹‚ê‚΂悢‚Ì‚ÅCˆê”Ô‚¨ŽèŒy‚Å‚·D
–{ƒy[ƒW‚Å‚àCLP ƒtƒ@ƒCƒ‹{Šeƒ\ƒ‹ƒo[‚Ì CLI ‚ð—p‚¢‚½•û–@‚ð‘z’肵‚ÄЉ‚Ä‚¢‚Ü‚·D
‚Ü‚½C–â‘è‚ð LP ƒtƒ@ƒCƒ‹‚ð‰î‚µ‚Ĉµ‚¤‚½‚ßC‚ ‚éƒ\ƒ‹ƒo[‚©‚瑼‚̃\ƒ‹ƒo[‚Éæ‚芷‚¦‚邱‚Æ‚à—eˆÕ‚È‚Ì‚àƒƒŠƒbƒg‚Å‚·D
‚½‚¾‚µ‚ ‚‚Ü‚Å‚à LP ƒtƒ@ƒCƒ‹ƒx[ƒX‚Ì‚½‚ßC‘¼‚Ì•û–@‚Æ”äŠr‚·‚é‚ƃ\ƒ‹ƒo[‚Ì•¡ŽG‚ȧŒä‚ª“‚¢‚Æ‚¢‚¤ƒfƒƒŠƒbƒg‚à‚ ‚è‚Ü‚·‚ªC–â‘è‚ð“Æ—§‚É‰ð‚‚¾‚¯‚È‚ç‚΂±‚Ì•û–@‚Å‚à‚Ù‚Æ‚ñ‚Ç•s•Ö‚Í‚È‚¢‚ÆŽv‚í‚ê‚Ü‚·D
@u”—Å“K‰»ƒ‚ƒfƒŠƒ“ƒOƒc[ƒ‹‚ðŽg‚¤vF
ƒƒŠƒbƒg‚ÍC”Ž®‚Å•\Œ»‚³‚ꂽƒ‚ƒfƒ‹‚©‚çƒvƒƒOƒ‰ƒ€‚ªì‚è‚â‚·‚¢‚±‚Æ‚Å‚·D
—Ⴆ‚ÎC‚ ‚郂ƒfƒŠƒ“ƒOŒ¾Œê‚Å‚Íux1 ‚©‚ç x100 ‚܂ł̘a‚ª 3 ˆÈ‰ºv‚ð•\Œ»‚·‚é‚Ì‚É sum(i in 1..100)(x[i]) <= 3 ‚Æ‘‚‚±‚Æ‚ª‚Å‚«‚é‚È‚ÇC”Ž®‚©‚çƒvƒƒOƒ‰ƒ€‚Ö’¼Š´“I‚É‘‚«Š·‚¦‚ª‰Â”\‚Æ‚È‚Á‚Ä‚¢‚Ü‚·D
‘¼‚É‚àC‚æ‚Žg‚¤ƒ^ƒCƒv‚̧–ñŽ®‚ɑΉž‚·‚é—\–ñŒê‚ª€”õ‚³‚ê‚Ä‚¢‚é‚È‚ÇC”Šw“I’莮‰»‚ªŠ®¬‚µ‚Ä‚©‚ç‚Ì•ÏŠ·ì‹Æ‚ª”ñí‚É‚‘¬‚És‚¦‚邱‚Æ‚ª—˜“_‚Å‚·D
‚½‚¾‚µC”—Å“K‰»ƒ‚ƒfƒŠƒ“ƒOƒc[ƒ‹‚ðw“ü‚µC‚»‚±‚ÅŽg—p‚³‚ê‚Ä‚¢‚郂ƒfƒŠƒ“ƒOŒ¾Œê‚ðK“¾‚·‚éŽèŠÔ‚ª‚©‚©‚è‚Ü‚·D
”Ä—p‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ðŠo‚¦‚é‚æ‚è‚Í—eˆÕ‚Å‚·‚ªC‚ ‚é’ö“x‚ÌŽžŠÔ“IE‹à‘K“I‚ȉŠú“ŠŽ‘‚ª•K—v‚É‚È‚è‚Ü‚·D
ƒ\ƒ‹ƒo[‚É‚æ‚Á‚Ä‚ÍC”—Å“K‰»ƒ‚ƒfƒŠƒ“ƒOƒc[ƒ‹‚ª“¯«‚³‚ê‚Ä‚¢‚é‚à‚Ì‚à‚ ‚è‚Ü‚·D
@uƒ\ƒ‹ƒo[‚É€”õ‚³‚ê‚Ä‚¢‚é API ‚È‚Ç‚ÅCiLP ƒtƒ@ƒCƒ‹‚ð‰î‚³‚¸jƒ_ƒCƒŒƒNƒg‚É–â‘趬‚¨‚æ‚Ñ‹‰ð‚ðs‚¤vF
–â‘èƒtƒ@ƒCƒ‹‚̶¬‚ɂƂǂ܂炸C•ªŽ}‡˜‚Ì‘€ì‚È‚Ç•ªŽ}ŒÀ’è–@‚Ì‚“x‚ȧŒä‚ª‰Â”\‚É‚È‚é‚Ì‚ªˆê”Ԃ̃ƒŠƒbƒg‚Æ‚È‚è‚Ü‚·D
—ñ¶¬–@‚È‚ÇC•¡”‚Ì–â‘èŠÔ‚Åî•ñ‚ð‚â‚è‚Æ‚è‚·‚é•K—v‚ª‚ ‚éꇂɂÍC‚±‚Ì•û–@‚ð—˜—p‚·‚é‚Ì‚ªŒ»ŽÀ“I‚Å‚µ‚傤D
‚½‚¾‚µ API ‚Ì‘Ž®‚Ȃǂ̓\ƒ‹ƒo[‚²‚ƂɈقȂ邽‚ßC•Êƒ\ƒ‹ƒo[‚Ö‚Ì—¬—p‚͓‚¢‚Ì‚àŠm‚©‚Å‚·D
- [CPLEX]@”—Å“K‰»ƒ‚ƒfƒŠƒ“ƒOƒc[ƒ‹ CPLEX Optimization Studio ‚ª“¯«‚³‚ê‚Ä‚¢‚Ü‚·i ŽQl•¶Œ£ 3 jD
‚Ü‚½CC, C++, Java, .NET, Python ‚Ì API ‚ª€”õ‚³‚ê‚Ä‚¢‚Ü‚·D
- [Gurobi]@Interactive Shell Ž©‘Ì‚ª Python ƒCƒ“ƒ^[ƒvƒŠƒ^‚É‚È‚Á‚Ä‚¨‚èC‚±‚Ìã‚©‚çƒ\ƒ‹ƒo[‚ðƒvƒƒOƒ‰ƒ€‚Å‚“x‚ɧŒä‚Å‚«‚Ü‚·D
ŽQl•¶Œ£ 5 ‚É‚í‚©‚è‚â‚·‚¢‰ðà‚¨‚æ‚уTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚ªÚ‚Á‚Ä‚¢‚Ü‚·D
‚Ü‚½CC, C++, Java, .NET, Python, R ‚Ì API ‚ª€”õ‚³‚ê‚Ä‚¢‚Ü‚·D
- [SCIP]@”—Å“K‰»ƒ‚ƒfƒŠƒ“ƒOŒ¾Œê ZIMPL ‚ªÅ‰‚©‚瓯«‚³‚ê‚Ä‚¢‚Ü‚·D
ZIMPL Œ¾Œê‚ÌŠÈ’P‚È•¶–@‚ɂ‚¢‚Ä‚ÍCŽQl•¶Œ£ 17 ‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuread test1.zplvuwrite problem test2.lpv‚Æ‚·‚é‚ÆCtest2.lp ‚É LP ƒtƒ@ƒCƒ‹‚ðo—Í‚Å‚«‚Ü‚·i‚±‚±‚Å test1.zpl ‚Í ZIMPL Œ¾Œê‚Å쬂µ‚½–â‘èƒtƒ@ƒCƒ‹jD
‚È‚¨CSCIP ‚̓\[ƒXƒR[ƒh‚ª‘S‚ÄŒöŠJ‚³‚ê‚Ä‚¨‚èC’P‚È‚éƒ\ƒ‹ƒo[‚Æ‚µ‚Ä‚¾‚¯‚Å‚Í‚È‚C•ªŽ}ŒÀ’è–@‚̃tƒŒ[ƒ€ƒ[ƒN‚Æ‚µ‚Ä’ñ‹Ÿ‚³‚ê‚Ä‚¢‚Ü‚·D
LP ƒtƒ@ƒCƒ‹‚ðŽ©“®“I‚É®Œ`‚µ‚½‚¢
@LP ƒtƒ@ƒCƒ‹‚ðˆê“xƒ\ƒ‹ƒo[‚É“Ç‚Ýž‚Ü‚¹‚ÄC‚»‚ê‚©‚ç‘‚«o‚·‚Æ‚«‚ê‚¢‚É®Œ`‚µ‚Ä‚‚ê‚Ü‚·D
ˆÈ‰ºC®Œ`‚µ‚½‚¢ LP ƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð test1.lp ‚Æ‚µ‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuread test1.lpvuwrite test2.lpv‚Æ‚·‚é‚ÆCtest2.lp ‚É®Œ`‚³‚ꂽ LP ƒtƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCum = read("test1.lp")vum.write("test2.lp")v‚Æ‚·‚é‚Æ test2.lp ‚É®Œ`‚³‚ꂽ LP ƒtƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚Ü‚·im ‚̓‚ƒfƒ‹–¼‚Ȃ̂ňႤ–¼‘O‚Å‚à\‚¢‚Ü‚¹‚ñjD
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuread test1.lpvuwrite problem test2.lpv‚Æ‚·‚é‚ÆCtest2.lp ‚É®Œ`‚³‚ꂽ LP ƒtƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚Ü‚·D
MPS ƒtƒ@ƒCƒ‹‚Ƃ͉½‚©DMPS ƒtƒ@ƒCƒ‹‚Æ LP ƒtƒ@ƒCƒ‹‚ð•ÏŠ·‚µ‚½‚¢
@MPS ƒtƒ@ƒCƒ‹‚Æ‚ÍC”—Å“K‰»–â‘è‚ð•\‚·ƒtƒ@ƒCƒ‹Œ`Ž®‚̈êŽí‚Å‚·D
ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚È‚Ì‚Å‚·‚ªClŠÔ‚Ì–Ú‚Å‚Í‚ ‚Ü‚è“Ç‚Ý‚â‚·‚‚Í‚ ‚è‚Ü‚¹‚ñD
ƒxƒ“ƒ`ƒ}[ƒN–â‘è‚È‚Ç‚Í MPS Œ`Ž®‚ŃAƒbƒvƒ[ƒh‚³‚ê‚Ä‚¢‚邱‚Æ‚à‘½‚¢‚Å‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuread test1.mpsvuwrite test2.lpv‚Æ‚·‚é‚ÆCMPS ƒtƒ@ƒCƒ‹‚©‚ç LP ƒtƒ@ƒCƒ‹‚É•ÏŠ·‚Å‚«‚Ü‚·D
uread test3.lpvuwrite test4.mpsv‚Å‹t‚Ì•ÏŠ·‚ª‚Å‚«‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCum = read("test1.mps")vum.write("test2.lp")v‚Æ‚·‚é‚Æ MPS ƒtƒ@ƒCƒ‹‚©‚ç LP ƒtƒ@ƒCƒ‹‚É•ÏŠ·‚Å‚«‚Ü‚·D
um = read("test3.lp")vum.write("test4.mps")v‚Å‹t‚Ì•ÏŠ·‚ª‚Å‚«‚Ü‚·im ‚̓‚ƒfƒ‹–¼‚Ȃ̂ňႤ–¼‘O‚Å‚à\‚¢‚Ü‚¹‚ñjD
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuread test1.mpsvuwrite problem test2.lpv‚Æ‚·‚é‚Æ MPS ƒtƒ@ƒCƒ‹‚©‚ç LP ƒtƒ@ƒCƒ‹‚É•ÏŠ·‚Å‚«‚Ü‚·D
uread test3.lpvuwrite problem test4.mpsv‚Å‹t‚Ì•ÏŠ·‚ª‚Å‚«‚Ü‚·D
LP ƒtƒ@ƒCƒ‹‚ð MPS ƒtƒ@ƒCƒ‹‚É•ÏŠ·‚µ‚½‚çC–Ú“IŠÖ”’l‚ªƒ}ƒCƒiƒX 1 ”{‚É‚È‚Á‚½
@‚¢‚‚‚©‚̃\ƒ‹ƒo[‚Å‚ÍCő剻–â‘è‚Ì LP ƒtƒ@ƒCƒ‹‚ð MPS ƒtƒ@ƒCƒ‹‚É•ÏŠ·‚·‚é‚ÆCŒW”‚ðƒ}ƒCƒiƒX 1 ”{‚µ‚½Å¬‰»–â‘è‚É’u‚«Š·‚¦‚é‚悤‚Å‚·D
LP ƒtƒ@ƒCƒ‹‚Å“ñŽŸ‚Ì–Ú“IŠÖ”‚ð•\‚µ‚½‚¢
@Ŭ‰»–â‘è‚ÌꇂɓʓñŽŸ–Ú“IŠÖ”Cő剻–â‘è‚Ìꇂɉš“ñŽŸ–Ú“IŠÖ”‚ª’¼Úˆµ‚¦‚éƒ\ƒ‹ƒo[‚ª‚ ‚è‚Ü‚·D
@–Ú“IŠÖ”‚É‚¨‚¢‚ÄCüŒ`€‚ðæ‚É‘‚«C‚»‚ê‚É‘±‚¢‚Ä“ñŽŸ€‚ð + [ 2 x^2 - 4 x * y + 9 y^2 ] /2 ‚̂悤‚É‘‚«‚Ü‚·D
•Ï”‚Ì 2 æ‚Í ^2 ‚ðCƒNƒƒX€‚É‚Í * ‚ðŽg‚¢‚Ü‚·D
‚Ü‚½CŒW”‚Í 2 ”{‚µ‚Ä‘‚«C“ñŽŸ€‚Ì‘S‘Ì‚ð [ ] /2 ‚Å‚‚‚è‚Ü‚·i[ ] ‚Æ‚»‚ê‚æ‚è“à‘¤‚̓Xƒy[ƒX‚Å‹æØ‚éjD
- [CPLEX]@CPLEX 12.6 ‚©‚çC§–ñŽ®‚ªüŒ`‚Å‚ ‚é‚悤‚È“ñŽŸÅ“K‰»–â‘è‚à‚µ‚‚Í“ñŽŸ®”Å“K‰»–â‘è‚ɂ‚¢‚Ä‚ÍCwŬ‰»–â‘è‚Ìꇂɂ͓ʓñŽŸ–Ú“IŠÖ”Cő剻–â‘è‚Ìꇂ͉š“ñŽŸ–Ú“IŠÖ”xˆÈŠO‚Ì–Ú“IŠÖ”‚ªˆµ‚¦‚é‚悤‚É‚È‚è‚Ü‚µ‚½D
•’Ê‚É‰ð‚¢‚Ä‚Ý‚ÄC"Q in objective is not positive semi-definite." ‚Æ‚¢‚¤ƒGƒ‰[ƒƒbƒZ[ƒW‚ª•\Ž¦‚³‚ꂽê‡Cw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚Ü‚¹‚ñD
Interactive Optimizer ‚Å‚ÍCuset optimalitytarget 3v‚Æ‚µ‚Ä–â‘è‚ð‰ð‚«’¼‚µ‚Ä‚‚¾‚³‚¢i‚±‚̃IƒvƒVƒ‡ƒ“‚ÍCˆÈ‘O‚Í solutiontarget ‚Æ‚¢‚¤–¼‘O‚Å‚µ‚½jD
‚½‚¾‚µCw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚é–â‘è‚Æ”ä‚ׂé‚Æ‚©‚È‚èŒvŽZ‚ÉŽžŠÔ‚ª‚©‚©‚é‚Ì‚Å’ˆÓ‚ª•K—v‚Å‚·D
- [Gurobi]@Gurobi 9.0 ‚©‚çCwŬ‰»–â‘è‚Ìꇂɂ͓ʓñŽŸ–Ú“IŠÖ”Cő剻–â‘è‚Ìꇂ͉š“ñŽŸ–Ú“IŠÖ”xˆÈŠO‚Ì“ñŽŸ‚Ì–Ú“IŠÖ”‚ªˆµ‚¦‚é‚悤‚É‚È‚è‚Ü‚µ‚½D
•’Ê‚É‰ð‚¢‚Ä‚Ý‚ÄCƒGƒ‰[ƒƒbƒZ[ƒW‚ª•\Ž¦‚³‚ꂽê‡Cw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚Ü‚¹‚ñD
usetParam("NonConvex", 2)v‚Æ‚µ‚Ä–â‘è‚ð‰ð‚«’¼‚µ‚Ä‚‚¾‚³‚¢D
‚½‚¾‚µCw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚é–â‘è‚Æ”ä‚ׂé‚Æ‚©‚È‚èŒvŽZ‚ÉŽžŠÔ‚ª‚©‚©‚é‚Ì‚Å’ˆÓ‚ª•K—v‚Å‚·D
LP ƒtƒ@ƒCƒ‹‚Å“ñŽŸ‚̧–ñŽ®‚ð•\‚µ‚½‚¢
@“Ê“ñŽŸ§–ñC“ñŽŸ§–ñ‚ª’¼Úˆµ‚¦‚éƒ\ƒ‹ƒo[‚ª‚ ‚è‚Ü‚·D
@§–ñŽ®‚É‚¨‚¯‚é“ñŽŸ€‚Í [ x^2 - 2 x * y + 7 y^2 ] <= 58 ‚â [ x(1)^2 + 3 x(2)^2 - y * z ] <= 0 ‚̂悤‚É‘‚«‚Ü‚·i[ ] ‚Æ‚»‚ê‚æ‚è“à‘¤‚̓Xƒy[ƒX‚Å‹æØ‚éjD
•Ï”‚Ì 2 æ‚Í ^2 ‚ðCƒNƒƒX€‚É‚Í * ‚ðŽg‚¢‚Ü‚·D
–Ú“IŠÖ”‚É‚¨‚¯‚é“ñŽŸ€‚Ƃ̈Ⴂ‚ÍCŒW”‚ð 2 ”{‚µ‚Ä /2 ‚·‚é•K—v‚ª‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·D
- [Gurobi]@Gurobi 9.0 ‚©‚çCw§–ñŽ®‚ÉŠÜ‚Ü‚ê‚é•Ï”‚ð˜A‘±•Ï”‚Æ‚Ý‚È‚µ‚½ŽžC‹–—e—̈悪“Ê‚É‚È‚é“ñŽŸ•s“™Ž®xˆÈŠO‚Ì“ñŽŸ§–ñŽ®‚ªˆµ‚¦‚é‚悤‚É‚È‚è‚Ü‚µ‚½i—Ⴆ‚ÎCz = x * y ‚Æ‚¢‚¤‚悤‚È‘oüŒ`“™Ž®§–ñ‚ªˆµ‚¦‚Ü‚·jD
•’Ê‚É‰ð‚¢‚Ä‚Ý‚ÄCƒGƒ‰[ƒƒbƒZ[ƒW‚ª•\Ž¦‚³‚ꂽê‡Cw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚Ü‚¹‚ñD
Interactive Shell ‚Å‚ÍCusetParam("NonConvex", 2)v‚Æ‚µ‚Ä–â‘è‚ð‰ð‚«’¼‚µ‚Ä‚‚¾‚³‚¢D
‚½‚¾‚µCw x“à‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚é–â‘è‚Æ”ä‚ׂé‚Æ‚©‚È‚èŒvŽZ‚ÉŽžŠÔ‚ª‚©‚©‚é‚Ì‚Å’ˆÓ‚ª•K—v‚Å‚·D
LP ƒtƒ@ƒCƒ‹‚Å–Ú“IŠÖ”‚ɒ蔀‚ðŠÜ‚ß‚½‚¢
@LP ƒtƒ@ƒCƒ‹‚É‚Í“ˆê‚³‚ꂽƒtƒH[ƒ}ƒbƒg‚ª‘¶Ý‚¹‚¸Cƒ\ƒ‹ƒo[‚²‚Æ‚É“ÆŽ©‚ÌŠg’£‚ª‚³‚ê‚Ä‚¢‚Ü‚·D
–Ú“IŠÖ”‚ɒ蔀‚ðŠÜ‚ß‚½ LP ƒtƒ@ƒCƒ‹‚ð’¼Úˆµ‚¦‚éƒ\ƒ‹ƒo[‚à‚ ‚é‚Ì‚Å‚·‚ªCƒGƒ‰[‚Æ‚È‚éƒ\ƒ‹ƒo[‚à‚ ‚èCŒ»ó‚Å‚Í–Ú“IŠÖ”‚ɒ蔀‚ðŠÜ‚ß‚½ LP ƒtƒ@ƒCƒ‹‚ð‘‚‚±‚Æ‚Í‚ ‚܂肨‚·‚·‚ß‚Å‚«‚Ü‚¹‚ñD
–Ú“IŠÖ”’l‚ð’蔀‚ðŠÜ‚ß‚½’l‚Æ‚µ‚Ä•\Ž¦‚³‚¹‚½‚¢ê‡‚ÍC—Ⴆ‚ΖړIŠÖ”‚ɒ蔀‚ɑΉž‚·‚é•Ï”‚ð‰Á‚¦C§–ñŽ®‚Å‚»‚Ì•Ï”‚Ì’l‚ðŒÅ’肵‚Ä‚µ‚Ü‚¦‚Γ¯“™‚Ì‚±‚Æ‚ª‚Å‚«‚Ü‚·D
LP ƒtƒ@ƒCƒ‹‚É‘‚•Ï”‚⧖ñŽ®‚̇”Ô‚ð•Ï‚¦‚½‚çŒvŽZŽžŠÔ‚ª•Ï‚í‚Á‚½
@ƒ\ƒ‹ƒo[‚Í•ªŽ}ŒÀ’è–@‚Ì’†‚Å•ªŽ}‡˜‚ð—lX‚Èî•ñ‚©‚猈’肵‚Ä‚¢‚Ü‚·‚ªC
ÅI“I‚É—Dæ“x‚ª“™‚µ‚¢ê‡‚ɂ͉½‚ç‚©‚̇˜‚ð‚‚¯‚é•K—v‚ª‚ ‚邽‚ßC•ªŽ}‡˜‚¨‚æ‚ÑŒvŽZŽžŠÔ‚ª•Ï”‚⧖ñŽ®‚ð‹Lq‚µ‚½‡”ԂɈˑ¶‚·‚邱‚Æ‚ª‚ ‚è‚Ü‚·D
‚±‚Ì‚ ‚½‚è‚Ìî•ñ‚Í ŽQl•¶Œ£ 4 ‚ÉÚ‚µ‚¢‚Å‚·D
Lazy Constraints ‚ðŽg‚¢‚½‚¢
@ƒ\ƒ‹ƒo[‚É‚æ‚Á‚Ä‚Í Lazy Constraints ‚ªŽg‚¦‚Ü‚·D
Lazy Constraints ‚Æ’è‹`‚³‚ꂽ§–ñŽ®‚ÍCʼn‚Í–â‘è‚©‚çŽæ‚蜂©‚ê‚Ä‚¨‚èC‹–—e‰ð‚ªŒ©‚‚©‚邽‚Ñ‚É–â‘è‚ɒljÁ‚·‚é‚ׂ«‚©‚Ç‚¤‚©ƒ`ƒFƒbƒN‚³‚ê‚Ü‚·D
§–ñŽ®‚Ì–{”‚ª–c‘å‚É‚È‚Á‚Ä‚µ‚Ü‚¤‚ªCŽÀÛ‚É‚Í‚»‚Ì‚¤‚¿‚Ì‚²‚ˆê•”‚µ‚©ˆÓ–¡‚ª‚È‚¢‚悤‚È–â‘è‚ÅŒø‰Ê‚ð”Šö‚µ‚Ü‚·D
@ˆÈ‰º‚Å‚ÍCLP ƒtƒ@ƒCƒ‹‚Å Lazy Constraints ‚ðˆµ‚¤•û–@‚ðà–¾‚µ‚Ü‚·D
‚»‚à‚»‚৖ñŽ®‘S‘Ì‚ð LP ƒtƒ@ƒCƒ‹‚É‘‚«‚«‚é‚Ì‚ª“‚¢ê‡‚âC“®“I‚É Lazy Constraints ‚ð’ljÁ‚µ‚½‚¢‚悤‚ÈꇂÍCŠeƒ\ƒ‹ƒo[‚Ì API ‚ð—˜—p‚·‚é‚Ì‚ª•Ö—˜‚Å‚·D
Úׂ̓}ƒjƒ…ƒAƒ‹‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
- [CPLEX]@LP ƒtƒ@ƒCƒ‹‚Å‚ÍC’Êí‚̧–ñŽ®‚̌ォ‚ bounds ƒZƒNƒVƒ‡ƒ“‚Ì‘O‚É Lazy Constraints ‚Æ‚¢‚¤—\–ñŒê‚ð‘‚«CLazy Constraints ‚É‚µ‚½‚¢§–ñŽ®‚ð—ñ‹“‚µ‚Ü‚·D
- [Gurobi]@LP ƒtƒ@ƒCƒ‹‚Å‚ÍC’Êí‚̧–ñŽ®‚̌ォ‚ bounds ƒZƒNƒVƒ‡ƒ“‚Ì‘O‚É Lazy Constraints 2 ‚Æ‚¢‚¤—\–ñŒê‚ð‘‚«CLazy Constraints ‚É‚µ‚½‚¢§–ñŽ®‚ð—ñ‹“‚µ‚Ü‚·D
”Žš‚Í 1, 2, 3 ‚Ì‚¢‚¸‚ê‚©‚ð‘‚‚±‚Æ‚ª‚Å‚«‚Ü‚·i”Žš‚ðŽw’肵‚È‚¢ê‡‚Í 1 ‚Æ‚Ý‚È‚³‚ê‚Ü‚·jD
‚±‚Ì”Žš‚ÍŒ³–â‘è‚Ö‚Ì Lazy Constraints ‚̒ljÁ‚Ì•û–@‚ð§Œä‚µ‚Ä‚¢‚é‚Ì‚Å‚·‚ªC’Êí‚Ìê‡‚Í 2 ‚Å–â‘è–³‚¢‚ÆŽv‚í‚ê‚Ü‚·D
Úׂ̓}ƒjƒ…ƒAƒ‹‚Ì linear constraint attribute ‚Ì lazy ‚Ì€‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
–ÚŽŸ‚Ö–ß‚é
ƒ\ƒ‹ƒo[‚Ì’²®‚ÆŒvŽZ‘¬“x‚ɂ‚¢‚Ä
@ŒvŽZ‘¬“x‚ÉŠÖŒW‚·‚é•”•ª‚Å‚ÌCƒ\ƒ‹ƒo[‚Ì’²®‚ɂ‚¢‚Ä‚Å‚·D
Ŭ‰»–â‘è‚Å‚È‚©‚È‚©‰ºŠE‚ªã‚ª‚ç‚È‚¢Dő剻–â‘è‚Å‚È‚©‚È‚©ãŠE‚ª‰º‚ª‚ç‚È‚¢
@’莮‰»‚ª—Ç‚‚È‚¢‰Â”\«‚à‚ ‚è‚Ü‚·‚ªC‚Æ‚è‚ ‚¦‚¸ƒ\ƒ‹ƒo[‚̃pƒ‰ƒ[ƒ^‚ð’²®‚µ‚Ă݂鉿’l‚Í‚ ‚é‚ÆŽv‚í‚ê‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset emphasis mip 2v‚ÅCŬ‰»–â‘è‚Ìꇂɂ͉ºŠE‚ðã‚°‚éCő剻–â‘è‚ÌꇂɂÍãŠE‚ð‰º‚°‚邱‚Æ‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
uset emphasis mip 3v‚ÅC‚»‚Ì‚³‚ç‚É‹—͂ȃo[ƒWƒ‡ƒ“‚É‚È‚è‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCusetParam("MIPFocus", 2)v‚ÅCŬ‰»–â‘è‚Ìꇂɂ͉ºŠE‚ðã‚°‚éCő剻–â‘è‚ÌꇂɂÍãŠE‚ð‰º‚°‚邱‚Æ‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
usetParam("MIPFocus", 3)v‚ÅC‚»‚Ì‚³‚ç‚É‹—͂ȃo[ƒWƒ‡ƒ“‚É‚È‚è‚Ü‚·D
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuset emphasis optimalityv‚ÅCŬ‰»–â‘è‚Ìꇂɂ͉ºŠE‚ðã‚°‚éCő剻–â‘è‚ÌꇂɂÍãŠE‚ð‰º‚°‚邱‚Æ‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
Å“K‰ð‚É‚±‚¾‚í‚ç‚È‚¢‚Ì‚ÅC‚È‚é‚ׂ‚‘¬‚ÉŽ¿‚Ì—Ç‚¢‰ð‚ª‚Ù‚µ‚¢
@ƒ\ƒ‹ƒo[‚̃pƒ‰ƒ[ƒ^‚ð’²®‚·‚é‚Ì‚ªŽè‚ÁŽæ‚è‘‚¢‚ÆŽv‚í‚ê‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset emphasis mip 1v‚ÅC‹–—e‰ð‚ð’T‚·‚±‚Æ‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
uset emphasis mip 4v‚ÅC‚»‚Ì‚³‚ç‚É‹—͂ȃo[ƒWƒ‡ƒ“‚É‚È‚è‚Ü‚·D
uset emphasis mip 5v‚ÅCuset emphasis mip 4v‚æ‚肳‚ç‚É‹–—e‰ð‚Ì”Œ©‚É’—Í‚µ‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCusetParam("MIPFocus", 1)v‚ÅC‹–—e‰ð‚ð’T‚·‚±‚Æ‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuset emphasis feasibilityv‚ÅC‹–—e‰ð‚ð’T‚·‚±‚Æ‚Éd“_‚ð’u‚¢‚½•ªŽ}ŒÀ’è–@‚É‚È‚è‚Ü‚·D
ŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚ÄC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚é‚悤‚É‚µ‚½‚¢
@ˆÈ‰º‚̃Rƒ}ƒ“ƒh‚ÅC•ªŽ}ŒÀ’è–@‚ð 10000 •b‚ÅI—¹‚³‚¹‚ç‚ê‚Ü‚·D
”Žš‚ð•Ï‚¦‚邱‚Æ‚É‚æ‚è•b”‚ðŽ©—R‚ÉÝ’è‚Å‚«‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚Íuset timelimit 10000v‚Æ‚µ‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍusetParam("TimeLimit", 10000)v‚Æ‚µ‚Ü‚·D
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚Íuset limits time 10000v‚Æ‚µ‚Ü‚·D
’è‚ß‚½è‡’l‚Æ“¯‚¶‚©‚æ‚è—Ç‚¢–Ú“IŠÖ”’l‚Ì‹–—e‰ð‚ªo‚½‚çC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚é‚悤‚É‚µ‚½‚¢
@—p“r‚É‚æ‚Á‚Ä‚ÍCƒ†[ƒU[‚ª’è‚ß‚½è‡’l‚Æ“¯‚¶‚©‚æ‚è—Ç‚¢–Ú“IŠÖ”’liŬ‰»–â‘è‚Å‚Í臒lˆÈ‰ºCő剻–â‘è‚Å‚Í臒lˆÈãj‚ðŽ‚‹–—e‰ð‚ª“¾‚ç‚ê‚ê‚Î\•ª‚Èꇂª‚ ‚è‚Ü‚·D
ˆÈ‰º‚̃Rƒ}ƒ“ƒh‚ÅC’è‚ß‚½è‡’l‚Æ“¯‚¶‚©‚æ‚è—Ç‚¢–Ú“IŠÖ”’l‚Ì‹–—e‰ð‚ªo‚½‚çC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚é‚悤‚É‚Å‚«‚Ü‚·D
ˆÈ‰º‚Å‚Í臒l‚ð 200 ‚Æ‚µ‚Äà–¾‚µ‚Ü‚·‚ªC”Žš‚ð•Ï‚¦‚邱‚Æ‚É‚æ‚è臒l‚ÍŽ©—R‚ÉÝ’è‚Å‚«‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCŬ‰»–â‘è‚ÌꇂÍuset mip limits lowerobjstop 200v‚Æ‚·‚é‚ÆC–Ú“IŠÖ”’l‚ª 200 ˆÈ‰º‚Ì‹–—e‰ð‚ª“¾‚ç‚ꂽ‚玩“®‚Å’âŽ~‚µ‚Ü‚·D
ő剻–â‘è‚Å‚Íuset mip limits upperobjstop 200v‚Æ‚·‚é‚ÆC–Ú“IŠÖ”’l‚ª 200 ˆÈã‚Ì‹–—e‰ð‚ª“¾‚ç‚ꂽ‚玩“®‚Å’âŽ~‚µ‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍusetParam("BestObjStop", 200)v‚Æ‚·‚é‚ÆCŬ‰»–â‘è‚Å‚Í–Ú“IŠÖ”’l‚ª 200 ˆÈ‰º‚Ì‹–—e‰ð‚ª“¾‚ç‚ꂽ‚çCő剻–â‘è‚Å‚Í–Ú“IŠÖ”’l‚ª 200 ˆÈã‚Ì‹–—e‰ð‚ª“¾‚ç‚ꂽ‚çCŽ©“®‚Å’âŽ~‚µ‚Ü‚·D
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚Íuset limits primal 200v‚Æ‚µ‚Ü‚·D‚È‚¨CSCIP 9.0.1 ˆÈ‘O‚Å‚Íuset limits objectivestop 200v‚Æ‚µ‚Ü‚·D
‹–—e‰ð‚ð—^‚¦‚½ó‘Ô‚Å•ªŽ}ŒÀ’è–@‚ðƒXƒ^[ƒg‚µ‚½‚¢
@iŽ¿‚Ì—Ç‚¢j‹–—e‰ð‚ð—^‚¦‚邱‚Æ‚É‚æ‚èC•ªŽ}ŒÀ’è–@‚Ì‚‘¬‰»‚ð‚Ë‚ç‚¢‚Ü‚·D
“Á‚ÉC‹–—e‰ð‚ªŒ©‚‚©‚è‚É‚‚¢–â‘è‚Å‚ÍŒvŽZŽžŠÔ‚Ì’Zk‚ªŠú‘Ò‚Å‚«‚Ü‚·D
- [CPLEX]@‹–—e‰ð‚ð‹Lq‚µ‚½ MST ƒtƒ@ƒCƒ‹itest1.mst ‚Æ‚µ‚Ü‚·j‚ð쬂µCuread test1.lpvuread test1.mstvuoptimizev‚Æ‚·‚邱‚Æ‚ÅC‹–—e‰ð‚ð“Ç‚Ýž‚ñ‚¾ó‘Ô‚Å•ªŽ}ŒÀ’è–@‚ªƒXƒ^[ƒg‚µ‚Ü‚·D
iCPLEX ‚Å‹–—e‰ð‚𓾂ç‚ꂽó‘Ô‚Å MST ƒtƒ@ƒCƒ‹‚ð write ‚·‚é‚ÆCXML Œ`Ž®‚Ì MST ƒtƒ@ƒCƒ‹‚ªo—Í‚³‚êC‚Ü‚½ƒ}ƒjƒ…ƒAƒ‹‚Å‚à XML Œ`Ž®‚Ì MST ƒtƒ@ƒCƒ‹‚ª‰ðà‚³‚ê‚Ä‚¢‚Ü‚·‚ªCŠÈ’P‚ÉŽg‚¤‚ɂ͌¢ƒo[ƒWƒ‡ƒ“‚Ì MST ƒtƒ@ƒCƒ‹‚ª•Ö—˜‚È‚Ì‚ÅC‚±‚̃y[ƒW‚ł͉º‹L‚Ì•û–@‚ðЉ‚Ü‚·Dj
CPLEX ‚ÌiŒÃ‚¢ƒo[ƒWƒ‡ƒ“‚Ìj MST ƒtƒ@ƒCƒ‹‚Æ‚ÍC
NAME
x 1
y 0
z 7
ENDATA
‚̂悤‚ÉCˆês‚Ɉê‚‚¸‚®”•Ï”‚ð‹Lq‚µC‚»‚ÌŒã‚ë‚ɃXƒy[ƒX‚ð‹ó‚¯‚Ä‹–—e‰ð‚ł̑Ήž‚·‚é’l‚ð‹Lq‚µ‚½CŠg’£Žq‚ª .mst ‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚Å‚·D
ˆês–Ú‚É‚Í NAME ‚Æ‘‚«CÅIs‚É‚Í ENDATA ‚Æ‘‚«‚Ü‚·D
®”•Ï”‚ÍCŠes‚Å 5 •¶Žš–ÚˆÈ~‚É‘‚•K—v‚ª‚ ‚è‚Ü‚·D
‚»‚ÌŒã‚ë‚ɃXƒy[ƒX‚ð‹ó‚¯‚Ä‹–—e‰ð‚ł̑Ήž‚·‚é’l‚ð‹Lq‚µ‚Ü‚·D
iGurobi ‚Ì MST ƒtƒ@ƒCƒ‹‚Æ•¶–@‚ª‚µˆÙ‚È‚é‚Ì‚Å’ˆÓj
@’ˆÓFCPLEX 12.6.1 ‚æ‚èCã‹L‚̌¢ MST ƒtƒ@ƒCƒ‹‚ªŽg—p‚Å‚«‚È‚‚È‚è‚Ü‚µ‚½D
XML Œ`Ž®‚Ì MST ƒtƒ@ƒCƒ‹‚ðŽ©‘O‚Å쬂µ‚Ä‚à‚æ‚¢‚Ì‚Å‚·‚ªC‚Æ‚è‚ ‚¦‚¸‚̑Έ•û–@‚Æ‚µ‚ÄCLP ƒtƒ@ƒCƒ‹Ž©‘̂ɧ–ñŽ®‚ð’ljÁ‚µ‚ÄŠù’m‚Ì‹–—e‰ð‚ðo—Í‚³‚¹Cuwrite test1.mstv‚Æ‚·‚ê‚Î XML Œ`Ž®‚Ì MST ƒtƒ@ƒCƒ‹‚ðo—Í‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·D
- [Gurobi]@‹–—e‰ð‚ð‹Lq‚µ‚½ MST ƒtƒ@ƒCƒ‹itest1.mst ‚Æ‚µ‚Ü‚·j‚ð쬂µCum = read("test1.lp")vum.read("test1.mst")vum.optimize()v‚Æ‚·‚邱‚Æ‚ÅC‹–—e‰ð‚ð“Ç‚Ýž‚ñ‚¾ó‘Ô‚Å•ªŽ}ŒÀ’è–@‚ªƒXƒ^[ƒg‚µ‚Ü‚·im ‚̓‚ƒfƒ‹–¼‚Ȃ̂ňႤ–¼‘O‚Å‚à\‚¢‚Ü‚¹‚ñjD
Gurobi ‚Ì MST ƒtƒ@ƒCƒ‹‚Æ‚ÍC
x 1
y 0
z 7
‚̂悤‚ÉCˆês‚Ɉê‚‚¸‚®”•Ï”‚ð‹Lq‚µC‚»‚ÌŒã‚ë‚ɃXƒy[ƒX‚ð‹ó‚¯‚Ä‹–—e‰ð‚ł̑Ήž‚·‚é’l‚ð‹Lq‚µ‚½CŠg’£Žq‚ª .mst ‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚Å‚·D
Ú×‚Í MST format ‚Ń}ƒjƒ…ƒAƒ‹‚ðŒŸõ‚µ‚Ä‚‚¾‚³‚¢DiCPLEX ‚Ì MST ƒtƒ@ƒCƒ‹‚Æ•¶–@‚ª‚µˆÙ‚È‚é‚Ì‚Å’ˆÓj
- [SCIP]@‹–—e‰ð‚ð‹Lq‚µ‚½ MST ƒtƒ@ƒCƒ‹itest1.mst ‚Æ‚µ‚Ü‚·j‚ð쬂µCuread test1.lpvuread test1.mstvuoptimizev‚Æ‚·‚邱‚Æ‚ÅC‹–—e‰ð‚ð“Ç‚Ýž‚ñ‚¾ó‘Ô‚Å•ªŽ}ŒÀ’è–@‚ªƒXƒ^[ƒg‚µ‚Ü‚·D
SCIP ‚Ì MST ƒtƒ@ƒCƒ‹‚Æ‚ÍC
x 1
y 0
z 7
‚̂悤‚ÉCˆês‚Ɉê‚‚¸‚®”•Ï”‚ð‹Lq‚µC‚»‚ÌŒã‚ë‚ɃXƒy[ƒX‚ð‹ó‚¯‚Ä‹–—e‰ð‚ł̑Ήž‚·‚é’l‚ð‹Lq‚µ‚½CŠg’£Žq‚ª .mst ‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚Å‚·i–â‘è‚ð‰ð‚¢‚Ä‹–—e‰ð‚ª“¾‚ç‚ꂽŽž‚Éuwrite solution test1.mstv‚Æ‚·‚é‚ÆC‚à‚¤‚µÚׂÈî•ñ‚ª‘‚©‚ꂽ MST ƒtƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚Ü‚·‚ªC‹–—e‰ð‚ð—^‚¦‚邾‚¯‚È‚çã‹L‚Ì‘‚«•û‚Å–â‘è‚ ‚è‚Ü‚¹‚ñjD
ƒ\ƒ‹ƒo[‚ðƒqƒ…[ƒŠƒXƒeƒBƒNƒX‚Æ‚µ‚ÄŽg‚¢‚½‚¢
@ã‹L‚ÌuÅ“K‰ð‚É‚±‚¾‚í‚ç‚È‚¢‚Ì‚ÅC‚È‚é‚ׂ‚‘¬‚ÉŽ¿‚Ì—Ç‚¢‰ð‚ª‚Ù‚µ‚¢vuŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚ÄC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚é‚悤‚É‚µ‚½‚¢vu’è‚ß‚½è‡’l‚Æ“¯‚¶‚©‚æ‚è—Ç‚¢–Ú“IŠÖ”’l‚Ì‹–—e‰ð‚ªo‚½‚çC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚é‚悤‚É‚µ‚½‚¢vu‹–—e‰ð‚ð—^‚¦‚½ó‘Ô‚Å•ªŽ}ŒÀ’è–@‚ðƒXƒ^[ƒg‚µ‚½‚¢v‚ð‘g‚݇‚킹‚ÄŽg‚¤‚Æ—Ç‚¢‚ÆŽv‚í‚ê‚Ü‚·D
- [CPLEX]@•ªŽ}ŒÀ’è–@‚Ì‘¼‚ÉCsolution polishing ‚Æ‚¢‚¤ƒAƒ‹ƒSƒŠƒYƒ€‚àŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·i‚½‚¾‚µCƒfƒtƒHƒ‹ƒgÝ’è‚Å‚Í solution polishing ‚̃‚[ƒh‚É‚Í“ü‚è‚Ü‚¹‚ñjD
–â‘è‚É‚æ‚Á‚Ä‚ÍC‹—Í‚É“‚ƒqƒ…[ƒŠƒXƒeƒBƒNƒX‚Å‚·iƒAƒ‹ƒSƒŠƒYƒ€‚ÌÚ×‚Í ŽQl•¶Œ£ 11 ‚É‹LÚ‚³‚ê‚Ä‚¢‚Ü‚·jD
Solution polishing ‚ɂ‚¢‚Ä‚Í‚¢‚ë‚¢‚ë‚Èݒ肪‰Â”\‚Å‚·‚ªCInteractive Optimizer ‚ł͗Ⴆ‚Îuset mip polishafter solutions 1v‚ÆÝ’è‚·‚邱‚Æ‚ÅC‹–—e‰ð‚ð 1 ‚ÂŒ©‚‚¯‚½Œã‚Í•ªŽ}ŒÀ’è–@‚©‚ç solution polishing ƒqƒ…[ƒŠƒXƒeƒBƒNƒX‚ÖˆÚs‚·‚é‚悤‚É‚Å‚«‚Ü‚·D
i‹–—e‰ð‚ð 1 ‚ÂŒ©‚‚¯‚½‚É‚àŠÖ‚í‚炸 "Starting solution polishing." ‚Æ•\Ž¦‚³‚ê‚È‚¢C‚ ‚é‚¢‚ÍŒvŽZ‚ªŽ~‚Ü‚Á‚Ä‚µ‚Ü‚¤ê‡‚ÍCuset mip polishafter solutions 1v‚Ì 1 ‚ð 2, 3, ... ‚Æ™X‚É‘‚₵‚ÄCʼn‚©‚ç‰ð‚«’¼‚µ‚Ä‚Ý‚Ä‚‚¾‚³‚¢Dj
‚ ‚é‚¢‚ÍCuset timelimit 1000vuset mip limits polishtime 200v‚ÆÝ’è‚·‚邱‚Æ‚ÅC’Êí‚Ì•ªŽ}ŒÀ’è–@‚ð 1000 •b‚ÅI—¹‚µC‚»‚ÌŒã‚É 200 •b polishing ‚ðs‚¤‚悤‚É‚Å‚«‚Ü‚·i”Žš‚ð•Ï‚¦‚邱‚Æ‚É‚æ‚è•b”‚ðŽ©—R‚ÉÝ’è‚Å‚«‚Ü‚·jD
‚½‚¾‚µC•ªŽ}ŒÀ’è–@‚Ì’iŠK‚Å‹–—e‰ð‚ªŒ©‚‚©‚Á‚Ä‚¢‚邱‚Æ‚ª•K—v‚Å‚·D
- [Gurobi]@•ªŽ}ŒÀ’è–@‚Ì‘¼‚ÉCNoRel heuristic ‚Æ‚¢‚¤ƒAƒ‹ƒSƒŠƒYƒ€‚àŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·i‚½‚¾‚µCƒfƒtƒHƒ‹ƒgÝ’è‚Å‚Í NoRel heuristic ‚̃‚[ƒh‚É‚Í“ü‚è‚Ü‚¹‚ñjD
Norel heuristic ‚Í•ªŽ}ŒÀ’è–@‚É“ü‚é‘O‚ÉŽÀs‚³‚ê‚éC–â‘è‚É‚æ‚Á‚Ä‚Í‹—Í‚É“‚ƒqƒ…[ƒŠƒXƒeƒBƒNƒX‚Å‚·D
NoRel heuristic ‚ɂ‚¢‚Ä‚Í‚¢‚‚‚©‚Ìݒ肪‰Â”\‚Å‚·‚ªCInteractive Shell ‚ł͗Ⴆ‚ÎusetParam("NoRelHeurTime", 200)v‚ÆÝ’è‚·‚邱‚Æ‚ÅCNoRel heuristic ‚ð 200 •bŽÀs‚µ‚½Œã‚É’Êí‚Ì•ªŽ}ŒÀ’è–@‚ÖˆÚs‚·‚é‚悤‚É‚Å‚«‚Ü‚·i”Žš‚ð•Ï‚¦‚邱‚Æ‚É‚æ‚è•b”‚ðŽ©—R‚ÉÝ’è‚Å‚«‚Ü‚·jD
‚È‚¨CuŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚ÄC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚é‚悤‚É‚µ‚½‚¢v‚ÅŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚Ä‚¢‚éê‡C‚±‚ÌŒvŽZŽžŠÔ‚É‚Í NoRel heuristic ‚ÌŽžŠÔ‚ªŠÜ‚Ü‚ê‚Ü‚·D
—Ⴆ‚ÎCusetParam("TimeLimit", 1000)vusetParam("NoRelHeurTime", 200)v‚Æ‚µ‚½ê‡‚É‚ÍC•ªŽ}ŒÀ’è–@‚Ì‘O‚É NoRel heuristic ‚ª 200 •bŽÀs‚³‚êC‚»‚ÌŒã‚É’Êí‚Ì•ªŽ}ŒÀ’è–@‚ª 800 •bŽÀs‚³‚ê‚邱‚Æ‚É‚È‚è‚Ü‚·D
•ªŽ}‡˜‚ðŽè“®‚ÅŽw’肵‚½‚¢
@ŋ߂̃\ƒ‹ƒo[‚Í‚©‚Ȃ茫‚‚È‚Á‚Ä‚¢‚é‚Ì‚ÅCƒfƒtƒHƒ‹ƒg‚Ì•ªŽ}‡˜‚Í‚©‚È‚è‚‘¬‚Å‚·D
Žèì‹Æ‚É‚æ‚镪Ž}‡˜‚Ì’²®‚É‘½‚‚ÌŽžŠÔ‚ðŠ|‚¯‚邱‚Æ‚Í‚ ‚܂肨‚·‚·‚ß‚µ‚Ü‚¹‚ñD
‚½‚¾‚µC“Á’è‚Ì•Ï”‚ðŒÅ’è‚·‚é‚Æ–â‘肪’˜‚µ‚¬‚³‚‚È‚é‚È‚ÇC–â‘è\‘¢‚ðÚ‚µ‚’m‚Á‚Ä‚¢‚éꇂɂ͕ªŽ}‡˜‚ÌŽè“®Žw’肪—LŒø‚Èê‡‚à‚ ‚è‚Ü‚·D
- [CPLEX]@ORD ƒtƒ@ƒCƒ‹‚ƌĂ΂ê‚éƒtƒ@ƒCƒ‹‚ðì‚é‚ÆCInteractive Optimizer ‚Å‚à•ªŽ}‡˜‚ªŽw’è‚Å‚«‚Ü‚·D
uORD file formatv‚Ń}ƒjƒ…ƒAƒ‹‚ðŒŸõ‚µ‚Ä‚‚¾‚³‚¢D
iGurobi ‚Ì ORD ƒtƒ@ƒCƒ‹‚Æ•¶–@‚ªˆÙ‚È‚é‚Ì‚Å’ˆÓD“Á‚É CPLEX ‚Ì ORD ƒtƒ@ƒCƒ‹‚ÍCˆê‚‚Ìs‚̉½•¶Žš–Ú‚©‚牽‚ð‘‚‚©‚ªŽw’肳‚ê‚Ä‚¢‚Ü‚·Dj
- [Gurobi]@ORD ƒtƒ@ƒCƒ‹‚ƌĂ΂ê‚éƒtƒ@ƒCƒ‹‚ðì‚é‚ÆCInteractive Shell ‚Å‚à•ªŽ}‡˜‚ªŽw’è‚Å‚«‚Ü‚·D
uORD formatv‚Ń}ƒjƒ…ƒAƒ‹‚ðŒŸõ‚µ‚Ä‚‚¾‚³‚¢D
iCPLEX ‚Ì ORD ƒtƒ@ƒCƒ‹‚Æ•¶–@‚ªˆÙ‚È‚é‚Ì‚Å’ˆÓj
•À—ñ•ªŽ}ŒÀ’è–@‚ŃXƒŒƒbƒh”‚ðŽw’肵‚½‚¢
@•À—ñ•ªŽ}ŒÀ’è–@‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚éƒ\ƒ‹ƒo[‚Å‚ÍCƒ}ƒ‹ƒ`ƒRƒA CPU ‚Ì—˜“_‚𶂩‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·D
‚ ‚é‚¢‚ÍC‘¼‚̃^ƒXƒN‚̎ז‚‚ð‚µ‚È‚¢‚悤‚ɃXƒŒƒbƒh”‚ðŒ¸‚ç‚·‚±‚Æ‚à‰Â”\‚Å‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset threads kv‚Å k ƒXƒŒƒbƒh‚Å•ªŽ}ŒÀ’è–@‚ªŽÀs‚Å‚«‚Ü‚·D
ƒfƒtƒHƒ‹ƒg‚Å‚ÍCŒvŽZ‹@‚É‚ ‚é˜_—ƒRƒA‚ðƒtƒ‹‚ÉŽg—p‚µ‚Ü‚·D
‚È‚¨Cƒ}ƒ‹ƒ`ƒXƒŒƒbƒh‚ÅŽÀs‚µ‚½Û‚É clone0.log, clone1.log, ... ‚̂悤‚ȃtƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚Ü‚·‚ªC‚±‚ꂪ•s—v‚¾‚Æ‚¢‚¤ê‡‚Íuset output clonelog -1v‚Æ‚µ‚Ä‚‚¾‚³‚¢D
- [Gurobi]@Interactive Shell ‚Å‚ÍCusetParam("Threads", k)v‚Å k ƒXƒŒƒbƒh‚Å•ªŽ}ŒÀ’è–@‚ªŽÀs‚Å‚«‚Ü‚·D
ƒfƒtƒHƒ‹ƒg‚Å‚ÍŒvŽZ‹@‚É‚ ‚é˜_—ƒRƒA‚ðƒtƒ‹‚ÉŽg—p‚µ‚Ü‚·‚ªCƒXƒŒƒbƒh”‚ª 32 ‚ð’´‚¦‚é‚悤‚Èê‡‚Í 32 ‚ªãŒÀ‚Æ‚È‚è‚Ü‚·D
ƒXƒŒƒbƒh”‚ð 32 ‚æ‚葽‚‚µ‚½‚¢ê‡‚ÍCŽè“®‚Å”Žš‚ðŽw’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·D
•À—ñ•ªŽ}ŒÀ’è–@‚É‚¨‚¢‚ÄCƒXƒŒƒbƒh”‚ð‘‚₵‚½‚ç’x‚‚È‚Á‚Ä‚µ‚Ü‚Á‚½
@ƒXƒŒƒbƒh”‚ð‘‚₵‚Ä‚à’x‚‚È‚éꇂ͂ ‚è‚Ü‚·D
ŽQl•¶Œ£ 4 ‚Ì} 4 ‚ªÚ‚µ‚¢‚Å‚·D
‚Å‚·‚ªC—Ⴆ‚Î 1 ƒXƒŒƒbƒh‚Æ 16 ƒXƒŒƒbƒh‚‚ç‚¢‚¾‚Æ‚»‚ê‚È‚è‚ɈႢ‚ªo‚Ä‚‚é‚悤‚Å‚·D
u•À—ñ•ªŽ}ŒÀ’è–@‚ŃXƒŒƒbƒh”‚ðŽw’肵‚½‚¢v‚Ì€‚àŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
ƒ\ƒ‹ƒo[‚̃IƒvƒVƒ‡ƒ“ A ‚Ì‚Ý‚ðƒIƒ“‚É‚µ‚½‚çŒvŽZ‚ª‘¬‚‚È‚èCƒIƒvƒVƒ‡ƒ“ B ‚Ì‚Ý‚ðƒIƒ“‚É‚µ‚½‚çŒvŽZ‚ª‘¬‚‚È‚Á‚½‚Ì‚ÅCƒIƒvƒVƒ‡ƒ“ A ‚Æ B ‚𗼕ûƒIƒ“‚É‚µ‚½‚Æ‚±‚ëŒvŽZ‚ª’x‚‚È‚Á‚Ä‚µ‚Ü‚Á‚½
@‚»‚¤‚¢‚¤‚±‚Æ‚Í‚µ‚΂µ‚΂ ‚è‚Ü‚·D
ŒvŽZ‚ðˆê“x’†’f‚µ‚Ä‚©‚çÄŠJ‚µ‚½‚çC’†’f‚µ‚È‚¢ê‡‚ÆŒvŽZ‰ß’ö‚ªˆÙ‚È‚Á‚½
@ƒ\ƒ‹ƒo[‚É‚æ‚Á‚Ä‚ÍC‚»‚¤‚¢‚¤‚±‚Æ‚ª‚ ‚è‚Ü‚·D
ŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚½‚çC§ŒÀ‚µ‚È‚¢ê‡‚ÆŒvŽZ‰ß’ö‚ªˆÙ‚È‚Á‚½
@ƒ\ƒ‹ƒo[‚É‚æ‚Á‚Ä‚ÍCŒvŽZŽžŠÔ‚ÌãŒÀ‚ðŽw’è‚·‚é‚ÆC‚»‚ÌãŒÀ‚ɋ߂¢‚Ä‚àÅ“K«ƒMƒƒƒbƒv‚ª‘å‚«‚¢‚Æ‚«iŒvŽZ‚ªÅŒã‚Ü‚ÅI—¹‚µ‚È‚»‚¤‚È‚Æ‚«j‚É‹–—e‰ð‚Ì”Œ©‚ð—Dæ‚·‚郂[ƒh‚ÉØ‚è‘Ö‚í‚é‚à‚Ì‚ª‚ ‚é‚悤‚Å‚·D
üŒ`Å“K‰»–â‘è‚ð•¡”‰ñ‰ð‚¢‚Ä‚Ý‚½‚çCÅ“K‰ð‚ªˆÙ‚È‚Á‚½
@ƒ\ƒ‹ƒo[‚É‚æ‚Á‚Ä‚ÍCƒ}ƒ‹ƒ`ƒXƒŒƒbƒh‚ÅüŒ`Å“K‰»–â‘è‚ð‰ð‚‚ÆC•¡”‚̃Aƒ‹ƒSƒŠƒYƒ€i’P‘Ì–@‚â“à“_–@j‚ð—p‚¢‚ÄŒvŽZ‚µˆê”Ô‘¬‚I—¹‚µ‚½‚à‚Ì‚ðo—Í‚µ‚Ü‚·D
‚±‚Ì‚½‚ßC‹H‚ȃP[ƒX‚Å‚·‚ªCƒAƒ‹ƒSƒŠƒYƒ€ŠÔ‚ÌŒvŽZŽžŠÔ‚Ì·ˆÙ‚ª”÷¬‚È‚Æ‚«‚ÍŽŽs‚²‚ƂɈقȂéÅ“K‰ð‚ªo‚é‰Â”\«‚ª‚ ‚é‚悤‚Å‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset parallel 1v‚ÅüŒ`Å“K‰»–â‘è‚ɑ΂µ‚Ä–ˆ‰ñ“¯‚¶‰ð‚ðo‚·‚悤‚É‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCusetParam("Method", 4)v‚ÅüŒ`Å“K‰»–â‘è‚ɑ΂µ‚Ä–ˆ‰ñ“¯‚¶‰ð‚ðo‚·‚悤‚É‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·D
–ÚŽŸ‚Ö–ß‚é
ƒ\ƒ‹ƒo[‚ð‚à‚Á‚Æ•Ö—˜‚ÉŽg‚¢‚½‚¢
@ƒ\ƒ‹ƒo[‚Ì•Ö—˜‚È‹@”\‚ÌЉî‚ð‚µ‚Ü‚·D
ƒ\ƒ‹ƒo[‚ª‘Oˆ—‚ð‚µ‚½ LP ƒtƒ@ƒCƒ‹‚ðŒ©‚½‚¢
@‚¢‚‚‚©‚̃\ƒ‹ƒo[‚Å‚ÍCƒ\ƒ‹ƒo[‚ª‘Oˆ—‚µ‚½Œã‚Ì LP ƒtƒ@ƒCƒ‹‚ðŒ©‚é‚±‚Æ‚ª‚Å‚«‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍC–â‘è‚ð“Ç‚Ýž‚ñ‚Å‘Oˆ—‚ªI—¹‚µ‚½Œãi•ªŽ}‚ªŽn‚Ü‚Á‚½‚Æ‚«jCCtrl-C ‚Å•ªŽ}ŒÀ’è–@‚ð’†’f‚µCuwrite test1.prev‚Å‘Oˆ—Œã‚̃tƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚Ü‚·D
‚»‚ê‚©‚çCuread test1.prevuwrite test2.lpv‚Æ‚·‚ê‚ÎCtest2.lp ‚ª‘Oˆ—Œã‚Ì LP ƒtƒ@ƒCƒ‹‚Æ‚È‚Á‚Ä‚¢‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCum = read("test1.lp")vum2 = m.presolve()vum2.write("test2.lp")v‚Æ‚·‚ê‚Î test2.lp ‚ª test1.lp ‚Ì‘Oˆ—Œã‚Ì LP ƒtƒ@ƒCƒ‹‚Æ‚È‚Á‚Ä‚¢‚Ü‚·i‚±‚±‚Å m ‚Æ m2 ‚̓‚ƒfƒ‹–¼‚Ȃ̂ňႤ–¼‘O‚Å‚à\‚¢‚Ü‚¹‚ñjD
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCuread test1.lpvupresolvevuwrite transproblem test2.lpv‚Æ‚·‚ê‚ÎCtest2.lp ‚ª‘Oˆ—Œã‚Ì LP ƒtƒ@ƒCƒ‹‚Æ‚È‚Á‚Ä‚¢‚Ü‚·D
‚ǂ̂悤‚É•ªŽ}ŒÀ’è–@‚ªi‚ñ‚Å‚¢‚é‚©‚ðÚׂɊώ@‚µ‚½‚¢
@•ªŽ}ŒÀ’è–@‚̉Ž‹‰»‚ðs‚¤Û‚È‚Ç‚ÍCƒm[ƒhŠÔ‚ÌŠÖŒW‚ª•K—v‚É‚È‚è‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset mip strategy search 1vuset mip interval 1v‚Æ‚·‚é‚ÆCi‰æ–Ê•\Ž¦‚Å‚Í‚È‚jƒƒOƒtƒ@ƒCƒ‹‚Ƀm[ƒh‚ÌeŽqŠÖŒW‚ª•\Ž¦‚³‚ê‚Ü‚·D
‚½‚¾‚µCŒ»ÝƒfƒtƒHƒ‹ƒg‚ÅÌ—p‚³‚ê‚Ä‚¢‚é’Tõ•û–@‚Å‚Í‚È‚¢‚½‚ßC‘½‚‚ÌꇂɌvŽZŽžŠÔ‚ª—]•ª‚É‚©‚©‚è‚Ü‚·D
‚Ü‚½ 1 ƒm[ƒh‚²‚ƂɃƒO‚ð•\Ž¦‚·‚邽‚ßCƒƒOƒtƒ@ƒCƒ‹‚ª–c‘å‚É‚È‚é‚Ì‚Å’ˆÓ‚ª•K—v‚Å‚·D
®”•Ï”‚Ì’l‚ªˆÙ‚È‚éÅ“K‰ð‚̌”‚𔂦‚½‚¢
@Œ´—“I‚ɂ͉”\‚Å‚·D
‚Å‚·‚ªCÅ“K‰ð‚̌”‚Í–â‘è‚É‚æ‚Á‚Ä‚Í”ñí‚É‘½‚‚Ȃ肦‚Ü‚·D
“Á‚ÉC•Ï”ŠÔ‚É‘ÎÌ«‚ª‚ ‚éꇂɂ͗eˆÕ‚É”ñŒ»ŽÀ“I‚È”‚É‚È‚è‚Ü‚·iŽ–ŽÀã—ñ‹“‚µ‚«‚ê‚È‚¢jD
‚µ‚½‚ª‚Á‚ÄC¬‚³‚È–â‘è‚©‚玎‚·‚Ì‚ª“¾ô‚Å‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCˆÈ‰º‚̃pƒ‰ƒ[ƒ^‚ðƒZƒbƒg‚µ‚½Œã‚É populate ‚Æ‚µ‚Ä‚‚¾‚³‚¢F
uset mip pool absgap 0vuset mip pool intensity 4vuset mip limits populate 2100000000vD
- [Gurobi]@Interactive Shell ‚Å‚ÍCusetParam("PoolSearchMode", 2)vusetParam("PoolSolutions", 2000000000)vusetParam("PoolGap", 0)v‚Æ‚µ‚Ä–â‘è‚ð‰ð‚¢‚Ä‚‚¾‚³‚¢D
- [SCIP]@‚Ü‚¸–â‘è‚ð‰ð‚¢‚ÄCÅ“K’l‚ðŠm”F‚µ‚Ü‚·D
‚»‚ÌŽŸ‚ÉCu–Ú“IŠÖ” = Å“K’lv‚Æ‚¢‚¤§–ñŽ®‚ð LP ƒtƒ@ƒCƒ‹‚ɒljÁ‚µCcount ‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh‚ðŽg‚¢‚Ü‚·D
Ú‚µ‚‚ÍChttps://www.scipopt.org/doc/html/COUNTER.php ‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
ƒƒOƒtƒ@ƒCƒ‹‚Ìo—Íæ‚ð•ÏX‚µ‚½‚¢
@•¡”‚Ì–â‘è‚ð‰ð‚ꇂɂÍCƒƒOƒtƒ@ƒCƒ‹‚𕪂¯‚Ä‚¨‚‚Æ•Ö—˜‚Å‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset logfile test1.logv‚Å test1.log ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ɃƒO‚ªŽc‚è‚Ü‚·iƒfƒtƒHƒ‹ƒg‚Í cplex.logjD
‚È‚¨Cuset defaultv‚Å‘S‚ẴIƒvƒVƒ‡ƒ“‚ðƒfƒtƒHƒ‹ƒg‚É–ß‚¹‚Ü‚·‚ªCƒƒOƒtƒ@ƒCƒ‹‚Ìo—Íæ•ÏX‚Ì‚Ý‚Í set default ‚̉e‹¿‚ðŽó‚¯‚È‚¢‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢D
ƒƒOƒtƒ@ƒCƒ‹‚Ìo—Íæ‚ðƒfƒtƒHƒ‹ƒg‚É–ß‚·‚É‚ÍC–¾Ž¦“I‚Éuset logfile cplex.logv‚Æ‚µ‚Ä‚â‚é•K—v‚ª‚ ‚è‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCum.setParam("LogFile", "test1.log")vi‚±‚±‚Å m ‚ÍŒ»Ýˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹–¼j‚Å test1.log ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ɃƒO‚ªŽc‚è‚Ü‚·iƒfƒtƒHƒ‹ƒg‚Í gurobi.logjD
‚½‚¾‚µCGurobi 9.0 ‚©‚çCAPI Œo—R‚Å Gurobi ‚ðŽg—p‚·‚éꇂ̓fƒtƒHƒ‹ƒg‚ł̓ƒOƒtƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½D
ƒpƒ‰ƒ[ƒ^ LogFile ‚É–¾Ž¦“I‚Éo—Íæ‚ðŽw’肵‚Ä‚â‚é•K—v‚ª‚ ‚è‚Ü‚·iInteractive Shell ‚âƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Ì gurobi_cl ‚ł̓fƒtƒHƒ‹ƒg‚Å gurobi.log ‚Éo—Í‚³‚ê‚Ü‚·jD
•¡”‚Ì–â‘è‚ðŽ©“®“I‚É‰ð‚©‚¹‚½‚¢
@‚¢‚‚‚©‚Ì•û–@‚ª‚ ‚è‚Ü‚·‚ªC‚Æ‚è‚ ‚¦‚¸ OS ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“iWindows ‚Ìꇂ̓Rƒ}ƒ“ƒhƒvƒƒ“ƒvƒgj‚ð—p‚¢‚ħŒä‚·‚é•û–@‚ðЉ‚Ü‚·D
- [CPLEX]@CPLEX ‚Ì Interactive Optimizer ‚É—^‚¦‚éƒRƒ}ƒ“ƒh‚ð 1 s‚Ɉê‚‚¸‚‘‚¢‚½ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ð test.txt ‚Æ‚µ‚Ü‚·D
OS ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“‚Åucplex < test.txt i‚ ‚é‚¢‚Í cplex -f test.txtjv‚Æ‚·‚é‚ÆCCPLEX ‚ª test.txt ‚É‘‚©‚ꂽ“à—e‚ð‡ŽŸŽÀs‚µ‚Ü‚·D
‚±‚ê‚ð OS ƒRƒ}ƒ“ƒh‚ÌŽ©“®ŽÀsƒXƒNƒŠƒvƒgiWindows ‚Ìꇂɂ̓oƒbƒ`ƒtƒ@ƒCƒ‹“™j‚Æ‘g‚݇‚킹‚ê‚ÎC•¡”‚Ì–â‘è‚ÌŽ©“®ˆ—‚ª‚Å‚«‚Ü‚·D
i’Pˆê‚Ì test.txt ‚Ì’†‚É•¡”‚Ì–â‘è‚̈—‚ð‘‚¢‚Ä‚à—Ç‚¢‚Ì‚Å‚·‚ªC–â‘èŠÔ‚ŘAŒg‚·‚é•K—v‚ª‚È‚¯‚ê‚ÎCCPLEX ‚̃ŠƒtƒŒƒbƒVƒ…‚̈Ӗ¡‚àŠÜ‚߂ăeƒLƒXƒgƒtƒ@ƒCƒ‹‚ð–â‘è•Ê‚É—pˆÓ‚µ‚½‚Ù‚¤‚ª—Ç‚¢‚ÆŽv‚í‚ê‚Ü‚·Dj
CPLEX —p‚Ì test.txt ‚Ì—áF
set logfile test1.log
set threads 1
set mip display 4
set workmem 8192
set mip tolerances mipgap 0
set mip tolerances absmipgap 0
set timelimit 10000
read test1.lp
optimize
display solution variable -
quit
- [Gurobi]@OS ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“‚Åugurobi_cl TimeLimit=10000 LogFile=test1.log ResultFile=test1.sol MIPGap=0 MIPGapAbs=0 Threads=1 test1.lpv‚Æ‚¢‚¤‚悤‚ÉCugurobi_cl@ƒIƒvƒVƒ‡ƒ“‚É—^‚¦‚éˆø”ŒQ@–â‘è–¼v‚Æ‚·‚é‚Æ–â‘è‚ð‰ð‚‚±‚Æ‚ª‚Å‚«‚Ü‚·D
‚±‚ê‚ð OS ƒRƒ}ƒ“ƒh‚ÌŽ©“®ŽÀsƒXƒNƒŠƒvƒgiWindows ‚Ìꇂɂ̓oƒbƒ`ƒtƒ@ƒCƒ‹“™j‚Æ‘g‚݇‚킹‚ê‚ÎC•¡”‚Ì–â‘è‚ÌŽ©“®ˆ—‚ª‚Å‚«‚Ü‚·D
- [SCIP]@SCIP ‚ÌŽÀsƒtƒ@ƒCƒ‹–¼‚ª scip.exe ‚Æ‚¢‚¤–¼‘O‚¾‚Æ‚µC‚Ü‚½ SCIP ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“‚É—^‚¦‚éƒRƒ}ƒ“ƒh‚ð 1 s‚Ɉê‚‚¸‚‘‚¢‚½ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ð test.txt ‚Æ‚µ‚Ü‚·D
uscip.exe -l test1.log -b test.txtv‚Æ‚·‚é‚ÆCtest1.log ‚É test.txt ‚ðŽÀs‚µ‚½“à—e‚ª‹L˜^‚³‚ê‚Ü‚·D
‚±‚ê‚ð OS ƒRƒ}ƒ“ƒh‚ÌŽ©“®ŽÀsƒXƒNƒŠƒvƒgiWindows ‚Ìꇂɂ̓oƒbƒ`ƒtƒ@ƒCƒ‹“™j‚Æ‘g‚݇‚킹‚ê‚ÎC•¡”‚Ì–â‘è‚ÌŽ©“®ˆ—‚ª‚Å‚«‚Ü‚·D
SCIP —p‚Ì test.txt ‚Ì—áF
set limits time 10000
read test1.lp
optimize
display solution
quit
•¡”‚Ì–â‘èŠÔ‚Åî•ñ‚ð‚â‚è‚Ƃ肵‚½‚¢D‘¼‚̃vƒƒOƒ‰ƒ€‚ƘAŒg‚µ‚½‚¢
@LP ƒtƒ@ƒCƒ‹‚ðƒRƒ}ƒ“ƒhƒ‰ƒCƒ“EƒCƒ“ƒ^[ƒtƒF[ƒX‚ʼnð‚•û–@‚ÍCÅ‚à’Pƒ‚È•û–@‚Å‚·D
—ñ¶¬–@‚È‚ÇC•¡”‚Ì–â‘è‚ÌŠÔ‚Åî•ñ‚ð‚â‚è‚Æ‚è‚·‚é•K—v‚ª‚ ‚éꇂɂÍCƒ\ƒ‹ƒo[‚Ì API ‚È‚Ç‚ð—p‚¢‚é‚Ì‚ª“¾ô‚Å‚·D
Šeƒ\ƒ‹ƒo[‚̃}ƒjƒ…ƒAƒ‹‚¨‚æ‚уTƒ“ƒvƒ‹ƒtƒ@ƒCƒ‹‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCxecute ‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh‚ð—p‚¢‚é‚ÆCxecute ‚É‘±‚¯‚Ä—^‚¦‚½ˆø”‚ð OS ‚É“n‚µ‚Ü‚·i—Ⴆ‚Îuxecute dir *.lpv‚È‚ÇjD
‚±‚̃Rƒ}ƒ“ƒh‚ð—p‚¢‚é‚ÆC‚ ‚é’ö“x‚Í‘¼‚̃vƒƒOƒ‰ƒ€‚̈—‚à Interactive Optimizer ã‚©‚çs‚¦‚Ü‚·i‚Å‚·‚ªC‚“x‚Ȉ—‚Í‚â‚Í‚è API ‚ð—p‚¢‚½•û‚ªŠy‚És‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·jD
- [Gurobi]@Interactive Shell Ž©‘Ì‚ª Python ƒCƒ“ƒ^[ƒvƒŠƒ^‚É‚È‚Á‚Ä‚¨‚èC‚±‚Ìã‚©‚çƒ\ƒ‹ƒo[‚ðƒvƒƒOƒ‰ƒ€‚Å‚“x‚ɧŒä‚Å‚«‚Ü‚·D
ŽQl•¶Œ£ 5 ‚É‚í‚©‚è‚â‚·‚¢‰ðà‚¨‚æ‚уTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚ªÚ‚Á‚Ä‚¢‚Ü‚·D
‚Ü‚½Cusystem("ƒRƒ}ƒ“ƒh–¼")v‚Å OS ‚̃Rƒ}ƒ“ƒh‚ðŽg—p‚Å‚«‚Ü‚·D
- [SCIP]@SCIP ‚̓\[ƒXƒR[ƒh‚ª‘S‚ÄŒöŠJ‚³‚ê‚Ä‚¨‚èC’P‚È‚éƒ\ƒ‹ƒo[‚Æ‚µ‚Ä‚¾‚¯‚Å‚Í‚È‚C•ªŽ}ŒÀ’è–@‚̃tƒŒ[ƒ€ƒ[ƒN‚Æ‚µ‚Ä’ñ‹Ÿ‚³‚ê‚Ä‚¢‚Ü‚·D
ŒvŽZ‚ð’†’f‚·‚邱‚Æ‚È‚CŽb’è‰ð‚»‚Ì‚à‚Ì‚ðŽ©“®“I‚É‹L˜^‚µ‚½‚¢
@—p“r‚É‚æ‚Á‚Ä‚ÍCÅ“K‰ðˆÈŠO‚̉ð‚àŒ©‚½‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuset output intsolfileprefix testv‚Æ‚µ‚Ä•ªŽ}ŒÀ’è–@‚ðŽÀs‚µ‚Ä‚‚¾‚³‚¢i‚±‚±‚Å test ‚Ío—Í‚³‚ê‚éƒtƒ@ƒCƒ‹–¼‚Ȃ̂ňႤ–¼‘O‚Å‚à\‚¢‚Ü‚¹‚ñjD
Œ©‚‚©‚Á‚½Žb’è‰ð‚̇˜‚Å test-00001.sol, test-00002.sol, ... ‚̂悤‚ɉð‚Ìî•ñ‚ð•Û‘¶‚µ‚½ƒtƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚Ü‚·D
‚±‚ê‚ç‚̃tƒ@ƒCƒ‹‚Í xml ƒtƒ@ƒCƒ‹‚ÅCƒeƒLƒXƒg‚Æ‚µ‚Ä’†g‚ðŒ©‚ê‚Î‰ð‚ª‚í‚©‚é‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCum.setParam("SolFiles", "./test")vi‚±‚±‚Å m ‚ÍŒ»Ýˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹–¼j‚Æ‚·‚邱‚Æ‚ÅCŒ©‚‚©‚Á‚½Žb’è‰ð‚̇˜‚Å test_0.sol, test_1.sol, ... ‚̂悤‚ɉð‚Ìî•ñ‚ð•Û‘¶‚µ‚½ sol ƒtƒ@ƒCƒ‹‚ªŒ»Ý‚̃fƒBƒŒƒNƒgƒŠ‚Éo—Í‚³‚ê‚Ü‚·D
"./test" ‚Ì•”•ª‚ð•ÏX‚·‚邱‚Æ‚Åo—Í‚³‚ê‚éƒfƒBƒŒƒNƒgƒŠ‚¨‚æ‚Ñ sol ƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð•ÏX‚Å‚«‚Ü‚·D
•ÏX‚µ‚½ƒpƒ‰ƒ[ƒ^Ý’è‚ð•\Ž¦E•Û‘¶E•œŒ³‚µ‚½‚¢
@ƒ\ƒ‹ƒo[‚Ì•ÏX‚µ‚½ƒpƒ‰ƒ[ƒ^Ý’è‚ð•\Ž¦E•Û‘¶‚·‚é•û–@‚Å‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCudisplay settings changedv‚ŃfƒtƒHƒ‹ƒg’l‚©‚ç•ÏX‚³‚ê‚Ä‚¢‚éƒpƒ‰ƒ[ƒ^‚̈ꗗ‚ð•\Ž¦‚Å‚«‚Ü‚·D
•Ê‚Ì LP ƒtƒ@ƒCƒ‹‚ð“Ç‚Ýž‚ñ‚Å‚àƒpƒ‰ƒ[ƒ^‚ÌÝ’è‚͕ω»‚µ‚Ü‚¹‚ñD
Œ»Ý‚̃pƒ‰ƒ[ƒ^Ý’è‚Íuwrite ƒtƒ@ƒCƒ‹–¼.prmv‚Æ‚·‚邱‚ƂŃtƒ@ƒCƒ‹‚Éo—Í‚ª‚Å‚«Curead ƒtƒ@ƒCƒ‹–¼.prmv‚Å•œŒ³‚Å‚«‚Ü‚·D
uset defaultv‚Å‘S‚Ẵpƒ‰ƒ[ƒ^‚ðƒfƒtƒHƒ‹ƒg’l‚É–ß‚¹‚Ü‚·‚ªCƒƒOƒtƒ@ƒCƒ‹‚Ìo—Í悾‚¯‚Íuset defaultv‚ŃfƒtƒHƒ‹ƒg‚É–ß‚ç‚È‚¢‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢iƒƒOƒtƒ@ƒCƒ‹‚Ìo—Íæ‚ð•ÏX‚µ‚½‚¢ ‚àŽQÆ‚µ‚Ä‚‚¾‚³‚¢DƒfƒtƒHƒ‹ƒg‚Ìo—Íæ‚Í cplex.log ‚Å‚·jD
- [Gurobi]@Interactive Shell ‚Å‚ÍCŒ»Ýˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹–¼‚Æ‚»‚̃‚ƒfƒ‹‚Å•ÏX‚³‚ꂽƒpƒ‰ƒ[ƒ^‚̈ꗗ‚ðumodels()v‚Å•\Ž¦‚Å‚«‚Ü‚·D
Œ»Ý‚̃pƒ‰ƒ[ƒ^Ý’è‚ÍuwriteParams("ƒtƒ@ƒCƒ‹–¼.prm")v‚Æ‚·‚邱‚ƂŃtƒ@ƒCƒ‹‚Éo—Í‚ª‚Å‚«CureadParams("ƒtƒ@ƒCƒ‹–¼.prm")v‚Å•œŒ³‚Å‚«‚Ü‚·D
uresetParams()v‚Å‘S‚Ẵpƒ‰ƒ[ƒ^‚ðƒfƒtƒHƒ‹ƒg’l‚É–ß‚¹‚Ü‚·D
usetParam("ƒpƒ‰ƒ[ƒ^–¼", "default")v‚Å‚»‚̃pƒ‰ƒ[ƒ^‚ðƒfƒtƒHƒ‹ƒg’l‚É–ß‚¹‚Ü‚·D
@‚Ü‚½Cã‹L‚Ì setParam, writeParams, readParams, resetParams ‚È‚Ç‚ÍCŒ»Ýˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹–¼‚ð m ‚Æ‚·‚é‚Æ‚«um.setParam("ƒpƒ‰ƒ[ƒ^–¼", V‚µ‚¢’l)v“™‚Æ‚·‚邱‚Æ‚ÅC‚»‚̃‚ƒfƒ‹‚Ì‚Ý‚É‚¨‚¯‚éƒpƒ‰ƒ[ƒ^‚ð‘€ì‚Å‚«‚Ü‚·D
–{ƒy[ƒW‚Å‚ÍŽå‚Ƀpƒ‰ƒ[ƒ^‚̈ꊇ•ÏX‚ð—á‚É‚ ‚°‚Äà–¾‚µ‚Ä‚¢‚Ü‚·‚ªC•K—v‚ɉž‚¶‚ÄŽg‚¢•ª‚¯‚Ä‚‚¾‚³‚¢D
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCudisplay parametersv‚ŃfƒtƒHƒ‹ƒg’l‚©‚ç•ÏX‚³‚ê‚Ä‚¢‚éƒpƒ‰ƒ[ƒ^‚̈ꗗ‚ð•\Ž¦‚Å‚«‚Ü‚·D
•Ê‚Ì LP ƒtƒ@ƒCƒ‹‚ð“Ç‚Ýž‚ñ‚Å‚àƒpƒ‰ƒ[ƒ^‚ÌÝ’è‚͕ω»‚µ‚Ü‚¹‚ñD
Œ»Ý‚Ì‘Sƒpƒ‰ƒ[ƒ^Ý’è‚Íuset save ƒtƒ@ƒCƒ‹–¼v‚Æ‚·‚邱‚ƂŃtƒ@ƒCƒ‹‚Éo—Í‚Å‚«Cuset load ƒtƒ@ƒCƒ‹–¼v‚Æ‚·‚邱‚Æ‚Å•œŒ³‚Å‚«‚Ü‚·D
Œ»Ý‚̃fƒtƒHƒ‹ƒg’l‚©‚çˆÙ‚È‚éƒpƒ‰ƒ[ƒ^Ý’è‚Íuset diffsave ƒtƒ@ƒCƒ‹–¼v‚Æ‚·‚邱‚ƂŃtƒ@ƒCƒ‹‚Éo—Í‚Å‚«Cuset load ƒtƒ@ƒCƒ‹–¼v‚Æ‚·‚邱‚Æ‚Å•œŒ³‚Å‚«‚Ü‚·D
uset defaultv‚Å‘S‚Ẵpƒ‰ƒ[ƒ^‚ðƒfƒtƒHƒ‹ƒg’l‚É–ß‚¹‚Ü‚·D
–â‘è‚Ì“Œvî•ñ‚ªŒ©‚½‚¢
@“Ç‚Ýž‚ñ‚¾–â‘è‚ɂ‚¢‚ÄC•Ï”‚̌”‚⧖ñŽ®‚Ì–{”‚ð•\Ž¦‚Å‚«‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCudisplay problem statsv‚ÅŒ»Ý“Ç‚Ýž‚ñ‚Å‚¢‚é–â‘è‚Ìî•ñ‚ð•\Ž¦‚Å‚«‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCum.printStats()v‚ÅŒ»Ý“Ç‚Ýž‚ñ‚Å‚¢‚é–â‘è‚Ìî•ñ‚ð•\Ž¦‚Å‚«‚Ü‚·i‚±‚±‚Å m ‚ÍŒ»Ýˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹–¼jD
- [SCIP]@ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å‚ÍCudisplay statisticsv‚ÅŒ»Ý“Ç‚Ýž‚ñ‚Å‚¢‚é–â‘è‚Ìî•ñ‚ð•\Ž¦‚Å‚«‚Ü‚·D
—^‚¦‚½®”Å“K‰»–â‘è‚̘A‘±ŠÉ˜a–â‘è‚𓾂½‚¢
@“Ç‚Ýž‚ñ‚¾®”Å“K‰»–â‘è‚ɂ‚¢‚ÄC‚»‚̘A‘±ŠÉ˜a–â‘èi®”§–ñ‚ðŽæ‚蜂¢‚½–â‘èj‚ðo—Í‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍC‚Ü‚¸uread test1.lpv‚Æ‚µ‚Ä®”Å“K‰»–â‘è‚ð“Ç‚Ý‚±‚Ü‚¹‚Ü‚·D
ŽŸ‚ÉC“Ç‚Ý‚±‚Ü‚¹‚½®”Å“K‰»–â‘è‚ÌŽí—ނɉž‚¶‚ÄCuchange problem lpvuchange problem qpvuchange problem qcpv‚Ì‚¢‚¸‚ê‚©‚̃Rƒ}ƒ“ƒh‚ð—p‚¢‚Ü‚·D
uchange problem lpv‚Å‚Í–Ú“IŠÖ”‚Ì 2 ŽŸ€C‚¨‚æ‚Ñ 2 ŽŸ‚̧–ñŽ®‚Æ®”§–ñ‚ª–â‘è‚©‚çŽæ‚蜂©‚ê‚Ü‚·D
uchange problem qpv‚Å‚Í 2 ŽŸ‚̧–ñŽ®‚Æ®”§–ñ‚ª–â‘è‚©‚çŽæ‚蜂©‚ê‚Ü‚·i–Ú“IŠÖ”‚Ì 2 ŽŸ€‚Í•ÛŽ‚³‚ê‚Ü‚·jD
uchange problem qcpv‚Å‚Í®”§–ñ‚ª–â‘è‚©‚çŽæ‚蜂©‚ê‚Ü‚·i–Ú“IŠÖ”‚Ì 2 ŽŸ€‚Æ 2 ŽŸ‚̧–ñŽ®‚Í•ÛŽ‚³‚ê‚Ü‚·jD
change ƒRƒ}ƒ“ƒh‚ð—p‚¢‚½ŒãCuwrite test2.lpv‚Æ‚·‚ê‚ΘA‘±ŠÉ˜a–â‘è‚ð LP ƒtƒ@ƒCƒ‹‚Æ‚µ‚Äo—Í‚Å‚«‚Ü‚·D
‚È‚¨Cindicator ‚È‚Ç‚Ì“ÁŽê‚ȧ–ñ‚ÍŽæ‚蜂©‚ê‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCum = read("test1.lp")v‚Æ‚µ‚Ä‚©‚çumr = m.relax()v‚Æ‚·‚é‚Æ mr ‚ª˜A‘±ŠÉ˜a–â‘è‚ɑΉž‚·‚郂ƒfƒ‹‚É‚È‚Á‚Ä‚¢‚Ü‚·i‚±‚±‚Å m ‚ÍŒ»Ýˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹–¼Cmr ‚͘A‘±ŠÉ˜a–â‘è‚ɑΉž‚·‚郂ƒfƒ‹–¼jD
umr.write("test2.lp")v‚Å test1.lp ‚̘A‘±ŠÉ˜a–â‘è‚ð LP ƒtƒ@ƒCƒ‹‚Æ‚µ‚Äo—Í‚Å‚«‚Ü‚·D
‚È‚¨Cindicator ‚È‚Ç‚Ì“ÁŽê‚ȧ–ñ‚ÍŽæ‚蜂©‚ê‚Ü‚·D
—^‚¦‚½üŒ`Å“K‰»–â‘è‚Ì‘o‘Ζâ‘è‚𓾂½‚¢
@“Ç‚Ýž‚ñ‚¾üŒ`Å“K‰»–â‘è‚ɂ‚¢‚ÄC‚»‚Ì‘o‘Ζâ‘è‚ðo—Í‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·D
- [CPLEX]@Interactive Optimizer ‚Å‚ÍCuread test1.lpv‚Æ‚µ‚Ä–â‘è‚ð“Ç‚Ý‚±‚Ü‚¹‚½ŒãCuwrite problem test1.duav‚Æ‚µ‚Ä‚‚¾‚³‚¢D
test1.dua ‚Æ‚¢‚¤Ctest1.lp ‚Ì‘o‘Ζâ‘è‚ð‹L˜^‚µ‚½ MPS ƒtƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚Ü‚·D
‚±‚ê‚ð LP ƒtƒ@ƒCƒ‹‚É•ÏŠ·‚µ‚½‚¯‚ê‚ÎCuread test1.duav‚Æ‚µ‚½ŒãCuwrite problem test2.lpv‚Æ‚·‚ê‚Î LP ƒtƒ@ƒCƒ‹‚Æ‚µ‚Äo—Í‚³‚ê‚Ü‚·D
- [Gurobi]@Interactive Shell ‚Å‚ÍCum = read("test1.lp")v‚Æ‚µ‚Ä‚©‚çum.write("test1.dua")v‚Æ‚·‚é‚Æ test1.dua ‚Æ‚¢‚¤ test1.lp ‚Ì‘o‘Ζâ‘è‚ð‹L˜^‚µ‚½ MPS ƒtƒ@ƒCƒ‹‚ªCum.write("test1.dlp")v‚Æ‚·‚é‚Æ test1.lp ‚Ì‘o‘Ζâ‘è‚ð‹L˜^‚µ‚½ LP ƒtƒ@ƒCƒ‹‚ªo—Í‚³‚ê‚Ü‚·i‚±‚±‚Å m ‚ÍŒ»Ýˆµ‚Á‚Ä‚¢‚郂ƒfƒ‹–¼jD
[CPLEX]@Žb’è‰ð‚ª“¾‚ç‚ꂽ‚Æ‚«‚ÌŒo‰ßŽžŠÔ‚ðŽ©“®“I‚É‹L˜^‚µ‚½‚¢
@CPLEX 12.5 ‚©‚çŠÈ’P‚É‚È‚Á‚Ä‚¢‚Ü‚·D
Interactive Optimizer ‚Å‚ÍCuset mip display 3vi‚ ‚é‚¢‚Íuset mip display 4vj‚Æ‚µ‚Ä•ªŽ}ŒÀ’è–@‚ðŽÀs‚µ‚Ä‚‚¾‚³‚¢D
[CPLEX]@Benders •ª‰ð‚ðs‚¢‚½‚¢
@¬‡®”Å“K‰»–â‘è‚ð‰ð‚Û‚ÉCBenders •ª‰ð–@‚ð—p‚¢‚邱‚Æ‚ª‚Å‚«‚Ü‚·D
ˆê•”‚Ì–â‘è‚Å‚ÍŒø‰Ê‚ªŠú‘Ò‚Å‚«‚Ü‚·D
Interactive Optimizer ‚Å‚ÍCuset benders strategy 3v‚Æ‚µ‚Ä–â‘è‚ð‰ð‚‚ÆC‘S‚Ä‚Ì®”•Ï”‚̓}ƒXƒ^[–â‘è‚ÖC‘S‚Ă̘A‘±•Ï”‚̓Tƒu–â‘è‚Ö‚Æ•ªŠ„‚³‚ê‚Ä Benders •ª‰ð–@‚ªŽÀs‚³‚ê‚Ü‚·D
‚Ü‚½Cƒ†[ƒU[Ž©g‚Å–â‘è‚Ì•ªŠ„‚ðŽw’è‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·D
Ú‚µ‚‚̓}ƒjƒ…ƒAƒ‹‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
–ÚŽŸ‚Ö–ß‚é
’莮‰»‚ɂ‚¢‚Ä
@’莮‰»‚ÉŠÖ‚µ‚ÄC‚æ‚‚ ‚鎿–â‚ð‹LÚ‚µ‚Ü‚·D
ŽÀÛ‚ÌŒ»ê‚Å‚ÍŽg‚¦‚È‚¢‚悤‚È“š‚¦‚ªo‚Ä‚‚é
@o‚Ä‚«‚½‰ð‚ª‹Lq‚µ‚½§–ñðŒ‚ð‘S‚Ä–ž‚½‚µ‚Ä‚¢‚é‚È‚ç‚ÎCƒ\ƒ‹ƒo[‚⮔œK‰»Ž©‘Ì‚Ì–â‘è‚Æ‚¢‚¤‚æ‚è‚ÍCŒ»ŽÀ‚̧–ñðŒ‚ª‘S‚ħ–ñŽ®‚Æ‚µ‚Ä•\Œ»‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚É‚æ‚é‚à‚Ì‚Å‚·D
lŠÔ‚ªˆÃ–Ù‚Ì‚¤‚¿‚ɉ¼’肵‚Ä‚¢‚邪C–¾Ž¦“I‚É‘‚¢‚Ä‚¢‚È‚¢§–ñŽ®‚Í‚È‚¢‚©‚Ç‚¤‚©ƒ`ƒFƒbƒN‚µ‚Ä‚‚¾‚³‚¢D
üŒ`Ž®‚Å‘‚¯‚È‚¢‚ÆŽv‚í‚ê‚駖ñðŒ‚Ü‚½‚Í–Ú“IŠÖ”‚ª‚ ‚é
@â‘Î’l‚â max ‰‰ŽZŽq‚È‚ÇCˆêŒ©‚µ‚ÄüŒ`Ž®‚Å•\‚¹‚È‚³‚»‚¤‚ÈꇂłàC•â••Ï”‚Ȃǂ𓱓ü‚µ‚Ē莮‰»‚Å‚«‚邱‚Æ‚ª‚ ‚è‚Ü‚·D
ŽQl•¶Œ£ 1 ‚ÉC“ú–{Œê‚Å‚æ‚‚Ü‚Æ‚Ü‚Á‚½î•ñ‚ª‚ ‚è‚Ü‚·D
- [Gurobi]@Gurobi 7.0 ‚©‚çCLP ƒtƒ@ƒCƒ‹‚â API ‚Å MAX, MIN, ABS, AND, OR ‚̉‰ŽZŽq‚ªŽg‚¦‚Ü‚·D
‚»‚ꂼ‚ê‚̃L[ƒ[ƒh‚Ń}ƒjƒ…ƒAƒ‹‚ðŒŸõ‚µ‚Ä‚‚¾‚³‚¢D
0-1 •Ï” x, y ‚ɑ΂µ‚ÄCuz = x * yv‚ɑΉž‚·‚é 0-1 •Ï” z ‚ðŽg‚¢‚½‚¢
@z >= x + y - 1, z <= x, z <= y ‚Ì 3 –{‚Ì•s“™Ž®‚¨‚æ‚Ñ x, y, z ‚ÉŠÖ‚·‚é 0-1 §–ñ‚É‚æ‚è•\Œ»‚Å‚«‚Ü‚·i‘¼‚Ì‘‚«•û‚à‚ ‚è‚Ü‚·DŽQl•¶Œ£ 14 ‚È‚Ç‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢jD
‚±‚ÌŽí‚̒莮‰»‚̃eƒNƒjƒbƒN‚ÍCŽQl•¶Œ£ 1 ‚É‚Ü‚Æ‚ß‚ç‚ê‚Ä‚¢‚Ü‚·D
@ˆê•û‚ÅC0-1 •Ï”‚ÌꇂɂÍCx * y ‚Æ‚¢‚¤•\Œ»‚ð’¼ÚŽó‚¯‚‚¯‚邱‚Æ‚Ì‚Å‚«‚éƒ\ƒ‹ƒo[‚à‚ ‚é‚悤‚Å‚·D
‚µ‚©‚µCŠÉ˜a–â‘肪ŠÉ‚‚È‚é‚悤‚È•ÏŒ`‚ð—p‚¢‚Ä x * y ‚ðˆµ‚¦‚é‚悤‚É‚µ‚Ä‚¢‚邱‚Æ‚ª‘½‚¢‚½‚ßCƒ\ƒ‹ƒo[‚ªŽó‚¯‚‚¯‚Ä‚¢‚é‚Æ‚µ‚Ä‚àCã‹L‚Ì•s“™Ž® 3 –{‚É‚æ‚é•\Œ»‚ðŽŽ‚µ‚Ă݂鉿’l‚Í‚ ‚è‚Ü‚·D
§–ñŽ®‚𑼂̕ϔ‚ɉž‚¶‚ăIƒ“EƒIƒt‚µ‚½‚¢Du‚à‚µ~~‚È‚ç‚΢¢v‚Æ‚¢‚¤‚悤‚ȧ–ñŽ®‚ª‘‚«‚½‚¢
@Big-M –@‚ƌĂ΂ê‚é•û–@‚ðŽg‚¢‚Ü‚·D
—Ⴆ‚ÎC0-1 •Ï” z ‚Æ”ñ•‰‚̘A‘±•Ï” x ‚ɑ΂µ‚ÄCz = 0 ‚ÌŽž‚Éux = 0v‚Æ‚¢‚¤§–ñŽ®‚ð“ü‚êCz = 1 ‚ÌŽž‚É‚»‚̧–ñŽ®‚𖳌ø‚É‚µ‚½‚¢‚Æ‚µ‚Ü‚·D
”ñ•‰‚̘A‘±•Ï” x ‚ÌãŠE‚ª³‚Ìi‘å‚«‚Èj’è” M ‚¾‚Ɖ½‚ç‚©‚Ì——R‚Å‚í‚©‚Á‚Ä‚¢‚éê‡Cx <= M * z ‚Æ‚·‚邱‚Æ‚ÅCã‹L‚ð’B¬‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·D
‚È‚¨C’莮‰»‚ÌÛ‚ÉCM ‚Ì’l‚Í‹–‚³‚ê‚é”͈͂łȂé‚ׂ¬‚³‚‚µ‚½•û‚ªŒvŽZ‚ª‚‘¬‚É‚È‚è‚Ü‚·D
Ú‚µ‚‚Í ŽQl•¶Œ£ 1 ‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
‚½‚¾‚µCbig-M –@‚ð 1 ‚‚̖â‘è‚Ì’†‚Å‘½—p‚·‚邱‚Æ‚ÍŒvŽZ‘¬“x‚ð—Ž‚Æ‚·Œ´ˆö‚É‚È‚é‚Ì‚ÅCbig-M –@‚ðŽg‚í‚È‚¢‚Œ莮‰»‚Å‚«‚éꇂ͂»‚¿‚ç‚ð‚¨‚·‚·‚ß‚µ‚Ü‚·D
@‚Ü‚½CSpecial Ordered Set type 1 (SOS type 1) §–ñ‚ªŽg‚¦‚éƒ\ƒ‹ƒo[‚Ìê‡Cx <= M * z ‚Æ‘‚‚©‚í‚è‚ÉCSOS type 1 §–ñ‚Å x ‚Æ z' ‚ðƒƒ“ƒo[‚É“ü‚ê‚邱‚Æ‚ÅC“¯—l‚̧–ñ‚Æ‚È‚è‚Ü‚·F‚±‚±‚Å z' ‚Í z + z' = 1 ‚Æ‚È‚é 0-1 •Ï”‚Å‚·D
@‚³‚ç‚ÉC“ñŽŸ§–ñ‚ªŽg‚¦‚éƒ\ƒ‹ƒo[‚Å‚Í”ñ•‰‚̘A‘±•Ï” y ‚ɑ΂µ x^2 <= y * z ‚Æ‚¢‚¤“ñŽŸ§–ñŽ®‚Å x <= M * z ‚Æ“¯—l‚̧–ñ‚ð•\‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·D
‚±‚ê‚Í perspective Ē莮‰» (perspective reformulation) ‚ƌĂ΂ê‚éƒeƒNƒjƒbƒN‚̈êŽí‚Å‚·D
Perspective Ē莮‰»‚ÌÚׂÍC—Ⴆ‚Î ŽQl•¶Œ£ 20 ‚ð‚¨“Ç‚Ý‚‚¾‚³‚¢D
- [CPLEX][Gurobi][SCIP]@Indicator ‚ƌĂ΂ê‚é LP ƒtƒ@ƒCƒ‹‚Ì‘Ž®‚ðŽg‚¤‚ÆC§–ñŽ®‚ÌØ‚è‘Ö‚¦‚ª‚Å‚«‚Ü‚·D
x ‚ð 0-1 •Ï”‚Æ‚·‚é‚Æ‚«CLP ƒtƒ@ƒCƒ‹‚Éux = 0 -> üŒ`§–ñŽ®v‚Æ‘‚‚Æ
x ‚ª 0 ‚Ì‚Æ‚«‚̂݉E‘¤‚ÌüŒ`§–ñŽ®‚ª—LŒø‚É‚È‚è‚Ü‚·D
ux = 1 -> üŒ`§–ñŽ®v‚Æ‚·‚é‚Æ x ‚ª 1 ‚Ì‚Æ‚«‚Ì‚Ý—LŒø‚Å‚·D
ux = 0 -> 9 z + 5 y <= 6v
ux = 1 -> 7 z + w = 0v
‚̂悤‚É—¼—§‚³‚¹‚邱‚Æ‚à‰Â”\‚Å‚·D
‚½‚¾‚µC-> ‚̶‘¤‚É‘‚•Ï”‚Í 0-1 •Ï”‚Å‚È‚‚Ă͂Ȃ炸C-> ‚̉E‘¤‚ÍüŒ`§–ñŽ®‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Æ‚¢‚¤§ŒÀ‚ª‚ ‚è‚Ü‚·D
Ú‚µ‚‚Í indicator variable ‚Ń}ƒjƒ…ƒAƒ‹‚ðŒŸõ‚µ‚Ä‚‚¾‚³‚¢D
@‚È‚¨CuA ‚Ü‚½‚Í Bv‚Æ‚¢‚¤‚悤‚ȧ–ñŽ®‚ð‘‚«‚½‚¢ê‡‚É‚ÍCdisjunctive constrainti—£Ú§–ñj‚ð—p‚¢‚Ē莮‰»‚·‚é•û–@‚à‚ ‚è‚Ü‚·D
—£Ú§–ñ‚ðˆµ‚¤‚悤‚È–â‘è‚Í disjunctive programming ‚ƌĂ΂ê‚Ä‚¢‚Ü‚·D
Ú‚µ‚‚Í ŽQl•¶Œ£ 16CŽQl•¶Œ£ 21 ‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
•Ï”‚̌”‚ª‚È‚¢–â‘è‚È‚Ì‚É‰ð‚¯‚È‚¢D•Ï”‚̌”‚ª‚È‚¢’莮‰»‚É•Ï‚¦‚½‚ç’x‚‚È‚Á‚½
@•Ï”‚ª‚È‚¢i‚ ‚é‚¢‚ͧ–ñŽ®‚ª‚È‚¢j–â‘è‚ ‚é‚¢‚͒莮‰»‚ªC•K‚¸‚µ‚àŒvŽZŽžŠÔ‚ª’Z‚¢‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñD
‚ǂ̂悤‚Ȓ莮‰»‚ª—Ç‚¢’莮‰»ià‚‘¬‚É‰ð‚¯‚é’莮‰»j‚É‚È‚é‚©‚̓P[ƒXƒoƒCƒP[ƒX‚Å‚·‚ªCˆê”Ê“I‚É‚ÍuüŒ`ŠÉ˜a–â‘è‚ÌÅ“K’l‚Æ®”Å“K‰»–â‘è‚ÌÅ“K’l‚̘¨—£‚ª¬‚³‚¢v’莮‰»‚ª—Ç‚¢’莮‰»‚ɂȂ邱‚Æ‚ª‘½‚¢‚Å‚·D
‚½‚¾‚µƒxƒXƒg‚ðs‚‚µ‚Ä‚àC‚ ‚Ü‚è‚É‚à•Ï”‚ª‘½‚¢–â‘è‚⮔œK‰»‚ÉŒü‚¢‚Ä‚¢‚È‚¢–â‘è‚͉ð‚‚Ì‚ª“‚¢‚Ì‚àŽ–ŽÀ‚Å‚·D
—áF¬‚³‚¢‚̂ɓ‚¢–â‘è‚Ì LP ƒtƒ@ƒCƒ‹
iMIPLIB 2017 ‚Ì pb-market-split8-70-4jD
0-1 •Ï” 71 ŒÂC§–ñŽ® 17 –{‚̬‚³‚È–â‘è‚Å‚·‚ªi–{Ž¿“I‚É‚Í 0-1 •Ï” 70 ŒÂC“™Ž®ƒiƒbƒvƒTƒbƒN§–ñ 8 –{‚Ì‹–—e«”»’è–â‘èjC2023 ”N 11 ŒŽ‚Ü‚Å‹–—e‰ð‚ªˆê‚Â‚àŒ©‚‚©‚Á‚Ä‚¨‚炸C‚Ü‚½•s”\‚Å‚ ‚邱‚Æ‚àØ–¾‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ‚Å‚µ‚½D
Œ»Ý‚Í‹–—e‰ði‚©‚ÂÅ“K‰ðj‚ª”Œ©‚³‚ê‚Ä‚¢‚Ü‚·i ŽQl•¶Œ£ 23 jD
üŒ`‚â“ñŽŸ‚Å‚È‚¢–Ú“IŠÖ”‚ðˆµ‚¢‚½‚¢
@‘½€Ž®ŠÖ”‚ð’¼Úˆµ‚¦‚È‚¢ƒ\ƒ‹ƒo[‚Å‚àC“Ê“ñŽŸ§–ñ‚ðˆµ‚¦‚éꇂ͈ȉº‚̂悤‚ȃgƒŠƒbƒN‚ÅŽŸ”‚ðã‚°‚邱‚Æ‚ª‚Å‚«‚Ü‚·D
§–ñŽ®‚Å x^2 <= y ‚©‚ y^2 <= z ‚Æ‚µCz ‚ðŬ‰»‚·‚ê‚Î x ‚Ì 4 æ‚ðŬ‰»‚µ‚Ä‚¢‚邱‚Æ‚Æ“™‰¿‚Å‚·iLP ƒtƒ@ƒCƒ‹‚ÌŒ`Ž®‚Å‚Í - y + [ x^2 ] <= 0 ‚©‚ - z + [ y^2 ] <= 0jD
‚Ü‚½C“ñŽŸ§–ñ‚ðˆµ‚¦‚éƒ\ƒ‹ƒo[‚Å‚ÍC”ñ•‰•Ï” x, s, t ‚ɑ΂µ x^2 <= s * t ‚©‚ s^2 <= x ‚Æ‚µCt ‚ðŬ‰»‚·‚ê‚Î x ‚Ì 1.5 æ‚ðŬ‰»‚µ‚Ä‚¢‚邱‚Æ‚Æ“™‰¿‚Å‚·iLP ƒtƒ@ƒCƒ‹‚ÌŒ`Ž®‚Å‚Í [ x^2 - s * t ] <= 0 ‚©‚ - x + [ s^2 ] <= 0jD
‚±‚ÌŽí‚̃eƒNƒjƒbƒN‚ÍCŽQl•¶Œ£ 22 ‚É‚Ü‚Æ‚ß‚ç‚ê‚Ä‚¢‚Ü‚·D
–ÚŽŸ‚Ö–ß‚é
‚»‚Ì‘¼‚Ìî•ñ
@‚»‚Ì‘¼C–ð‚É—§‚ƒŠƒ“ƒNæ‚È‚Ç‚Ìî•ñ‚ð‚Ü‚Æ‚ß‚Ä‚¨‚«‚Ü‚·D
®”Å“K‰»–â‘è‚̃xƒ“ƒ`ƒ}[ƒN–â‘èW‚ª’m‚肽‚¢
@‚¢‚‚‚©‚ ‚è‚Ü‚·‚ªC—L–¼‚È‚Ì‚Í MIPLIB (Mixed Integer Programming LIBrary) ‚Å‚·D
Œ»Žž“_‚Å‚Í MIPLIB 2017 ( ŽQl•¶Œ£ 19, https://miplib.zib.de/ ) ‚ªÅVƒo[ƒWƒ‡ƒ“‚Å‚·D
‚µ‘O‚Ü‚Å‚Í MIPLIB 2010 ( ŽQl•¶Œ£ 4, https://miplib2010.zib.de/ ) ‚ª‚æ‚—p‚¢‚ç‚ê‚Ä‚¢‚Ü‚µ‚½D
¤—pƒ\ƒ‹ƒo[‚Æ”ñ¤—pƒ\ƒ‹ƒo[‚ÍŒvŽZŽžŠÔ‚ª‚Ç‚Ì’ö“xˆÙ‚È‚é‚Ì‚©
@Œ»Žž“_‚Å‚ÍCÅ‚‘¬‚̤—pƒ\ƒ‹ƒo[‚ÆÅ‚‘¬‚Ì”ñ¤—pƒ\ƒ‹ƒo[‚Æ‚ð”äŠr‚·‚é‚ÆC‘OŽÒ‚Ì•û‚ª‚©‚È‚è‚‘¬‚Å‚·D
Hans Mittelmann ‚̃xƒ“ƒ`ƒ}[ƒNƒTƒCƒgi https://plato.asu.edu/bench.html j‚É‚æ‚é‚ÆC2 ŽžŠÔˆÈ“à‚Å‰ð‚¯‚éŠÈ’P‚È–â‘è‚ÅC10 ”{‹ß‚¢‘¬“x·‚ª‚ ‚é‚悤‚Å‚·D
‚³‚ç‚ÉC“‚¢–â‘è‚قǃ\ƒ‹ƒo[‚Ì«”\·‚ªŒ°’˜‚ÉŒ»‚ê‚Ü‚·i”•ª‚Æ”ŽžŠÔC‚ ‚é‚¢‚Í”ŽžŠÔ‚Æ”“ú‚Æ‚¢‚¤‚悤‚ȃP[ƒX‚à‹H‚Å‚Í‚ ‚è‚Ü‚¹‚ñjD
‚ǂ̤—pƒ\ƒ‹ƒo[‚ª‘¬‚¢‚Ì‚©
@–â‘è‚É‚æ‚Á‚ă\ƒ‹ƒo[ A ‚Ì•û‚ª‘¬‚©‚Á‚½‚èCƒ\ƒ‹ƒo[ B ‚Ì•û‚ª‘¬‚©‚Á‚½‚è‚Æ‚¢‚¤‚±‚Æ‚ª‚ ‚è‚Ü‚·D
‚È‚Ì‚ÅC‚ǂ̃\ƒ‹ƒo[‚ª‘¬‚¢‚Ì‚©‚Æ‚¢‚¤‚Ì‚Í“Œv“I‚ÉŒ©‚邵‚©‚È‚¢‚±‚Æ‚É‚²’ˆÓ‚‚¾‚³‚¢D
ƒ\ƒ‹ƒo[•Ê‚̃xƒ“ƒ`ƒ}[ƒNŒ‹‰Ê‚ɂ‚¢‚Ä‚ÍCHans Mittelmann ‚̃xƒ“ƒ`ƒ}[ƒNƒTƒCƒgi https://plato.asu.edu/bench.html j‚ª—L–¼‚Å‚·D
‚È‚¨CŒ»Ý‚͈ꕔ‚̤—pƒ\ƒ‹ƒo[‚ɂ‚¢‚ÄCƒxƒ“ƒ`ƒ}[ƒNŒ‹‰Ê‚ÌŒfÚ‚ð’âŽ~‚µ‚Ä‚¢‚é‚悤‚Å‚·iŒÃ‚¢Œ‹‰Ê‚ÍŽc‚Á‚Ä‚¢‚Ü‚·jD
¤—pƒ\ƒ‹ƒo[‚ðŽŽ‚µ‚Ä‚Ý‚½‚¢
@‚¢‚‚‚©‚̤—pƒ\ƒ‹ƒo[‚̃xƒ“ƒ_[‚Å‚ÍCŠeŽíƒgƒ‰ƒCƒAƒ‹ƒ‰ƒCƒZƒ“ƒX‚ð€”õ‚µ‚Ä‚¢‚Ü‚·D
‚³‚ç‚ɃAƒJƒfƒ~ƒbƒNƒ†[ƒU[‚ÌꇂÍC–³ž‚Ü‚½‚ÍŠiˆÀƒ‰ƒCƒZƒ“ƒX‚ª’ñ‹Ÿ‚³‚ê‚Ä‚¢‚邱‚Æ‚à‚ ‚è‚Ü‚·D
‚È‚¨C¤—pƒ\ƒ‹ƒo[‚̓o[ƒWƒ‡ƒ“ƒAƒbƒvŽž‚É‘å•‚É«”\‚ªŒüサ‚Ä‚¢‚邱‚Æ‚ª‘½‚¢‚½‚ßC‚È‚é‚ׂÅVƒo[ƒWƒ‡ƒ“‚ÌŽg—p‚ð‚¨‚·‚·‚ß‚µ‚Ü‚·D
@‚Ü‚½CNEOS ƒT[ƒo[i https://www.neos-server.org/neos/ j‚ð—p‚¢‚é‚ÆCƒAƒJƒfƒ~ƒbƒNƒ†[ƒU[‚Ìꇂ͗˜—p‹K–ñ‚͈͓̔à‚Å CPLEX ‚â Gurobi ‚Ȃǂ̤—pƒ\ƒ‹ƒo[‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·D
‚½‚¾‚µC–â‘è‚Ì‹K–Í‚âŒvŽZŽžŠÔ‚ɧŒÀ‚ª‚ ‚è‚Ü‚·D
Ú‚µ‚‚ÍCNEOS ƒT[ƒo[‚̃†[ƒU[ƒYƒKƒCƒhi https://neos-guide.org/users-guide j‚â FAQi https://neos-guide.org/content/FAQ jC‚¨‚æ‚Ñ NEOS ƒT[ƒo[‚Ì—˜—p‹K–ñi https://neos-server.org/neos/termofuse.html j‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢D
–ÚŽŸ‚Ö–ß‚é
‚±‚̃y[ƒW‚̃gƒbƒv‚Ö–ß‚é@@ƒgƒbƒvƒy[ƒW‚Ö–ß‚é
‹{‘ã —²•½i“Œ‹ž”_H‘åŠw HŠw•” ’m”\î•ñƒVƒXƒeƒ€HŠw‰ÈjCŒöŠJF2013”N4ŒŽCÅIXVF2024”N9ŒŽ