ͼƬ

®”Œ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

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, 2023.
    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.0.0). Zuse Institute Berlin, 2024.
    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

‚æ‚­‚ ‚鎿–â

‘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•¶Œ£ 3jC[Gurobi] ‚Í Gurobi Optimizer 10.0iŽQl•¶Œ£ 2jC[SCIP] ‚Í SCIP 9.0.0iŽQl•¶Œ£ 13j‚É‚¨‚¯‚éî•ñ‚Å‚·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 ‚Í 2022 ”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•¶Œ£ 13j‚̃_ƒ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
  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 –{‚̬‚³‚È–â‘è‚Å‚·‚ªC2024 ”N 1 ŒŽŒ»Ý‚ÅÅ“K‰ð‚ª‹‚ß‚ç‚ê‚Ä‚¢‚Ü‚¹‚ñi–{Ž¿“I‚É‚Í“™Ž®ƒiƒbƒvƒTƒbƒN§–ñ‚ª 8 –{‚Ì‹–—e«”»’è–â‘è‚È‚Ì‚ÅC‹–—e‰ð‚ªŒ©‚‚©‚ê‚΂»‚ꂪœK‰ð‚É‚È‚è‚Ü‚·‚ªC‹–—e‰ð‚ª‚Ü‚¾ˆê‚Â‚àŒ©‚‚©‚Á‚Ä‚¢‚Ü‚¹‚ñD‚Ü‚½•s”\‚Å‚ ‚邱‚Æ‚àØ–¾‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ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ÅIXVF2024”N3ŒŽ