ͼƬ

®”Œv‰æ–@ƒƒ‚

ƒgƒbƒvƒy[ƒW‚Ö–ß‚é

–{ƒy[ƒW‚ÌURL‚ª https://www.wxanhx.com/~miya/ipmemo.html ‚©‚ç https://web.wxanhx.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

2025”N5ŒŽ 2025”N2ŒŽ 2024”N9ŒŽ 2024”N8ŒŽ 2024”N5ŒŽ 2024”N3ŒŽ 2024”N1ŒŽ 2023”N8ŒŽ 2023”N1ŒŽ 2022”N8ŒŽ 2022”N5ŒŽ 2022”N2ŒŽ 2021”N11ŒŽ 2021”N9ŒŽ 2021”N8ŒŽ 2021”N3ŒŽ 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

  1. “¡]“N–çF ®”Œv‰æ–@‚É‚æ‚é’莮‰»“ü–åD ƒIƒyƒŒ[ƒVƒ‡ƒ“ƒYEƒŠƒT[ƒ`C57-4 (2012)Cpp. 190-197.
    PDF ƒtƒ@ƒCƒ‹ i“¡]æ¶‚Ì‚²ŒúˆÓ‚É‚æ‚èC•¶Œ£ƒtƒ@ƒCƒ‹‚ÌŒfÚ‹–‰Â‚𒸂¢‚Ä‚¢‚Ü‚·j
  2. Gurobi Optimization: Gurobi Optimizer Reference Manual Version 10.0. Gurobi Optimization, 2022.
  3. IBM ILOG: IBM ILOG CPLEX Optimization Studio 22.1.0 documentation. IBM ILOG, 2022.
  4. 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
  5. ‹v•ÛŠ²—YCJ. P. ƒyƒhƒƒ\C‘º¼³˜aCA. ƒŒƒCƒXF V‚µ‚¢”—Å“K‰» `Python Œ¾Œê‚Æ Gurobi ‚ʼnð‚­`D ‹ß‘ã‰ÈŠwŽÐC2012D ISBN 978-4-7649-0433-0
  6. H. Mittelmann: Benchmarks for Optimization Software.
    https://plato.asu.edu/bench.html
  7. ‹{‘ã—²•½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ƒ‹
  8. ‹{‘ã—²•½F ‚±‚±‚Ü‚Å‰ð‚¯‚é®”Œv‰æ\‹ß”N‚Ì”­“W\D ‘æ20‰ñRAMPƒVƒ“ƒ|ƒWƒEƒ€˜_•¶W (2008)C“ú–{ƒIƒyƒŒ[ƒVƒ‡ƒ“ƒYEƒŠƒT[ƒ`Šw‰ïCpp. 1-21.
  9. ‹{‘ã—²•½F ®”Œv‰æƒ\ƒ‹ƒo[“ü–åD ƒIƒyƒŒ[ƒVƒ‡ƒ“ƒYEƒŠƒT[ƒ`C57-4 (2012)Cpp. 183-189.
    PDF ƒtƒ@ƒCƒ‹
  10. NEOS Server: NEOS Server for Optimization. University of Wisconsin-Madison, 2025.
    https://www.neos-server.org/neos/
  11. 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
  12. 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
  13. Zuse Institute Berlin: SCIP (Version 9.2.2). Zuse Institute Berlin, 2025.
    https://www.scipopt.org/@ https://www.scipopt.org/doc/html/
  14. 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
  15. “¡]“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
  16. 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
  17. ‚–ì—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
  18. ‹{‘ã—²•½F ®”Å“K‰»ƒAƒvƒ[ƒ`‚Ö‚Ì“ü–åD ƒ`ƒ…[ƒgƒŠƒAƒ‹u‰‰C“dŽqî•ñ’ÊMŠw‰ï 2019”N‘‡‘å‰ïC2019D
    PDF ƒtƒ@ƒCƒ‹
  19. 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
  20. 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
  21. E. Balas: Disjunctive Programming. Springer, 2018. ISBN 978-3-030-00147-6
    doi:10.1007/978-3-030-00148-3
  22. MOSEK: MOSEK Modeling Cookbook 3.3.0.
    https://docs.mosek.com/modeling-cookbook/index.html
  23. “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.2.2i Ž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

–ÚŽŸ

  1. ƒ\ƒ‹ƒo[‚Ì“üŽèC–â‘è‚Ì‹LqCŠî–{“I‚ȃ\ƒ‹ƒo[‚Ì‘€ì
    1. ƒ\ƒ‹ƒo[‚ð“üŽè‚µ‚½‚¢
    2. –â‘è‚ðƒ\ƒ‹ƒo[‚É“ü—Í‚·‚邽‚߂ɂÍ
    3. ƒ\ƒ‹ƒo[‚¨‚æ‚Ñ LP ƒtƒ@ƒCƒ‹‚Í€”õ‚ª‚Å‚«‚½D¡‚·‚®‰ð‚«‚½‚¢
    4. ŒvŽZ‚ð“r’†‚Å’âŽ~‚µ‚½‚¢
    5. –â‘è‚̓ǂݞ‚ÝŽž‚É’ˆÓ‚·‚邱‚Æ
    6. ƒ\ƒ‹ƒo[‚ւ̃Rƒ}ƒ“ƒh“ü—͂ɂ‚¢‚Ä
    7. ƒ\ƒ‹ƒo[‚̃wƒ‹ƒvƒRƒ}ƒ“ƒh‚ð•\ަ‚µ‚½‚¢
  2. –â‘è‚ð‰ð‚­Û‚ɃGƒ‰[‚ªo‚é
    1. §–ñŽ®‚ª’·‚·‚¬‚Ĉês‚É“ü‚ç‚È‚¢D ‚Ü‚½‚Í general, binary 錾‚ÌŒã‚Ɉês‚ÉŽû‚Ü‚ç‚È‚¢
    2. LP ƒtƒ@ƒCƒ‹‚̓ǂݞ‚݂ŃGƒ‰[‚ªo‚é
    3. §–ñŽ® 5 x + y = 7 ‚ð•\‚·‚Ì‚ÉCLP ƒtƒ@ƒCƒ‹‚Å a x + y = 7 ‚¨‚æ‚Ñ a = 5 (‚Ü‚½‚Í a * x + y = 7 ‚¨‚æ‚Ñ a = 5) ‚Æ‘‚¢‚½‚çƒGƒ‰[‚ɂȂÁ‚½
    4. •ªŽ}ŒÀ’è–@‚Ì“r’†‚Ńƒ‚ƒŠ‚ª‘«‚è‚È‚­‚È‚é
    5. ”’l”j’]‚ð‹N‚±‚µ‚ăGƒ‰[‚ɂȂé
    6. –Ú“IŠÖ”‚Ü‚½‚ͧ–ñŽ®‚É“ñŽŸ€‚ð‘‚¢‚½‚ªƒGƒ‰[‚ɂȂÁ‚½
    7. [CPLEX] ILOG CPLEX Optimization Studio ‚ªŽÀs‚Å‚«‚È‚¢
  3. ‰ð‚¢‚Ă݂½‚ªŒ‹‰Ê‚ª‚¨‚©‚µ‚¢
    1. ‰ð‚É’l‚ª•\ަ‚³‚ê‚È‚¢•Ï”‚ª‚ ‚é
    2. x < 7 ‚Æ‚¢‚¤§–ñŽ®‚ð“ü‚ꂽ‚Ì‚ÉCŒvŽZ‚·‚邯 x ‚ª 7 ‚̉ð‚ªo‚é
    3. LP ƒtƒ@ƒCƒ‹‚ðì‚Á‚½‚çCŸŽè‚É”ñ•‰•Ï”‚ɂȂÁ‚Ä‚¢‚éDƒ}ƒCƒiƒX‚Ì’l‚ðŽæ‚è‚¤‚é•Ï”iŽ©—R•Ï”j‚ðì‚肽‚¢
    4. ‰ð‚¯‚é‚É‚Í‰ð‚¯‚½‚ªCˆÓ}‚µ‚½–â‘è‚Æ‚µ‚ēǂݞ‚Ü‚ê‚Ä‚¢‚È‚¢‚悤‚¾
    5. Ž©•ª‚Å LP ƒtƒ@ƒCƒ‹‚𶬂µ‚½‚ªC‹–—e‰ð‚ª‚ ‚é‚Í‚¸‚Ì–â‘è‚Ȃ̂ɕs”\ (infeasible) ‚ɂȂé
    6. •ʂ̃\ƒ‹ƒo[‚Å‰ð‚­‚ÆÅ“K‰ð‚ªˆá‚¤
    7. ®”•Ï”‚Ȃ̂ÉC0.000001 ‚Ü‚½‚Í 0.999999 ‚̂悤‚ȉð‚ªo‚é
    8. •ªŽ}ŒÀ’è–@‚ði‚ß‚½‚çCÅ“K«ƒMƒƒƒbƒv‚ª‘‚¦‚½
    9. [CPLEX]@ILOG CPLEX Optimization Studio ‚Å LP ƒtƒ@ƒCƒ‹‚𶬂µ‚½‚ªC“YŽš‚ª‚¸‚ê‚é
  4. LP ƒtƒ@ƒCƒ‹‚ɂ‚¢‚Ä
    1. LP ƒtƒ@ƒCƒ‹‚ÌÚׂȕ¶–@‚ª’m‚肽‚¢
    2. –Ú“IŠÖ”‚ª–³‚¢–â‘è‚ðˆµ‚¢‚½‚¢
    3. LP ƒtƒ@ƒCƒ‹‚ŃVƒOƒ}‹L†‚â”z—ñ‚ɑГ–‚·‚é‚à‚Ì‚ð—p‚¢‚½‚¢
    4. ‹‘å‚È LP ƒtƒ@ƒCƒ‹‚ð‚Ç‚¤‚â‚Á‚ͬ‚·‚ê‚΂悢‚©
    5. LP ƒtƒ@ƒCƒ‹‚ðŽ©“®“I‚É®Œ`‚µ‚½‚¢
    6. MPS ƒtƒ@ƒCƒ‹‚Ƃ͉½‚©DMPS ƒtƒ@ƒCƒ‹‚Æ LP ƒtƒ@ƒCƒ‹‚ð•ÏŠ·‚µ‚½‚¢
    7. LP ƒtƒ@ƒCƒ‹‚ð MPS ƒtƒ@ƒCƒ‹‚ɕϊ·‚µ‚½‚çC–Ú“IŠÖ”’l‚ªƒ}ƒCƒiƒX 1 ”{‚ɂȂÁ‚½
    8. LP ƒtƒ@ƒCƒ‹‚Å“ñŽŸ‚Ì–Ú“IŠÖ”‚ð•\‚µ‚½‚¢
    9. LP ƒtƒ@ƒCƒ‹‚Å“ñŽŸ‚̧–ñŽ®‚ð•\‚µ‚½‚¢
    10. LP ƒtƒ@ƒCƒ‹‚Å–Ú“IŠÖ”‚ɒ蔀‚ðŠÜ‚ß‚½‚¢
    11. LP ƒtƒ@ƒCƒ‹‚É‘‚­•Ï”‚â§–ñŽ®‚̇”Ô‚ð•Ï‚¦‚½‚çŒvŽZŽžŠÔ‚ª•Ï‚í‚Á‚½
    12. Lazy Constraints ‚ðŽg‚¢‚½‚¢
  5. ƒ\ƒ‹ƒo[‚Ì’²®‚ÆŒvŽZ‘¬“x‚ɂ‚¢‚Ä
    1. Ŭ‰»–â‘è‚łȂ©‚È‚©‰ºŠE‚ªã‚ª‚ç‚È‚¢Dő剻–â‘è‚łȂ©‚È‚©ãŠE‚ª‰º‚ª‚ç‚È‚¢
    2. Å“K‰ð‚É‚±‚¾‚í‚ç‚È‚¢‚Ì‚ÅC‚È‚é‚ׂ­‚‘¬‚ÉŽ¿‚Ì—Ç‚¢‰ð‚ª‚Ù‚µ‚¢
    3. ŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚ÄC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚邿‚¤‚É‚µ‚½‚¢
    4. ’è‚ß‚½è‡’l‚Æ“¯‚¶‚©‚æ‚è—Ç‚¢–Ú“IŠÖ”’l‚Ì‹–—e‰ð‚ªo‚½‚çC•ªŽ}ŒÀ’è–@‚ðŽ©“®“I‚É’âŽ~‚·‚邿‚¤‚É‚µ‚½‚¢
    5. ‹–—e‰ð‚ð—^‚¦‚½ó‘Ô‚Å•ªŽ}ŒÀ’è–@‚ðƒXƒ^[ƒg‚µ‚½‚¢
    6. ƒ\ƒ‹ƒo[‚ðƒqƒ…[ƒŠƒXƒeƒBƒNƒX‚Æ‚µ‚ÄŽg‚¢‚½‚¢
    7. •ªŽ}‡˜‚ðŽè“®‚ÅŽw’肵‚½‚¢
    8. •À—ñ•ªŽ}ŒÀ’è–@‚ŃXƒŒƒbƒh”‚ðŽw’肵‚½‚¢
    9. •À—ñ•ªŽ}ŒÀ’è–@‚É‚¨‚¢‚ÄCƒXƒŒƒbƒh”‚ð‘‚₵‚½‚ç’x‚­‚È‚Á‚Ä‚µ‚Ü‚Á‚½
    10. ƒ\ƒ‹ƒ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‚­‚È‚Á‚Ä‚µ‚Ü‚Á‚½
    11. ŒvŽZ‚ðˆê“x’†’f‚µ‚Ä‚©‚çÄŠJ‚µ‚½‚çC’†’f‚µ‚È‚¢ê‡‚ÆŒvŽZ‰ß’ö‚ªˆÙ‚È‚Á‚½
    12. ŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚½‚çC§ŒÀ‚µ‚È‚¢ê‡‚ÆŒvŽZ‰ß’ö‚ªˆÙ‚È‚Á‚½
    13. üŒ`Å“K‰»–â‘è‚ð•¡”‰ñ‰ð‚¢‚Ă݂½‚çCÅ“K‰ð‚ªˆÙ‚È‚Á‚½
  6. ƒ\ƒ‹ƒo[‚ð‚à‚Á‚ƕ֗˜‚ÉŽg‚¢‚½‚¢
    1. ƒ\ƒ‹ƒo[‚ª‘Oˆ—‚ð‚µ‚½ LP ƒtƒ@ƒCƒ‹‚ðŒ©‚½‚¢
    2. ‚ǂ̂悤‚É•ªŽ}ŒÀ’è–@‚ªi‚ñ‚Å‚¢‚é‚©‚ðÚׂɊώ@‚µ‚½‚¢
    3. ®”•Ï”‚Ì’l‚ªˆÙ‚È‚éÅ“K‰ð‚̌”‚𔂦‚½‚¢
    4. ƒƒOƒtƒ@ƒCƒ‹‚Ìo—Íæ‚ð•ÏX‚µ‚½‚¢
    5. •¡”‚Ì–â‘è‚ðŽ©“®“I‚É‰ð‚©‚¹‚½‚¢
    6. •¡”‚Ì–â‘èŠÔ‚Åî•ñ‚ð‚â‚è‚Æ‚肵‚½‚¢D‘¼‚̃vƒƒOƒ‰ƒ€‚ƘAŒg‚µ‚½‚¢
    7. ŒvŽZ‚ð’†’f‚·‚邱‚ƂȂ­CŽb’è‰ð‚»‚Ì‚à‚Ì‚ðŽ©“®“I‚É‹L˜^‚µ‚½‚¢
    8. •ÏX‚µ‚½ƒpƒ‰ƒ[ƒ^Ý’è‚ð•\ަE•Û‘¶E•œŒ³‚µ‚½‚¢
    9. –â‘è‚Ì“Œvî•ñ‚ªŒ©‚½‚¢
    10. —^‚¦‚½®”Å“K‰»–â‘è‚̘A‘±ŠÉ˜a–â‘è‚𓾂½‚¢
    11. —^‚¦‚½üŒ`Å“K‰»–â‘è‚Ì‘o‘Ζâ‘è‚𓾂½‚¢
    12. [CPLEX] Žb’è‰ð‚ª“¾‚ç‚ꂽ‚Æ‚«‚ÌŒo‰ßŽžŠÔ‚ðŽ©“®“I‚É‹L˜^‚µ‚½‚¢
    13. [CPLEX] Benders •ª‰ð‚ðs‚¢‚½‚¢
  7. ’莮‰»‚ɂ‚¢‚Ä
    1. ŽÀÛ‚ÌŒ»ê‚ł͎g‚¦‚È‚¢‚悤‚È“š‚¦‚ªo‚Ä‚­‚é
    2. üŒ`Ž®‚Å‘‚¯‚È‚¢‚ÆŽv‚í‚ê‚é§–ñðŒ‚Ü‚½‚Í–Ú“IŠÖ”‚ª‚ ‚é
    3. 0-1 •Ï” x, y ‚ɑ΂µ‚ÄCuz = x * yv‚ɑΉž‚·‚é 0-1 •Ï” z ‚ðŽg‚¢‚½‚¢
    4. §–ñŽ®‚𑼂̕ϔ‚ɉž‚¶‚ăIƒ“EƒIƒt‚µ‚½‚¢Du‚à‚µ~~‚È‚ç‚΢¢v‚Æ‚¢‚¤‚悤‚ȧ–ñŽ®‚ª‘‚«‚½‚¢
    5. •Ï”‚̌”‚ª­‚È‚¢–â‘è‚È‚Ì‚É‰ð‚¯‚È‚¢D•Ï”‚̌”‚ª­‚È‚¢’莮‰»‚ɕς¦‚½‚ç’x‚­‚È‚Á‚½
    6. üŒ`‚â“ñŽŸ‚łȂ¢–Ú“IŠÖ”‚ðˆµ‚¢‚½‚¢
  8. ‚»‚Ì‘¼‚Ìî•ñ
    1. ®”Å“K‰»–â‘è‚̃xƒ“ƒ`ƒ}[ƒN–â‘èW‚ª’m‚肽‚¢
    2. ¤—pƒ\ƒ‹ƒo[‚Æ”ñ¤—pƒ\ƒ‹ƒo[‚ÍŒvŽZŽžŠÔ‚ª‚ǂ̒ö“xˆÙ‚È‚é‚Ì‚©
    3. ‚ǂ̤—pƒ\ƒ‹ƒo[‚ª‘¬‚¢‚Ì‚©
    4. ¤—pƒ\ƒ‹ƒo[‚ðŽŽ‚µ‚Ă݂½‚¢

  1. ƒ\ƒ‹ƒo[‚Ì“üŽèC–â‘è‚Ì‹LqCŠî–{“I‚ȃ\ƒ‹ƒo[‚Ì‘€ì

@‚±‚±‚Å‚ÍC”ñ¤—pƒ\ƒ‹ƒo[‚Ì“üŽè‚©‚çCƒ\ƒ‹ƒo[‚ÌŠÈ’P‚È‘€ì‚܂łðЉ‚Ü‚·D ŽQl•¶Œ£ 9 ‚É‚àCˆê’Ê‚è‚Ì—¬‚ꂪ‚܂Ƃ߂đ‚¢‚Ä‚ ‚è‚Ü‚·‚̂ŎQl‚É‚µ‚Ä‚­‚¾‚³‚¢D
  1. ƒ\ƒ‹ƒ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
  2. –â‘è‚ðƒ\ƒ‹ƒ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ƒ‹‚ÌÅŒã‚É‘‚­
    
  3. ƒ\ƒ‹ƒ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
  4. Œ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
  5. –â‘è‚̓ǂݞ‚ÝŽž‚É’ˆÓ‚·‚邱‚Æ

    @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
  6. ƒ\ƒ‹ƒ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
  7. ƒ\ƒ‹ƒ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
–ÚŽŸ‚Ö–ß‚é
  1. –â‘è‚ð‰ð‚­Û‚ɃGƒ‰[‚ªo‚é

@ƒ\ƒ‹ƒo[‚Å–â‘è‚ð‰ð‚­Û‚ɃGƒ‰[‚ªo‚éꇂ̑Έ•û–@‚Å‚·D
  1. §–ñŽ®‚ª’·‚·‚¬‚Ĉê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
  2. 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
  3. §–ñŽ® 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
  4. •ªŽ}ŒÀ’è–@‚Ì“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
  5. ”’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
  6. –Ú“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
  7. [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
–ÚŽŸ‚Ö–ß‚é
  1. ‰ð‚¢‚Ă݂½‚ªŒ‹‰Ê‚ª‚¨‚©‚µ‚¢

@–â‘è‚Í‰ð‚¯‚½‚ªC‚Ç‚¤‚àŒ‹‰Ê‚ª•Ï‚¾‚Æ‚¢‚¤‚Æ‚«‚ɂ͂±‚¿‚ç‚ðŽQl‚É‚µ‚Ä‚­‚¾‚³‚¢D
  1. ‰ð‚É’l‚ª•\ަ‚³‚ê‚È‚¢•Ï”‚ª‚ ‚é

    @‘å•”•ª‚̃\ƒ‹ƒo[‚ÅC’l‚ª 0 ‚̕ϔ‚Í•\ަ‚³‚ê‚Ü‚¹‚ñi‘å‹K–Í‚ÈÅ“K‰»–â‘è‚̉ð‚Å‚ÍC•Ï”‚Ì’l‚Ì‚¤‚¿‚Ù‚Æ‚ñ‚Ç‚ª 0 ‚Å‚ ‚邱‚Æ‚ª‘½‚¢‚½‚ßjD
  2. x < 7 ‚Æ‚¢‚¤§–ñŽ®‚ð“ü‚ꂽ‚Ì‚ÉCŒvŽZ‚·‚邯 x ‚ª 7 ‚̉ð‚ªo‚é

    @LP ƒtƒ@ƒCƒ‹‚Å‚ÍC“™†–³‚µ‚Ì•s“™†‚ÍC“™†•t‚«‚Ì•s“™†‚Æ“¯‚¶ˆÓ–¡‚ɂȂè‚Ü‚·D
  3. 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
  4. ‰ð‚¯‚é‚É‚Í‰ð‚¯‚½‚ª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
  5. Ž©•ª‚Å 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
  6. •ʂ̃\ƒ‹ƒo[‚Å‰ð‚­‚ÆÅ“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
  7. ®”•Ï”‚Ȃ̂É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
  8. •ªŽ}ŒÀ’è–@‚ð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
  9. [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
–ÚŽŸ‚Ö–ß‚é
  1. LP ƒtƒ@ƒCƒ‹‚ɂ‚¢‚Ä

@LP ƒtƒ@ƒCƒ‹‚ɂ‚¢‚Ä‚ÌC‚æ‚èׂ©‚¢î•ñ‚Å‚·D
  1. 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
  2. –Ú“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
  3. 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
  4. ‹‘å‚È 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. LP ƒtƒ@ƒCƒ‹‚É‘‚­•Ï”‚â§–ñŽ®‚̇”Ô‚ð•Ï‚¦‚½‚çŒvŽZŽžŠÔ‚ª•Ï‚í‚Á‚½

    @ƒ\ƒ‹ƒo[‚Í•ªŽ}ŒÀ’è–@‚Ì’†‚Å•ªŽ}‡˜‚ð—lX‚Èî•ñ‚©‚猈’肵‚Ä‚¢‚Ü‚·‚ªC ÅI“I‚É—Dæ“x‚ª“™‚µ‚¢ê‡‚ɂ͉½‚ç‚©‚̇˜‚ð‚‚¯‚é•K—v‚ª‚ ‚邽‚ßC•ªŽ}‡˜‚¨‚æ‚ÑŒvŽZŽžŠÔ‚ª•Ï”‚â§–ñŽ®‚ð‹Lq‚µ‚½‡”ԂɈˑ¶‚·‚邱‚Æ‚ª‚ ‚è‚Ü‚·D ‚±‚Ì‚ ‚½‚è‚Ìî•ñ‚Í ŽQl•¶Œ£ 4 ‚ÉÚ‚µ‚¢‚Å‚·D
  12. 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
–ÚŽŸ‚Ö–ß‚é
  1. ƒ\ƒ‹ƒo[‚Ì’²®‚ÆŒvŽZ‘¬“x‚ɂ‚¢‚Ä

@ŒvŽZ‘¬“x‚ÉŠÖŒW‚·‚é•”•ª‚Å‚ÌCƒ\ƒ‹ƒo[‚Ì’²®‚ɂ‚¢‚Ăł·D
  1. Ŭ‰»–â‘è‚łȂ©‚È‚©‰ºŠ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
  2. Å“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
  3. Œ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
  4. ’è‚ß‚½è‡’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
  5. ‹–—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
  6. ƒ\ƒ‹ƒ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
  7. •ªŽ}‡˜‚ðŽè“®‚ÅŽ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
  8. •À—ñ•ªŽ}ŒÀ’è–@‚Ń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
  9. •À—ñ•ªŽ}ŒÀ’è–@‚É‚¨‚¢‚Ä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
  10. ƒ\ƒ‹ƒ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
  11. ŒvŽZ‚ðˆê“x’†’f‚µ‚Ä‚©‚çÄŠJ‚µ‚½‚çC’†’f‚µ‚È‚¢ê‡‚ÆŒvŽZ‰ß’ö‚ªˆÙ‚È‚Á‚½

    @ƒ\ƒ‹ƒo[‚É‚æ‚Á‚Ä‚ÍC‚»‚¤‚¢‚¤‚±‚Æ‚ª‚ ‚è‚Ü‚·D
  12. ŒvŽZŽžŠÔ‚ð§ŒÀ‚µ‚½‚çC§ŒÀ‚µ‚È‚¢ê‡‚ÆŒvŽZ‰ß’ö‚ªˆÙ‚È‚Á‚½

    @ƒ\ƒ‹ƒo[‚É‚æ‚Á‚Ä‚ÍCŒvŽZŽžŠÔ‚ÌãŒÀ‚ðŽw’è‚·‚邯C‚»‚ÌãŒÀ‚ɋ߂¢‚Ä‚àÅ“K«ƒMƒƒƒbƒv‚ª‘å‚«‚¢‚Æ‚«iŒvŽZ‚ªÅŒã‚Ü‚ÅI—¹‚µ‚È‚»‚¤‚ȂƂ«j‚É‹–—e‰ð‚Ì”­Œ©‚ð—Dæ‚·‚郂[ƒh‚ÉØ‚è‘Ö‚í‚é‚à‚Ì‚ª‚ ‚邿‚¤‚Å‚·D
  13. üŒ`Å“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
–ÚŽŸ‚Ö–ß‚é
  1. ƒ\ƒ‹ƒo[‚ð‚à‚Á‚ƕ֗˜‚ÉŽg‚¢‚½‚¢

@ƒ\ƒ‹ƒo[‚֗̕˜‚È‹@”\‚ÌЉî‚ð‚µ‚Ü‚·D
  1. ƒ\ƒ‹ƒ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
  2. ‚ǂ̂悤‚É•ªŽ}ŒÀ’è–@‚ª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
  3. ®”•Ï”‚Ì’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
  4. ƒƒ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
  5. •¡”‚Ì–â‘è‚ðŽ©“®“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
      
  6. •¡”‚Ì–â‘èŠÔ‚Åî•ñ‚ð‚â‚è‚Æ‚肵‚½‚¢D‘¼‚̃vƒƒOƒ‰ƒ€‚ƘAŒg‚µ‚½‚¢

    @LP ƒtƒ@ƒCƒ‹‚ðƒRƒ}ƒ“ƒhƒ‰ƒCƒ“EƒCƒ“ƒ^[ƒtƒF[ƒX‚Å‰ð‚­•û–@‚Í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
  7. Œ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
  8. •Ï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
  9. –â‘è‚Ì“Œ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
  10. —^‚¦‚½®”Å“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
  11. —^‚¦‚½üŒ`Å“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
  12. [CPLEX]@Žb’è‰ð‚ª“¾‚ç‚ꂽ‚Æ‚«‚ÌŒo‰ßŽžŠÔ‚ðŽ©“®“I‚É‹L˜^‚µ‚½‚¢

    @CPLEX 12.5 ‚©‚çŠÈ’P‚ɂȂÁ‚Ä‚¢‚Ü‚·D Interactive Optimizer ‚Å‚ÍCuset mip display 3vi‚ ‚é‚¢‚Íuset mip display 4vj‚Æ‚µ‚Ä•ªŽ}ŒÀ’è–@‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢D
  13. [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
–ÚŽŸ‚Ö–ß‚é
  1. ’莮‰»‚ɂ‚¢‚Ä

@’莮‰»‚ÉŠÖ‚µ‚ÄC‚æ‚­‚ ‚鎿–â‚ð‹LÚ‚µ‚Ü‚·D
  1. ŽÀÛ‚ÌŒ»ê‚ł͎g‚¦‚È‚¢‚悤‚È“š‚¦‚ªo‚Ä‚­‚é

    @o‚Ä‚«‚½‰ð‚ª‹Lq‚µ‚½§–ñðŒ‚ð‘S‚Ä–ž‚½‚µ‚Ä‚¢‚é‚È‚ç‚ÎCƒ\ƒ‹ƒo[‚⮔œK‰»Ž©‘̖̂â‘è‚Æ‚¢‚¤‚æ‚è‚ÍCŒ»ŽÀ‚̧–ñðŒ‚ª‘S‚ħ–ñŽ®‚Æ‚µ‚Ä•\Œ»‚³‚ê‚Ä‚¢‚È‚¢‚±‚Ƃɂæ‚é‚à‚̂ł·D lŠÔ‚ªˆÃ–Ù‚Ì‚¤‚¿‚ɉ¼’肵‚Ä‚¢‚邪C–¾Ž¦“I‚É‘‚¢‚Ä‚¢‚È‚¢§–ñŽ®‚͂Ȃ¢‚©‚Ç‚¤‚©ƒ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢D
  2. üŒ`Ž®‚Å‘‚¯‚È‚¢‚ÆŽ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
  3. 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
  4. §–ñŽ®‚𑼂̕ϔ‚ɉž‚¶‚ă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
  5. •Ï”‚̌”‚ª­‚È‚¢–â‘è‚È‚Ì‚É‰ð‚¯‚È‚¢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
  6. üŒ`‚â“ñŽŸ‚łȂ¢–Ú“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
–ÚŽŸ‚Ö–ß‚é
  1. ‚»‚Ì‘¼‚Ìî•ñ

@‚»‚Ì‘¼C–ð‚É—§‚ÂƒŠƒ“ƒNæ‚ȂǂÌî•ñ‚ð‚܂Ƃ߂è‚«‚Ü‚·D
  1. ®”Å“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
  2. ¤—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
  3. ‚ǂ̤—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
  4. ¤—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ÅIXVF2025”N4ŒŽ