From 23d9be6b7360051bd158430c0c950e71f75e7409 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Tue, 7 Nov 2023 21:37:18 +0000 Subject: [PATCH] build based on 70b2c3e --- previews/PR3561/.documenter-siteinfo.json | 2 +- previews/PR3561/JuMP.pdf | Bin 4689590 -> 4692173 bytes .../PR3561/api/JuMP.Containers/index.html | 22 +- previews/PR3561/api/JuMP/index.html | 340 +- .../algebraic_modeling_languages/index.html | 2 +- previews/PR3561/changelog/index.html | 2 +- .../PR3561/developers/checklists/index.html | 2 +- .../PR3561/developers/contributing/index.html | 2 +- .../custom_solver_binaries/index.html | 2 +- .../PR3561/developers/extensions/index.html | 2 +- previews/PR3561/developers/roadmap/index.html | 2 +- previews/PR3561/developers/style/index.html | 2 +- .../extensions/DimensionalData/index.html | 2 +- .../PR3561/extensions/introduction/index.html | 2 +- previews/PR3561/index.html | 2 +- previews/PR3561/installation/index.html | 2 +- previews/PR3561/manual/callbacks/index.html | 2 +- previews/PR3561/manual/complex/index.html | 59 +- previews/PR3561/manual/constraints/index.html | 2 +- previews/PR3561/manual/containers/index.html | 2 +- previews/PR3561/manual/expressions/index.html | 2 +- previews/PR3561/manual/models/index.html | 2 +- previews/PR3561/manual/nlp/index.html | 2 +- previews/PR3561/manual/nonlinear/index.html | 2 +- previews/PR3561/manual/objective/index.html | 2 +- previews/PR3561/manual/solutions/index.html | 2 +- previews/PR3561/manual/variables/index.html | 2 +- .../PR3561/moi/background/duality/index.html | 2 +- .../infeasibility_certificates/index.html | 2 +- .../moi/background/motivation/index.html | 2 +- .../background/naming_conventions/index.html | 2 +- previews/PR3561/moi/changelog/index.html | 2 +- .../moi/developer/checklists/index.html | 2 +- previews/PR3561/moi/index.html | 2 +- .../PR3561/moi/manual/constraints/index.html | 2 +- previews/PR3561/moi/manual/models/index.html | 2 +- .../PR3561/moi/manual/modification/index.html | 2 +- .../PR3561/moi/manual/solutions/index.html | 2 +- .../moi/manual/standard_form/index.html | 2 +- .../PR3561/moi/manual/variables/index.html | 2 +- .../PR3561/moi/reference/callbacks/index.html | 2 +- .../moi/reference/constraints/index.html | 12 +- .../PR3561/moi/reference/errors/index.html | 2 +- .../PR3561/moi/reference/models/index.html | 26 +- .../moi/reference/modification/index.html | 2 +- .../PR3561/moi/reference/nonlinear/index.html | 2 +- .../moi/reference/standard_form/index.html | 2 +- .../PR3561/moi/reference/variables/index.html | 2 +- previews/PR3561/moi/release_notes/index.html | 2 +- .../submodules/Benchmarks/overview/index.html | 2 +- .../Benchmarks/reference/index.html | 2 +- .../Bridges/list_of_bridges/index.html | 2 +- .../submodules/Bridges/overview/index.html | 2 +- .../submodules/Bridges/reference/index.html | 2 +- .../FileFormats/overview/index.html | 2 +- .../FileFormats/reference/index.html | 2 +- .../submodules/Nonlinear/overview/index.html | 2 +- .../submodules/Nonlinear/reference/index.html | 2 +- .../moi/submodules/Test/overview/index.html | 2 +- .../moi/submodules/Test/reference/index.html | 2 +- .../submodules/Utilities/overview/index.html | 2 +- .../submodules/Utilities/reference/index.html | 4 +- .../tutorials/bridging_constraint/index.html | 2 +- .../PR3561/moi/tutorials/example/index.html | 2 +- .../moi/tutorials/implementing/index.html | 2 +- .../PR3561/moi/tutorials/latency/index.html | 2 +- .../manipulating_expressions/index.html | 2 +- .../moi/tutorials/mathprogbase/index.html | 2 +- previews/PR3561/packages/Alpine/index.html | 2 +- .../PR3561/packages/AmplNLWriter/index.html | 2 +- previews/PR3561/packages/BARON/index.html | 2 +- .../PR3561/packages/BilevelJuMP/index.html | 2 +- previews/PR3561/packages/CDCS/index.html | 2 +- previews/PR3561/packages/CDDLib/index.html | 2 +- previews/PR3561/packages/COPT/index.html | 2 +- previews/PR3561/packages/COSMO/index.html | 2 +- previews/PR3561/packages/CPLEX/index.html | 2 +- previews/PR3561/packages/CSDP/index.html | 2 +- previews/PR3561/packages/Cbc/index.html | 2 +- previews/PR3561/packages/Clarabel/index.html | 2 +- previews/PR3561/packages/Clp/index.html | 2 +- previews/PR3561/packages/DAQP/index.html | 2 +- previews/PR3561/packages/DiffOpt/index.html | 2 +- .../PR3561/packages/Dualization/index.html | 2 +- previews/PR3561/packages/EAGO/index.html | 134 +- previews/PR3561/packages/ECOS/index.html | 2 +- previews/PR3561/packages/GAMS/index.html | 2 +- previews/PR3561/packages/GLPK/index.html | 2 +- previews/PR3561/packages/Gurobi/index.html | 2 +- previews/PR3561/packages/HiGHS/index.html | 2 +- previews/PR3561/packages/Hypatia/index.html | 2 +- .../PR3561/packages/InfiniteOpt/index.html | 2 +- previews/PR3561/packages/Ipopt/index.html | 2 +- previews/PR3561/packages/Juniper/index.html | 2 +- previews/PR3561/packages/KNITRO/index.html | 2 +- previews/PR3561/packages/Loraine/index.html | 2 +- previews/PR3561/packages/MadNLP/index.html | 2 +- previews/PR3561/packages/MiniZinc/index.html | 2 +- .../PR3561/packages/MosekTools/index.html | 2 +- .../MultiObjectiveAlgorithms/index.html | 2 +- .../PR3561/packages/NEOSServer/index.html | 2 +- previews/PR3561/packages/NLopt/index.html | 2 +- previews/PR3561/packages/OSQP/index.html | 2 +- .../PR3561/packages/PATHSolver/index.html | 2 +- previews/PR3561/packages/Pajarito/index.html | 2 +- .../ParametricOptInterface/index.html | 2 +- previews/PR3561/packages/Pavito/index.html | 2 +- previews/PR3561/packages/Plasmo/index.html | 2 +- previews/PR3561/packages/PolyJuMP/index.html | 2 +- previews/PR3561/packages/ProxSDP/index.html | 2 +- previews/PR3561/packages/SCIP/index.html | 2 +- previews/PR3561/packages/SCS/index.html | 2 +- previews/PR3561/packages/SDDP/index.html | 2 +- previews/PR3561/packages/SDPA/index.html | 2 +- previews/PR3561/packages/SDPNAL/index.html | 2 +- previews/PR3561/packages/SDPT3/index.html | 2 +- previews/PR3561/packages/SeDuMi/index.html | 2 +- .../PR3561/packages/SumOfSquares/index.html | 2 +- previews/PR3561/packages/Tulip/index.html | 2 +- previews/PR3561/packages/Xpress/index.html | 2 +- previews/PR3561/packages/solvers/index.html | 2 +- previews/PR3561/release_notes/index.html | 2 +- previews/PR3561/search_index.js | 2 +- previews/PR3561/should_i_use/index.html | 2 +- .../benders_decomposition/index.html | 2 +- .../{78ce0b90.svg => 071ca325.svg} | 670 +-- .../{6f2df941.svg => bca7181c.svg} | 1002 ++-- .../index.html | 12 +- .../algorithms/parallelism/index.html | 2 +- .../{23896e3b.svg => a7d9a1ee.svg} | 214 +- .../{747e642d.svg => f8634dd3.svg} | 214 +- .../tsp_lazy_constraints/index.html | 6 +- .../optimal_power_flow/index.html | 22 +- .../{3f627a61.svg => 10e1d8d2.svg} | 124 +- .../{abd18543.svg => 827cb12a.svg} | 120 +- .../{8c590e03.svg => 9b8986ef.svg} | 56 +- .../applications/power_systems/index.html | 12 +- .../{654be890.svg => 2a81a2c7.svg} | 142 +- .../two_stage_stochastic/9998443e.svg | 106 + .../{b295291d.svg => 9f410552.svg} | 202 +- .../two_stage_stochastic/b1c568c7.svg | 96 - .../{0c42515a.svg => ccee9a7f.svg} | 134 +- .../two_stage_stochastic/index.html | 60 +- .../tutorials/applications/web_app/index.html | 2 +- .../conic/arbitrary_precision/index.html | 4 +- .../tutorials/conic/dualization/index.html | 66 +- .../{23c0228a.svg => 6cd79117.svg} | 4870 ++++++++-------- .../{e25d436a.svg => 81db3ab3.svg} | 4872 ++++++++--------- .../tutorials/conic/ellipse_approx/index.html | 16 +- .../conic/experiment_design/index.html | 54 +- .../tutorials/conic/introduction/index.html | 2 +- .../conic/logistic_regression/index.html | 24 +- .../{842b8a42.svg => 9791469e.svg} | 70 +- .../{45347e60.svg => a68d722b.svg} | 76 +- .../tutorials/conic/min_ellipse/index.html | 10 +- .../conic/quantum_discrimination/index.html | 12 +- .../{78d947fa.svg => c6c8c623.svg} | 70 +- .../conic/simple_examples/index.html | 10 +- .../tutorials/conic/start_values/index.html | 16 +- .../conic/tips_and_tricks/index.html | 30 +- .../getting_started/debugging/index.html | 2 +- .../index.html | 2 +- .../getting_started_with_JuMP/index.html | 2 +- .../{dfc6166e.svg => 8fb5b8d4.svg} | 94 +- .../{7a6bb9e5.svg => a42441dd.svg} | 88 +- .../{64531db0.svg => f2d405d4.svg} | 118 +- .../index.html | 10 +- .../getting_started_with_julia/index.html | 2 +- .../index.html | 2 +- .../getting_started/introduction/index.html | 2 +- .../performance_tips/index.html | 2 +- .../tutorials/linear/callbacks/index.html | 2 +- .../tutorials/linear/cannery/index.html | 4 +- .../linear/constraint_programming/index.html | 2 +- .../PR3561/tutorials/linear/diet/index.html | 8 +- .../{ae71d410.svg => 0928f448.svg} | 84 +- .../{56629d99.svg => 63685ece.svg} | 94 +- .../{fafad944.svg => 75cc918e.svg} | 108 +- .../{d4c9b33f.svg => d9184cf6.svg} | 108 +- .../linear/facility_location/index.html | 8 +- .../{a3baa0df.svg => 13736934.svg} | 110 +- .../{b296947b.svg => 573af26b.svg} | 292 +- .../{0fb981c2.svg => fb98e243.svg} | 296 +- .../linear/factory_schedule/index.html | 6 +- .../tutorials/linear/finance/index.html | 2 +- .../linear/geographic_clustering/index.html | 2 +- .../tutorials/linear/introduction/index.html | 2 +- .../tutorials/linear/knapsack/index.html | 4 +- .../linear/lp_sensitivity/index.html | 6 +- .../tutorials/linear/mip_duality/index.html | 2 +- .../PR3561/tutorials/linear/multi/index.html | 6 +- .../linear/multi_commodity_network/index.html | 4 +- .../multi_objective_examples/index.html | 8 +- .../{4a9f149a.svg => 0bba23bd.svg} | 78 +- .../{1a16952a.svg => 60049481.svg} | 80 +- .../multi_objective_knapsack/index.html | 8 +- .../tutorials/linear/n-queens/index.html | 2 +- .../tutorials/linear/network_flows/index.html | 2 +- .../PR3561/tutorials/linear/sudoku/index.html | 2 +- .../linear/tips_and_tricks/index.html | 2 +- .../PR3561/tutorials/linear/transp/index.html | 2 +- .../nonlinear/complementarity/index.html | 4 +- .../nonlinear/introduction/index.html | 2 +- .../nonlinear/nested_problems/index.html | 24 +- .../portfolio/{6dc25295.svg => 4b59d9b8.svg} | 1126 ++-- .../tutorials/nonlinear/portfolio/index.html | 10 +- .../nonlinear/querying_hessians/index.html | 2 +- .../{e372ccd9.svg => 663d8634.svg} | 206 +- .../nonlinear/rocket_control/index.html | 4 +- .../nonlinear/simple_examples/index.html | 4 +- .../{3047ab5f.svg => 1051d7c7.svg} | 294 +- .../{9a4acbb4.svg => 223d21d9.svg} | 66 +- .../{29a9b39a.svg => 52282c63.svg} | 148 +- .../index.html | 6 +- .../nonlinear/tips_and_tricks/index.html | 2 +- .../user_defined_hessians/index.html | 6 +- 216 files changed, 8926 insertions(+), 8865 deletions(-) rename previews/PR3561/tutorials/algorithms/cutting_stock_column_generation/{78ce0b90.svg => 071ca325.svg} (72%) rename previews/PR3561/tutorials/algorithms/cutting_stock_column_generation/{6f2df941.svg => bca7181c.svg} (69%) rename previews/PR3561/tutorials/algorithms/tsp_lazy_constraints/{23896e3b.svg => a7d9a1ee.svg} (75%) rename previews/PR3561/tutorials/algorithms/tsp_lazy_constraints/{747e642d.svg => f8634dd3.svg} (75%) rename previews/PR3561/tutorials/applications/power_systems/{3f627a61.svg => 10e1d8d2.svg} (86%) rename previews/PR3561/tutorials/applications/power_systems/{abd18543.svg => 827cb12a.svg} (86%) rename previews/PR3561/tutorials/applications/power_systems/{8c590e03.svg => 9b8986ef.svg} (85%) rename previews/PR3561/tutorials/applications/two_stage_stochastic/{654be890.svg => 2a81a2c7.svg} (77%) create mode 100644 previews/PR3561/tutorials/applications/two_stage_stochastic/9998443e.svg rename previews/PR3561/tutorials/applications/two_stage_stochastic/{b295291d.svg => 9f410552.svg} (58%) delete mode 100644 previews/PR3561/tutorials/applications/two_stage_stochastic/b1c568c7.svg rename previews/PR3561/tutorials/applications/two_stage_stochastic/{0c42515a.svg => ccee9a7f.svg} (76%) rename previews/PR3561/tutorials/conic/ellipse_approx/{23c0228a.svg => 6cd79117.svg} (57%) rename previews/PR3561/tutorials/conic/ellipse_approx/{e25d436a.svg => 81db3ab3.svg} (58%) rename previews/PR3561/tutorials/conic/min_ellipse/{842b8a42.svg => 9791469e.svg} (88%) rename previews/PR3561/tutorials/conic/min_ellipse/{45347e60.svg => a68d722b.svg} (88%) rename previews/PR3561/tutorials/conic/simple_examples/{78d947fa.svg => c6c8c623.svg} (79%) rename previews/PR3561/tutorials/getting_started/getting_started_with_data_and_plotting/{dfc6166e.svg => 8fb5b8d4.svg} (84%) rename previews/PR3561/tutorials/getting_started/getting_started_with_data_and_plotting/{7a6bb9e5.svg => a42441dd.svg} (85%) rename previews/PR3561/tutorials/getting_started/getting_started_with_data_and_plotting/{64531db0.svg => f2d405d4.svg} (82%) rename previews/PR3561/tutorials/linear/facility_location/{ae71d410.svg => 0928f448.svg} (80%) rename previews/PR3561/tutorials/linear/facility_location/{56629d99.svg => 63685ece.svg} (81%) rename previews/PR3561/tutorials/linear/facility_location/{fafad944.svg => 75cc918e.svg} (79%) rename previews/PR3561/tutorials/linear/facility_location/{d4c9b33f.svg => d9184cf6.svg} (79%) rename previews/PR3561/tutorials/linear/factory_schedule/{a3baa0df.svg => 13736934.svg} (86%) rename previews/PR3561/tutorials/linear/factory_schedule/{b296947b.svg => 573af26b.svg} (78%) rename previews/PR3561/tutorials/linear/factory_schedule/{0fb981c2.svg => fb98e243.svg} (78%) rename previews/PR3561/tutorials/linear/multi_objective_knapsack/{4a9f149a.svg => 0bba23bd.svg} (87%) rename previews/PR3561/tutorials/linear/multi_objective_knapsack/{1a16952a.svg => 60049481.svg} (83%) rename previews/PR3561/tutorials/nonlinear/portfolio/{6dc25295.svg => 4b59d9b8.svg} (79%) rename previews/PR3561/tutorials/nonlinear/rocket_control/{e372ccd9.svg => 663d8634.svg} (89%) rename previews/PR3561/tutorials/nonlinear/space_shuttle_reentry_trajectory/{3047ab5f.svg => 1051d7c7.svg} (88%) rename previews/PR3561/tutorials/nonlinear/space_shuttle_reentry_trajectory/{9a4acbb4.svg => 223d21d9.svg} (87%) rename previews/PR3561/tutorials/nonlinear/space_shuttle_reentry_trajectory/{29a9b39a.svg => 52282c63.svg} (88%) diff --git a/previews/PR3561/.documenter-siteinfo.json b/previews/PR3561/.documenter-siteinfo.json index 60ef06d33d2..ae7db55371d 100644 --- a/previews/PR3561/.documenter-siteinfo.json +++ b/previews/PR3561/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.9.3","generation_timestamp":"2023-11-06T23:12:14","documenter_version":"1.1.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.9.3","generation_timestamp":"2023-11-07T21:14:37","documenter_version":"1.1.1"}} \ No newline at end of file diff --git a/previews/PR3561/JuMP.pdf b/previews/PR3561/JuMP.pdf index 4969c92aaaf03963646e9719f498ea390e0485ca..02e70af39e954fac872ca3a802cc7dc46100e91d 100644 GIT binary patch delta 1432398 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�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�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zn6Jq2^kF8MV1D+f(k^x~$VM~J0YT(k4*Lf?C7fV(JDLglAV&F`&R~~19 zgLMO&VyH44#~rmfn}FGD^ZE?waxT-tB}U;}R2fSWep zrVY4h18&+-|JhCb=hs1d-vn?1VdCPqT~U+Y1`5cI28;ycZ2P1QskeVxD=F2MDp$>! zccg_+9R!T}6$$c0)Ivd!l)3uFo1mzX?cCIuRjZJcT(c>)Wcyu56pemkxhaKnOw|sn z6efoPdWh3i34?&-jHbOHeCs{l~Q~WrI$BYx<75y8P5t@IDw3_n>P4E}^b4;Ix zIL~~@%!$($bE0-1=EV6UbMjA3*3^gcAe2FTV1DQhbYbmjp#5r~<8w(@ZZ0O#gI+C79)#RNLJ5Ean+o%f%gIt0LkfBG~G zL15ZF{~JS~ETDgdin39&WdB9`B~v&PH1O7`ee(*a9vCY_iHyoIw+E@wB}e}I@}Wn*@*h}uGUS$tYH6JHQY{3Pz$+JYyP>{ zc%Pb=TrA&ovw8QPx_6WL_2i-Wh*@o!< z)_R*hwT!%!pP{rE?sVZqfTI8N>qk@de7yIxut^)A042;wZzFf@M+g|huIsH8xHfIk zmu;lJ^8W@0nP+`5po>9m2uh+k?87TiDj96X@%DZ4vXHrg}{?K~bD22L_ezN>)iO*b1+Ico=9ScUvB*<(>IDZ-lE(soLp z_g=}sf}aSy(t|J_1|O{Cvzxr19q4Oc4|wdykgoN zukwT{6g=4p`byF=7d(dw9fwQ2<}5T%EruUg>CG7_#m5-n0}Bk%FesZl78u4Oo``SP z=1s+fu?T5$cPS>exjsegt6um~MT3C@e|S`wzvujC(1Nxvn(Q`>GQ$j=w1(OIZh3+xRR>5o2NdUW#7@| zuI6~1>+*3hYk!z~s9>-s6^*^4V6edZxSx?@+2i4AQDF8sEyYz)Set#pQ*pX9f3BK* z5cnMT)^sV4&UXpt%ItO>pa=`0{XIHB(V^J7V2L&d+Utuya`3un>Qz>XKXN!a!7XcC zuY))bgUbqc`F_ewlksi3m3AYcKg}Au7wKZ&ck!@q6@#W4wyidMoZ@X?-@l;x;&S+y zTr16JX&l`3gwY$m7|EzD5y`%0f7h-@s0kjPCH1IlXbO1W(*+XmU^n6VFb zQm%~#b!y&U=thOE4CJ9Dhbo=fEZi?)P1l!Xx8ADV??%l=rBkeq*Y6Mu7e6fOFt~KN z7(a;RNcF_}bT{aXiZ|hwCY9zlVd*d8=^4Fl*J*eUxQ{dZVU2w_2qec;7>&fErYtR?u zv_2@qA{N=)?4L=s+2h^H%f(Q;X~bG=Hk%MXY0`pxmoRd3W=R@Oe^<&ZNy|2c+?)+| zMK6qq-OicHNjxF}RLWNXpX9!sEm=7naDL$aa!FYYd;&;+0&9{k&ojZq7{oR2O>D*) zrCER>v01Bpyq4I8@0`STB0~JsYEp=O%1N5>E7&W5<>seJuQ?j?|JA)8(mr4Ba|Mxs zQlc7fO)~&CiIbEI}wd5P_)(RCu>mtAAL2| zN;%YwXxLOgtTsxVyq!!$g|5bzDFF)$x4as%CGIW}yjKojV$MnAJ#8UlO56BzZnjmVEjn=XfvJ?f{rUvNt;dB$dq^Hf9I07ICVDl`{f+{7^WiF^-F&K z@hFWO0%d|99a!@8w+qM3k=sKmA;-$G6!Zxe3S3=_eB7 zh4)gijTxdC%yZha4_mBTolUlr?{>|^nJSpLqLl0edV##dLOL?Q#4yshJ=-0diSxRT ztG%Xfe-~r6#EWP=+bZ47_IN*$Ep|C)J@6A)p!U$87zeFg@!ZeHhdUq!tw<|s#kVxhZhj#mG5ux}l2N#W#jTA894KZ&IdfN^;w$P1#oyMY0zs+(nyn z>a9cC}Se#ba;&n*x&gX*Zl)x7ob)(tTz z=SG!vla_GPtP>etU4Vg*zVseZyqs&|K)4KW%OEFb>esd!r~{zv*$;H)Q2_(*z;R>H z@+qH?VaC9v4tLGUDRyx{Ci(-V+N3|ye>wx>q{rCh`liXv8P<0Vs;Sj&!JU^{-JZAW zZ^=ugJ?)y+nO<0BhWhpfk_lX|_QIMDu;jAy)rtp*K_Q*Y^eaD)dB-&=Aop!ypPp;Iy5vrIYR>Z1EqBCL=VjmGo6q(6Tj5=~e~i^L z;7S_2Nu%}6cEsXKZFA~8ZsBiQZExGyIIiu$j@r&%hO?Id?E7x3i_#tC!%Dh9kWqR_&)^3KY3 ze=bI;+!%;wrzf+OLkS1wIlu^(?)FOpgHomFM!80e#obNI^K$6)HiP5xe}2Z-b_sn^ zj0L`_S9Y#3CW=~4AhQ?hCLNsDF~R63itkFPW(FUcbIp3vR>~|IhaPfgK)>Wcptrr2 z%Nj1_s_$JyCwf(=by%{LVy&$1ds$iV#+K6$Y7pNqsadF5(Zu7Zl*d0e4#R_+oI_?W*H2 zK+v*cr9AUhmE}?1C0LYROe$IQFz_8Q=J-)jj{z7(E(+a9Y&d)?-|rt!{{sgi8H|@P ziZB$H0nz~!0yHw0p?otam!@GbFal)Nm)K!2Vt;1vc;Pc)j=#VC^1_MOLYY(yj9-k^ z4CiVo(?}Uey23rK0Jwra9bcsgv}hfkggc3M;L`grHvX^Z3g07zfRt){u5J0kr#bXB zeW6`>gJa>6zHgqM5*1;*zP4i{t#Fiqs<_@rW8|Gla853qX}p{Qwfuuj>|)L0a7&FNXC&RA}%b1fCzg?nj;UD5RST~v}$xK=%7+QKM5k? zy+zPloI(3?ccQNY@zJ8fn_$=coY;)Kz<+e6^~#*)&oEu{8{KJ81ufc?X=s+oUMsCZ zC1{RKYFt#9cCBo)m4djUe4au{jbrR6vq-U;$l!BAgzJ4KVk}d*@Gv{S9AC9Fhl+6W zK7@sh*4biLkSw0^6xUyA9&jdPHN{r4N&iTG(GU9cMjS{waYW?Od>lf{r6R1RgF5h2%9cLv`bH?$L^aprSxbDd}iqD=S zgWMQ^ow=G3Z#-;Ps4P7%Im&EDzx)(|=!0?&%1)U?J{_Ix@`I=RP^6B!6CDA{+Eu zi8u7A^-tujd(!Gq=EWN3ynnw|Y{~CfvJ4vp(ZR80!HA-A_*j8)CMp(}#K!E+jR34b zQ@`+09EuhwSzUn5VKTF3CP_pT{$>IX=#zvty8sh4C}-u!<03LpJ!lMSKt6bbC!#=m z%_E8q9In9xf5MN0X2Oq) zgi;i8N(MQddB}YaGlnGGaCxW*1{VY7VOSIgCbjxtSd>s`0CI(kCz0l~TozJ`x`zvf z1}5za=_iC@tZgtLtPqJcSJ33kKKd|xNi?!ymZ;2^ArU5v0%-m5|Hz_x!avBO`bC~$ zQT>e1x2O+=rC8LUHFGW9L;t2G2mKVV;+FI|(AJSTmyQ3QNR4?f@J76s zy9%wiWRj~XjlCn?R8}dN5G$O-?RA&_W-uuMZI>u#FgJf`u3lyhO?6D^@TD)#O@*$? z)9kzr$(Ibg^rhpdp*uL^$5uoHpE@07EmK|9-7=eeJgM(SwVfvd&$JWoaVdEQEn-V? z9Zzo>oksI9Zv1+TUMb(XnW=5NJkOk4(HGl0SxKrhgPZ}lX48$DyPfY|`RzPv$Cez; z4l%Q8TE{vy|8R$S1B#@%!XAIEk@H-}HZDB3u5%j=DmB+eX>H4M++=x>x01_TYL3*p z6WUbTh3u*wU++%M3YQpYFd_jfmpf=MC4Xs(I98^9mL$)f-p489D~Oxik8J-*%u=9M zsgvYlrR)E>e)4vWkJMAU(o@=S60OhKtE(WGF35hUu68SZsIKy)uld>II-91XA@9{$ ziGj53&m61Yv`sb8MAwwv&old*x?#r1vW_}w-7>dZ9SeC@iWqFwO1t7;-Hms9(0@gS zux=OQ>>E)`a*v5(*Ok%bsEQc;Mmms^>*oHL%IGWT@Cx~gdUsD=G;;SLn;g;UPCrjd zm^xz}GXgXkKgfNM($QBzAJY<-<`3i0$THus_0^)t8Iu;E&(GgHRY`p6|%%rbq2ND*YQy@!^rQYjn~_BZf2A9gw77y zn@W9!nv#r*ejj|Sd76V`Z62&)(r8ld`Hd!=4Qp(%qV+#+H2JXOVMi+X^>+WOfXP}}8h)1xRDZ%VDcn@b&pYi9U0K<$yUCcA;ee^U!I*1Kzn#0MQ{^ry zH#S_-c|I7`k_>)o3X(H!M0-Xt6@ME=rEfM3uKC31MQx6ml1D9 z69P9kmjNCc6PG54Eh(4&doY=Qb@KP)A0NLy@g(fa#qn#BY6FaD7fDG;Y~cKIvEnL6M5du)^G2gR7CcfGVkar)S4eUfR%R^4>Ee+T z=HPKY3IuvU&s0T0XjuZN%xRCSzkTlhd;fU)=c&w9Du&t(T3DtCjz7PDJ^2?Ph^cXd zl*|bjzW+6Refq7Znij6V2dxXpa!taIkd>Mt+CfWTn(q6p<-BN%+Mi~P)-rHvD#tM( zJTD93uhk(!9;DFYUg&~U)C&*kt*x}c_p(Brv;28v7~z)_##b7w3MpMUYbCm(zI27J{ZwLIg$pC(p!4y2NQWAKkb3v@!4~#7{WFTy)H~v*^t($ zqHUfULY#e&h-N1biC>jF&C}~-k?Nd#1dby6#Dad-MM;V!Ng07It56N!y=qQczkFWw zL6ReLY9hN-2^+|g#pkfDmny*x{g+6FVkXqHt&uM5HVTuS$a;vJ1wk-lx zw}ZS>?aJEcl0Ue_E6_Mq)ZmoI(iou+OEMD*Z})`@$$`{U_TfU&Yh(3|c)>W0i9g7r zN{w2+q!<$NfyEeqf)ud`o1(iZI)|AhtB|78o`tA{nkjE<4hUod#i~Y)IjUWX_n$W$#fgiTX=%gj6(f-IK3(pb)g2~ z`2?n;mM^yTN-Zw9Qs#JyvGU72i0UbCS2!dcB zO;7Oc0fJVpfHkcrQCFQ-EQiB{s2>r})>VK5imHYzhe}*2W$XCIX=oDnt|`W}{P15*F<+gz zzFd5oM#-n~<=;3884V){e*WcCOsW9phZq_n#zTI8`m|Mh7ekby>{iGDv|>`1oDH$+ zY>vb+ki>lveu;Pg$bH>FsS-bMBQNoJEeTyo#0B8*{z+z6kyG2#n(=ki{l=Z)K*kg87r{5pWimd^kwz)gVa2LaWO0IDZM#t`g~iV7DJqWx0) zo+8wL;tAxfq%#(0(|j^`(*RF`;GS5?DQVKBVii88=QUX^yB@aG!>vCq`#{N?rvSFq zS5H!^?OLpyp~ZD~ddY{mTaV_QKIviR1{pfJiaYMlT~qO+)Sd3*VeY7?=7UXh-;p~= z%B0t=yWXF>63n0;CGhJb*~8o=XU3UL+;^ORJ9o@B8;9Eh=!pA{aYI_esv+(WHadb` z)L6HH*+-8UHO3nfF?wj1rz)M!XoM(t5fWgFF+G+Nc|p*<2FxzZ9_?F`yHzdtyuv51W5 z&DG|9bKYxjsIg7_@SQo9+T7Jo5%D{1FLkWV7X;5F%h!Q(oxrjfk>m(SC3_YvE&sdqegXq-CROeFa{9n45Nc+6P?nE0%fg~Z8{oNzsaP-M`@L_ zd#HKg@{yzNs8#Ko^{PKWk~O#-=6o%ER;+nPEgv z9L|bpmXnWUV#<=~E7VqpBAUyTeayYNa(Jn%As`cVrw4Uo*O;Thro*g0LO3Strhgx6 z;8bHutyxwbS|uuE3GV8l)h*l>JfULM7=llD|)4yfB z27i}vm@X5SXvi=Pm+e;t377DLFuVbum#u^_Vt>QPs3HMbetv!*nw{sbGmp+G3(#VP z&+%D^t=#Zd0d{0gWWh`x3F#E|B;*lQd-6{4{WPAP**HWs>!-}cIf1U4*`zBB%2}Go z5_2NjXOcvMoJcz)17nD$=HgeHj4qPPm?duW9nK^dO-!c+62gAg!N~XlabF3;#`g(R zf)|J7e$?r4`hFjNclGq)0rr`Oe3M2;$hW11Fo*;MVR$}~mobVk6aqCfmqD)qBMdn? zFHB`_XLM*FGB=lStvM)vT3v5kw-J5UuOQHu^g+Cw;S4z}f&lrb(-aP1*eTG~5DICv zPMj)QRaynkzt5SwORY9q*(>cPG8!QA+`GKw3^{Yo49QwVLJGC01WE-$)aBzVv6)L8NSF>Fl|Z`qwL)s_k_9S%d3=XnO7$_(J5};; z6}{Agp0%>;;a{jrP*Z7?MhzqfYFsf!k-({Byelm*;Savhzz|(3fkpjSt$~YGmn^U` zxr8s8dVdARCi8Dgh1tv@TOmkAd<+X2gW#PgBymkKWaj2`U}!AW-x->yxot2Zmo`f1 z#n{I!XxEC5TT_sKH2zvC2s*?VuvbLAUClvs?72#i%C3FYAf|2+CQRDmSF8&yezl-H z{))jhkE?)bQsELx!vd%j!x%6WmyEsx(ONYyofYK^jM$`%@rR#Jn6#lyQ4nz#uS&ehbT z#fNN*(XbSM%_l+#IyV!) z%jsnPnhHfl^k}KEVQ!dHZ{g{qxw#!am$I9wTvIfd*iB{l6IkG5GnKHeq?=5AXdJoU zf-8tAf*`=Th$rAMWr~H`-8jmUKqf|jKW?>ZGujYG57YuKic!mr7GU%!o&nsaMPkr@ zRUt7jWk~|Impy19hEaK?MG=f%?$x5@q@j7`8`vCqyd?R z84-L3E26ZTiLZdwWA^uQ_~*a=?de}Mrz)`5`Ssb^(LJpyT7m6NV*}r8(Xvu(vQ3|$ z%;?$A7A?6%l5JXMLxf_YwrE);8VKrt!!2161zRIl(tF-w5J2w(*f=2fcA8MK-&h+ ze*oJ$414L&>DF>I<&TSQiCO_Hqb}KvgEFGT+!vO{W;j{S`qaiAzj^bY>AQ=|g{?^s z-QYb?5YjdT8xRgbmrychEm53;3*bsOfj<&CK`U?(sxk!;mECbypv71kFSXEIBTCl$ zwP0+f7yV&;60S$+qBdK#w=U3%HhArQLVWY>uu$2`ImtJU1=2gWp6DWR2PZtu||Be6=TcUx27 z75?fT(q3V(nD4N(=v!D)EN09#000mqkA<8Euqsf-Jo)deDh0D(Pfaw-FF`Wd`LxPD z>Kr5tS;kGj=zD=&H3H&)as$3@T5m3ZVo8)4m}JQA(;n8FM56ePBq)VsEwUFoSx{|n+P#6BViMrA0yVUX*&dWIi!jJ{m!kpxkYFNz5gGTGqoxg0fq4)D z5CI4>BGAe{rb57XzKPnk(3bEo->U^Yv(#pigb=UbjlDQU0}_~5oh>3n;G(EDTORX} z#D7$H0ERM3hvH*nS>UMTHL-USick+%_w#YlMylZ)fpDEnr9kuWDTF)|C&oWxiGFs0vTF)|? z?qL(SJIs>B9nq)$E5|GPduT}^e)htI`UbL|k`>IbUfTMbtAC`yH5+q6uW z461)D8>|(7t84XX9c$XUq4Zs^c2@=N1L>p^|CUbtDD@F^LUuzZendPngr5*Eh0=xE z1?$3&+luPB*R4~$0wAsV=}&tuep&c19X`*y9^PdXnYTh!B%u=e$POw+5Amn%sn8Q= z0}oqmsPHV3Rj>n!EV)ZV#gIXx1VnA`yV^_}3HbqkER=xAw+@D#7FnO%rLIoLiB^@v z=kW4g`{5IC&LHwaUhErMYa4Pd-IF)a4DlJR2%Bc&qd-=s)UWgyg zfki#?k%Y?PY)*wA2>_2cE@!119WuO-u@?6!K^a9+^?eHzf@anCE_Q+;-%d-ix-bG? z!NBcf0U|;cyx6P01x1|Sp9bG<@BtLs)Dla7A!VDEey4%cHlq{ONLv37;(KumZY{nS zSLGfW-?BRTsodi`_xR4#1@1!bLQk;!HNM)f@zs8fuV&lF?#$w95sLfqS`A9hn2TRG zWe?d6Cq1RIA~+e9YAY-vc@F?VNO#Lh31lsPk>EZhG%v0-anfoPE6{8|Ace{9I^^s@ zG_ChfMCFpQB`%z-_n687clL{PCVaH&Dr1l6} z@ej=k(KHfe^~KE#Z^Hh=>s$A)ukVL{4uuPn(8do2oFLxfU%w9Fg92u1{eUPusNvtg zhaZ23-+QV_!TmdWN7R-yEc|3oXoS{oFsOv#_o~i$fW3vjj^kl-I(!QomFfL9&ec4i z!dkYzQpeyp%8b+FQa$Pin3R&oFGj{0DlxNZu}*|8Y3!7Uo1{&}@|QpV{v5iI@860- z(K&%=`Ypm+cqWc11?yc38EBv$sZK_|7w3PSDH6RAmi?yVf;#OQi+fdW_xG@7HjYph zYPKho9fv5mmg5#8hsnr|{ZMcW&^?D}MLmX+a$Q)j$g0?(L)c6y$;(n)6k01Gn1VyI zO_iq>%(OmY^dvWWQ*=+4Lz5jb{nC&;>6C#kIxhs@N~=_wWio{@D_YQ(H7fs_0!x3H zy%0bN31)k-Y!Fkna*1qiA{ze>} z<6B;NHc@gVbsklm)-xRBwGAexuj-P%nmUpUb*bBqTf2@k+wCh`xSX05=P-(`G({rZ zq|`FAalfe6@$1Cpstl@C__CE*0fK)#b_$PPhNGJRtov@O4xLmP0K9JKSTwZTQA+Tx zISc0*0{E1g%D(3R8ihf(D*%|h(*4R$j{r_fB=%f$2vl^5^lU+bjX{ytyU~^zTlv&+ z4#RoCk0VVZiqA&tSuvN}lkj$?=aEa&7H)F&DcUbrh)-ItcSaOy z=vVH{%2rQpMScFEGdnV@xks53#tq>Gb`YVD@dq#yWq5 z*k%bmDaITR%9))@j8V?0wQGM6PBy2(WgZiZeo66@Osd9I&1+IVGs&_d&q);1Qc4g! z2;{QYa%p2#alLC&iJYZr6DX;PSSzY|%_}q9L{(6FGT_^KE+=X_DdKTZ@=ycw<;wZ) ztu$6DHe{)EL;bDKNwG4Okk{rg*jYjn7pi1zUqS*|q1?S1a;y|`xln&=hdlB<)s@TT zL#`{8Ljjz{WUIb4?vv6Jgxy6;t;h{0rGCccQuSADy{T9M$3TlcLA*4?s1nR`!6xlZT9wEl_v zos6{plJ|#}OPB(0QZHFMj4uJe$22Q7L)>Sh&Xmc=L1#iQG-m_N&{Pe-$vn;P$c6La zvq8D%@?rgS1gS|ya?nyrF;uSlO%u>505B&#rfh2#YX?v67zpzaY)${CO zKp6GRGoYjR#516yeCG`4X0M$A@wx2BeGCcwj0*!>udg2a7v!4QbcYODai%a6VTHYR zLaCV&Hyu6a8<4PFT;e1f4Q!M*H-R6KcRVUTzrC-56Cm7i%#XCfRY)&r7Nx${Pi@EM zPK2u90up;_lgxi&IUi?8AjiXezB?0dCYa244ljMVQTUen0Qtb-f}qP5bj}i%c6Iye z4!w_*Z^Zj_Y|~X9GWLZ0Zr4@b3a6D0g=I%q&~f^#t36aCJbTptbG3(B3UGUE^4Psh z?2%&aJjHHwDXv{A;3s8$E$7{9l`2M*X+T0x%J6w%-u8dL?fSjVd?lLN4OZv2H@K-^ zvv7x0ySwuy#qQgp&xm{QM#x&-J|XVG1|O@bS!#=g=!{K`7Au?kxzw)Nf&rjGSZ8ix zz$08&{F(C?i_~##@BsZ$Q|{M8muRNy>QQ*G@z%Km2V;cQPsav8DV%)JZXqd|cJjha zFG~s13#WhRnc1gNOwsm~7w+&YqEoDdyA_KW=yh=y-U;XGai14m($U|R({AO`t#O8& z^%SW2dV~fO)dO7*#h$_DoyvJbB`H;%&ad6>{Q|I0danFC0aj993j(F?#|lx`Lq+T9g&}Tetz%>HmC??-++}|f989bFO|KPahK~+U zg9|rx`U#GZV{J-sMde_vFaSOG=Q{#2a{6sDA;TarLUuBllkV;nEuVD$A7SI5?z;Zm@X3nH#e8T5&{zfIW(8SJq9U%Zsax) zz4uq>2b#lT6*s_W#BMJ@ZZq&L$RRM|$zdF1CWrifiWE1It#;efZ3D6_imZKkq%5be zlbjwlH;m`(3G zU@JK|XeC2}Bo4C3r13u3VYU{r#@Zy=^ehRb=V*od*`mRk+NbyTL604OWWmEy71e4D zv*tpkBvALVMV^5OEaeII%JKvok}Wp#k);Y^#Fa9#U$Y6jRwzI4WfpNYW%~D#%H8AW zSn$HI3!Yv!-zV1cVT!7aa|MK()2ww1SSRp53 zhk|$0OL|1%S#3XkOV37sAR8Aa5T2uuCUQbaCtX=s2A-x3GZKVKHPgO@Q54p(1)Ig7 zSqD;B88ky#hDfoDCVt=A!6H>*5rr;dgr`6ytqqU7KCcRo;cB1rR9^Mhw0WL3pNl;` z@(c&^J?-ZTwF$bj<+D}Nrkqr?E$)vMc>)%f=Y1vm^^w8XAGFw0|fGKT_ zCZUxNv|{;XmmVrCX?mWW3(NHmb*=__PGZ`p`*lpH%sE$wHo-cgEW+oh5izQ|t-5|b z)jaGZt?2~w^tHTyF$;oFXo^`@x>D94&CXp(r<&qRfsECPT&`iU8<^HuT#oL`+kIN+ zau(88__+4YhqJ?0M}V@7a15az*l>dK>mV>qK2o zX+)uTNk4D|Sgbx2s5K}K1Zs`CIZ*$ema|ej**5*;SjOdl?jvK(D4`V`!A{he+^3WJ zGCe~w50#d-8oY^vc3jh;qQ~Yjoe*E`fAV;>8hm~(SpzO)$L3v#wqSVQw^cP!p5$B0q)O4JrT;-WuH9L$iE1Lef3z?DXovVZ^m;$<-59+O?xbMl=cFh z?S+~PM=`0XaY`nOx&w2SU1JZIr6?-k4P=#?5ICw<35N#I(p~CNRkOYbmr!zp4h5dd zS(h9{owRKx`c5)mlPQ-N!DKMNBh(?c8RB@U=F)k8@XayEpJPn(#)y$b_C%IDOJ)v~ zM=y_UwKU@;GG(h3HU)uVD9X_iwy8X&0GHjss=S%Hbd1JyscVaLnoIthIj+<>u5aG= z9Ix+7xk8)LH}>5Wu*Fs01bcB2i^hH$ z{oNL>7CcNjuE-;L(Lk}nfzqV+%?8^RzILHymFsMfl4~K$Iav4bmj5+hp|t|+K<$)+ ziwbPaRsR$ZVD@dFDRB1wB0!t07RnDX*G5YK1^UGD@QT$m8ez5Sxm~aWlJfjgpRogf zk|bfk_8l<#rS*}kJ7BdE716i*ieJy@2|5ck$a+A~6>LbB z@v7?ty;Q#qxlZPT+AV4;Y_rdQld}f{zOQAV(%h#?P%2sg-vy@xwQpLeJr~}2msG}A z<7I9FbIc5o_^8&ysRIos7v|s|Z#XM|ANG24;XGTjKrV~Q^>&Tg*mS9rwLaONH`(yp@{ z<*gj|EfQC!!mv2JNnKwxhP(g>cO8=;*e zJNV=92A1RVsfRflL8LgkbC$GX+fe zO!y`{H3#S?9#sJ;p^<(%0}gRs!FpZ`>KR`uvV)q|epF}!kl@JsNteA3Iy(@kTHu^H z&L{DUe=tz5hldXJXa_s0*Ubr0b1EES`yIN*BN&Dc=T z3$YvIGaSc{$M}FZ5fPscgBuPGMVBz;Y(hNw+=5Jq6}1#){8C^SCphlV2O)h~*kOnT zq&L*k{?5hVf1rPj8JBUGE)xPbIhVn|Dii@Zmyt~iCYL*a<0 zu1I%tq3c|}leC89L(GyRaYCJc$7g8smFB1QNs3Pw4_CP(3Tt{j zz0k_27n$`0@Tf$`sLF{@^Ttz33lEA3^?Zp+1{am%j(~=~;5qY(d>|8*BG{<%czb2P zzPum)J+!S87qow&vkHW9-9JALaohm$bb(|L0ZjMvYxnK&Cns7=%I^t}Nzc-f>?1uZ zD-b;~bHW+>K~|Q+5WDvA^Lxie-d@}GRrCy!gh>P>1-y)q+ndD@jlfq#Uou!^az(~C zR(^9VMIVaK(ws}(=bY`D=PdYmF(3vMUWHzs3X`EkQG$OgQT6onM73XdR0*QKYWk?u z=U&_C4t0H`ZcJOdYQ;L!_+ysrG|y#h(}wBEj$IHE%`mDB1!|>wzKtdnU|BB?sdT)eq(uWd{?8#*S7c!;s6Eko8(3 zn6cY)g^~hDVwn?(M+3>wwErowNzhBb`m?&iuRTu z&RODZoyRaSuc?)&Q#tOrFiQYcNX3}h5ukrFMLEdh6WU41GU@~d#X^q&KS6-o2?6ui zN^3&DSsYgL)7Ya@a=#jHLP$}9shP*N6kUte&2!!%K!26IuxxT_p{XNeT$W5OW1?^U zn)U+}_U8px3sOw=G$XVjh=S81cs-$TF6Ke3W-gF0rOl{@i8`sM%t__=l#K4`>J)#( zVp2-L8<{$fl*+A{R+jrq@2m-gcDf!1>lf2#TY_jBHPzfPwD{Wpb-_r+{R$(;qR$9OL!oIeC8UvZC_12~&s*0?* zPjy?n189ZTfm2-Yvn`ztcu3~}jIxrm$Av(hg^qqSo~SUoD=(QG( zT)qFu$5+FVpXO-=X$;=)>&DJ#z!Wc$5qr zX@HF2cIQyBUnPJvsMX`6R68$rTGchzP7^XM-pb@rFzvbQ`-)gb)lg8ay`!rt2Lip> z(O1V5eGHC|I4qU$R8w*}_x9M5@)(y#UADY?V^r_)*>W<=<&*b2Q1O3Au2+1(C7mE^ zO?JERmeEk{<$=#`2)V;^E!kV)7aIn2?IC&Kjl-%o+?yStP`YF~eGLosH$u@UF} z#F*F(?L=jzil1+985MsT0el-^<|99PVGMFHFT)b5y|wGhhtWt2N%wa_QCr@9)LYp8 zwPTEP6AkYVTW}N*aL+o9Q$+S3p6xXpqquaSP--zYdp`r+hj6M>l$_{!=|5BssVz}_ z_7V>6fv*J-0{%AeH8kD*>T?{%wZ`29^_TvQK+9R-%2|#Vo}ykEqqrV?wd{>G_^$%? zX3J$)J~?{?Fe(Tby#C}iJ&n(m_Oz{ZLhTutM)XFSx<51xX)aVztkfJWdB8Bi3f2E5 z7u-SxH-9L-|DV{b5n7oIe`4eJFYkx{0E$gFqL%@)FcbkWm!XRY69F}s!Il9hm-DPJ zmw)X<%J$EX-!?iM`*?`@n5E8>V%fz~k!)G3<&h42?ejfbOKhLD{SL}~8g>8P`aIfX z!Q&yoQO(vWM}v=Ec%}G6_Zk3hwPq`BoEWqmG=!*hXbpNkh;zYUcx4L)akei6DHNY0Y%OqXv3icB4 zmYNlEfQSvUuD7SyNcnf0L~?NCU7B+!`&tTIJuWK;J4eq(8AtY%92r|A7W5XC;wcIurX3}Xlz+nppPNmCpBd76uj zWyfU~&p9?|LqN$RzJjr)&#&3j_qSD;LG%j1%=Te2d>+oSa|)#^_z?_SGxJyl2;QU# zY_YK}I38Wp*zafY&5=FT*x0C$^M5vLO1X#Gn>J^BxTp+RW7HsU3==iEo<~8KaK)0a zXQ4eq9-B_*qW#%gSB`7c%A;wteio$jT16bluYq(542eM3#fsg{96|4IfIzZFQ5f`# zj$ID~=)x?vbe5Qu>v8u zr)i<06sH9IaVQN*s$Pg$kzAmPCHkj%=}YCXls8@tda*bWfwCBj-$v!56r-5o5C(EE z?7ANH#{(azW4VsR#HHe*aDR5Y8;V5&j>9M?F9Z%WsL0N^AOuhbPXLF~!n4vJo9Wl& z$$JKqg!}7Yq77F`TOFB?ZebR(QG_O?SK!GyWw;795|f)Sr(%+PF?$quNC{~qqh4f= z0{zBQJKN0cC{W1B@S1Hp?b1{JG;AwGe}O-_>U$Q?Oa(+y(mHwaet+8MjaK0}1zr;$ z$eM*YkJEMLIZ_U1dk`<#CGRmnIh_tY&oHl-e-#*JXx_B?nh)5EBr+@z`kBO+8zl0P zWaqaM?ebR(MHP*kWq}@*TrNq&pPmJdpN#Xq<-*!B?Y7?1i!E2k^bEqtNnR1igFarwGN=SF9RDV@_cRd$PyvX;Qw2x_F zW|^f?`Ru!fvx*;5w@l0`uDIiILFt;HyCchJBqCkTDjcamekN&!Rd^#`>Fw+*svdZ+ z96&4ShN=hrLC65u3baS*Q9JvJjl`frFf&Q+`eK{ggssFC{E{9!%|arl>W+jCJ!{e7 zo~heNwAZKZRDaT`)Sb@0C3UBgV1-U*+TP68S9}1JoNe^Rqcpbl^PTg8sh*2pOaP`z z?^OS%LQj|fE3med`$pAD>)#TS=Vor@92Y2c$O2|ggVlqA-lld?6Iy!{J7D6j{P3T^ zIXftB)vu-gGjivm3{@KRN-YTJPs-J>GhsYW=L%yBsseoLhAB%GMG05S!-Qj)r<)m@2!Vy?Cyni2n zUr7E1$&H2v3m}Y!;r-|E=d+Z`@O9t|rPP`)%g>JQw13jzxCanl{1#yUWD&wQ+(&<_ z^sP4O8_m7ck?+9wm(b4Ndue2l;Q2ZPN&COvf8WVGSSh>-kKxw;dwbvgv#Uc_T9EMr zdMAvh;qRZj@B)E^v3>vtLaX7|x8eKlk6vokCHa%|Lvr}_W9VAGX7IdZ@T4(B4S323 zA~zW0g$}P0c=#$MF<5xwizkl^lY)O{l3z{^7A2AqTKiriqbP}?MTQik|MHV$rJ6H1;XyyY=nhV&wyXa#C}1)h>k&f-B2 z5EMnNP0QB}n73LLPnLYrMl@P@xxIo0%8L;Aa^h(!=-@bvG?jzb`(ejX>*0 z-F(T>4&hGuKk*B)#V*?CUM93A3kH9nxBPC^KT`UO-*P|xe2(E2^UzW_P=iq<2z<>9 z(Q8sFMtQ$wwJmk z+^6Z1GIS%3rR5BcC9HZJ` z2;O?vo~O#>=lt z0>vZ4g}kuFJdkB{5*1$0DhvvTb|z_sRanhz!t}jwSoOeKVE}qbcdUBgjNk;=3#7C3 zsPBElM3}rfr)QGP?TalldhO>kS;=34_v6eYA*voo=!i**L-$D6?IhCeuG>nwP<*!2>(A2I9_I)91@G1TrxSoi>7&;FM(E|`|At&!m-|-L z>+-k=1@v>RoZ||mhM9ry1;J@GP?RNsM)jtp``Cd*;VrDQg9593E9*aJ?)=oT*z$gS za>XzzW#0ZfoPIaaU^i><{{=^hTx5-|Epn9Q5($T-cHGSA&zXM^Z(gcwwxu^?1kQ_1 zrD9__OPH~`QNpiG)690)IgzZEuMm+PcXW^mka6}h-(M$yA4lM{ne6;V?W^-BTG>7M zgPKZm{t9LdMYCw0yG9aCSO>FQ!Bf0t(;Or1U|vq4(grqwVfR27a6YE7B-hEocxACo zJ1>|fbhS36ga?1TP;2Y%v97j~sdLzCPq7m4SgS4%Z?!;LCT@6r8CMOAd#sFbRT7H` zr9v8_H5Cg=ONnzHNNFh%eacJU_$DkJe&NeB1>U(i6|yy7PM177YdsT;O8Xcx?Zg7c zv4Zj1Rz0RUWDVB~NNVYXw6;@N3|H6OV;Vrj(l*Ze<-~tJan3}jc{f{U;`h<(TX6=b)8<>ebRYiF{ir4j^XP6yeS z%I|jrU{-<7cA8=iD}{Sh$>#9@0Lt?wn}cJUYv`r(tP5JRkieJh{1L<2dYqz|>Tva+ z9BJAtFSvg*!FSQun^4Xk-}F+mQcG_^<*Zi=g! z3&L9S85V3bN#&Epq7_YwN0krM)G5bjIAlBCWnmRE9dGeE?dL4Ka2{1~&K2@D>ro-8 zw)Q(@i?>#)%j)B;`vE*wp_?o?51_G%iPXddX9<6gn{a=dPF>5gQ;r|dZlbY@cURio z%wjJNB(Ye#iN!W!`6v<#Cge2yBo+&nrv%WrNhUi~y}F(@J;vnMogjvJ&&C<{__OmW z1}_(Q6y@s6v}MC#MW-d?tC;l*r_^V2^Oob1s*zVNrA)7}Fjur2cE6WcB195RlL~st znG=7G7cHJEKq&*-O~kimH&Zg>VkV^~GvkDH7OBZEn*Po9L`}At57}CH}CP8mjSad6ah4s0i7%p0XdfeKs+gz7rHQ& ze-HBjbNuc7=Y!0`O5siTGd#v$ukVMy4pnqiLK{CBZ3Re}e*bz1F9@_S)=!AS15Mxl zn7$l-8L1Xt!!s(%0V_%xqjje!G(u}P8KZ=lV|8eJIX)Pr%ENvqr@Z1 zppO`6G@6k`-b^h}I&DbN%dIYH-d@l=$cTl7l^LkWh{{$T?L#U!N!c+eXfYqsR-MH_9CxK2ngGyX(1=$yC?1 zp*#uCA!O7>-B~gD`hJUD=q)>ye=IhtYkcdr*@{IoFSEAdZ)^c3PYaMOU@JKQ${L*3 zc`-ebO(2Oh8{Cv2kY>dh&-GUul1wA5%VVwd;rCNm38St$T1#E=AJ3hXzOKnm81F4Zq6k8n5fMSAy59OUm4<7N3T>e`|Kt9)u#h zMB`Zx0p*2d3=gY$qbV174xXHj$?YJTJZc#}qgCLs+4%Deh5ocn>BgEVq8Z$IhXf^1 zEjCeOI#ZT!L4~HA!mX% z-8mXl#A_jBozPB?oc;+2e=X98%g`YZj-%lqdqa)!ANh2}9#-wU8s_12Q<^YnJJwMrE^4l0Vs6RAfc$?j9sW}n`7kh|V)0+19&@d9RTX4RS zbjS(i{1tc8jkI!tca4lUCa~kxsgH?+>h*q8b%cNh54|OpGkS2Or|+j%1Vj|*e_#)aS;B#!J$u*;v-d`$ zWG-e`I1Us|Ne5#_c{fUWsslK$Ip{_s31Wf6-h$T;kar3@fjLh08C8RK_oBcK57=BQ%#WZb!G?pjgWl%teoz`%itz zo%Y)M*byGL+$@n?@25AUYGnC1KuO2KsYc~s+Sz4mh3sk|D2}tyebBGz8YsvXKBY2^ z4KaQnI%%c4`v`&+Cr{AkE(=`J$C+?dX*68zCLiVpe<;k{75M)ABnYeMtQPI=UW(Q; zceA6H4ixLz^PJtOZOomnKJnr~^<%v;G%B3#+M>0KcS`-O=tnm7xoXVFeMR!~1xf6p z)IL}WIXAb$&h^2L<<@Px6_#`q&a6eSzvrGaq#KQUsHdZL<<<^e(?**|>J1?Jv164+ zFb8j&e>Lm!9c7}I8~t0WYs=oWt17%?bJ+y>7PF^RZbVn;yR#kMeCN5*<-Jb&%{$In zbEfX}h92?EFZOm5wXHsIJ9n+0j3_xo-G0sBgxBNZ`&+_meh~4$Lra(sNMSiW9fZwo z;F~+376kf52NaYQde$O&JrLw|r6L@=c^}>KW8U>Y_}YQ*@@mwzXs1>DacDj%}l3+v@m>ZQHhO+qTiM zot*4_#`(uTMqRw`ZCzB=T5HZ{_SzO!nL&Z&;c-bT%jrJcUz*FcRdkeI=R4%>sNkc{9EHJZqfH3tX2H6EloCv|k>#2nhLODw*!U!EINgk=OpiKvQ`b0V6HvO!9C#rs(v16fsw5FJaEEaZ+ z4ZnEEimJ(d0@a!-L~kUW#6`nmhrC-kfDvEpI$gcvR{sr3IVa)S4PL@h*|W z^r{lnF{Sm=RW{LhEEkgy!f91eVt5qCa#k)>99lQ3=|_xFOB5=!2K_cDFk_JZfi}LN-~P6 z>WMsMATuc&YQuGyYh^n%6s zn`38X{b*meAyjwMC2bdw*BO}}K7zrHF_+&?5jE>wImO3H0!BcJHCWUY5U%nvP8>WL z_JP;V{M_npzqIZ_1ZH~Yu*V-!)FoUSFP?>*pXB9zYiEYrW#+}0ysYPE3~f|PR1O_y zz6w`dS*=c_3J4Kpvcl+fSymfnT>6y(p4mQrQBbE(VQ!VDvosIbHnD~Y#{z{_t?-yR zE&u7`1ni+{^i|7dtKom(FX1$XS#S@--Jt0+a9Du|n#E@m|4Lh`X$k;4)Has}n-& z9_uj#Cu0_1oLw>klh$taGm)6$ycs0Q_VKAjBS7S(6gFt%S0?9GJ ziKdKL3n1j_X{M^bOI)Ks0Lwk zE`j9OkSEzBtZ}c7A33{sbPrtwh5Q&P5!HK+l8AjK(lpx3tiCncuZ9$yy_3*<_4sd$C1;RgLtoHa_3JT_Wk$qTj^piL4f_$_cx8Giu0 zZ#n3aGAs@ev~Kf}v7ZT^oZj%A>$;Fb&}S?=f44R&FQz%Z&T`3vHD38(3j&nI9HK7GrDZ zjRHDSin|ZB&96HELNdyQ)ACt6t5s1>|Df>eoVq%X%Od!EG z-)#%Z+M#(o+#g*r7sICGQQRz#IAjwk0)`sr+;;hUXl{RMhaO|bj&6?`V;g`hVVK*z z2*}FH$;y_GIqpJishp%N>hg}akwhI8(N4-$=>ui%GK0}GV$Tw{o}cvX*A_EJNsS};Ne%&XxLLT|8Fv?% zvg&LZ2X(8V%Sq{6fq<|A4QTS~TmJ7-!w+l>K!uqxO!dX!PrsQL3)n?I;(GcHK1`+t z>hpyYWy9P^7Bhu$uAmlAAp*RWd-ZOsB|1rGZ5T4B<}mqjHW>jhFSr*y$Mv1r81K2G zz(my*14hu%z{pPM%OOaCF8ul+{GLCV_xNyzi+p2T0uOtAwsn+2m51kfN;&oY=&C}r zi4_>^cn4TFGP3J`+jhXt9#Xr^?ZEs~zJ1oVi<6zt&|6oOcT(oJKm9xxlpfop*p zaBMKVz|H`#el8>ku~5jKCQ&@xk90-4pvF9ndD3K9gTH1MH5xL_yeYK;rY$JpzUMyl zuVBf32Fp73?qcASK=gB1nbM^83!%K^T*Q7gX10RqvY~*uc;q?>auF?zK*icz3soeP zi_*I?-p?m<<{Y{RVNyBLYcU1aqYF);MUMlk8pu13+o(-KvD|<593L0z-yGFG9c{~iVRp=1??G=^8tv_sq?iKP&ypECSRbwf;jkXTDP{Y~48 z-@b%nt^5EG1_Czt3K@`#$G}bQsFr}iKHX*o7w}YpeL_wC67Nj#_tvX@+LSI*@owo+ zl=B5s`iKgr1U+RK)Ow?g4)|_;MO6mX*vO@HT;NTEf8!m5Ut+p!v&`k=uV;_u`KFr2XFDYR z@^5Z2{U$y}H8Rx;l3Z#J`{(l-4#bFb$(S5yq5&!qx% zWXl0^)2L&Y`fZcGlh1Q6`i3&ps5-`eV6s;G$ewJB6i1aLznvE0EL)M3QK@XK-4tO1 zt?2iggt5?>I=(?<3M{-%l2s)<&@pcqEP@ILbUKqXr>RZ~P0K*=v*=;L?5?)mw+f4-iiAVY5wORC{Eh8F^+y~S zeU`V5v+9l3b&19lz0(3Y+#`2CrIC&@-o|Dwu3xEHXAHCiox5eeo@NnuB@~kJ zef8QJ8omCRvW~c|6L~KTMy&$VyjQ{>j368GQUJZAj*w=Hp|_MRPA*T|kIj;>->fx+!*~*@Bp>H+IFP&t%Lq8d(5ML>nqen8}94-;ZVs3nh8pEa)&Jtr_ued?KjGok!X43a}tt*+ea2&T5Lad}yeyDA6K6k#U|d z^av)x2dG!nEv#HBq#f-w^9K39c{;^XIaR1D-;D+&N>ULTH$^;l*P~^YRdJdgm$aH* z(~_b>+Tt+y%a_PyF9lMukAhrA*WTkNH~$v@*6+lNk>hnUy}~nmDodGLVXOrsg3(v{ z-;+QPm?E9G*Pkp}GJ?dI_(#(|LpAcN?LAP|$+L)W!*3msU5 zFEl5t7sSbjjphUQ2#h`AA8q98F$UWO-X-6iHOy1pmeV)q^mKi|ulN1bi`tOMb@}~J zbG!1q67tQ5woJxYv?WM00EQU?_`Kca&sC7Y`5PP0euNoHiX{rG_Ard;kwFRcEf#5)^yaoliGuQG$4>8+)Fc~p zq$)j7=$p?dFYb1fdQwVFhN7CSigDV02Wu$3n~6`#mKRP#IPJ)Qxq`H8a<6%>?raea z5>b2X)WBX=nbgQxIO6X=kmFMpv8?Aa9j{lZVL4Wr!n@8Gss1MPq+c(ZgbG)i4)a&# zrL#S2-})ZD29B}b2L0=YWwg><+twXamlFK4+*e@_9R4Q&G6;;O8Wq#58e-!o_?Sq6 zsnIkS?RV%iJ!Qh*+w5UGc=0bg;@VGl(Suupx4Y$LENyt~~aI!-@=QZW_>Iv!j6EYL8wZ_v-Cev@+ zN%7RXe#eiHQZB+p!!r5Q^B$XzBiRezx)JksNtw z3B%DO*O1M!v9FXFUdz2$0HQskoLzE8xT+!()yboCxKz#t(a>se^5Yw_&n8&Spa>Nt z38Rj~hQ@6KCqLQv#@=uYxI7kyzE{l-f;AzYVtcNYuM2k`0E$Z% z+jh)p==z~=HN>InjgF=XP` z%A2lM5W$hBxpT>?)?62fwD7nw+9rwgIn`9bXGSen!KWU$s|kdqF`tMX2F7VX z1!n+S8zv4WKq1LmFS=Q{CX_K%WVKUdwYy|;uBV)mlIfGo4BX_Ynb5MXpk;-9!~uP8 zc30)bMMaslQtHpuK;I<#!tNFDakLUxtt2J7=a(d^0RM78bHeU2#{D~I&i4NmF>Wg z`#l638!w_qsOlv}l};4TGCL~gI14R(YY#?({c&iG!2_h&hSGd7F*F>S>oB=jUG2<< z&c+E%GILy93{sdx7e?5qC^>-^yW#nROEWS_R#m7-x+}@B-m0=rn1shRld|TCcWAyE zusJwOy={(&I>59hH+?*we^YtZ5pM>o`d4HtHd-h3lGP1 zC+I05DQau%?g)`L=A@!RAsvP`SSBKh948|8c`b?yx7cRg4&08^^o>sK93l7$lLS>V zQ)^J4N22v|EyINexUJPr_0q}{ksC%!EE3gStN3R_34j&8-)_LLv62AI8OKtDm-&4< z{;Vn2lT)uvcbOh?$kYESN(*XY|6=J>a&?2+NqHAoa($~nV?#MSBoE(f=iHAfle(1o zr60IlwwHA(uY9aDycbr-4ki^cnD1w(lRcKYM{5f2(Vjh?c#Z(eSf&ixcF&!w(ykk@ zgUW_I0=@*x=_Z+Cx5JnWV2GZnR+BmsF1s4mUsSwSX59Kkdz$!|k2WgOB^XTW9esA_ zmY!{DN-0{>+9-0qvp)}ILZphm-vx&ctHgtk1JT0XL6o`IyL(oojeE~WHQbZZN~bCA zb)Ka-76xOGQUSf?8yP0T5GonX4$R&E2*(}f;TP&>`kvsbs9htKlF`F39mA#KMP5;omL-GAb zsm7mTDE)&{uL@LcKta>PIT`oC{-n#-e4aq!^2Iol`i)jr;O~Y=^7J?@!=R6h=|eQ}+}PG*Vn_M}9Cx7JC7mtffWHCoULyX@Xed z@GDs@HH-<+O|bDR2qfUjV%721H3EJ%dGzV2yR3u!^ijRIfCv*Kg?edKs~)UqSc6J& zBXvLs?hc#N@%bnh!y?x*&F2P|HX-p@`eP zxC{dG%h|1@xp$OseO)+6F%B0is}vlrRD5nKYQt#nZgBa9Ad6XVxlbrZSvLPfYg`qg zhHD-e8=koeN8NO2LF(+7!xBnK1;o{N#6s)8GF>k!q09}R4X@YRm4gp2h*Ug*hGQgl z%C`l6T;mTTObmgvo1Pi5veGt{M);*KTeO^-S)id$SM9x<9Q?ZsrI2q>A|T$Bz5>=C zI^>TLftm*mm?_~__=o;9VN2Tvzx7V@53&-ON(phd-*?Lha+DtQ+P~6&veGo}^;@*m ztV|`Q+LoUY%5<*UHc2Ed1X1xsm-mzX?92|4;Tn;@3p+jY4i2H@S&t$XQ}fF|S#Tl& zRAIUI;p_cjhCs6*X(qx;!pi9I;IJcwf}i)-4Kt_)-yO#8*&G0Qkd1jnU)Rc7*T@({ z_YnHdEBc_G&%B}_kdR;vG&|?(@#`5G2b#hd>=+=8|(}9*81WdQ+zP_a;Nr zO5zi(!A`grFMoAk(t_>{st8&Be+fagsPqm5PGRihme%wRIaesjh0WRBYZL?3b5zDG z(X>I?He&Q#q4nezn>O5#;AF8P*oC^!(e8BkQY0G6rSC3IaUzf~k1*=9pusH?#-bSN zC>A)dn1I9pHVlG#s@!~eHY$yy!YnMZyJATcT^<==!}w(D;qV)ASjGG{qj+0Xmn(jx8rE?V%9rILHw6@?Ar&%yNA7^@H5ztJs1m~ z9NHj0@Y~t6-T=>dja49#=r0$9fx}s!f~witkV)mp>Q}%?aZX#g<=Tq9wNqU-(bY z-QO15NJ=M;)}3{@Qdn24%o);wbU9m-0ien9qGonfewzs5L_aAX%5OPz_E*wwL*gHg zPy*UOx|YT>Oz~)IqY2j#fz!K&xO|g%v#r=-VNf-0J8=Nw{kEHm?sPry>OAK~+rXd~ zdxfaQMDb)l$6{nvaB5qFGA6eqO(>-R>|%p-YKwxeCq_tUFa70Nl68re!4mD0WL>Osa+ zsgo7|HH+aHbk(UdN`-C%9nLSaI|z0~mOe_bp16n*NO z$`FP1?!=nz;=OwIpZJ!xnb32vdH{jb+mPauQ%QX7Bb}wu;R{AiMf&`hdo)X34WYYE z4)2$Twi(W@>I0ZoQ!VU!c{2lzr#3$WQOwp$V9;od1{j2@=SK|QWiqQ^vV;sg>m8(lw#+-Z{ zg}0Vf`0OH_7qqR~#J3=4&~SpI{C8e!(0ElO*V!-Tc7xSN*q7kB>UZc6#d$MEggQ{P zOb%>Fyk$j(xZ)W`1c1AZ1^5N>LGI@$XCa>EObVF|Gs2lFOtiGtGOX0Kd;`3NH}$H; zmX38mAY>}?qLp>P-*GODs&YKV<>J4S(M2R%v(-J^56;5bJoE5>iYJuXy=!zQ*yW|5 zblcHeB)O0f5<%5@7cvh0exJY{#hP6yA{>q&WK2qMA^m(h1OBxuHsUkRC_Ph!h{H6c zWGYH}wB5C#MbWdstQD*NW);b}<^%3oYhDUsIOy+4(YsM9MN)48NiA@-^$rg*5ai)y z5Km~9ZZALbzcz>R6cIjbYO0KkN4Q3F+^B1@n&z@oC`pYFwPi%VLG@D1Mu)(fy%G6UkgX54N+dGJ!=6rg=I{#(R(&HVn-d5v&SUMMB& z>4>V`I`OH?dCl9wT_(j(&?MHja3WaMvkEA7Q)}-#m;vXKi+J*dyx%(ZLpJhHZTRYr zKx)*?%5%s!Fwjb7${YyJf1eq9scfhqOl&CzSacMCE)5>1AA#}JBaOyzkb{Q)ZMyMq zlC@;B`J-W-c%uVH|_7vi@!Pd z;JMg3eXyYzNPQ#?=hFL-p(`xhKDj^M5)#Mvxpxhznud>Vb`EUuuh`tZ1R*fDQFu3b ziX{R7c8%kW>!!b=Y8FYZ0^j+n1NbCp4iJD>h;$KqdcHanz%NRSVznfyjQqO93*%5n zU^QM+uZNA%Ak5)7GhTL%9v`-h{`?KQFDWRIjUI-YNU+Toz;+>OunpaY9%>Itgd1a~ z3;$%YjMrZD^&}j4G1?CX8stm+AxVJYJpQr+Fl;T{pI_zZB&k{$SYy$;=jBE7cVF$p zk~6v(C`f_r?``A^q--&KRu9>K^1AEHS2hCen5+FUh$N^qG;m-@&$6PlOkKDi=t_Fv zOV)+-VP+4Pi+uJEsKyWZd_`J$LhH}FY zuzqKLl&CP-B?4VG^IpI8G@P42!O9cMS9;+piP1tGa(=T>q_#d<-X88LewG6hvyYwz z*;tIikdwvFS8=i16>0XY|EMqZ-D37835 zvbspuGG|OT_w!>(8`Pc5g8%q-j+2986$+mOkWd) z-#rwoUFqXfwk9b}l6jtlF+k51LPwsE)#h%{?VeYbp~Von2%CTwU`E8fvdN6n3gf2U zle3wVrzB9fkEI%A=kQQ;xH=Tsho+`uOfn}!X(~x4)nIQm(f^XJkuN&F0{*T6XmmS7 ziQ^xM%_NmVGlFXWLpMOoirQq=HM9j$R)1gF{rcg^2e+0F#P(=rYzxErU3>+0*niu0 zOj<=S-oTf`Iy|*UlKz@5c1Svc8a9lBEHrbgCJU)WQh0)B$-Npk`y_>`vm#i_?k_aa zu+>rO0ynd1lyiYHzcCT;Tud|wI1H?R!!weA#2P(qz<^o!rnK|08|O#?PZZ-vi|nAz zrQh=@FG%rMnAW^%fuV=rX>j{w>MNSd1AESD9(Z#qP8!+V7(WpHv5frzX-g6%pba^r zXme~}wj%kDiS$Yk#kH_xXOkRCIT;ZVw0Aj}^F6fS)TZ&(0L^L6koY(lNlsD!d0 zUs_-fWM7%cB(cO5(k3+k8CA^ml8+i$IaHkH+GOCo9vz!u_1y;Uo{3;eHk+9`o!h=8 zbs8W3^mTXaeyI-k$UrxyVYJaKhvr<@p)l)d)wT-*s~8l5-{dq=9iPHoOWWc(KPmCR zgye6jd8<-j8-BXvr3xBzIuZqDGjqtL#S+Q4R7Y;Prc#tH>i8c(&}axhEKb!5{5~i0 zxhXwIlj$H{n>p)JjAoe_ZBhA>OZr-Lc=yxRB<^r~<6N*Eej~QNo)Ev&JgkXOc{X)+ zYwi5Ka`#AnKdt8bApFHZX)W=ln~G9~?{Q*1^_71DZB+dD^n-cHLP18cEjx@!vYK;J zSuAi1in2ABRbLojQyepqY$oS=|6Dgv$>#IlnZ4^={$3-+W`Y>S_A`8PhjTg3jJYDO z;(L{lJkK+UXn(9_?B~t14td{Zos=Osq^+b+05?pMYK6+LEtqcG(yxw#MPKC#WhxU^Y9^Qvp#tA#ixJd3KhWQ|On#vJd@(#XVVR zlv!es9Jo|sm%YX*GC~Ref1*mAWr9&(k;WABJ%6>B@}Q+s7Domz8od&THp4nX%i&hY z7S{8h^yzyU&u!wd0y`vvxg!9C82Tk=ctJ4$$+zrXVqt;7njd+=IdFAQkKmtz-4I0`~) z0`PsdI)B2Ao+Sd5v-{HaJ|}?g0+Qut>n+^vfyRm9u6Kg@`7CTIf7jf_E{EQ6zFwIe zU84G@p!VL4)&Ol#h$HR9v6$a=nBVhImQ2d2#R4A5t|s0EweYCG+yfymngQM4&2yp} zRsK(2e!Ac;~#`HocqDFR*8K?Lh}@g4UhQ6HdsZb3N!DKv4I(x#-gC2hMOF%Mtl&Pt4vX@q^mY9qYuX= zHa}S}4slRwoujE#1IxtpSl)Vod7V$ev|KU;XI}RAUGP62nFFf8VXdxYEyJ&k$ZhVe zRH@M-f0W+KP`@lBEr!ow9cT-{sR_=S2hM?NY;L-P&bvvt{)A)8a^z^ZzRa}tQN?pp zgo+aFoj&lCq53l21(jGWTG+T)45?Jk;o(fT$`jK+hNwDy&c#xH;v$Mt)977+f+*<^$P~f5meAoM8l`2hKLGI zb0=K9q(+KTBCfLJm$H6gm7`KhCTtHj62^@DTE^%Y(PrR8@4P;eHMMeFZJTqJCo=7H z4y<32>`f}bxpeWXYt_X9WEfTMUZ9*)3_QuS-j7}J@`uHu#cgzWB$rTT5I?zjh}q=p z%(N0q;+*|O%~Bx})7px1)Mo}tkXe>#T1kbB7N+0gxUUv4DM>g3XY7&orNh( z(T|WpiPhy@9ToN9CHeMBr=DAoGK%Mt@0hE~gIn)pTNxQd0uR3dUW3ZlHE9r)jU`ww z%4H4psc_qpn55B${QTye)Uohhtwkf_(%uOYfF+F#J(D9FItKbZaVM?KHJSEf4l zbQ>*P!qvw!op~GxkdMqf4k2K55F!QF$KRCrt8JHQ>%2If#<{f}o0s4g2KzB>Hwp)i zKKq1L&CpNZtOTYKEz8j77pw!4pkE)Wu6KopWrOI}_qVGod0kiXbE~1N>RKeswD-kN zSa@-sVV76@0B=aUWm0)daG?jEiezrAl`1QdG)sFaxkDudu(eW7Thz&wuWs)u7&g}w z9fx!ndAu6X;c7`W_GQ^^Xs$~uV~KuNA#8+0z%3q|56-7^eEz|1mhe?TY6S;sF(?pr zxabA^9l`<`P%5&>GmRTrS^C)*yJq40M*Q)T3EY|TYgL=ojC1H#fQBaO4;1f6OgbG9 z&aJV}tTphe{sc_Qxw%dDECT8-NiehnTOj`=V_w4ZA>&@FcQ!5|r$Q^xS>!9Qxth#_ zldt_SP~O15acCj=qk3ea=O-7I!0gd)hfpNr+r1OGJpoQMqx4xWHo;TJfWvG6um&}y z;D0G6KXjA55@56+7-ya(2t|r-9upYgfD^83Mg0X*iY~kmgAgjVkOp+p=9df3q{Zx3 z37^dOw?XMtvI&p0YB@qQ>L2p55m9-iha0Ea0Rs7vl@bQC!ak~*-N~CbBOv$OBh*G# zO?+J6dZ>Z(n!W3+<>7Ic#E3?*#EG%L41c%zN!-qWX;XfKuk!QwzeGO>ChUj;GIj*d zOynFP+XxIhItdz=6oq1?vw^R^-9PUoF^!sF*nOf}zE&pA7Xb1FXAtNcjI~Ch>+s)S z9^r^k8hI#_Yt`8BH2d;C3SMI8EF&lGBs!X!;%qk6^0-6L3 zyb|XMYW{Nrn6()P{^tgWx&utC4U~&C!!SLdfQwD}(?J&}lA2jC-x$0}9M5PDekj(5 z9G=P5&#`n2Zwt~mFFp?k;ms2|w3Jyi7$@|#_Exh}X7&;$q!i<{=IsoPk%PAVC_AW*8 zz0Iu|WvOp-3er87Ca!p_y#&fpISE(dN!`Hh)hb${>J2QSuZ}1d8;x*;;=gw%5a1-E zhS`p*KU7}+-yj)S?{6y3EC>tY^So9T_jSYEnxfM&X+9VGZ@_C{q(OIaLl)$*4&yPu zP&4Mf5HeY%csYz*g8{^BrX_U3Wq&k-G3fS`Lry-^xv)&gw$rsGfE*!M{vdB`rj9Ar zxOeC-jt5|CP&Yp=iUf~x@La+t*_Gi_fDsRm{Qf2fwEn(s=1TWc`G=k41!3;wiP&*| zHpSpHXYnhgLqgIPasz|yCShTP;su(pW=@)={zv$6O}ITRPzB&kgL#WzR52CM^~FVH z3zmeFsMcQ+RiJ%QOaOr1};v%xf)hpG%Bl)k;oD#K^ z!ezJ=$T?`ilEz)WD3-lPVT> zJko)hC7=GX+91hQcWh+sLBkl&$)q@4okJD=p_Emd?iawWnWe+c;9qzaj%^HU_{ZjS zOgROmGH~pBp@+XrI294!8c}r@41)Do3aipb)_&H1e?CF;B`uK5EJ) zi}k?J3KrlwF9uVqWggFzW@rV6+U#O&p^fwyeVUw~RPOpGRh4Ex87>8ldi#L{A@6aU z)r4%K!pvz+S0o&P4%qH@wllQ17x~6IJF|o(R#8<~Yn|-PCYwYv^6msrnfUE~F<7+| zl3I6r3)TtBmc;MF7Q>79#|}9?(YM*kc*jmvJWhZOG%0q=pJwE&R|`#gyma@cRT;@E z5X0)VWKNmVk{$OpRc}XgQ#*b!^J^p2Oj?)XrhUuAFd2!qNeg#XfX+oljIuXj?a~HY zf&7A+^tPr&{z;~lh_*5ky?v^&ji}r_{~N`(rWB{V`--?+lf-riE<;sj1~J9+6$!;b z^8-NUQqNMm*$VH`J*OTSv&DE}f&5#&>(T@RjzqK-SJp*Su6ey3UfXKeSiBm7V01h3 zal9Tt=*`mqn`u{kj$=5kn{8O9z-~Aerq7!hP{G8_^1uwpzDtas+TKVq~X;gjCYe(U^JLO=WqWZFnLX`sqs4 zBv_^U7Yi*$I=-=yP&7NtNGMraNP}U}D@or>Eh_ow;2u>vN4vf%EjQGBP@B+`9tZaZ zNb!+HGYr8>mJT%XJ+wiQZn%Wa+%NC%dvt3mnPa?jAS4REB(iWZ(u#h@nK@<+LISeK zT;gjo$6UJj&two-sU35?$yY4APtvq0F5l8{hwrabIzBaL_PD(T@c8~pkSZ8&3hl4_ zl}Jo{sEr-1fLeCy!|!`H(ltfRga44Qu0+1W!VimTqGsF9D|d$|aQJ&^$A+`0QGE9e%(*MG@_#PH zxNTa}|36HH{XeNNKjSnTJDd^ZuPZ$Vfu2Hw&X)UT22uUquyfX+D5z%GMz%=*d~>Zb zl5#W?&hPFST6Z*)c_uREB+K6UO$*z55(Q92inikA|D;QuI5!4~8UgJTU# z7QYgCWS4^Gi_*1Abqsop>I%$d`|nkbfJujAFGw{0Nhss63Iod5|B%XT9 zGzAPRh11rX69?GD3EKUmIti?m*l>=1red_PASdhHX=v~Dl$5e)VbS3)YL!&1zB|2s zwKUy&DISHFxnZ3*-T3RcG+313LOK>LLK0;Q`OErfdRr(B14c-(662}v6g z`kA#|q)z&nNx3dH5tZL}Q0H!sXb-ZkEie!2i{&Ydvl-xNk1zmeJyEi_H>5;m z-bk#$1PSQRUuMV06=dp1pbK>lZQF8*+of`W6t?zJFcv#(#yZ3iwQwbzr?S*aEzuby zp>L=E{k6Mc_paWPE&n!RX13t|eRt<}r9LA!^R@N3BWp&Hux1tF_fq^V{cZI9X{D*% znHqUgLv^IEYat>eVUHS5j8;$21bNKyd4N#Ra{&OPcBendx7$f5Ek+KCe~^n%DKUKC zB7e0Z%j<%&Uz&(F=Ln!KaixT-h31ba_Y}G&uI51 zsGE!q_8#=XR+yrO6upRZxRGhl1R=he3IJF+%<=2O^JnMC&D0J6JZ}rWzmGq?e0*+8 zx&eQ=0RVU0;RU_790mXvz>WEJ_51PeRq^Fj81P}>v3cS)X_ST=bNO<3c*)sSb--N= zwOe~|s}Ym1_G1Kb05A=FqyBylFV+%riPO+C_xSZVQ1`9+u9wNp%ox?nbLhm{_=l6n*RKqrpGET9gUbHNflz>l(dT; zS`TJH#>EzzOYA4fp%YauBc_Jxi{aTnIz-pqorf-i-tcc6h6qIe)=ncY6c$9t-w*=Z~TzW6xJSIw40cIpE)Wk?Ai*otnL(GZ==f6rF(a8T8uZ-O3S1_}*9@ z)&#S#%Uoz?tVGwj!+-RnJ&=Vpz|SeSpT)7+;}C@flv^P4PTl?wti3M#g0X_Lg0-Kq zxSo)5bs%?exv1?{zOS6=S<%t_G8mMg%?tw0v-6<4kt#y9{?s^*u&U|_5CDqm^j*Jr z4o6t+tUe*M)@(;PD)epGdDU3jU50=WRq!H}>-B^0Hr%WatGhF=<=@fCdqh6gba@>N zNfkjf(S&iJP^X`olxE(c1TH;6@s7QBYSLtMd4oJV3%3s+E23%SDrZeo&XcmQG-w{m zR$)&PxHow^tVRBGm${{trGU@o2=XEQ)8HSYajx~6D^r3pG}l$V^J1{?TYCigY6M5( z_rRUYLb$3+fuU-*>`=KCIt^l%IKD>=^8>yKrRo1$Ll8vp{j*Dn28Ya%+97c?HdKBb zWIoV%ROHf7qBO9_S;X8biVD?J^|2qcB1#||>JKxCl=uMOXGv)PZf_GXHv*W?6l=l@ zB5sEK@by9KKP~_q3AS7ZR$0F+#JmR3A<^X$-(yp)kp%AqE9!i%{qQ4uF$p*!>@J{? z!xH{qpl;vCrn$MMl)nZ7Uc|ZZry=Yec2LzovtOVSA*d}DkkJY(#c)X@5=kwoAz6gH zF~Jmq{DlGbPbH)*qhb0SxUcrvH{`1`I@pm^e(9E?OAE5{xy1ELk<+xV z?g`Wcv&f;LfviXAKak6j%+{Yb>5sw?j=`6jgs}2%FA^wW3@D3;ba4Q6^4N)l*})Gq zUj#^tEMU8;w15G{peY?wn>F@ZciPh^ohjX$`xAgw-0=7F^d+A{l$A*HCv)|qU)T`Y zxIHT~#Q%%)6~_&i%XB)0k_K6as;L3ewJE~D_uibgQ-~tn6M$Dcxe}M z>#qy*Cclkcrui%8!>tMzJ;Nk}d08-Bc)Xq9ArNg2Di;9W(TTXFu^zeYSBmq*&JrzH zcz{4a?FmtRZd`3s17suY(!(~cZTwNlj5&Z;*KUSB4xR0|8u@qY)Jz=9KhANp*!n+Q zts=1uAR!XCk|NDQ^HbAtMcO=K^g&lKC9v)Gj8mW<=@KA}_D2?mcL&+ByWqSQo2m+a zgepm&+B)#}vrCEsB6il$+xh=uq$H>oo)r+AEsPFB9w*kg~CG0E$-^S$+U% zGraRo@foDd?X%!BsLPtmAJpZ(w0oQ0KjY|}_w@l!E349ikbMwDmpf<$VbE)F+|oBf zzCIj;uG|mB1`V&Rsf`*Cy+NN!qrIy#D=?rw;$4s<7G{|DYo`y^X;R6G1eK>gW+75k zv1?22j8_yL@9JgO;wJ;Qo?ymEc>92xEEIz|fg}Gxn;l@0SwmYpPpRsSbsbw;(T3!Q_Ls$NW= zH5)YZ0|fVfSG%2EE>vj6(~|tx6{^7_2eq-|sJzU_7zBjgh*Gl)l%|Y!Dawvyn19){s+_u=v%siD{UUu;w}TCghJ4M^1`CT+RnSF zbn%Vb^zeC(>Pw0z&#Wn6ODyBFA^zv6F>i=@cai;e4&p%e${;t_p*#CN+6Zrd8NdAH z`lk)vm99HULq7!`cO3%31~jDEPgrXmaga5n6T$HK+Tm(uM9aTgix!W#t}uUM*%kL% zkAvAqoz>H_blG9zw$rq%|CFJ0aS+O0(`)xtFPH(C?tjg~DWe(eKVD(3|HHyFrYQc$ z++nLu3ky&~7L`i&9RlK!BNwoPe^Pr;A>}=q?fhxL*O>fy`nb5j;B_+-OBTH&5%tMe zM*tu?zWijo;`3$21uJU67yQx%!1Z#FeuIw%h#`{rGX8X6X7*ytsFL>12QekXMps66 z=m7r?Q2mdvb6@v6fJREfe*AhLocz~?aX#Q9D~IY_U$1W) zg5)MevugQxg#tE}d-4Z`zkF`DzOwA}*0^DH&e33OHuc3&D&?Ey8eG%aj*bdV;llt4 zI_9@$7l-(|!Iio7xg06oH$%tfh$)dE<`1yWUyu>^sLN zLGXfFTx7DK4Za3^`%I4t@?=ptb>xT^gyZg;kPx5JSW-63vRaE&!aR z0#=0=xn?afm2Ro-7!~|7W(y^lY+PrVgRDog&zFWi#n-8-ie*dNNY=?hGTYUjoka6fm_ zGPGO(uK8i2g7&T!-WHtiUoWWELqI*(oL-R7n$oYJ1KCtkFfA$cvdbvr63i>Auu3(t z=@V8vwHg9t(#B?(3Cn_Fo`y-T-vM47v*zVFf4*R}KuqxhBFkW?vV=mf$L?>#3UB4< zV0tw(n3*yCiFs|=;5!aMlQ3vIhK~4a>^ejOT3z$})XqBTP)Ip>8cs%klpb5Yii4fa zfrhRmqsF^blDE~~lDm;Er4UiQPoNxvSj}>NH>dj5{yEc=d{50V4dSJ85I#W*ou8mE zC&gErqm8qIl&$a!Ad>wOo_?0lXXidI1*mu$kzUddG&irZZ=y1E$l*zeme#e_;mg$K zN|O+I3u1)ru0t*`ZD~`!L4e+ajHINCdTc&jXyf?J$txSynTNs}3B7o^6r!$BihBrW zXV7e~bR2j0Uf|ALLKmjHOPI+NrT+oCKt;b5&c!2SfvHV}8_03osg(_Z5BJdHWNKtc zh3|kP0iQF?N8`AZ>Tz5!yOym?X?*PSdWkH2Y*)Po&l*Rapqp{bBRe=M;#|Ui#>IOMQTglsRr%;Yu0jcP|3HV#Jru11Z>kPt%t+@yvB^}A)af^GNmhZ2Wl8KO zAFe7U;`9wtI|XcG=mQdhv_d<7_t6PqDfLkaVY%wZCWHpZI}*Zjg~u@3V?N>D+p&2= zULxNEmed-yk(WG6v+IC-a9$#E!a7{(bbnqV?>?zkE50o+5$AL;tDx9OOyqO=N`;u0 z-jtirjbiRxbyE{%TUXj`5$wnJnw* zx>!-qH)9s0q=-vBFymJaUACkVKc9MP{;ARiulfeL2UiF;l}_Ty>&R!kxocK>g*vSt zBy~L#`*w?6Qs!rmbmpYaLr&|Duh|NaPhR?gH5>ff|Fw8DN zT`b^tYZVK4PqD3k7huc?snP4bYB_L*w#s}^Eob5>K&r=kyCzBZm3EN+Oz3t?yLNk} zJ=|TC_BcZ2$&2Rl%7f65( zMPoq%A`aJ*fYx`J1oYCn;~a={SNjq_u&ZihFV?d#qtvs1_-nC(%5RC5@3TrhD=WUl zr{XI+b$va{Qrnu8VR>H8q9j1&T0*GTF7ua93|Bs2Tv7UUME)`1|}h10ka z5*1n~T|itSt&H>lG!BuII1c?dUie#+-^F?06DMD8UTt!KC@f5}`bJcIUM0#(sn2qC zj^bQoY*~p~dx0?U^>&N0RxZlOofX1YW`D_Kc1Uqa>>}7G`FQ(2JiULs{P(5qUK@cn zoUHP~kbr*w^Ci9jMT@#XJcyv+^w+;nf4uxUQf1YS_hgqz*3uI5ovgJLi2h_X2ut^e zYdgs}elF>iye`S28sv)Wut3mz0l`!jBTHFlEPlA2Uz0{v8HudHrRr4*O++*;41aWa zgXZ*CWMek^8?EKPC@hzc}h|_kyqxV;zDWFZsf-SnfI&SiGLT9D=( z!PuDu@3(o18Uo0AA1E8Eg$?16vawbKG)HAasHWxILuBiF$nG}zUK!c&J?(;UYNmCL zM@O(r2Q6U6+E2?6f6isK|)gOsM3})gd}zLMtv)LXJ2I$h-E+1dB$9~mYg4~3k}78G`d;? zaE;@1DF+lUEaRwYD}S0aCn_T`Y`LPmc6nI&h7mB1rhKu~I_Yi1y+i{m)xP#zGigor zq^C-6*v03CylJe4vLNNhMJs_eq#zS?)nZ?%IxQ?-m=#;Ly-%Zx?Ai*jgtPR0RG4c8 znaarg6**@rdM{0F*OszXeZ4Zzi6x$g38WZ}#2&-N`$9m!ki6$ z-GQI1(KYztR)0>f%OUleQW{Ln4DAfbyR?@s5{LZc0c|ou7VvIZDfO*upZl6acDjGd zPz^fwu+u!3pHq(TGxHRVk2U zxtC7U)bvvPjT^naq|XIOW8hP2TTkc&Sp5t=bt^6FDSzqUkldB?$Oog$cv%vKgdf$<7SY$RRTTebfvR&6yeG(P9QrDhl+C zE9W(E0XFjdRaMs+ZFb-DQFohwq@K+TXCg8u&JYYcXX(5cr~$|EbzOiN*{88Z|H=rf zp-tZ>kjwNz2L?uv?tqKrS@Kf$GXi7ki}9>IM}OiKIn4)Y1QBj zzkgDKKeLcxnk%QGmfzoU2lSrQGybE8ovj%0Qo|TFH5^Sld1iaY8)|u(Jf`-JU7T$j z&nl~wU!$+ITC2(GHO}@;m!y=Q#T&Iv2w9S?##VThjU=n#V`HJs_xP$I*%sKHm+G!Ppj#YaJ-kgg z*d$twA5RC}ZHZB5UYnR!F~P5@a7ps zP`}bHIy^GDGLi}=965++0jLMG$RkJ4f@dB?3qaMz;krtS(fO&go%XT_G>eE)=zkP@ zZ=QDSJySel?+vGJHKxY9ZyHU5FX+2{p~aiAJvWr54=7R!cKE|yy6=bUg_iq&Ewq%* zXZcS+hHj;Up3gai=F?G~%d_+y@_0UJN<;3x^a4RpiZL>l(hD~NhIU5*BhTFGPctoS zQbm}~b(+<#9E|f*n_6D`!cOP@|9@b1dhFwuk)3o}JJl2&4KMq!wFnf-iQv12bdC2% zGI8}j^Q&v;Z6#;2JzH%aHg8;2K{d)5vJ=-F^Ulzywp~r-!}Ja0&UZt9Sh?nnQVYtG zpW%(&N;Nj8^ItvvQ*`ydzu(BLS$x0ZKdq6u{2!ZLF3iVl-GP+r{{yvg#AhbT)Y@<# z&%G5gJfjTk7TUC*N9K5%b_sr1Jeg9kqbY^M=Md@JLk+aB)V9dq*YF;WG>Q0|J(CJ< zuep}#3<*p<$;@xt6UsFs47g~7XB#8SO7qNtP++>F?`>->_xF#N{{cGg7?-gZ1rq}} zFf*6I;3O26@t-~@e_P3JYc~?z`z!PVW;hRkA;8v)9*|uJ-ZiocI=#vw`Ts?VWEIJx z?j+k0-a@_-FUcyhPK~7H>HjBr`u_Cx{`Aw;*i#VEsi05qf1DJ&knmSYX!PzBloH;k z)BB&N|Gr46J$&BaW2H0(J^{W*c)IhmQ4xA52OoH=)cHABf0f5TAEWD7XQ@}KG8UH z`WxQdw*LAZ_9Cjqy|7N$7$!<(5A+pymvw!#Hmh;XvG*x$wBA(rtn6Xl&&#=NldD~I zWD8gmkhTe!f0~ys)wlDrcJ2jP0a4kQTRgN_AZRl)u;C6EazN1nQx1DNNn@?Y9;$xN zqa3hobI?q=as=ci+6m+?k!a3EWO;NGV$@BDZLB4F1kS1eNQ+d*R{HMJdK-ko1?j>F2`T{{ zUr^07e}V#)1;=R|OBCeT!xA65tLn^4reachX^OK5abtx|miD>r5J9{{TH%{e?Y=T^ zx~p;Z1eQ1eMNy;_{+6?>)^*lVt#J-qD=D)g{z+aEpNe=1>q?DtGJXcdRsWjestCSR zJwkCArRs5-henSRuw7SgL`q!RB#k+yoyrT7f9Ca}c1AQDW#40yWoUZ#tX?LqNuD**W9N^p0*^#Rnahls-skdVmr_h&#p#iUvIEL`>Iou5FVN*a7boGBC(7Kt+-p$=oK zf7*&IY^hCbRf}fZOlT|cz0X!Xo8>~mbn9p@)s}Kg)G$i6Fs^x>MsM^KaUTi632z@^ zqd28vgA7K@UxfrtAtM2Hpx7h&R)Wvjn!ik=Px%% z<@)(a>GXM-uRov#HVW9yM`!_~#KYwH#a#UzJxbT%+!S$+I)J^`ys*`y7w+rYh^EoEKHJ1n?F*v3ugfoMe~R%! zrk1oLZSF%7K;UC)t51KXMTBAK5UQrj>T?GMud&g){&S=gQk1;2phpDwOFa8;jX9I zAGHlq3$64_X^fpPPG<=D()el1e?BZovHOMALb42FOVQ=}OZHrmxP^>d6(!vhwzMEF z{Rm+*O4S+Ul$m^(v>=A?&VeSaJXsLe&_$1Ms6+e-0D^UDiXS zDV<1aAImlbp{;!YmN}&s;unJ@za+$;C_F6L+cj1Tl2R=&uZ~bQm&nW%H)=~|fckrt z7di7$sCL&+rLL*OxrZ7L;iGy)V#p~~!~{HU!UEQ(kQ0E4o2iuZ5`A-Cq7R>!l%8A2 z!MUig)Mlq3ifFZOw-$s(e+)%e?CYm;=$P&VS{d1r`m2??Iwy$3&KK@O-q$s$S*t}# zYTnOf3FUU2ZCN^5pQD@6c2ituR?oNf*&z)~$50KJOCdf2)r?X-@WV3`^NMFA25qCp z!%&BaF9)Uv1352}Ni(%#7p0%=qC6bL$vt%ATw8Xr%+dV0Yz2CYe`!jk5&Mw|3-={U zIHaEsZiXT)=@*WnBa)w|GOip?2U|(wm8Xqm&7C`1{p(~y!)l6WjTKTGR-9c)vzAlL zJp`)=5!@pHJQAwDJPyeS9^{Ybf5isiJHoYbcg3Zg=#S&x@69N=IUe$PwQw%R4Ecg8 z^pm&obdQKFIHmQJ?_;M)Xz3ufpdU<)(zs7a9!bn9KLw@3-Jr_H zQn+la5lQx&e@7cBod9Ac0?Lf@(ZkaxsVfE--)!Mf8{vF90jR)Bu&k59IY(E0CdehZ zb!}EBD~#>c+&I>Oh9gmeNT{Z)Ec?=~XRWeLR03pswp{?pwPHsH1SW6TCn&F}6o_jk z{Cf3645i8qO?T-k(FB)#-oE_!KK=Un{pqi#St{Bjf1yG;{r=}ueqogp9)4;qlCr12 z|9AT1=|A(V(`8{f-gGXTDZO`&W55ds@u1E~bpGQagIzDBV_dA2r~ap)lePRh*xdw( z1-mkR6fv3`p7A!Jm-XcJZca38ak_&Ktu4%u7Wud=34PCEljLQB0mB8< z@n&Bue}@iMx8E2n)~JDRsa(!|u_Hb|@71&duH7y7uS2FdWo*U{SEDhGp&K3UV9K0~ zFka78`5nl*f5Xk9D=S{Ct;pnaYHR1Ym1;O&f%XG4Qip26Yp{$l`npyd;^ELt8MfU*XL_n*TbFIuCO>nIm# zZH!z_{`PX`!?OV|JAmbqrvQg%M-bnUJqGi;#((B_jO@ab+(GWIab4aI+UiIl$R*Ff z9sYd(?MWAAN6yeFwqdZ2l+dc2Matyk6*+OTLc#@|wPtz3m}x0w?{UzI&#Z(N~R22gw)nD&xN##MSg3HB5{Li zoUd8QNw8BE7NJviGWU|AsLPnpQ%tJD*6c-96#1+liT&BiTa!CIq^#aiM!lYCgI2~- zzuPSMkOeWPjyd~V;pw_cuj*4O4@ZC6txqi`7xG{RhzF%pXDe?zbUr^7V+e)fs((D4 z9K$HP?1tt@SzO2vwZv=MJ0G5{jOGP z1@Q`e(cbCum*~H<=z2mECXJV6!++M>7zIIN;bHB`CA3rXD`Diisi>neq7v*P6p9fy zfhB{L5E(UoF~%}>Ob0?a+?BnQ_a}?^VwJS-00pjcH4>Eyd8(vJ?b;B$@JYcd#L+dd zI9p7D5dgMI z`QPj)RI66lYyzu+jkuGulgwnX-_mU=zv|Ub?)-;ju{6(n@`RpX~w@VZ+YzRgHnaP(9 zxk+~AI<@>)SyNMcO8Tu*UG}l6nPNu?mD-GR`@AipwZM)RzzUE?YSeN-WzWR%6h^mZ zE)0@W7EJ?aL2ugc>KeFUmkG$!m3>`<#H?aLiq$1Uqa3@QcdlU?OMl9f>nYC**M~cY zjw--9{*_K2a3LHu{OaWBt~<>f(yxbcWjHQ%I1{e>t=!$z#Sn}|3(~Tk)JZh zD4E@8o6hSJS^TasJ`!Ub9!la~Fo-_v2a3Pn6 z<(oDBNMLAaI+b<$Qhz|4p;e1u!*TeyHRdO5b>zhq^Ub%%)oRqhOYKDQ{$6J^3z9KC z>l^vQ=%56SJswU#eKDN{qA-?8%G6W3w^!9ZkE?-L_s|sCVynb(@C{=-CI^`#_uRz zO9h{hp{6K}0{*6{@A~BSW5_->8cq63-9<*8&!k=F_7Q`T_ANH_b>F0i!*fdN>nOeM zel0GX=v>6eXsmL<^qeLbgZWD&fRBY|)AxNmZSD`Q%;?yP`?=9zhi4>ifxInFrzhu5wCN)L z9UVl%1FY@OOGp~CL+0~Zr$w^0`8k0(j&SXO(1w_;ySZuik}JJd?dB$@(4+N+DnDJG zzoV_KyzdVf(pGuzxAp(ofSD>x*f9gRl79%5^Vk;Il7HLUFL76U)Oj9??lZ35kX-;3 ziIO@#t|{vil4ISl} z!Gzt7N>y#RI<6T{@FH(BO8Ll0cYfI`m(r7` zZqT$h=Ss)ctahAAPN8GxWouS6YsO%=tJq}t!0AUjrl0<08oJOJrR#oV(`X=NCLX7K zwwa~w*OD(bX+)*%aMP)tO#DMCDOHWF=vtQm`9g8aLNq@$|W zSnzVwyMNTwOg``M!zPQ;Gr<}QD?PW_|E>6DDMYWNN1LDbz*=Kj!g=Kx-k<0FqbinHWLFeH#e7o)+{K0OK;;i48G@A_zzSSDe46j29mTXu(uubw%F5R zXHIk2`TvKdWJ$K=N9;W2kUFs~zWI@&Dw`jTY(5XCufyv_QDcSEV6pl7-T*(4{1+tO zG`g_>!YF9Iel~x-Nr{F(C;pI>O7X|?cgI)Vz9?|~25A29Q-Jox5`;DUj>2w#tuoyj z#c$!6ufW%1xX&448NsT4Jw6mm4O%ltYnG>D6?-agY z_~Saxnx)c7I?YmO=$?^{oL?^vRyk@d4E45oX9|I`>}&(@ASvcOgwjXPjHNhUf+fKQ z3)mJk@fXdEwd#nnTcS~gH^Hud;qqDi`uIBhcPP4|659Aidn3rG=AWO3@PL4sTHg=} zr?C0;Z}a`|XH7LZuD-^oiFEZ zIgH$`3P-E3c7rBTa41M20}0d}(b1i6B~K^5Rm72`)I@uhT%S5^gBBrBgVsUQ=ryQN zU?Fk>b;~&kiY4+Ta#n4(+fZPwFaR|dcwh86I3ob-1tr{~-L&j17+H_*teCT;ibP>4 z6OI;yf*rlz<`Q!e`*Y5J8xw7sg$`ahMY|=08C$n~3E?+m;YA#^0X-&sHu!826B(93 zU8TR~xR8ua3-4==&noj| z7;3Dk%RGisM-MOaWEDqB@p@R)Fh&tL-Ua#wGPWC5#4WH^8u9&Wvj~tS@F%2Rdxa>qm9s3Vu?lSBtAD zgMn^4ZbMm2>KHK7$tcd(V@VO2b|B}Rnys~O>(vm z94qiFh*q4@#`)g_(V=Vi<_QthIb)v#cEPxIf;jXm1=e8PfDzH6rS+pSzS*_iU$&?PqFre3kSznI%hU*N#P;up+F+ zjZ*Wjohz)Fc>Au-aiSeAq{@8c0mrTex8&u2Ej?zqcir-8AQKaZ0*ESldwc_2G&Zb&Nz7L zxNc(g_PZRHab6{t~7qI6Ikk6*}E86USRWb0ugxox|D z=DhZpGB?s#-9e%vM*WGD^;q&2RLZ?s#)&OJdT06QgdOMj`f(Cxng*IU={!~~x06Ap zuszlgro1Yj(z%=Gu2~MvVW6HJLq)BgXPa2XW z5cRVC?@gKxo9~}nl|TU!9AcxvNIBZDD`u?^K0*kUyE{+@xS3bBmgAbi?w#6sE%@^| z?I*`Rs~uBWKlt~Nq74mzB~1U$Ef7BUAUiZde$P2}ef{`4{0~%1{uv5oZe(+pc9<>> z0y#F9k=`sLmzXd%3a0C!BUb?QfXMj3Jho0)HsyfEi(MNTo*f1l>5vz zlv?{PSST&2OD!;F@tIR#>KcDE3S3f`a$qiQM=OD)?_gtWeiPRK;|zNR3F8bK#=Zud zZ*WSuqhVc0>_7OvVEZLyzqiyNr2Z?HATZt6kRZ%{(oKU%bvt0R)Z}*%u31r+aLtdx z{K%A2atWK5ONNw_AG&LmDJXYMGu%V7J%WUdt$kf6uGYGQE%qUh)SZ9EcQ<3}vh{o6 z7T6e0TYb6er|py*N-uMmJFi>UvqQ)+?diWQhc!Z zuHkr0mNVlHl|C~Rs?BF9__bxm8bv}&{Z~z)QMUtTHO@XCju9c@79lX;)2<5w0$U|M zwJzPguMCfdn!dEVbYg$;yWFP}P7e#=6bMd@uqv!B);^g))a*K$kFDa9nNMcgXYc_n zb(3%#5xd3JW2#iYYA#CcS8*HFnjU@e#qj;F=kwvq)6=s>7`{5YIGSI)N(lb6Km2w0 zZulBs5TN_Ri}`HvigJ#E(BLdl+&sy#;kdZu2pjhw4KJ?_7e0UC)8o_s4qvXPpDm8h zPKTGnKVE$2f1m%fSe#$}c^G~?Ui@@*7-wg{3_oA}a=v#oe>42;>e=)7^T}{{a&|b> zbeLylemIlEqoda|ecfhl20O7WhqDsn%PP5_iVm6$d|8O}!y*yqVzd2s~nlZ^| zPj&Apr9VA>{0M*l?r1GyCE^rEV{_%0B!6sUFORx?Inf?I+BOq!DY)HUT7FsDs~oF) zpQhN5UomSea44!N3b*~?%Yf-$4&R=Ae>Qv*J};%gV{0z(Cze`ER%o$Q;+t2<=M9s; z823V@p!EKcrCH=%24<01 z0029T0L?? zxDfgNfFsn}O2(PpUkh#&GhlzzLJ)ca&h<_$ur`ZvE1C&f7+cw*#qJ)5c_QLs^thrH zG4sdvxY^n1<>KPt81da*4}97|QPl1Uiv-W>{CtIr)FNqnD7eT8xXAT>Ho}uKXz)6R zv{-+sJ`fAZEu@jM`1)| z8&TOtRBj_Gw-J?F9))q{##?auj@(mlW`=)iY2=>LfGn+k5cj-OMFT>IlJB~rK`Jly zP$J#-o)(^fEO4U8i4kpJ_*?@clD%V494TS$20~(MQ9UL`foCP7#FGiw0xDCSDe5RE z@ZMq4nBnNzz?5|xOq=)#8)q;4rBtcYDIpwT8ETxis`YR=mklLEs}-Zl@VktHTY7)R zHIWX*qW49pl~@J7&!|EyZ*Bwui@;Q@ph9D^)Rd=F0)c=i0*Y7EE6@pX!L)_BSruds zMu1AirXVLyrUO}yW-DR==HBrCX4#1lRZu;Ux60tL+_X%m0o=heWiAAFz>#=bYP_KX z$Zf_Sk`J5#ku%{QifHB0_P+69)1{f4vjChHwI%TkvmXK5otX(N9_X-kIE zd(tameZ@wht%RILfkq*ZLKy`f1sR2L<~+`v$C>jua~WqYGy&yVI=Xw2KlK2lAnU{Z z0L^Vn)}xvgk**bR3?zo@r^$j%;h&li@ZbXg*npIVdY-oN0fp@(4f)2I7nSKEUP)u3 zG9nN#Hrf^>HspUWH7QU!83upzba_wAdJQxpF_13ivPnrQDab-D0OD4PlY;5a!n+mK z`&Oe407XrC+gTVuI5$9GQcyFUPzQGKku?B-rr~HdVXy&!asw3lbG8IFkfx)D0yj`Z zc}_qAuLJ;$oHs#08>)PidD7IMba-cLIvv25I~`cMq!4Xo16hk?W@>*(Vp;5Td21Y%e!FwYv6FQ_dh zQ=x#GIWrqKA$dn?%cFl80*DGYoPtw}d7hk31@}OIw!TUZsEE9Evze%opexV<^cegQ z+^kF&72aC)$DX4@BJLy0mIPIb7^|S1flK%!-s!xd03;L9wGN8vC2s*u$4O*xWDaEP zCdBt^G84%7%`US)i={G6tK!+g;-|l#FTMl6yLb)4xo%s$A!L7@NWCio@_BK5c(s_X z`pK;pe*`(nGf0GN^fyV|!NFdEZa8P>1PXtrZK0NNzDSA;Vx)@fbFa-s#6;lfdUIi$ zH!weTALxHq2S-25-=1Hr+d=(#$-3>^-|l#C+xIu4R*l!>-Iuz<$P5G$D?5yY$0I+s zT}Gn5zTM3I!&`r}A6nroA6ee2a8%x3;aFNdHeFXZ%MP_yIQ>J@pc_=*C~3iK=}k$SXU(8CG_t`F>UDuacc%30L+7YiaFfhKe>WbN3Z+V zN*IvN-mL_I3;|_8caQ-5B_(ju3AAW1-LADLTB4b}TMK`b&&*abYX(bWP7|~!iz1NW z&Z80xz-jt>N;DF{ZRw9P70i+DmkouV_UwjvozJXW8G8~*AU(8?6ktb&J;j@2^=Iqfu zAIJ*8(nEg+Rg1rwmlfp-)2C%aMw!Fc?8b8tviQStIS_h4Fd0qr)|I!KIiSpU%*+{# zo@+n?k}VyWRy8GmOD82p?V(cYy+Yg{clg`3tL?5hT(t+b+qq)1Z$AHWGNJmrt=(G# zu3s7RvQ>5&>Afh{9Y$tK5oO*EBfU;2Dt|cFxzT^ky%+IWzQA>h_|$e6;$wDAeCo(< z>ez0rW4qNxq1wIP`*M_$a{a!h2X|mBru0 zY4-zY@)twR)&NZ`k@=ItHUhS3Dg6x==Wzt8%O;EJ!Xz(-w41K5=rCt0z)LrR9YGgB+x z&Wt2DM!@aCAiWqCsFNYIEfG`^EaS?Lf3MxI)5q@LU0tiv!q_laCFu#nUq5!-fj~-K z7?ctLaQON6@O}4tFEwvm|BPN2k(HK=pCGHOFvgQME4=mv*%l#F(cHgS3D4Q-Wy4ov zBV%HMCJ^fWvtQ$ZZJ`}NMJ?!(HWQ!R%JyO?Hr8=i-pt}!>bR>`lwuEqo!YeJf6>Zm zL6O_9C|c^1T(sNX7*JU0rxHLPR9?@S(WnT-b?jgGz1TcigRLVgGSld)c(Hs&;JwAI z_L{wlQhW*k{;kSyo1aC0){SpPx0&zf1dnE3+>>!P^N7)o>vo~~l?UO#w%#8t-OdM~ zg9vImdALjX_>h6rjg%GF^G+zG zpSkk1g*i1Sy+bA>1Uy#Z6&)nSx;p~`nu1ni5e=6vr74zN& z+?a2gv>N@wl^OC-Y9k|&p7PAS;Y;43W7StuM~hsP(&8KKEjakrx{}cO7x}0zb87!e zF=L(bSYj;3VwN3uDy2Ye<9~L+h40g9~*d1r|dY%CBo{ zJ@-{oM-UNfqRleaTYB0cRodRgo{f}MSBg9qCQMA_?KZ{1Z{q2OsH3(QdAeRJ0^6LN zXpac)E>5m*D?8u~`B|^=SMhJ8Qt88I@o%(Vfc1Co(S2+hDFO+fe^KW?5{yMQoFb&< z(edoLRDyC(%jHtEtuSpUh3$PT6El4=0dpbjVzrdWF8*UqP=ys{ew$|cJmWAe{V|On ztF102^rf}5 zWjApuRXRE14rA^0h;c7!2F+Y4e@d0r*11JC-w)i7R~u5k z#M)@IP^gw~H+oi91NHSx;jrPwyhEVIyyC}f&S=K4Kd;rs%V8ftD2nec>VeL7T3v{G zDyKvKGBP>#q~%-A1Tp)rW&%E>dxsUZ9FuWP$FxoboiDHC7Gvoc5qgOcC6#wDO3p|j z+gZM%`IDCBe}KYpaE|XJE4g^!fIwA^Ms=h0%#M=d$QMr8rpu6C#FOu7jJ*L*s=bcH zgC2ktMXi&TZ&zSG)vENEH|t?FUq`gwIztYHRkJlPN@fYYbGf7Ch|s5-_my)iINj?5 z?C`lkB7#7Q)?VWK0}?4DJ}T=7IC9) z`pD+`Yj!xlba!q}xo_1!(%*36TpGu8V20rh>(EqZK@AGLkj=e+^qTbdB$SU!CnhK< zdG^xHg7nAZoX>|~)hEY!rY%@2!$*n|8g_YvR4lmnK6u;#gWXa4d1v<9M81 zB&}gWe=JTQnqI;>mwhM(fldL0SJiUr{db-Zi|l^Z$J8u+69hI zhXB2#2Wl61OH6Yn&}@>Ne)Js+37!u0dM3%uO4| zTHy`1)&2AIvHK4Y0PbycSIwEPDxjZA|BP;6j$`7!+Yq&2cUTY0S3#>nI3vzIrm9}IXI0VI#~ z0<0gLg(xF`V+>|l!&%12DBQ^#*e>AE?^(WpwA&?XO+y| zkO~GIWoDhVSIrg+BEKJ#+A5lmSCm%Bxg8_gah(?96R5}0!&xvyitXNPU$iD)z?f*9 zw*t&yjxbIDp7tvmr$VqDz|9!#53YEaL>-ALik~BYBwN0_jTPi(ppkS zglj|l7RPNTs8Cd3G^jk@kjaKVYW?~=zdM6d4BTUVM^nCHJPaXiiVjc$17&jE_T22U zstcT!_kCi1c17p}19w;?v>%M6YU^$By5*;TY)Kn2Y>JhsSiFoR-9}DQQ;M81o5&Xb zSy#2R*hyZh^2wywW-H#y`m3a+qNBLLHfceeVwtuDUx@_bCL8Jsj&QWql1cptHQuSL z-q)2Txy_*sazwT{L>^0+fKKi>3I&p+p{WJbSZuLf8~rq~R$h@SSjPQ6INYImwJr63 zi*byX{bq)sl5>PEv0?)D z63ejAx+Rvk61v5p5d5bg^bYIC6M6@K=te@fa`-||i|4Qz?Aj=)K{}<0x|7cjs5^P| zBI?c~FQM+kD5=z)TPtCixEl0D4owD|_1U&BV0qVHaw#)r#Y#mp_*j+@s#s($mZ>HT>k)=F;Fbi(( zsBILo>%iUNsBL5iJAW?X+;@-&6&vCNQB zx-lC0#%N8}R(;g@Z|d9B7Gq$4*G8KXmAifF)A2y=bUC`FUY;D)vm6%LszFaiBt+*c zfTD%lTy$iG%IWUpAsY#mZg;%7M5#rKdjhk?$sIy2HY$K=(ZI*R_Ql7+okE_YEVaK$ zXztRJ*ml2Q5rf7m?c9Pz3~H}{FZ$^qeXl=!?DCjA{-Qz!d{EBa{JX$^tJ>!(d#yk$ zcBuUhl?ccVA-LD2KaiKYX9+i6bpha60rtwz)EW@1VmyMoY_0LeLIcD_jGyB+zr*_R zg+>SH#zF(Mgh^N=C(ZaeW&_(RTIjqVPF$mxIohYqgxzT}`&g=j7Dlryf5kb!)heHl z@Fc-Fx`yxix8&yk0Hk69b7Pl5x-k<0F_-azCKCcNHJ3qq>1O{RyzCd>^yeqmYdb_%d-v3{8NDe8AvSlZcgLXm7lE`^K4kqP?s(ok zoiq+kc%vK)=kJ4}7m|LJq=(iFPAOrv8qPn4-=C!fOXElbrPP{+qyL_+=CIew(+p*3 z&|9Srdxt8np*epV@>*^48cnlcq^qLqOMFi2gS0YI2sG%OIv)Nw|FV-T?9(a8HA$^Q zLA0x+Q9{q$h&u_JpSjE#Y@+^j@@kc;F~Z`c|ErY7XKGP@rQX5milvDEq@y{>2mS{NG!tBr7`C`Nz&NKB9f#&|WE2@*qmqv10{ zbT^doLRvi|uJjQy0X!uFtQQ`cWqKNQD=~yv{zcuZ7{@GL65}P?+Gw`Nm{myER~EO% zWL{NiUi8<&MVT6(v6R^`hkcCXC}pHvEG{S%v>&9<#(GOv8zc-r$^Mt${C0;|6d90g zTijB7pY(rWJNS3yg$W?Qg&M)EVah>~vUa#iD8ucq7V?k)!5r2I68>2-C z@PPQY9_G|9BtWp&5+J11Kn~b+7XvoRQ?xgYY{uP{2qA`VEXme{=UjGUP%}4w$f160 z=~pR>{Ue95tVwc*GAD69CQ9Xfv8OAVS8ijgY1MxTlAHj~Jm0arsU_%%{#u}-cLMNX zzAcf1&^DSx-4{)2*|7Xn^MGtub0gI#eoW6H$?AAO;}LZsCdQH(tGWO>L5*j@$+Iu* zLyMdN6dE?HaTv&K*0eP)R`{4WaLPujXd`fC!i+{zwKsVl_`B*LSxG1xZq>n0NpQt& z5=DQI*h%n#Vkv@+rj3_x-QC-H_s_2P7@`(PKK}E^F1|oTScQ5DfCvhQpMMSCcfa;j zyMioR(3uP@En%K{d=L~ep11|!ENtXXDUit5pA@;XCls+&f@^tr>|w4)7gvRT;o|6bmAtOQA)>+A4F97v@Pz z;w<~#A8%87PpieCnI=xHcB95j+*Tw5SW^?L*I#i-0WCBPE35} zyu+2+^PA5YRiBy{tPg_?zZ%zHFS6CNt0hD-i!jv6S-E0wnpa* z%Oy1Cy5=6af937g-Sn(o3-n0i1)eCQg!|!Fp7Hl{=;y@;@^2oF&Brmsk*_zr{;JDR z1ydpKvwWL1LFs7YZP6dUaCs2-2)21*GYK}zJBSN(Vt^rbSxQUA|rSW6I?RjL&?}HnN)KwCM2%jY1&eD zI%r|nRYO0JD{!1FxV6FR|Fg3VNbAUse)<)346J{=pZ4U%Kl!9y{^uLyHD51<2!sO_ zgp(;nu^bB(m?_1e4V*H?R*ne{5O@?jz(B|t+p7Av%QkMqNIt?=p3mk7f^0rYM5dT* z%o81fk0y@7<(=tqm=X7M>ofb4ee&k=V%f+EhK>iu(&>xySI^=dHXYxS0}SYh4z5NZ zxCg(9J-gbxUBTM=4CWC~xO_!GD|!wbP45X?3xI;+4Sv^99@f$y);Ko>AS{A3$$w@J zQ(UoWOFHAdu7Ce~ACZGyl{cO*iGBYYZo^Ty za48t)=cn6i^G8Dqb>-=X>=`cNl_gz-J7!I0L;y!AZxaWFG|_1DO_Q+j{MY9vzq5RI zH|q-KM1;Oy(2O_TvlxzF?rfkh*uVhgT|UOhk0KnSPkGZSAI8E5IB~nv;N9@uR$<@UpLX+=oc3m|S^9o>q_=-e9GiU={uocKseKxJpYdzZSQ z9iy_H59Ws_S1@PaBISw$u7N6)}1Nn?Fy5&AXS9KA8BAy z5PQk&?}3Uwd)GZ!G{S4q#G|94*RgI5BTWWfNtqVlw)lMoxQc@I!aBl+VJX3Z!AX{^ z$rT_(q^*ozsZVDQBo^uVm;yOebr#1-GE<|c%jq*0tzlh7FV>f{I8hYx$6v)Lu*C9B zm=!ZR38V*EUl1{Q0*f1(hlm?0N7B5mU296X;>{29(2)5UR;w86PjuB2*^j52ZMP}R z?ByolYvQ*AC^H8a*vpy1v%xq+fm@)5B+&MbT_@=r$72W2oR!Yh7!Ef?AVroUZL0@H z+Sg+eQyv&|Y-E)~4GO0Jsi6kRnmT(v%4;u#1ClqVtgFko62$`YQ`S0_SY=E==R*ym zrh+75=uA33Ubxy?0v0AL{={Dr3V8z6eN&r@RjN(^@Cd47z$aI&RZOQxttv5N)HO^< z0m91RO?Tw;(eO)HfpW@gWkWb$oZF=$az4}37{fKBco{2O|Edlf@!88ZG?S4Y_!~FX zC$uHs**5QYhpsy%iG($OEBqs(rp&M_6IkX7y6YFIDir<#nv}G}D%UqO&$VuI5uqYboy`=PL7=`z&o7ik0&N zFmcFg6MC5T>NF`=eR5J6UwU{zt7{^EPTj}Tq2WOK%e_ggk%jY+;tOWQL1z=d zwwNn_C2d0|anPWZFvHrSug=E2n)dV}!zR7lwMY_iSGs+IS7*G9>kuhY8EpOV4Wo9I z!bL^W4S5YOAb`$5kN>gw6T-dy{dw6W{65zV@i3b1O+E_t23{KLooj+}Z1sdi#-R^b+ z{4=BTq+(DS)jBBzdlQhJ+Ms|`^aPTL>j2s)5sV#?BmjiCR6e*wCg`=MU>9y5xnkv1 zws=6aL8MGP-?Rv@tM%~{#OsQjgJPw536?j+Ks60=Il>K%KM?hwUrr7$oQB9RJ7$k9 zuL055w(h=-k{2!SU&r!+o%USH|$7&yAp8uV%0yV9OF!<4KHA?JvQ!TimVLyXw{9N}v{xFveerS_I1g4^F!q$`S<<5n|6;$sg+}^;fx^S6I5u6xG|BRSJC;)?Ux8Y&T z?HfN4L0QzZ(EsLz1xD!SAy{7vs>0U!WraO!@I>?ra!zPmE^Fjm5}sy*X!d-5eqt$} zj}TC~h(EZ#zjSy0NOnFe*v(0{gLG^wq|uMJWOnM1;_(uWGkk)Hk_P9XI7(i@=~?Cz zFQ!@gy1--Ye0e|)jnQ?(H_=Y5NmUkchzo5b>pzUgM6?tX7P6iU9;Yw_df{R?xJOE5 z6lW6pv*TX52l<7HV+B8hcE)cdN_-}i3*Z%xl4R}{{Tx5dDv~Z|iaKIbjgLG6X(G8! zm1a;PBWAdLO;IRBU>VFRx3VdRV{vXH|4I+@loGtcfK?% zR{4@_nFo95j_xSHMusv4wl5WzGXhJMGXs*_mVfqyr=W^|*akbPRw`t>fV~*f0)P^+ zE)x*S_%A@IfTEiFZ3fUWf@C@aG_cBePVt?2CeLFTi}CHcpaxQV zqoguUK!`}KpRT|7_#}4;^MKnGX=mm+w`8Y)E3I@`6`x-ofC+3Lz;WSZ5&8w{$JsP? z^pCIwf0g65nqcmky;+`V1j9*T*i=SIhm1fvqC(DOre7C_sFbQSne)P20?s(c3<`xv z1^SXU+}#f2^{$Zpy-GPBdvQu zG%Z(2{{JM}3QvGk)U`aQjIRjfF-&gzP?T)rBP@$+d(R1pC_nTo7aStc0L%cb%=q*nRoCIKo5XR)WOstF-Lv*S_a zxvU*3qybh=#($_p>+8VES9LxD_hyl?RG7OMdFkk)a?@*S(ZlFKp!^a<(-9*3Gy%D? zij~bQ&_t=i2{tOtOsy=25_zEcj-ll8$f}9Iv+F17rW71BwG%CzxwHf0$|r`1BQfaN z%fZzf7KIHAE&VAqVDOIPgNiU7VP#MQrR63pvJB~!867Q0llWdZEQr>{>Fs#ulT((iMDHB)hBaYEQ~L0QL6X$%rY zi#9Z`zWKL7?szYBaSu7bbMD%=>wi7j^SE^zz+*9SwRLp!^YCttCiMkvQJvEui~vp3 z@)r|jQqNJ~_5){5W;ep^Mhg8y+EQ9O>Fjn~@!{yoo|dzlmN2GZ?{le{IRQM}+3dUD zz5NS$L!@|kcw3z_+O^tfB>nK?VhwMHM$ z#eRg~ScYWh>&6Vuv?t1Nz=S`0(w@$qPP7wiNAAX~;O>ezX>C^iV4~u|zJx%|R@Zeg zE_H?x5S*4Ap3#1NWWvlQlne;Xcn?@ej+nYnjz|G}349d23}e5$-0ml@<7w+i-B`I> zIuxk>aOLj6ok=I#tNf67F@D*iqT}C=lz329kcSXQl4z{^>J@KE*e=yDtb>|tG9n+0LyWhWd%^=XyRi!L~yAu zg#EgA2)LhmuRV)SevjSkQsoWOYa)RnP&vejg4PQ)ha_0r>FWHo^VlDsv-4^3-R;Sd zv$Oftb>Z8Q-qX=>TX6Pq{nGKm!9YLqef8z>vS9uF;o|1N*LCXHx*HeCAnxhl@peJ^ zPfNlj@I0ui2QzA4ObO7{dB}KfXI@~(nzcD?exeS=0`UYcL(;CMLE830nI~E=!`0c#Nx_=)o@Mp@KIXKB$2y>%G2AmJD9)WDF^esj z&eR;$+$<+nv)PH-+-4goP5QC`VGm67LE03EA~(C_+kWpXT7i3PcDF>GDF5?>+C=aX zSvB;*2c3C#i#pQqnoQ9%pB@^9Pl&INk4U~oMkN7qe!<_Mmb}==3n=ribKTMVE)*yr z-`9@>)EPKtr57O201p)sBP}AW|Bl39u2p{+Y7;iR$5J>^R73L1zGLl!n>a#gt*rw7 zhl$yyWp&4O-BM9StU0pQfnCK_KQpa61@h~}OTHlMnQ1}K3!9FQxo6u8+Y%$y{skH= z$brsBwjQz62>?0FTr z-H8c8HbhnE+$YA7`Q~CgZy@SDB`5OAE*Kq-TE~JW3SW3EzL;bTaiIh+;Oy;o%Z{uM-L z2qhKa-X*|o?=ZAb>(aLihy{qp;L30zDi$LSt>KTbn&5}dnI$F}+NZu6VbEfT&dd6W zU?)|2MM297c10K09H{=Uzii2*IwFhVo#HOv*Hq2^Xi@+l`MT*^@En`{$v@*Fv~^)D z1}zF1%}!QixJAr?3I6K%y_m?HhOv&BlC&0~j!b~wq+kmQ=RI)UH=t?%A_4Q>0z|vJ ztGH9-zZ6O6yJ39OKieGsiA9W4;|SOK0q&Jy{P{_bfM#*BD?sUCS~)^@pG?aTCCs&{ zc4vj+*)_jC`1h{kwoeHanY-TBg>lQ3m0?ev6m|FL_);eD-N3c()ZYw0HCsNC@ucUE zazOYx$v8{~5`yb-76nq`o{D<5c;rB~dCYHC#5TdXJVYuSE)MxCEqSh~&X`8mB66d504;U`)9Lw5n2?X?@-h=S_DO@Smc7Bn7O!5$cS4XhlnH$QpOpo)6yQ0QpLGS+ z6d@IEN`R(}JqZ<3_lNo;0hEl8;$Jk)`UHo zuWkkDs<-;j%U8Q*L~Ps_pn+ci@Kt_|K*rz?3qaDam9#PIi;}!IWcQ6QPs~faNvhwD zP>5#pcjs4I99AV-cE53Jl)b(l$G0uDb5RhHKwKRNsqFXHW*{Pzc;QPR;+A|g#=B1 zN4Uo)L>lWvMS)UZ4krt(%i`a=l8#~65kYxFzjJa%%ebzj&gcsDX5;PYI;{K31 z*ecc5MRN!&7Yy=<$NiPs_Y6$pjxvq!%`ZtyrDH}snoh`Jl;wb)X2}HnBwIWf6TyaMYj<^zyn!tV-dUIGL4Y0g8O;IkR*;wHuqdm3KKW88J&7*LKymXS5Cm3{M zHAQn41zn`~hM3PG?pciO49TJ=V&02fVxD=vL&s@*HoIcaXIW2#gQ`JX31Ee7#SMRz5U*avk4AMV?Rc6B%4eZTDh>xld9+ zWo@_rIq{bYoqf7)jiLI@xTykHv~Vj)iV%I5;Ydb~E`R$0mMVPGCU*OT)kB@uf$HQUFhWFBscPB|(H9 z9~lx(r>Ev2g~h$qmyNi@-CtqUn>p70R{>@7kLV;xj0t?E?&{_%r|ywm1r63_@zIz4 zYcEx_!wCYEGbvo%qJ9|kj-O8P%b&qmG$H?V<{^f>id?Gqw+A)B zt_V-jUYfaEuR5L zPUd}miDYnPbEsiJ;*zu+Wj8foFV}Mf{8cl4tRL37M@4-Mp?$&>WoSMwR*fljX<0oM zc*?kLPRho^oFr#Io|?NfcDp51UJ4lTYz4)X6KY4r;7!6JPuWkCL zaN}eD6mI5}I3$jr!aZhp_`mUp`JrfK;7~A`|K#PT0;bWrz#k08FcgeCid9 zl6jv$D$Qi)ao+Os!ziMMXa^;Ddq7zrEC5L($K@GFHh=SgEGy$7loR&$Nn%MsUbLl?K z`2QeVjf#ULc`7u_QfD4JV~~N>ji!xKhVVyrPz3TFZVEevG0Paaaz zgEGFdNN>i_SQedv0rBVv`|41jdrJ8<=<}5l01H8n<$5p@dYA#-%a)8>;b(l~#~;qh z@96Ws1%{f52og@yzGjV;@QpM{=-+5u3)B1>_a4Xfv=~06cdn)RCo6V1u$ql(z^TjS zw>2hz;-lgTJn69#pyqttu@6j2xJ+=bA4dZNI6p`{a_)t>7i6L_)}-Y6;gl&I0*lqh z0Xlne&Ww7i#5AMYmbS5EiLK6$Q&jv*I-?k&%gdz>Td%|@_!_=Zl#CEU#=)1u(`NBC zltNyXADNbL32y8SKr%V6ymftOR5Wl**Tl$%$cneug`u6WYwYKj#H~T5CXrwpY`fRF zJfy-`U=u#hA-t4^Q}1x2OauqsQ7U<_09-8#ia?mS!T!F`Q^ECT8*;QOC$mXb?P^*= z9<#(v9(TMYW1vy0-^Sa-ym+vW zjO3GSl(wwiI{!+aiE_jV+;wD)V0jy76 zw@xTwCKS)>wo|t@?QzvLrC{|6K`$ zRr0l+J6p*q6@y#(l{2&4j?&wB0LsOXYCv))4!l38FRX`s?Y81}Mw)%1+oL%6NDszV ziY|pzq_xn95|CfIl3@5IOOYU!amEZN#w3D-$CPVmv?eco*^*ti09UuLaoq<$Sa0O>iDcvXfo z^V;W)@^V6APk2-#dHIIkso%`QM;{((Vzth*s~L7d=ZE0({-!yOaETWAP5M@p)Ya!HVQO#It+>_)HUyP3 zaV4gnrrHY{d&9e!qj>LWpulhDAT$GRrUL_qTTX&rw&dkkDvU;Fm&I!MX_a0K;iJtCj?viUR7~N+~cNA?BetkGkVv~?u@%d;ITSNuz%eDU>Fft z0*q^KtXpr43(@(<@D9H)CyD^Gl?C7)kah6huOFYLB`g|MAR{C0);nLEH(wj7rxs`q zr>U7B@LK``u66w&RIYgpv~)94aI zVMS8rkZZ5r;|a@e*YD8OG{xsTGdH@*fcqzpR2;}O)aHV|6ZhYns$QHWn7bf3yY>DN zq)7J*YPYcl%_!WCZ+IW|n2jpQ7nIKj{JDW4n8q2CM`xXfbDG&n26@U*#rL!b;Bm@! z0)GpbVxf{3O4B@$tKpyMnt7rXh&*EE@*F)xirpT?&Q?xP&Sffz+T*n=?N7&P0Mi3V ziO7}kxnL0W4q3@YjqE&CC?I%f@91FJQB|lp>%-NvD#U0?krN3;+g=H+(wBlU<2t@2 zm%sJLE6^=1!Sj43=_o(=S^S(WHQf`n(!RpwaMtp5`muzfm5p%D`^WOS1W1eLnY4M( z;UEY9t+vZcMxax(@R~)m2UZ#30l@2XiOZXk9-8PdV8jN|_4iG})o@%<)Nl$>a^~8p zDsGnMs4kd1LBlz`$%@tHH{CV;f>#?hxg?`yE*^%`i`cZxj!Z1UDjW8Z>C4lM+eiKN zl!S>3Do0#>M9Cs93>|zX4d{~LspuML+HRa;ShT{hVgH<1uvE+i2tQ9*0AeWU9j3WX zfu9-7H(qr}TuU&tiP9u|Dd@;;6Qs8Z%GtCwBV7Y9T3&rw=$bE87{5d;90HzJtQ|lt ziZEpGRp$*=>ow61hX2$I(|c6wzx}@Mky8Gr`uk~xwdqKT%CEejtNYyFW}H!*>->cz z(6>;>&gKOq!p@;kv94L*2;hn(@i>A*lgd`wxS`ZnX$I~che47y-%Xn^{@PjNHC`By zp)%=Sg1b{_#1X?;Vp1q>@-epc`8BYLdrP^7(zq8V6HtzXmJSYqU`UTF6q#G5K&><=AMN{YyA}Q9eO@ zdhnm7E4~%#(W^*;=?h>gMITrm{G`{v833~3%>b-El7h77Mf_dPAfG9 z#;ak9*HRGG!dI2wd6R6;DgH>Jua%8o0H2XI2fUv9r)a6QSp#apRzcVq+y0ImGSWBI zzRyM;)!CFJ8IipqJ(vSSicxMX*g_-@3`mUAq;!<-{D{U8j>O~f2*r*QL?2^}(BE$Y z`%MdI0-FoCR+t!P4Mp>l063>X;J;lqF#CVqLMbnaKf?Qx#t-3!{XbpyDPrJ6+TJZN zCd7UrLTwAZH;pHCyVttN%QpeHw{$+qkn2?;u&hk}Xqr8KrhFm3FPx|Q+GR`z10?f* zF>-%C`Tus#-Xm&p(;*@VYWnZJI=vcKuxVL(S&CZ|TgqK`>3F;d?wW$tvUq@Ki2IZ2A|CFlrM$JFT`L)y9|63!6T_g#JQ`fik6GqSfz}Rqu)R;c{w3H5Y zTvV8U6w*w*z@b|c=TRT>Xs$$l-RdC=Q&Dfg$4`TO>e<~D`3ymq{yPRJ+c=}`Pv&0I zi?hGxEmq%6n-)g7Bof2ePkO01oKmp8}7-P4aEWd@D{1VQ07W!XQ~(5-%~V@ zrp<_Q!sE1!=v{XhQvW6?>#<>|mB44Tkt>SQ*shUN1G!&fB!42nY4{Bh`7q#nRsln(P%hzcuIKN zTJBY=pA~D#iY0^PJhga9*>`%*))*0RkkJOe)}5xxq?n_W`i^TLf)Nm`BUxA*F|bQum}*&2BL{ak<1{EmO7c5WfeEgU=HN*#g3-Pa{+lhs#2B;E;YC zwP}T&k-B_gT`WzarbSzBdckEJp_H%kmxYy<7L5k%P`707&cK>>%U8v_%K3J~^V*%p5=>En(k`L&jCzG0^$)wl%BYgdWRQtn+0+iT}B1hvqyb7DJkR@Fojk4#qOCl{{19 z7LZTtkTBbKl3V%nxXNljk2_8rHSXE1t*KoLENR2o^-MK%1jD>z1ke$5a+xsEwh~M` zFnd%P=s!4~Xzfr!^(?^MiBBiZI=XPyE7al2dw5Hv8!Fo@2|jDQ#yyXlr8eF!&X!@N zPXuQGr+LKQ2~$@{0QuJI^yj8Du7O_@%fORh67!0(&cH+Dy2TsLV3w%%{0`#HH^k(J z^l;V?$mZo1RF8*b1klubyX%#Q3*}$6-u%7d<~p3SF7eYGShqC5 zS5z*EWEfM=zK7P}M?b(bqSM?&k{vCbEMrAl_YS;5`xSNKgbGJxi=l8gDPLT|yOOoG z7EE@8I@>*#^EQlzi`wW`C_`9c!r>;;4hA&z>UyQi-K|$LflbKjzfyM;baE6#XAVqfj4-BfB@sl^L>u$0^gN_da(rbP-7|Ib-umY-&#AE|sfnrAgBY$a`Bg*u3mdyq zso#RF^9%P!6-0s4m-t^*aN{oP8BvR?Ixm#Lw_@?DFCPYA+Zr9bsFtxP?nLLl-?9He zl<4He5Cz9~+pyoAwDJA$ej;a9tK^RA8?62P_}TtpubvlxVe)A(3PZMZdo!c!?iU_d z=L>|Sw|9H7@nb<$-?6S++A1i>G?I`q4keEUAqm|yh{RZ5-!Em{JDvFw^Cu8msdm__8O*_pb4c2H(c&N~}e3m6BSg zHi#J0WmPl!9-CDAtxb{S557O~E$f%q6oJ(}BX>a`piFL3===9TK5;hVjUZFrsbs@I zZ%YE!n%wi$gt^Xj+Ho@!y0HjY#WgD0r!9ht9SY4*$kN}5oPNXD<>Sdy>s4j$b=;xM zCu(~)uw5|=jM3!H$uSBKi@PwTPUA4NfJMVWFPg7hQEJe`rpnmKRomuch|Lwh&{||X zRB1>gquJcQlSPq%F^pCy-H4&3Bw&>$6$JvaF43HG5lXOa7%lTLP+qJZUUdTid0MCm zGwohwY*Zwe*HQVtVdjLaWy>*TubfSPw zMipIEI)o^xA?d|SlbXS!L_Th*R;#K3PC#k%ADt2{tP-booH$+Si}TT8P2uwgo#a@n zAMdRpo;h?=;E5#EVk9~#xO!>2#fR*9XM9Jx6SYreGX>V7?1_ExU8&IM?fC#Jei8C` zulsfgG>8X?U>cgdhf-OlbQ*izxEJ8|&2F6(|)^B#tnOSftCyFj}1V>i~P>97(n9ZYkf}qZTX0p$}n*sXRllF1G&uA0nA87MC zhFt}ZZpk%?zH~yE5-k+B@5ex^Yb=CBh=PT3ZjR72c$J61ZNt*|vD@M>Y43ov7Y0#T!(aDF*VM zrFd(zt(!m4d-vSTr$tGc%$+W#IcKp;eEpxmGR}x&?bESLlxDJJPiGyH4aMpE%XNMp zM=iz)9?&)Wj8R^5WUZ&sYXN|Lf0$T^aJH}(hwhy;wv{=ROC`sh1wVa+UX^Wg{Pp69 z)%=xs0-b>2m0RN1Fox++Ht|otg!SbKq|Ve4)Ggwl21OvzmU!v!(yw(MdfV%eP6zWd zmE6ooI;A{V3g(0gp%bw1ck}cgnAp;ePukbH7_TO8|iGDYG1w$7r*oT zo3+JrnVVQAJdnk%um>n0@%WgY)qPB30sL_D?0t?+;+8rYUo`ArY_H306Xw-&gXQaN z&uhQFW-{?|Y21{hJ%n!bf|r@q_9M}Y+4mjF=&-etrpsG=PaFSSi2roa|4K)`7L07@_vRUt6TdU*vDHh+Ic&^TJ0yR$#t*;@UMdJXoDgn)|ic zD8DeAtaabX44FqbsJEIN6Jt+ZH~m1{aah>U^OIqO2#3b|_@A%HPm9i#qS%K=mJ&0{ z2>qXa-Eazv0&u0JE3d&9|qkvW#QCRzg++J*ii7tvE04JNHnh@=R@ zFz2OVCp&-zyYUYjM54reZUmKO+*gqgBL`nnUQH}70fZ7csv_G2=BC3$GB!wyO_{2m z!=c}(5Fg;Fhef@tT?wKbfU4qlLMeS`M8!S^UHDjcisuR zz)(BrYpqtjQ|WGvPY&`5`4q-{D|Ze?76H4IsG$vd~thlVDAYv5_badf?&IO=g4I z7{H*gIw9GT2%oFc#+H|8@SgFBr53)RQIU3)0H8X0Ws-8qWbpdL!z)O@lqRi2a#RsX z(?km$#5ogcDu5^w7~UiAXg#x#=ZT>&A_HZm+1jz8)LA5eic5``NRwgNS&?)OXkR7D zX$oLt%U)B9r1{YTd}1mDd|;l+?Ty##?XGVNDd|D z0(g+lY^85}$dy|?V@PSs%<$qX9y>t#$R%__7)A9T5R^$nHrLSL8R!ltHfJK zWNJsF;isMT>83Fz0#-&A(x72DwjK_a09MVJI6HvP_o?%YfTcStvr<59OKOdQA;T%i z;(goBl_6P}uKgcGSc!IyTSK=NuWlV#M6-&4>$irk>!Hi3^ZB7)fS&BW)e0={)Ecvg zrMBffy`8U1Z-=_f>FJO8!WiGotW10X-A*p&*U}bcLN z+wD7U+G`NXzH0?Csu2w5j9|lO)LMAXqn5B~glum2O1+G7|K)y|-5JgCvE+o4ro_Fk zdaku$)~4}qY;~dZo)6S&(uU=k0hYZcLXpku{f)tJMlcpNrX}$xBzRVe=lC=$a;oKi zIdMKNe7U_poY_|_T|6+fUoV}Vw?u?x(SKd~_PjnkolrFNwBIoJdfNd6F38Ozq*68q z71a{i^ ztVq|6+iK?)t%{!MjbNE~0rZ5}&AWChe;oyV8-cATrr1ECsuVMVj3G-T68H_8j-Gd! zfX#bUuztFl2;NN=R30c9!5#y6P+n*F?P?7tpJnqs0E{?;qNuPyi_Q(M*14 zK5nnD5bTpnqAH;}qGIdcM=`v;jHGa02q(JinW_Z60-slt^W7cW0E`{f@HutE=P)+I zyXMKem<~AIn07*4qM?zK|7zgBl0Zwap5@qyq#V0k)RfQ z>&=I%XX0gNVn4ZBz-%2kMnzR9hBb=Km85nIn}>PA^Evim7bR0e1Nl&#KWyv=FmqJkzKo zXOSh^Jb1(wGsv0pPdqJQpY>XdkWs>VsyLCuua51$HaB?0F^<>3Q7HaB2K|VtH&JRF z{=O)H_@4sgd5b_+Y@#S}$)Ce@(*79l{Wy8v`>>7ILDSqM`CCYfGlBas34RCIoLFa> zh69*g3~HvpMT=IZ(H4a;qC>_cOu_CTX*i;gvO%DGIu#=*kMA0dgf`@m%}^1$L86uynzkf$D#=EN+#9k(@tN8=D((!dleuf6C5RgwV``eH(stA%JxXIiBCKI z@j3hA!bT5=GtC|_7yE}@0zTx8uK#{~Q;^rW(Nfs27^wa$HvK;%9eIDL1;c6AvN`9s zT@yE~xXjtZ7CiBG}=p4yoTPFT_a6%V+$1IR3KOI#dcazgI1gpT97l$fU-2hJK8qY0CSahfJY` zAP|Q>or_*dlrHjKHsiFAvyzs4$%btvAuoT(|i+hq|MW zO#jTXr^h;Gu*clXC86h8dExD2W-OxLrFjK5JfUn)WKj`tzfk|ZeZn6GO z@lA$+M0tLL!z4sX-_qa%ZitavjplUQ9UM-@s9TmB1ar2W{I@(prIzyU@%i_S} zhXgLS7S?`USsdrKc2A0%Y2OG?Fq7QM{mpTk zH}kw$I%w5Gl_mSe6b9yP(m=tIuZW>J9lx(JK<-)$^xvh1#_tx5(SBk^%6SboHWKod zv&@EeT^8^Ta8IP}s9zcGd`+m+Uy%dLX)ZuA2w>ZioL=xMLeWv>j>YMSP_?e>NXr8uzQIX)Kds*(xC(eKRdHlBGnvY@)YQ zjw*-6KPcepJVRv6Mx?kpPA>v?Pi10abIHsl&t;&}q(F77wk8FTMC)<1i7V~jcpGCn z8FXn!Z|0OiP6ac-mY8{)5ltO^erQ2ed0;GuF)}o-R&9>jS}gJKP8}yX`U@`eflx zKBZm43pPeCsud5wA--GRTUOh2tm)D26})$D#K0$2}2?>i)=B*NYJQIk7!}znqv0=0`Oush%(X7?`6f zw)X`w8$9!E5~dvsA&6iewQ_kk{-4j&K#Mg-|2QK1HsDhEsayA7OxXddWvUN#?hTc> zm83F0mt}ui9LC1sTF{_e6Mwy+L*p&f$X@;7n$J_+?U$r7v|4`=f&1s{*c55oUBKAV2F>mbBeOaP)mQ;}PeuBV?8|bXbPew5c>9>yOgt*4-Bp|bt%Fum? zzX76hq*GV>(!@XO{DFpRo{t)y2!OP&Y5&g*eu_jp6Fe|WN^cJ}8ZdLp9_`PN$(7bv z^v3@xYGw`LwDf|6z0Zx1sT*M3;9T(WnU1NS--h8Cq)OX#9ZZ4ayq2X6KaBfR1c45QoI=rom1G9GA|-FluS@qr z->Tj_7{cyXD#4y+?0%k3fViQjdfH?3zG~|MvioMBhwqLINdVXv0(IoSl>vR4w5X*1 zj9VtStCp96^PMFFZfc=nHxnrf%MO5Vbw4OPY2?#o8isiL^-9b2$N7!gWv=W!&zX4r z$5Vl|8Nc~sr^#a>lPLNR^gQk&@=iEN0-En%NaCQy8K3@TmsutffSO_F86jGllqB)K zN;Fsz#kc}X8IO#@^3t7SJO6D7E<-@l70InVF0#JfTH~rnL9L}?X%ZoOmox5?tkXP$ zUc?hw-Zn_>8G@JWhARScNk{>$NsT3^rnhrB{F3&qFv?=Fl1h7Dj&Q^wgoOY^+8M6P zr-z;S5Rng9f>dbtCw*W-%jh;3lOhU>LUMcTY7uhWEQUWZ&58eqP;U-nyB>KO+%fK) z7+%oZ9Dn#_h{}Za+t!TnBo~@7p>1342b^!Sa7e!)RgPmnH*IB>es209%fZMyb3Tunhi-#@GsuvyjQZ+oq&njtP47*&D=MII%!xQZD3dfaZXPefj z*ze@bMu!><04Zc}mYu@vC_v@P1WiU&A>6JreOugAD><}_=N*CLg?7KwwPbg>1UUB` zb7x-|!^ukeVfAe%!9!IrmSk)n+t!-8YH2I`;AJcLq6q)zk$rLNZ@lB`VNf;l<~onQA}^t6L+`JNTOT1P{VUi zKdUR_9?;MJEx$014_t++8yg(tgxk$@Hu3&eA=y=jtf4-4bDzy zD3LD9p30^QTh}&(o8GrqMw&Jj>L*=R;iWXU&{S7|t)$JH6>+SpE*=>m%KS~~Vl7)u zVed5!Sa+fV^H!n8)fpuhO)!zWmJ0B;b`icgc=ZdE^I!+R^pBDyaS#$-k?a;cO);#2w@vvzE!4vDgtuSlqaDP%NzMn<6xz(X&-P36ObS~lgJO0o5 zV%0CTs$Y{=9(WzX$|u(cmoQBz%lI`A8MIBT1g`V71`C)X*#mbT;R%a{KWWhahpBV^ z4lC-qb*#pX+1N?L#$jtBm^12d}2 z)i|NwZu&%TAbpm~eNg!BNXvaOXZtjd{m-f~9*Fk-QD3Mgz3ocT*{AsP;Gf7DCT;V9 zHvd_0&C30@@aR0 z?J;V8AKBe&OZsI;2-98;k|<{SrDmJtUn2pmU~YA5-H}G9*T!)7-tmS^fG;&0>EXWmR+o}ZLiLrom5*+T_wiB_`W;GL0~6|dJT#8a2anh4 z+lEwzGb2K9^cQl;cCUeb%AZ|MYix}jslxEVzd=ADeRR@@F@3-uBN%%VyU4`qLm$XM zXCukIa)5uyXWNY@Qfo-j3oBG0aA=4T5-_i)-!Ur-5oCzjN7g_b9A4!%(~6ji&9k}o z#Ob^7R6EFy7zl1+B##YgUPJp^2tuc|t4O!1LBM1BZ&X-sE_yH5R9IUXf&UUc_Z$Jl zc05ZJTG{k~uY1gSdZ$uExVDwAjPv@tnd1&gJI%k&!DMM(+;O_lRce zFng9&=zx5__%!h61Jb8g4_gOxUKi08PMk;Cr=cT1i=Z)S=g~1wDlOR}~q*-Hv$xi|@{x6|WMDQHM? zol$s86wIA#+^eBVFHC4TP_B|3ZZ5*ZWrQ$+x-R+FuVMHr;^Skukh|Po8ENzRlZin_Gvn+UXe%R&5( z-QDgc!a$t$r?NP5h?nv?fs=@VS&$`1gMp2u=P=-o&$Noe(fCWtdHTqYYtq2Cc$IP4 zrC7+d?uTs}SZxTs04J>*hF#5~b?`C?!=1mf1efS#U(V?Fqa%=c-7qz07*;Jj^hyzV zePa@bm@H!%eKHDWbp!=AZ=@Q`4K zhpgmMHa#v~O)*CmzEXBa$M1BPyAID4`eod}t;~+yx>nXS3K^IXihC>&jx+qIGZo2| zxN-d*Z=R@niE0|cOW7NqVnE{VOD>*g9m+Z4mhCu9iidhBy#Ln-=GEj8fO`~-w=(_U zS}W`G+|uRN9d8r&z3#~WbYH}GPg?uIk$8FO#`U^j9+Bf0b~e`Na(SDEj1F*x60= z2da0<&i~bvyxbXZsT!Ka{$`@Ah8ByWjYE4Dz9DOUEt*|FJ$SacZT>amj!x@-@ntIy zfX2znXFRq(42@@=`;P?pDVLQ?d#YL3%E;b*4LZX0Ri9EHQbYT&Zxb? zTG?(?9rgua-&IN-dR5@cAl>2;U_1YB&75Bv@}84Quv=LkQ}lw@hEg&mlp)3R#%3e>)q0E$@?3z^;h0o7GPPdPY)D_s40sDS;iN`# zHr@y16zz`hB#4{Cd#@A$zyDUDOp(u+>&9qZlngIYx1trZw6ksMZm@mYLQPdGEDTI4 z$U{xOo(_@oAp7|ca+#t_v}OTro4>l66lqXb82i|V1h~$OP@!E%HLasXI3mjY^Zx7% zABHeo(9w5n^0H^-K^SiH%yKMXX_eCPfu*sBo2R z#<>U|jIvJXg}NTkh<>dX1e^?)l)I7IwPGxaqahZ|yew_euEbjo(4(Y|dzE3+Cv`2uo5c+0 zE%^j1`mRF%IFB!JxRai&m&N|B6}l`(g}Jas@p?id;rc+h{5AqVPDlzps!|g(?qRrC z&1q@UUSBp5gHN_>c^0c%Ds!mgv5!+qH$_`u*&7dJ3o4$U7K=^ zXFnw7IZSp8#6J$A-h=w|WB<_np7`DORQYB`WVuDshwPr-tph zxIkAE%3*E^RG#2tt^_0QOrs=nC=vGQMPj2(XLl!Bn-p0b2owU11X)?yv>fI!nO4Ry zg`>j3bzeao1CxQZP(d76IGfuO5K8(__62j8hT)Y@1S{(^d<~Lw2II)ce7*APi}IR* zjl-HjU@+FLR#cSaJcTceEmlmS=9<}p#8b7Hp5{S5vLD^Th~ydG##(hVl&uzW^V{`g zea*B7iH&u>H=K7j@1^PR{fE6w5t<>cQIariWR1W zW!a<0OZQ$vPK=ex=OJa)6grir$xbR?G%G3}057+A+lR9?_>URXR&^6uA1=4Q*~o{T z%`s~bX_`Pbw&xrohMy|}_w%^S#{T&@PreTCVuj84cm9H|WW=#m%Yjxtd}N%8^&|a- z_)2%xgCjVmr;X!L1Ie!$q+z|<=1ZRM)t;wSADjQEs?Iam2{l8o2D9ohcA7-fb~_w} zsUl~YIPiN@W@ z9-Hu7{w?q)&;U)@&#b+>-SeC4hxzho`SGrziP6(fuTFERX5I)M+=fu)))(|>no(ZY;q59_iu>1B# z8+nI1DdETaez=?TD2_w#k#jI}+N~Yf*rQ@ZFAptO~uh(KyxJ8O)BbRfKrL9X~oSY0G4nP73z1Lpuz$4_>kk z(Cz|DB~=;V>YGn`g}V-swXsC6C0{$Q&MIA++e+U4Q{eyXvv?uA*?U>$@FSaEph++@POEPB42 z+9Z0O^~u4QVLnLI5SHH`m6+)5Sbp9P43OaQWtuQ)CbPC?DzBJ&2*WOBpA{|x5)zI- z{>?Z^7NWC>FR5=pHEL~p(M--e!kQA+F8l55E&tAcUyQyuc^z8KDl;b|HHb|6cpXaX z`j4{c7UG9#;H=(fnh)^Wkd&&u3;L#;$%T6 zS6(xWGHg1>>crAR4p`h4;>m&WyxQ&J6(Iw9#2d4Cox>@XO92EGxF>lj?eMj9B=0>h zJ`0a3ZX;$Kv6mz+b-ohBhJc*JVD=~`NC~t|yVLdRm^f|2#q5eRu@b=a&5=S;(aB_N z-lc?OCd7hSF-FZ%Iu7?CSEZm5`x7UPQXDl_gVqJ6y#|U~Y+@LSYoGlGC#>%jm=76qa^qh=__yvo$q|bh z=9%bn#dlFRrfHlOEf}zDTG8F8RmCcJp@SYQ!3L6y|3jOP48cLaGeK&okj55s8%XG=w`8 zkfv2HCl${GarENcq1=w1%{RI$7j;XHj4K9FUtSwx=yiP~5C%X9Zv$uQHFMJSWyxj( z%>QBIIZ;j(jgs{~50gRLKf_?s=5*L~Pwr|UBAQp6P;4+P#W2#T zjhj7<;7a1gVlpqWkoG38AG2MGv`>aKsM_fRy+}b*4O$>ml3v<%G+Z8}z6(U{0Xi5X zFBoAoL2sWxI)E(qS`fQ-s+SW12PjK|zX<#~oP!)LzXx7@CD&2Ox9RB$LWjskqRG}P z^Vp@n+zXr;-rwlz$0*ra1!*QOJjeWglzB>YOnGx4a#|HBPhNN8H&FvBH4x$VBrMR) zHVw7hjvUWu^|{7s(}ruV%g|$k?&$cr)7r1i1a#w&mcYum$n2p-Of&MfOpRtquUQ_| zV49RO>k&vlmJfUaO@cS1d*wd(xPjO_R)qNXDl{X<`AMn^ z;VuKURsdu>K6ILKZBgQ0UrI9DRMWwRjqW{_(XZ|b*=deA=+j9P<7Rr3wkoM69*a1d zkd~ye1m#Z7{>Ft`vXKMXo23rLteLfi)FHUMVU7o<%ogR?jzx~~z>2mD8^ZQ$@p5%h z0u2wi((zXa-56#uN>@(8E&6NT)NRG!W=>nZyd&pK&m@=Oh*kDUF(?DIs{M^qmb`=Uz-LyT;G>4tz zKvs}mv^DKWV&J9=r`C?fp?-1M*|OSzn-qp z8qeTK3Yg5jw8eWy3}mJO7_Pf;hgJsJ0RrJ~D#P5_NVm<69o=Sa@lb)L)Mu&jqmrg@ zF8>P9X53)<2qh!?O!v%Aw1W`uOb<~(0s{(qUlW(E8?SJS>9uU{1VgbkraJmDJF8Af z{nxzJ7AFWESQt91MlN16ojHT z7$F0FlfGt8d@IoJo6b6=A3yDy_T{`b6{F{TWRgoXU;``1LZTsFV${42@$S0L;$0Ok z0s7Df|^jl6gE;1&c$vQ^A`3TxVQByDh5!lfd1uk!tzjc13bhvR?|=9C18(7 z-KgZEq4T0fT|_J$VKUeY|26J`Q;NMF_4nuFDk0Z8by-6A%AhFCsn;F*YktXdXxpt@ zXJ>D#xoHJSS-M;#QhBzVS%$wWVya-e>%YI(8N1@)3`O~iS2uVnb0tGGQrpxiMxv0P zgqp|In}HrW;7YgJ(SG0R{}sLaF9O&-ACoziu7x~JinW>cqSF~#pLy2yWw-&EFx=7BK}Z`xwIoy{DR21BE!oOwyz5G_pPDphgbbVsk0D|Hmg zB@+!fvvK6Afhp?evlA~5^shIg>*u*K495cX;N07-QIcJ?!)WkaKsH$K7I4^f@OmLf z)evs(K!2e=?JLa31X8&Pz1R0*Gpz#g4@t6 zOa?nHGZ5~?Dj;v1({h=&jYh>s(H6{KVeErVPOAqXIjWo-jV|)06q$R*#~be}SsI2p zR&Oz6#S0*yqW+z!TM{lF0Os;ICHBwR-Bn}!6k%WJ6FTaj_bgf_G(ceRfe037d3ye+$<>Isu{ z6toD{Qey=pA|@fP{oW-aUFr!^J=@e{Fa7vZQ(k(}&wHVT&IpD{bL|C^(7jCR>lK`n z*PeQVn605vdkBa8=Ykj2W{>O^QY%o+R zHsm+#57A9{1w{fb5|8a!VU zP9Q#+ExpwSvee6mw<#j;`C&b=HU!T#0W&Ht;s(PAZ)N3~*0a^vw2TseRUHnTOi^db z|Jo@+PQ{v87_fR$ep>V3m{A~;MlpK5V4tfcH(4_-CQ}@_nh4ema<^XB4p})Z(j;>6 zE=Lcqa@yyZo2u6)IcOz{qUB8fsbFi;e!SvVV|0rAn4>!a6)NI_cK-H%mKH|*B>)-043|xWLdaMs;%dm8rYdL- zT|O-fBZjx;m4HV@y!hTk2Gd4#|_LFb(zGfUp!5hR+kLa2xy-4%_8V+Pt~ipJ!3$tgSyhTfsjNTs(zSC|g-!gp)c<%Ukl?_9hII?Oy4FEDLzuuf+l z!4M=?35}|}@2c%DyhWBsn=%Al35pGZ=&_0zlnLTUfc6_5Wdh6E*;7z_>gJNz3wwcU zl|kQ+Y{%k;TbgyppmPyj#y&r9IL0?(OPv4<1R$?7@OQLHBwd$JgiSli7>;4Ug;`Cx zfV=qi0xeB`WnHtJa1J=?BrSZg}iU&QUT z+VkHm@7-lmtNe_)=~+!&E@=9-IcZq_?`QGobRTI)51#Z5#4O$Vl=LeYSsA-cifriE z5C43D@HlW})xNt2tC!Qf_|cg|VM3CEg*%74^;z_2BpmJukbEQ_NPwM}9ozw7Vw$>Y zo~>${MJnSM&e=O`x1Lv=h9s~^5HuR_d>s?OFy-sW&hq;yDbY4q;v$M{b5MUBL&@`x z3{`DP(a>036f|n<-YD~Xi_i}0F&AoZ&_b$H=dXH@P=b|yg`NIy@RKJhvhr}>N>9#& z8r!|3RcUg%ZxR&-4glq14PKl%ljtIGz9>!{Rt9bcr|AhZ>dqo$5yqv36wa(j!HiR{ z*vSB5-(XhQ_ysWjXw>n92ZNWH*a+dsw3v!Pk*rO`Jl$#H3})F)AN-H>VKluW<7j9q z=PUMiGs!+MwA7yiO3-G;q%c?CLLC zv(zx)QGUur8UVqJECgnRNd<(MX)WW*m=<(G^#+a%s>e2E?or8ws>wl&tStetrnGPH z6K9m&k-^^t(b5>v)qEGq?iTZ0`T8{0wNBtwW#K(rrD~mZ)*YlEP=Jd^{cmr~5OPI4 zF6CqeWCl})S>0GIP0&%{NZxOXsO^qm1Yz?r2BjgzMBqFJ_R*wCkkW)`2Ql!cmXt_# zUfn=xaO9SjX&w?7sV$UV#e$z54l5e9QIz%V4qia(Xp;R<54IG@!7JKB6!lC9(Z6O% zGmHhA4!pm|veBTtJcLf@J2ow0BXiP!efhsO?siEv*1b9!T2V!YbmOvNDmqKCR7hUkq3CbH zw}AuJvGBKN<6<0B^K}t+aOe39S*+G?Z)mgkYqCwGec$L;(~TyK(jHBs-;Gk`Xj1NT zq$;@VDRCIOfBn94Ecd7gPTY>5YW#E*QQ+c_)B-ZP0yxfKo++E$N{9XgdNT3cFA++t z&nGUICiCw;l$@y*_c`&>k49bh@9euY=aIZQg<7NaU`Q6_e?0x5_|57|b|onBa5?+f zmlR{k2pg8o7-1Mzz(l@huxCX@=a)~Cun@~}CnkxqNwSS&5}5O*7R5p}=&G=9@#hnk zj~*zokc#LNw}CO%5Fx)A`b1r=i>a#8A)iLsj#P%;G_T93F2>|O8!9^u>pVasrv%MO z#dc|bpa7;m2cjEPs$Z>L1;V|gfe0u!MJ$T`yujdon~F@rQGXS3V%8wT(WkW1 z&=#>OjMfj0`zOQ{UBSHb7t{$WFa1}Vk4zuBx5GqZolvCz` zJo|PysaE52UZQr=zV^GmHXzOZCt zn!M^>H-GQ8t|7Sw2}fHt<29iCM{*7mUv_PN&&vF;eO5)~#2NA;H9*PbS*=!+TxgGh z3-7OLdHj^#q7LH_L%d6}XyR;hwgm+zW6 zlm-{p_*y%ys|+L9n#jhPw$E7*Z|YXyy`qvVvJkxVS!1gPI>@R<(+&LIlLS@G{^RH@ z-^%7c?xbdyh?wf<4T&XyRnh0SBU;!|0CW4-ewSZk(YqGNdrj3a46lNO3 zV{Ldif>3m0!?*kHFwK1dHIV5WeK-8yQ>d`)K%s{0kke)eZjBP1@lK&w^MUGW`07Wg zT!p`tm}u**q@3~&)%Aco2e`l6ut;ZqucFY@skXY~Z|V{??&#)bce|nzZ8p!xLJjjI z2Z%BZ+YLT>zsH9#x^>Z*?pan}TO#xPuXz%48(W%bN??pQVnA`x1H(BN?lCwKw2f3w zBl^GNclZ{D$7?y_WtK|>?iyZsouW)b`WA8Si*cD&!B_eH?gU`q&(N(oLjU+w$pU3y z*_;2wXvumukB~$XwMQW3j@^UzRYx)F0qS@;@k=_53Nx+@$;i{@R1stE64z2cwvalU zr6-?|wQDL?+|RO{Z`pK1?0)@~Z|BdjL|x*_Xv@B;AN%w;TZu6Py)Qhb*#%epEs|8e zqAtsqpvt9M7&*WJ;?8vuS5@1vd}y2RlM9v`LZ2^^U#9nuAY7`-fInQdIJ?chFQTTP zc90g1#*mki)W}L88AHwY9{s9ln*wbE8#fmr2=tvdwU88z$h;Z3QFf=ucvoyL?fKNN z6+F)`t?M59ek22EM>HL1+|9cNT6A@jt5K=siC$0`A`?IqVS;Nty>I)1FTmh<0HtO* zGoT*lIp~cTcDccV{J8Ov0W0z5`%Z(voq*$Jpxsd9U$oBU;j-~-+TvX!Ih2X!x4S%t;+iO&|l z)`Jd1SNxwxJvj5vpGg8$prlE1{@CA=-0*lQzL>mU-0UWlkBct9?oMYy!E2u@aYT_n z^%|{+RLG>*)e}GAv{W_SqD+hJMoaEBa7l>_OUx<3i{NrxX93h+0n3+=blu>E6b!H3U8iYQKeGZ zV5JXs=tVL|t3#q2cn5p51tPY!j%)u6#J}3Y0i|Pp zbaZYS@J3SWaH>?AUP#|mUsDcIC1Yjh<(sD_>^UrKiKKFjT_qv~8J#31w*F2$!#nAC z%O`79+#1;C)k8D>T=+ph2%+pG)w(RKRL@8$+Ms;%P*0s`VLMHUUO0uH6G z#tk4t(;W<5>Fw|PUTp5Ju55bJ8`}7EZ^!#1%Ruj5+4I2lnIRw1)ojn6U7Q_--sSAg z_PurMQjsajN{sqh%|FTVCG>0Tg5#b&jqVdW^3CzhNs6gHOjELXuqZ!sK!%#`IxA~u zQwN*PE)5J4r_m&8`CQe=m3Ekn;5HtLC ztV^1lFP+w>oil9q`E^82?Q$v$Z^|e0?fs-p?Yd}oWcv8cTyX|P&cu~vLTqU0vhbl& zW;GtQ{Rg2;k%ut{A)!+$AWP3s*f-ACL2Bsj*A<(+x1l(8_!{D{czVB=_4)Fvd&1Dg z&EGCdCnJ;K4GweM5++|!UzMQG0@WZNC0&vgb;}mQELPnGo+5mZ+{hK0R;+HdHF#w4 zcJ_H7?Y8fjHbf34PAxcm;B1HX>gKwN5M#4l1CQR+HxZoS!0g)@a1Dkf21|L`*3Qr0 z{ZZ@Hy$}z&`uq2b^UaANuQ#*SnVc>U!068PTFu_P?^lHgBnt%94V+m!9K-5U-JdS+ zznvIzwrTHlA$kAe;^la={K$DNAu5&H1t0I~mWJ@saCAxP)HZGEeBbbqv!{2LvtJB= z4?q+qfWd{4>#jlq2#5`1Y;#Gvk!!GP{8=84P{Ql6nGt>2 z{#G2lptNlhMC6b?7plt=xkZaMrb)flA1X?g*r41T6USZ}wJrP}6webj%cS^#CF@MX zn4pjzFr`dD(y=jG{F!8>VA8j~;_XPcs#$5$Ay=7DKiZI9IZJ^gkrbRiR!fxQBg`Z; zM`PR~VahQ8h~AXseY|hq8Tu^m@+$e# zLe>Nsc9n;D(-%KTZ4eo06;d$7^b`JDigz0KadEV<1{1ITCniLDh(b4{Q)!joXJK}? zNW$*R>H~WBnhsykE`Z+yyE$W>h2SHh)5lQrx|MVTz;zk_p~Kdf3epw$`fgPDp&mm^ zmSwE5&ybo{3zl|*mS$f5@&_>uGDrn2jsEnTyE)E7HvY4YQQzuu}h2yxxKjVW=O?wZ?l$P<&&!2*&{iA1!mQ!I zF%$V415ya*ZDze(a8weBWrBXEqQ{Lw&7;I>&n$J7>Mk;)N3kp#n_0MXDUZoZ% z3WFCekqf#Y+#`zgftUFnsL3_zsG1G`)1>A zedPG;)$KO?F*y8m41`k4nM+5+7iE7TAsDl1Kkk&1PcOZl@A>j<=kPUZlBaO2R%bxyLA#dn{bR<)?rZ>JY(MjTnH}CxJesJ@hj-YOL+uDXTS;`Lx5) zG;jam6C7eh3j6=X1tdwfGQxo|e?^-=(4r+NYH@#QakV6(&l*uWr>c(luFO?ynnC?R z3q1=F_7a0zAUPmwy+E$(CT*jw19m6cxDjyF~1uCgUQ>vxnJEUtWwO~J{`rBC_&RpRk;}7Ir4Z3Z;dj6ig^t3R}zRILZZUTJX&qYj43$Dn$;F}&+ z4;RM(U8n^GSev&%K41FK^uFuz-v9V39+CJmhO$ngB{q5tl z!2O2DYD#J$lSTAY($hR(;leNillm>bUW^b>v|PYge>OZ0Ef6lwe>=X=Pt0W#q}o(4 zhSMyf@#!S9^aIPF!j8|W`|51t21tl zJ9WK1M{ql5mZY23uDBeejB~^KfauC}=5VX)CDonf*|R{blb5;cOltY6_QKf586xd0LDCW9iho zsJtpHWX8z0(E`kg;Mtn%TjliU_wWVQ znQUPODO-KTMWy8tCNB>=UWq_^lV1P%=k%VI@{>zp_7QFt#ogzH_HCY>-i-+0DjOjfQqM<@FGd7_uY*rs5-=O8}2Gv}b>dCX!{s>b3b2pJv2 zy-=J(kO>}s%9%Uq!pb+R@lbJKO)*^{5?n)6LJ0TdTMR)uia;F?4Rkj_`}e4CfvzXd zAYtu4{`7QYXb~VXA&|ufD}ln7{JBUt%6#14k?n7db&b1$jT&=1d`pR1mFHe|usXqw zTCKZ@*kx0)W4C2);!e*npET)s0r&D{uSxnt@ggYYP!hFKh2|(JF7qh|EN99D4(I;W z{XAA;W9mLVnToHg(FZGk58t=WZ|AqSvWVxRGb3>ZYv7Bmn|S<=T@}AOB#CQg_$@T< zq{vKDg|1=R>0q^pP zEbo2zj}%(s<%k$1+qf6ZFi!0@;i(W$uCd*&$VBu%6Y7v2Q#p8*4o7 zj8kHIv)h7d8Z~7}U|x-BdGFQ7-KPE3)>~T+PF%?C-M7JSFh^e_=$UkQ6r}x)k_QWz zfwOJqvPoIIiaF?OU{;+io&qTzVOXNm$!O~L61MvfLpzbp>PT}GF?)3cBIFs^!p-)E zrl0!nU!h4_@I2oiC%PI_JbjAdr7BaX4o(e}`Ja+Io_%98MC<31qcSmbdSq!_RcIuM z+j49+!%(%Q0)W2cq*mXu+_+celfO--*wRrt9-0Z#o0VkJ0JF?J%MsaO^Y)@}OAUzN z_V`n6I({)t6t?7VjKjHy58oI-}R?l1JQ<6g( zg|J3q%|ohuz)$u*ehe|5s_|cE`Nmno>8Use;jebBRs^@4Li}?kH1wlrE|fO%gca1r_!-ExK~859fI?$0FDj1^7V^T{h;O0 z4lzj`z?x?Y^?Q`8C+(*O3-nVGDk_|LRlsH_QzBD%F97bZwF{c}*|cFjYw-cBeLWYw z%9Gwqy<5}2q=N;g*pBT8$SriETQNV300Z)n{13r|!hR*!!0GzZA~`NsJF=KEQ5O*( z3p|~&Dqho-|H~fl2d`oPhI9+Q=(jWVVUYs5>$ML^peDRST(?aE~6^2_Zx0)%`l>0{E6@paF~ z{)n}|(I1cg_en6LYrhk-Qz1Nu{e2r2 zC&}*L^l~<$?yYv1ae%aj2QIG-`VS)Vsw-GDxVL#*U-t~dtt@NLJ|1$vWhnFecZ>iL zO@m%qrkqE-3X2Qv?GMaJP^X;#nG}J3QE#W2(UOYB8L0qGiRiUfl+MShe}v|#v=@J- zhoz_Leb=nV>4vv^LMWiQhCMmNjKoF;??14w1iDp)$P5DZ-Z;$rUHwB zk|oo5awX=ven51S12eEtZTa_$ill$o*x2zAX$l~k!x6!ak1j5hcw%=PDY#2H5%D8N zfxGX8g+S`r-O%qqG`X!EEt)Yd9r>oOXIqY?~;brxmdjgC#J|C69FkvW{ z8>4nLUxNG>;w$Ep_jVh8v3F=U7FL|jPy5jl0 z0Fn$|S0fh!Ss{fcG*-`n^r7dil#-0B2)997B7NYKF8ijCY?8~=D;DD?B#pD9r~+@2 zvzHG$oddQ>sKUG)L{fnPRElNBU$^Q`L^vO z8}BuCjSFtIo15O+{+vpVr-e*U+}KG_7`G@ldXJt2j49&ewc%Do@hBO3P}>zRI^pWQ zzJRf7V;`zIv8e}!DmaWtK`<05S&6^{zR}dWox@`W9ew3J?j7Z~j_M6WlUJNL*h44| z&V#DO@z&GU7~vuekclQ^%Bw2jgEyk{4gt<*?kY6re$|80^*94dr9nqV@|OAt4ode6h|czj+VrER-+#q&A*_-vX={ z0nu>@!H!hh6&Q24VReC%of}_A`NO4S>FCwcEi+awb%wd zp1DZ;Q1KTI%TGT*bt1l=Q-**h+>J~KBWf?x`~~Q+275N5xkXBcpmN)h}AlS7&+YT-Gu` zi9F-U+uFZne31X0fKe=?C8kovQ}g$MHgnY~ew_l35Q3SfyRN6XZn-D+WWwd`{hX32 z9WCRRpQNG7owfe&dycyQqI=Z`LD zDr!b~7x>0kx1>~u5nGvj5kJLD)qI6rLeSE_BB1m0Y4&mRr-s|*XKrP(cnq=M(S@2% zJ=FJ>>C#t?O#B(BfCEY42oneg0sj2;GR|sNuS-Ozn7U~Ye_Os16_Srw*MGkXF7^2z z;h|(yf`n@tRekt^BUMU)Op%$APyspNf`|e!JUy{#lJ}sg2AZfBPq(LO{7#HAP3X*4 zZRXWsnvj{2dnB|dG5xqKdkJ!%Af4Hs#DY3d>4~GOt6e7>HaReOPlFDR+#fYC}yidP9v3M zi7DEP6qV_xAJdVZ=~3iTWX#m+e`bPj1zs z3oElg$RHO1Bwu;ZZ8shWLo~Zp4&cc+$iYa~d5n#PuVed$uk#Q-=ttHL+OIPX|2|FR zA~qi{HPm+09~3^><4|ER5|pjj14#&Ic~_Q9%u+@60wio1n%-jo;XNeGZYwWwRwnD!||!_QMG0& zzRS!E+|L)$3~HR6>1u2)eVuD1B|3g+ZBsuW+KGs2dRh71(Z=&%*&h_-ohX4R%9X?5 z97JzQ@K!Ojr?~eL^L2X*T&6=_rrQ*2uA19&Gs;8PDVMw=?m8rhB;>euV~ZIV`;8;x z{oyXAVqNAnD%!RHD%lsEUdPck&}bCVdyFEI>~E}ZU}_Z$vhou@{V-1_z)`Uo>`ktK zKfi z;cg+Ne)=6GMd2W2rw1O~PaP!5Y2pqoe%C8*Xz+6Xz<-i0Lc#!R0@(@g0!!!p9WWOR ztg6r6H&mV)wIp!d;y-;PZ#aDxXUL)vFbCSd+}{sDX9Uhux85#_UR#Y91T)C z))3_-fUmwi916Ys;U9fo0uc#ZVF5ljynLP{V$V}zY)-PeKF#~nvg#hdsvqi|gh|ec z!naBs=&93qP0p`}W5g!>7l$=T2zXk6x5@m&{{x9YcE8gHr<2ao`1K_{nWEEYzMRm= zbs;AbQBanLx?dt1N@Vy6F}DqAw!1k_{nK-r`XF{lu%fM4>p6;o41`6yWZlm6?;hU`j_BLLb$E#Wk>IWtnt^KI6B%2CSYXUdr~{XWag zd1}E!PM%dwV>r>mg^*cZa`0P7zylDnke;0`E$A_enu6<7&pY;}6Doz0{M&c#V3H@! zW4@ul;5lHg)R!T!D=-grpNCET34e5)yVuGaTH#KM+}&~R470s+E8N{8cYmBaavIlu z#GN*d{SMqM7f%>gxG#@A9Ouq19YP#&cN@9KwUVpK6toTe+H%x#3HroTPqnhmefhZu zchfR6*J>C+dEIM_3NXq*4%_e};9?6v7YkQ(q+;BM7P~rTBPv@QQW1db6@QAo^P7x- zQ@xQY=fvrlRHrW8%m_AL(i;;Lp^)qGk}7ZTNy2y{`zb5EaP-4ku;SpowKxL9VvMpD z=hPknuax5AzE*bUWQO3CHGS;C4Qfu{8RPzP!P{i(l4Dz}%lyG=$R!j9<*sBHzF8}( zIFGa@HRfXC+GK4it_)8^lz(&wkhW+kQ$|7hGDban4vH zY|~P7%Cl1mN-aWhE#BA-`7)@MGpbi1uxyQa{_|qXmT)p2y#%jqOB^f*x!mGB=k~qU z7M2jR@7rJ$AdNyXoeX6B)i2ou4n%}`xyBN0^4!ugwPOD*Pt!SG3V+vJhqIN;NVy(M zZBWKq*-PThJc^+gg;N`B>8Xr%s`FKOZHlCE%6W;(y!_T8W5Xb+BulUkS3Q4SI>wyH zECt=G)aIo`?G%r9LT#}0m*+cX+qmRqrjB;ee`{g=Q<`FsUQc7DyJI+I#*X7%PJ&2=Wn$~O`VG-&UJV2 zLCPWnt4I#Zj_5d=PN*eE>?G>++&>Kry*2iJ^q4E~cAPK6nSUkIw{hd%y}>`Oju;Io zAN@r8n_<;>ePkI@41h=7Gq{>w*bT^6pUFZ|fwg1BWaDj@El%L_wgL4ZxF3`rEPxbI z%L>7znm;>s-uRlt{xQAvW$Hp>V8Z#0t1BbzWpW=sn!en6G1GLvX0kgJV`tdBrsRaw zbqyaOF9YE~Q-7C=r}mZy4jI?rq&nbAMSHukJlL>l(UuPD`xa?M*4JI8JM3Esif_Dc zA-IWs3%MsDN4wFZbzT7+c=d4gasQgWlv+=;Tvy>4crgT)lHb5PgL*+}Y1LJeGHB=Q zW3V9kHgjto8!*Afxn=yO0=uecT_8&-6iXl(=Rv+q4u3RMvVQh}+%L_&p>FM=-vHh{ zBupDl&{=#+yve~#eFyv72gw-F%hq?&97L@w!!jw$yyhUHa$IwW)~)8wgLIG3kc!@OG!_BcyD_hC zzyB_G!GHNKp1Z)f%QxTcU0=Pn+GIS3-T?r2!y^Xp<&GE_mlh)XqdP#u<^8*?c4t1E z=;CM_?`@7Uq;2n5x2WFjD1$Mm^Z@oAhXjJ+8$$xY?FuB2qy18lKuUcb5=hB!hXjJs z6-Y2+AMXYUw#{vU1fuo*Ai@5en~tzdJ>kGH1%Je-LY!Lr?Z*_5PytT-e+d^*Xpa?2 z+qv9;jXJb*N8NZ(;OL&ZNnUEUs>VmI=caCTK6GNifK3s$rnfFg;MEh2WeubRs`d=z zu;oqX9EJxJ%64zJb62kJSOP2_OBfgLUE!XOF}S)Kcl2mN0j1g~s2k)rpG?KOolJ!Y zt$({6JehhAiL!-3&pd9U&LW5H3>u69)emfczl&+w`8T)uQG`MYU3mO!yzXCKU<)_1FP*OaO z1|`LHG$?In;U6gWYb+f`HgV&OBl`qQeMSFHt3Z^_GQdW~5O@{c)Tz#g@gM*ywEyG5 z8_^dBeDwY+`cI{36hZhG{-aU=zQzB@|0#K`+)gaF%%{SR#)toLAo&$0W_DP z?Hv;XGC4Vy(b_vFe;c`uW4STcS3GB4z|CRtCeRSvmlkj~i_R7fjDcqy%oyHv;NN!@ zuSfFTlG<+IwIqtHn{|=m!?%GCKcAl8PoFMQ4VF0#Rt)c72f!~l{s)eOMh_N%841Jt zkKxxx&V|9}86U;Dl=xVD@9-%3$JQ2&8H}sZX`cH4~r{7M6bRn5Ge$YlSrQGo4$BDjBpqa6L z0DRTP4!{3>_gDuFk9L9gYe;c}yUy}43p!B#gS~t>@oH-DKF`h~KDoPLR`2hr1 z^wy1UJ3b2ue;k3uf0{=Unh_-7)5Y^y{K7D;-C&euO4^KHy>hNmTk3)jN?)Or1vJ3fKzQ;oXSs7GxhM1oA86=Kq;XKf+|rik$TFYwchAU_40cg#82V}q8~JX>(d z0B7~w?x2l7$A`xG<@{hcBsuYy!&D2anKEKRHJ?bif2?qh31KFbUxC{jW^pTbkoemy zUdc5RO3v9wl!Ev;-J%OX+k~CEmAHu=*Zu55gGscJRohXYS7=Y6$CJwM(B2`af-``r zO{g0nDkjau+TryEh>jUC)rgtZh?0UiJF(f(ZmzIir95+99@sg!&zRBn4m(E~!#uz} z_}SW3Wbf^6xX{= zuo8o$>EW*^ADm&dr`iQUAW2w3P_`oS3Xh8WOmW|1(HDB=y}7guNUS^Q3gXI7fcWX6 zP&>?9i^02#=hmnO@*n^7Q(B_tmsnf^?UFzIf7IIac9OH059AC(U^WFl^Gf-hmN8bu z_z-ok|f-(pS}9hxb<94(GgNlIt}%1a6f4VWHA2y8Ro zB2D<@8TzT(XU_$?Ux?5-P)p%5Nq;2k-asN;2!(3#^+ElZf(&V(-de;27Rh8m2(L448-nC28g2vs zek>SrTe6Cg8P{guU6qS;ngLl+$Kms;T%_|jIFTl$WSZ*`tIh&)MUblze|-+E@IYCn z@M&4w4Gc53Xt4;w874`7l&4awoGR}zh1NaID_(7hdo3v)o`_6T=Cqz2DgcZy<@A8M z{ecxecI>7l+$u>}t1(Q_JHR@n$uTbq)!TEiiX_{OU1Or(ZsD%Pvc;VwEt6hMAiYEl zMha1b>9|DCYbAZVYV(z4e6pj;-K{EghfF!pyzW1N+SAJQa3ri_HyT5U?pIL{ ztH`zXkEYGiqh}>5Ri?6NY;2GO3pb+CbYtO(OTwf}bG$&+o4Y__f9Wr#oYOHvX<09N z%8*P>^gU-O6(1(Xmq=mZO4W2XRvkIHWRKX)YcLg!Ck*hoe;17QlH=bTC34+!&+Y|G zm4uN;9I2GdpkL}%Qhq>Hkj|CROOv-OTd84IOrS08T!R^+Jh*WI15dl~3LgqaU}7kH zK&=bCM5PAMJ}K6ge{WMl5>#ue?bA8R;0|)wn7Yq=vXm2)Dln%R^UURMU&;yD;+Dg0 z<27`whStw(s;=7hR~~KppaA1jji$MBIvVU{RR>B^`&)E`B~y8OpI8eWK!OSlgWm?s zm46;W!i+hz^iB`|8Nx6Fp%vx*2EbCE$xHmBdf@cwU*Ep|fBDPbfZ?)#(^NhvtPB8a zz#s9WR!j4KvnAGXV2g52!&q>SN)Ays!*>8BP?Cl@y|y_MJv0)>Ww4YBBXX z940*@f@&z!5FqB!jPH9rn5i031fB{R^ogLPwe%6!=T-EPp89j1imU!HoW2gH&q=D< z2uo84iwpG%fBwx$6>)==P)jxsVf^G+2B^pcPB6h^%?vi&rZIs`Q{Pqr^^Gjuv&g6l z!+E4)Iu9YJ3?UEY*M59K2pyw1GG1L^l)+7^mmil^+d(#)r@n9dE>xe+$fdcXdDz<>#RyDX{i1^7eVJ zI8Z5Cs~zI#n?{uwxWyXY6)`O3Wr+j8szi@sSg&C~VLtAmUv)(d1J*M1mOZ3BvDe}D zM~~LiaC;FWFsgen6Phr%2_qiIe6cy#nyIfbh_`_&b}f##`Rfc&iwR}Yo-xCHoVH?f zr<=|)f7Se{sFVgPwuvfLbqJUH<~h!)bZSUJOV}}SCt(++Q(`B>&aaQdA2ADK$(5 zL0XeiIb2NQVfbKC<^_qJk_UUL9B`5!bz^ zlo~eYTFJ1IX>=Et=A8HFC}*7a=!v8A{^!unO8M18m0+z!ot%zYhcRKix9L(DuX@LF z-SLpu%y~VzT4~X<7}&a6xqYuOFt~oTQD_pMx#QKw4q_0KsEUBg@zbVs5Y$0lx@SXu ze{M|Uy4i9dm}II;E8FtK=wT5&P-?~#)@J0F9WrmR3c1-0o|l|r zMof4J74n?)F7@eEte=lx4^pv9)pNkFzBVQlRSwWYyy2>#Q0V)xeCZ)xf3*#(HwF{6 zb+=B&$&M+dCu*tg*Jzs=iwPsIlV0)+ z|NP~)Te|SLd571hO)19Ot-Z?|f1jIfmYt`pzg43 zMCxw#u2B7alWz@|t(E)#`_|oOd+EIH<9(`Jt-RxpcJp!Qy?v~pwxMq-MfV_|Liv*K z3G&+9*E7B$*ZvV+{#nC)yc3Xh-;o)0m>G3HX1HKrVHY?0&Z^NHs`+32%E7c=YWr6X z{p;KN>AzMa$GMk5x-k<0G?x(wFcp_kG7Tqx#aYX4>oySG`z!PVVK^KPA3zWwcH#it zHOQ{$s_5~k7v}K6^_8F?(;_n z{13_BAo-@D&H@O7(0%^w{&_sVGTcj zgDR~>lhzwP4v}ONq4-YarIB zS)x9r-s52ql1+phx= zr9i-XWp8+6;VL@7P>AQOG)9O56@KaLp(5uLyQul&kg)p|9B%G@yf0gCz0eGZN*}@y zPbz7%DIVo_NJmVg&1s{GT^8`K8FSQVlxOx1Bkt*0#XaY;?6jvM7ZQXRz`ik1P6=Q} zu452<$LwRKh+tD-YC4vjsmf6)@znwr>HN z%Ujd((WDwL6A5MyBP)j#pL-8iNg)we_EHr|x`|bc9uARclQ_0uh}UXd(2_v!nz$4z zGw{R7k7_t+Fj~L985A*T;08p@WfuC#>_uYQGM$*#(~=k1oxu7%VWl7#=wJhF_2ml( zgDH>?P%_T&)p)6r@3a4ZSv$yzHB74nZcI*vn4*8C$IR9;n3NOB-BJb9>?yjbtR?A% zb9%3`wzVXcwRW8kKy&f6Wt|;wd{tk2^WVnA9+h?-)4-3si|%$WLQq&OJ=E)J0Cp- zHRwb}yE4$A(`KZ(88Vy4IieTJE_;4UucWmT#!Tk}qrjZI^*5s^gM;9Z%a`IekFA#M~!dO75J8Q zTVy4WzoPERosSv6D~~8OA#x#FO0y5XS#`c%KZfej&FZIR{dqf9tAfGsHlHzT*@mGh z{DL}+Dc;wAdX~tm#BciafTO-%e7y-#inM@6{2HKgSy+eZH1umROrwJPrV@>W(v21h z6X)}Mc?gbAy*7QX*Xs_aB2b&4CP~-8w-j-8BG=)Iq=eL}SyhouK6R0EV~3q_>M_2h zPPkMgpw`^o;*Lc^EwRAoTneh8Dc#b$^)RCl{qmK61`^{tV?HguAqp>tIj%`tK)b;b zlA~daExT@Mx=C+&5aq@NV!E$RL(u`e9_)A@qZxXHz8v8`E4&;DpXQvq!dv9pJe=^M z57#v2lJJIcuwmfzA*%Q2 z9QO&|G)@E0eSjT+x$ytCNUg5WZSA;#@pT^e9IgLRCwb> zJC<0r#IKpdR9Y^~Vd|&9b`Dc%yD*2Tp5BrBuI@s(n6XW;?wFe(5?4jKk@$Lt#MIK% z5*Jz-u1*NCemYfU>b98#*IcoNs%5UvB+&R+C$*Mbt)JU6F8gNnuQYX@t3_1J=9Ifk z_iVshPFuStp;Qw8zn;yj@w?(s;CmmzR~jifQdjou@z&N%eNSuVfPM3uJF^E+Qa2B( z{aY%_ea(e_YQZYnY}J$9yFHk@q8G)YyS>;gdQLC;`XwbwmL(@~X3`GeaV$$D_3=j( zWjXzrXzVE)AwVAvK7QC9?zfXWKB>o49jm}OUKsXK4`>*LQ&r&Lf*AXuxrPg?P z{2lOa_fHxE_5h0)z6IDnd4B^m2K#80$7+|yXzZm6s2#^g=_FA&Foom(ukU}} zNfuTL8>9}C6xzDr@b02i(;xVD{mpN0IJ*F=vr}4F7boY9KzYjSEJ|llQY0rWN@(!e zgoPAe&QV^&%b6fR`4+E45$9=f-UjDoPWjm|7vc)^Y%^ziZ_ap8e}Bc2P8BYf~hEcqsW)c40V_kNdkOM*d*8}?*(Dktxj1b!1ux)&SV|nN$j|{`k6HZ zSwl(G(=0k#UecI|j+92Xx9;inefRsWHwGJ(Fdn9FzjpM(fECWiNhuM*On>}+`o8mA1S+t;^ zRQz$yu@?)C^RdOW((`K1RcEgrZOc!Ut)az9|F*qx8(6X(}=# zilw#i``I=Ysb&^wPE`zgA}TzV9&vmbMUQl~&!sDl`p2~UKJC6%Jfp@x@<%V-8l1=! zD7H3`mL~0lvAAew>9K=DMXok3rpavzXX^|>gb_1(41b-KRh?;RX=YoRkW`^in##Rz zzcBl5q8X2DlomBQ87mZ~322ePkY-rt-`{@mupc<+t+{71PoSd!r1WGB0t}XDrC5(D zT?-Z5z4Yc#p$~g)pR>y)=Y+=f4#}Yk=Ms!s2kVHU2w$g0#5C2Xd9Gi#!UKo^TFz~F zicl-CNPmkes;FEDpk)H!g?2M46oih91cf(gwggU@kgQ{DA4W43lUGz58FeVhUCLZ| zT;k)}TxUUFa$rAm56O3Eq{rA%8Hmq0aZb{5I*J|; zf}#bSLa4^blosKk^-2zJI4*E)1t9i*| z`hx{!b1P*0oEjCO(`r1gQ`g+7n(m4>&90HX>7UcG7q59w&7yZLER-eE`;@Pg41&Xf zIj|{q2FAJb&HO}L5j-w7RwLMssUM|X%b~{67&uJu-RLgGT;!J*_Z*TeG=!e(8y)<1}iflAXE<~9DmY?#0}{g!vWJZ0W;Ax^=;uW2az0JWjCK< zOKDV+k#pJ1sUq*{Q|z=P>*&M0R4pm2=j#hueeHYbIbO7lD)%T;UL_p7{)PSX>vrSwr&*}A}*%)D%g)k+{Nf_uX;VwI^2px+f$%OYx1m3-9ulL zBH(TobWcNVmqJO5_iB)0h}yEo2tDs7TW#gEYlu3jWlM6BqM|I?PQ|K2zT=x~7--aE z3^3xD%PfS0ekFdTo}eWCA{$EeN`I=8xKeMRR_aZywTR=}xAZ3MtIr&Z=#p&@T+{g1 z%!$?}sO?!6`Xyh-QE*NpSA9r=(6x90ky)P@pzDbXrZ_^X>hjt)HK{P~X|^UT=+0EO z)m8})vrJ}ixLYpNQK*LDXLm|9wAk#ut`{UBB1HtFmknLZX}=-CkU>z{pnn^$V^>Py z1>L@K8VEUbI(gmY9J<_yTnd30f{ij9V$*Ep>|RFo`y}q$I2`v`U|4o8wSR+TO*L$@ zM`Cv{R^9K8Mk%4Um~GA4)DJ)%%>Y!au5mzx+SYoZKlO5SDk@tGuisSnU}deFYS;&hP?~( zDiQwD{N|{ebFw)iFM{WVe92H*am4gOPEmrQG9tiSi?{a&#U+J>Lw}#*dt!MeLl3ch&6@jF(Y)d#CfF4my(WKoF zdwlLWQq$0Qv!62tb;=HZ8P26S+*rG%6jp{l!5iVZZVpUMQQGJi8|MdCses%CdPe`l zB9)R61HT(M#(t-eV}DcNJxf`_+d4$vcepNquUTR}vwZv+x5C{470(}c#;tS^UaJqC zac|OFK1v={ck7H>DTHS(zI^(Od+3`5+h%9C&bXJt{-4gcLE!?3zSo^`V?OU?eE1nR z1au{RXX_fg5Wayd#bA=v8VH}KV%XnWM=l6X4uPD|C>{(}IXq2n_W&SClE!-5Z& zO}Os{UA2=jFW1i@ndS4$69&>zb>ahOMcY&Mmx7rDB)rkL=5^%stIr!kwb#n~= zUlCsd;+H|XF%tqbHkXk?AQhK8x*#ThwOYw;9Jv|3>nZ95L~~z&Mk7*7GLV}M-+~+l zM(iBy!OY~4*U$HJE0VQzbz3peDi@3V_mw1{zE6Dm`0)JY;lrEKlVjcpC#NspCV>we ze+9>&HIoy9StX_~Kc|13IF}Z`XZ$qhO5x}5e~+g*KPurdLm2$QbnLAwcff+hpH4R{bQ>8C=Pr!i)*#>hP9^&DB(37i2~ z%Ohc10+&WJDa1&ScsV};9+9ShAtK{WnV1Dq`f5+GT}TkWD67>7AuKqV%V3F zP8^qnk-idd3DOG24obviGbWM0>ISlp6a<1uCSw#Ck*Y9~xMzwYAH>h4LMLc%X`Ydl zauZjP#1|^Jl5sDq%KceHsREx-ks2vaGwz80(r|!x{zm2=vA<=>yq=YRIaQonW+#P& z(fW}FG9{R9{1G&QZ#l_C(-#`KT(KU^+fI?nt=`gx^W7l(~H%`(()b+qA2U*`)z zSx|0^FOsc#-R6(pWVN^QM!^DvUE^H^&tzE2RCIx05jM1CLW_IDMz?yyPx??HeP?64 z+T<3}3?mkb1zM_X^CYK#tSeZsJ#4|n0;-=9EH}fNgI)A0UuHD%qppwsme%zYU78hU zhEU^8oK@pSdTZmx3}s8ISG21*llSVjSzBXQN(j4J6IL@7Ous(rOz=iRGVq(DPFYpt zmtnlEOPah`#)#TQUOPwM6p1UGFhXv1ksvK>!nbqD4l*p$t?Dy>loXjmO}Kq%JbnxB zf!t9r>tvmIo$k2vc}0=Is$|I)7j&#<5P^uJP0{g~W5L~CtQ5{L2@@Ki94kHc#r3`3(ydN5NYv|MCynL#%$+=>*IiCQyW(=h9=%ORzf#2_N(GUuPRY>5 zE;U-+Fmj2Mq>NdAS0`=c(Wh)(rM}9ZmGLC2it=RAcw{HeG=5$gHT?w%FGoLb%Us#O z{DSF&qMQ}FE>exsL|MHMDO^Mw3db^}QlJKL>9fN}MPG7o00n~2j-3Q5U(zgS1${#+ zW-5)NvV2ooDOn1W=ZsI*LU7F?;Ui4xP>oO)?g7jBUJ=`WZmF0B-vg|ex{LdnT72%O zZ^43HPzBC*OG9*A#;l@ujcsLHjwBTewYQV#Jk#c85(oi34O@2IQ=oWEzOVVIr5~U9Ia)flW!_vi_C?>!ac(hlkZq~b6{lN? zAUV~&ewi7UiWv*_3&Y?^)7PI5e@+O7AEy`*5tq?FnCZV04GRjw*1~s5%R&T-(GMT~ z`2Ov0Uw;z}3;shZ_=H~F2=p93^Q&e;QO5m|-z|iH&0Uxf2si~*4XJyL31wj&_&PlR z5z|V_X4(%LRm^!vu~`frtVatlBWQ*S4H04;&G>$_gO#d^A`)H6pf`e&*U~H2msRvi zzxKUM#j1Z#58tMTPgR~l;UAvXal0l?AVugEtw_s|gy(8$ZK56%EEKsq*s)nAf?KOq zOl%>4xTuYcs&ZOJ8g9!FKotmOsM0lzZ*V^_n&gp;(lA6MMHZ>ZB1INy66^f`uRrs$ z?^yJ)c_uKALIoxO=@D^&q3{E!xTgn=u4TA9J5SCbKt1K1ixQee6Jnln5J`AT3DLS& z4-*7@ni~2dpN})6pN`4~8glN4Y{sg#kqIn+#aEGR^lXLvIJazaUix5{gOO|lo@;ha zj2+6C6xvGIoI_t*(D>ZH?e_{&qbQNSr?2jc*}S9D^{ChPio9pmjxclG-t>YwW*UDrPZ`rXuQ9TWJ}Q*t2XwH?HP&Ri>n(ssZzbVX}6T?}Z&q-Xm~CjI-=&&pYU z=dnpUd!Cu6>);p18!*?wm{`W^i-JoPT!$me{X5I8vG)}of}IJBs4k;|NB+SU3=zcj9J zNu0`FF*AnvzZr2E`P{U$#xkYCh^1_Q8b^~c)hve=cS$qEMQ0!*&0+3I;^t=KI$Ad2 zz|A2cZ+5ObYTJP*W0BmUE_v&bM1y8?-z=MrCdrjQQJ~#OBT#gwELI*JNs_N_C?M;y zVAMGIfIr_snc{(IDx^AO8(STU3LVTEBs;XOWpCoDLZ2JTO^ui0RFoi32Y}>%)2##6 zz3EfMUW|l$i^Ud<%T;W3_zB7snDg!q3_A&ONLQewomp+l(yYRLt+_oWL`V()v@ z*P+wYS}-W^4(D5ircn24b>x^}3xWt#v>#9X71Ax5sMxq?PTFQWZFS=?=vb5tv-@s( z$&qu+3hJaCbG9CEzK0*=sINSK@-^?vBvDJOIiDD6N6MdwsT=vclM!+jQ_e6y?*d5G zW`z=lV{TYxo)RCPn$7#?GAeZa&Sx(!MI&jMU)HkYZd$&Ula*2MEOAp#jxDmF7N}^e z8`+a#(N>Rjkm0J`<#;!&Y!4XqEQ#%w?It(F+hZF?}zA__i6!u@#SuaCDM-& z&3f$Rj;SCQl5dW2Z;$>G<^t2$m-{>$H5gx5je5;^ol4dh|3tjqNQal&pM}23;V6Rf z4GADGXz5lYa5Mg#$JX$hZTwa;8y5T%!SRUvmo(u4(}@M_jXaF@QOX7V`qISm>k)Pl zgR}$vEpXJ*DU91)m zb^cHgE}Z!WA!?Mh4z8pmHr99p-sgB%!nca&V=6-sMxe8?1V7k&Ll^R9wuG#$Vq^oOxiYMAbh(Wi|&zrjv z#R#AGjgui4*vA(e)I>nwPCr|TKgg?KGvorgym zuUeX}BVXy{gzmSwK)Z{TFu<@VJEmFu|cEv+ry z_IExPwoI)+b9c!vPBz}lHiULeqRAXEma0&f?Ib^6qPgLg)K%M&j#*_!>^1nkf7V3I zM?e(sm^HmRX3pM|GnH7sg(kb3lV@>STvI)gCn@V#{a$HuN$a^3lXCw`?f&I(iE3-0 z^=M`svK6x7{{Z;IAi|eHx-k<0G?y`rHWLFeI5C%zG%hQDHW0n{SLg>!v&bqgz@UMd z9=CzqV$3bbDTsaYA^HD9iV_!*l3G%?+Bv8fimYO7uZoN8esr??dV2dfeZFe!tZ)QY zbsyh5;1`lVL2{#^&H@Odq5JsR{qZ8DGW@*pgHmeEkLBNvzv=u*gX11R{P0_V^CycC z#&934hOydz3}ZC+QWyRP{(cSZJl;zq1BKT}MW6rt`0XU)WTo&X{0v|1zb_xBe@=Po zN((Z+GYW-L*!}hM6kZ^ZFxGcO!g}cb{k!{q`n{!^cs1X>q8zZIq%lO5qLdLtt}{jp zZEaE%v7p3)5(`4CAngC2KN%TR62wMVdWGL;2bH9M|6wFzq@p6FFN6Aw>{XNJfGn}4 z&X5uaF3kbgsF^{*0+~$y`1eQGw0!$oI63IuqTvMZ;i=4(M|jD4!FGhUk+&jdLUQ=% zc~>oC-rfo4bW2H^pjGuUXeQ{I*fH@M=JdQhPI@aR+6M;1c4?i z*_45QXh%xV1n*aJ#b`#yQm~s#A?2X8o@mv=L_c4>ob}semx_tHshWnll*v#sN>sIs zB}ze}!|RMDm^j&6ksezYkt&8ec_TEaEXlg_N5tw|eCiom?Moc{HaJo2H*v3uO6re8 zpbxG6KRPRTNtAlpy0rGLX$wdUP>_0JnCYc|P|MtA0VI#|NzOd-8e7!B9iRq~q(ke3 zFQKK(I4I@;Epo)3UIfXhjVwEv#FqYjFc>+_djlsXA?-vGid=eM4qRU|{5YpV1oGoF z=>$PdYadASvMC0B>n5@-SZM6$i!yj60BuV#+U)a{1L;;A7!bs#h+8I-vXi#D+C`PE4t63H;QbUs zI#PB*@%;gc?4fM_mLkn-9=-6|Of-LgO~pgdfA9}^z0VHT3k!CG9mZ&Y6Q|c-B5T&Z z6c9gp)>X@xH77{Rh|`KjLpd+!6{4jV=-rG$_VVXU#DQ*R`O`9gE*b1ZUtzwItpG_4 z>%g*#D!`!Xj|7#P;1lY^geeuHHAtyC7jI6bauEC;zfMR{k-z2EDbQ*yU1G+6j8##1 z@*MA&m2F}NmD@v27pyowlBti}C%`(LB&-@UspHtkgHHAn|VRHu%}t1D@9Y0a0mYhKQ3|<_!WM196#`XoJcBmw3*#K zn={&R60%UI`5Rj;rYu-XYu{q-Tek9wULcpz?Xs1>$=F}AY}H|h`01e5a=8!GS}F$w zaop6LP~Hq*;87UmW+~iUtdCYp`wQBJTeGxnm#yvGWV2v@K!3?H41&4<^IrSLUEh|< z`{VPAi;>L6*2a~hQ#x>z0TfYcOn(s7bFl5oUo<*hIqjzb*Gxz4k5kW3O!tqxL z%e2u!3E529md}CSJN@GEypmj3!Oj(HSZy+9#v`wE%$M-A@Bf|;Ec)Z>7~kz#6>UAM zSx`$90)lfwIfIOa5i{*Mhsi!BSTDp>wgUv4uX?rQ+`^Dl3-)@=6|ZK!5{5}#;)#qa zTL61YTTq;NEw!b8EuwH*9e&RNh+l5K=CH}d9x=n}l?Xs10HDoO1E)K-l{kRCZmHh7 z{$RWSMu%pEI{t(y<>q#73mZ$Z*lKzoXo-h%dU7^R0!TgOz5s-+UXxRX!n_=P9m%Il ze3sMnUg{jVd3ox$p`Q1`qMh*HQ0DgNHnPxd>kO#35wQY)Xn1TVHNDi(ANJd_QI95H zasU(GjaK$%G`?0=0`H=@J zi)WR-R&!0UxO$^Y=)}AlYqF5MERz+kJ|jhaf4-k7+dS4eJfn{1K7#|rOcopSS*GR_ ztw1T47p+`~Il?m*ZI^#S;O_tO$B!rS8<6YJ;;(!7qiYWxQcZQDen9Ho7w ze_Nu|+_d{lz9mWr*N8Eag%t1!XP(vU*6hoPr6_N$-c4FQWM!jeuLS&nBnG?=4-La^ zZ4{s7M)p~n$lq+D|6_u(_O=A&qVkU8yb4m-^RzRE#YyEN{m>$`vi|Vo!lT%$7%5C0 zh1d~IHGE`bjI@!LC#P|}Y7C=?At)zse?AV(Pnrvj(tpjkH{i`ucJj}|4bAXc8hhG1 z8*8+kai*BNVxx%CH!U*GUZ$LMm6kW}(eaSRiYn1YFCA~QRwlZ|l?>UC zRX9dWhlKSrL9!cU7RY@)fN#e9q*_Xuw8i=JQsk^89BQDNBf2M}B zed6+;`=fZakOEywi_1<$5Rg(~>|3{*j}yQZ)x-*S&%_m$-W4m0>R>yUQf88$wGCIq2m3;pOjP>*CMyM}Qdo)R_Wd7}brvYB zvH|`7*JEvrQO?APi6u?^zE!nKe>O}Mf4bra2$+~Air*Yd<>0*bGeth;;e#^SOcYl% z51{#q!rnjFlUBEZ9xvke@AY6-t>1u zk>VUf%+j@Jrv>5UcKX#{$|IdB0{7UyUOh|u3}FGH5jdTBN3LUNmhERh+A#_FJX*Mf zJqzzgvWK*vtdqvN62jhCWy0FEp20sVo21}*hX14rDVMg&u@U|3h>FMBaXK3%O*n54 zd_x#1AN{3pz=QfSY-u1Lf6u1%+O|Zkknh# zT2qnLSN8NR#1R%f5LoN3EA!fd8vaE97f+V*JLL{>4?~y6E0dQeX%o+XT@{>3t|lX9 zj5L7fMg-t57&*9ZBnUR_AW=N|c!!sl@=ay*nMch4iGDxYZ1w<+e@3a-QUFI;>~H3A zNZ72LHqrLrZ7nt3+S=?VZazp*A7xP}OZ1%*&P(XKjoLM@K;C^}ZSp7;nii;m9{c6P z=Z%3(gj3qs{1USQMpiH3ek>{x8>vk zd>9w99R5~^p)k!*no4?C5kYEGiHjT~QR=EZOiaJYL6U87X}Yl}^{uXgwDlF}iK@Of zUBx?11**R+r!ULt6IwS!o9dLT`@$u{-=1}i@+LVWElfi>e*n1#P=SUi3A}${RO-uv zP;TT1wXL^VB`DtA!rX@WaYX1%L$DUDKtuFgk6*CEN>>=+U=0eKyA%tcJ=IV(Xx(n% z@%`;P(tQQ0kK)hcC7S-MV;le=O}CJ=}$9N0>%1kY`Y}qeWi#AEXZB2+EJ+ zchUKZ1c_%j2kl&@%@;z#o;a3Rb(IDB*7OK(5ij%WgaE(1SQcz-7l}*&_Tm zt6KabpS3SpmmZ6;+RW%-l`;QVhKqaO6bIn%;*A{ExM(vjTsQ*@X{lmw6l7(t`N^AD z3{dUN^9|0|qqwQ@3l*O%S4$9m1LAJ<*v&z9e|E4S+SKV%D=T)un)W>I?}S#n1t)a` zitI9-N0fCvxLh+VLy$7IHP3y-@cq;z^I1}FZu%^MxQb&N*mS}5yt^5dIhW!9PkUKf zU+|y2f4FRs-5hO7YVE2OH@-0uxdP+$05%DLvIm<61nRKqZ_7Ll3#128Asyiys;7cc zW-*PkiL(*LB;}pFzsDJe$h*db*IyQG`GIE^QR+Q!&;8YX(huGA9Nz5gVGH4}e!G}% zy|>Af1JkVy7`|gYzB0Uc=egHjnQ$H660PIanW%KT9fBmu*MjDG`o9?>ME?u47V9yW zLAo&$0y8<6QNbN00W+83vH~%e57Ivce>W0-GFTICwIpoZcJQM-a=F)570!Ewz z?k+G6vaGi5IZ`0YMcQ9~-%wslik$OWa&ijbIJ3L6uhh}7nY z$t5!q5<^Pxrlbg|*c%ZplxS7}dO(H0C4X^A3u6w3Uasw_I=HmGn;raRRz>r5dm~l{ zD{QtD9CPyq41%HdF6Q9U){(N4U|VUEOJMU=s*tMPRtaZkB72(I6Z4YDQ8Gm?Psdrgjfz#P)`no7!w@xEJ$%+t6xy2%RFejRzG? z_B7*HRL*}`?-%;x8l`I~@;;k5f(_kH&* zE)ZX*-K)uX@djY?f|U~|pWtt}$5)_`xcVY|`lLI#K3mv;M;FuobkA>xAAc_{X4CGZ z`}?c!?cZ0wEEeys{?c_nUo3vPKJ(+*+wRxvx9^^wPk!ruxc>3j|9aV-UCz$B9M0l6 zP0q%0c7FcTSbwVHIwrt1$k}+zXDV`j9>ci1nvc70XVb;#Vmg^$buT8oO?WM2Rk#O4q! zWluU}Jce5pAv{1c6d$nXD@})0U(V(y??&T^OZI~6jz^2dWIlCqdHL7(i| z;wjZ3nn1B-$WMT{HGf=vfVed*J`iyn_(Q~5;=dnp9P$R@xCcBCXW7D*(Q1u-pobiY zK&M;iDV$6(9T4=etMd=Br%#VkUIA~l@C~c)_5v+0nipazzC^2csweC>Do11yR7X;L z&e)6R4#S^x-_2gnx)<&%V7th>KrqHF2*$7r1f#4$FyC-5m0qZO zfl@#_yjHwQs(-#7RPj3Q#bxT3r$<`v;@|t%oC4O2l818RvXlf&i%v4CSIK)V`G@Pv zi_weGV${7Jon20@VC!x+-X=%(1!Z2pEt&iw?a88FBpL~nVq7+PBGNs%XiecZ!$f08 z8KP-rf7Z`S5g%iPy|Pr=Y6$E!VF!v}UQxu-$mP+k-l7^5L(A%UEVh#zbM1bDbGC4Jlq z!P=uTS9rBni8Yt~jo=)CQMe*kU+h>Y_=ruCQayaWWrLkX#gfH-5^4^u;SL)f!0Mn4 zUR4@`nt!qq9W1G%rY3%bnwqdqJH2AgUQkO%WA=nfO9Y)p*%g4p{T>x1U0Km~%*ks# zAiqy1SBuH{zb`c{C(E(I zV5yrOO&ZeAZ))`?QsQe(Lo{JpE;>N7MR1ZKntuSDooC*!83D^cJVX;!Spn&PDd!F% zTZv85E{RQPmDp0c$yMAZHtrJ}_lZsV#3p@Wlepg@1&F+^%45w-0zaIH{ted7<`;h; zs^86L=hx%K2hpvM6y4}vyx3PHVlU`JxD=n0;hlYo+u=>9uR{#67L;}=G0G6xKd~mG z_J0~tv_~*4tN`O?MNyxS?Q{7|H3lIbvwa!^95B3#7N_8mi2N>TXJ0%d(IiYHYl$YH z$kBs5OQ2$>wG7-Xs|9(~@#8NH6IAO;u7mCq_wMk$FTNQ}XB=HB=8o?+Ez^5DidK?GFfg zqLJK+xkDtH$f#sveH5Ze$rpqpA-XG27p=7g9LUm7{5(WMXrCjL_wds_ zONofquQ;S~kFw3hnmpNG^`LnycYmaD@Ngtaku#M*_AzMB3NC`rEvR~8MO1@n4*aYD z%>>IM@M}U7VU2e|0T-j=K)}8I`46hv?c*_cyy8B%NSIN?2io&|Owo92SwCHu`~~%N z33-mgCef8}PZ_zUaLZgE^r~fuW=QRO#FtX?mAu7BMTRrdnlE%n{1&RDs0Zuz5l-Fd2&dk7^uI=GUHg|YEHV|Bg607em$x7?=zmnv-1#5xf4GxX z3ooCQouY_NJK!qN&Iw##a^M8sBNYH{U!g!A@+vQ%9ZnI^n_xTYXoQzAIU9uxnfU(e zi%JoO{6fHGG*TenSX6%hs^{|iHWw9y0Xyb0c5Ll&DpDvTzyva?b;)D# z+h@-`WLRxQATu4btkxo;N8MssiRUlCO_t>(M=i_LasS(n&NV79X;6s>aLlq+fM0Og zv8+}?Ik&=PcwUY6Lid)v{}}_qwrIu+pZPGVUoy#T3NMUOlYd1kCYL@Seew}>CM0np zn0Q2b9aEf$Jr@+;lFj|teo?s0h*8NMHR-(5jwEa=2{ns*>`8vz77W9ST9Ukakz(=v zj!Ob=$@hfczc`^Y+<%w8eEDiu- zpx;h8OW#Rc9*2LM@~}|aLY$<);NTs8M}vRUe{tf=e}DS;*AM?x0?GcDrpgI0C@9qV zmwKtut)$h{=Xwq3Z6UZxrO=G~!|Y>&#tB5&20l!8fPW`J8T8G0^m7`G0s>$hor#SS zCipaw7_cFdA+0!%R(_xPV3Vq`D4QTL(p6fe(xywKC#rOrKKz=dBGtd9yN}b|yQ)>| zv`0M@cjG3mrC~usot{hvd&3q z%r(|cCu^cWmrrZuQrw1NDPE`3Y%0aE2DMnSK*Vo-F43=WqRN(^u*D+C^4-KlDtkN4 zn|pUyA()}9g#!v9u?C7zKIchN#7a*>d#JNX5q~}_p!N?osRjE78>m;X_N-GM0@x0K zD|g{im6v9}PWKwUFC~7y<7kbdXI-gWt_q37l$ylFZ!v);14Y~5=pd#^R} zmVcwoCLKB2>@>yEzE1tLnh;JbBOK^fAr%c)lO9q-nD>{yZPkmni~VK4h%_tBfU3Fd zRb~FAtdMQ&t3Iz*8fmKVOeH+AME( zHS0jOb*moQx^DJlOPZ;tg?`sg>11P)Nq@()u@7xMS|?PAAFF(_=!^6tv5Pk$RQ)oY zGP?ntn{j=F3~{ix{C?GM4c5R|I&@UOZ1#=TIN?)b?_CVH!0XQDh~8nz;u~fVxFXvj ztB13MtLh4m>qj@KB#%Nh2mP*&0m;zi*T`kcs@1H?1oo+0IaFshL`$wtEBodeHGib3 zStjnf`Atr z1XK`8UYWl}%PS|b*bO*n(du%x;eqF(b`B}i_@=PY3AOdC7bRCZYmY~MzZ=h*WZcYp z-LP9O>mNGDT6NhR8JnwSiGBT034e5HbD?ooRptwqh4S?x+eMP9#yH^n-gHF>2HOwS z*|K$-W1I#8Hn=*OKi%wG_7%5^AY{C981=e}wvAsVKUVq=!k3^iVS956%7t|gHbM3l zlnW&GJI>vLa&;sJQ7)#5gYYFJ_*=VM;7iWr7!dKYw zS3*XN4>Lq2H=}JrMjUo(9hblCC<8F2!(`CDhP-Fn;WGGTQ#y!qfc|lZOM(*2WE=)+ z?~gbfW(}dypdHDc!{Mp%Quq7cfmN|2325|A%R3&2C5f^twp`%?N(8WDE-UB|co8uT zc3fWV;6k`M^lrKWsu~NJWPigg2%WK*%8j`Nq3gID230$%W1wnBatu`MNREN39Z5y% zkCB*$>oj^r4y+L0VXRy&fLpw*7@IJUai zD5s!iD$4y(9_i-d>$2!oY;DqNam67KY9E1mgy#-0p_Tk{e%EgHWq&Sj51&|D+qw{v zCaeNAX$>kibJ?8R?A@~2armaqwmoQ+*A62c4EEFt-UD+3>wNI8o*QYG+Gr)`vRv~X zF08f|I$Eq0TY;dV>emNs7K_6~!BD_ph_ zU~%cM2sE_4c^2WWC396ef*R?>&C&jtZXyE+*F2(wY&#v!`Wu0{RGif+^c>9U_yA;v{yc@=kIoE{OD|D528xeH(+>KhhE2L_K1vEpunTFV!G=xW?sv%yOKR{ z9clbXUvXVm*N9Frq{-3AbF~{c!|E;DuAEF8bJtCA_jRGnFRGeh-WolA&5>Q;G?U(~ zz&IY#n|~`VN}XP@Sh@2zmIYkGFvC(BBbhEA%d4}bbG_?@1vZ4&IUbC1j|L+^#U)p& zRcgd*9nYNa{lj&{uXb8KF>=%;_8Mc6qUH8nd8if-W^1Z>M=YCf)bCr-zVn9sRt7fy z(K|Ehq?J*^xi~+>>H8J~fk*0m^{qD3`h29vSAPk({IfhIX-w9b)LzkUF-h?~=6Nlf zw5xU7FQb6s73CAp!SZ2_3)Bm?S24;o_e%5Fx3RNSrp;(q%Z|H@4ql-scffbls>SWlRQ0{FI5!eDyrt>kyNpdZB>3diP?1>q>8e�_hs;ZTgky3HrHkWd5 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

w&0d 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

}gsZ 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�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

g} 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 delta 1429909 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ͽdsy2lo*)$39RN0}0$nJ-+kd)mnRZhi*5^PuFP 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

!v3m*S zh3FkcHPn3WCGCGb>7j$cr~RVxnMDnP zDFgfvcR7jsX?!+t$ChZ^ynf$UZf~!R#$miu{RT7<7792$mlB-b-rL6us?mC4=d$y> zKkGQDfJ8;^Go38xgFQK&_fq;PHSPQ} z_|&vLDq^2ynD!Lho$4EEPDopnC6sdhgdwj^`CG!!yzqxDBZeM@q(3ndg_05Kvgud5+ePa&fvbqtf z5`=jw$zJQf@cn>LlDJaqd686>^2`7HaB(bYq5gZJW@COvrAa_oV=BbXLl! zw&0LFoi7K7-T=^DPZt>cj_@%IB;VZ(K@uwY6U>f&F0T47jOl<2~h6HSs#48e!OD#u9sNW4o=)d6Cd9 z>-JlX6qK;}DI~CHHR>|lGb~vh+uB~$f0w-=tDouZxMf<|^_W`5%a&>4n}s0T<4TpV z=k#1FwTnszaRv5N7@+Ms*8T1wI;%cuQ85eqyWc+@4iI zbS9wxOffzzVy9(^o4RlxRs|aITKsmgDk)4Vl>3=MmG6GUvYz*`s`Gwr;f0#->+UC%>wHnyE)|dQ^i-4 zY<5rgNLmB!nPHQ~s$#ua;?oZkpFZ52KHa=~QZQNOw6Jpe^kowGg5&>!l?z`0WRSp4qrQ{Uez;c$j{z(?GF-&zo9zLNL|{C=k2d0tqp<6HR< zASi#AAai_ZrWITfOp_kC|NhgrH$0&)@KaQukDqRSzUc`tLNYLJ`uz2VUVsuzIXM~2 zG}!5ve@9@ug+TPz9PQs;pnq_Dd9~32xQ}tsMA%HZFV}Qb^Pw^cIWtfX| zw5oO?!A6*Z9$bgh!Xw^Cv8y=Lh+5(OwM@Fed*I9(dErO}^TPFT_Z)&|n%fD78RtG9 zfsx}@QBNRYJhoSujDUR96Fhb1_Df0K6=T$PT6mpRp&0NJKTr%#u5 z_0^ob^FtatrSCrP#~&9v>kdwaVJfN~(sxMjRob5(eNX5{k@#hBl#;wrXb-}!1?RRby{)WzZ9DR~d0Ex2 z$ls~k^@^j)eZ3N1P;QN(wRu)RcNE0V7#6{re{Ha9F>D_!_n@^zV*?>P{&~V#AEq$% zCP3E+J`Ceo;lGKDD&XniOKqH)e!+?F{`13^KYaeXV7TnRG!?^kj1&dp_BH-AhDi{@ zB4+WoW7>I*I53Zy17NFPXewyXFM^WR(obBUSJ6*;>fd=PuKL$>^JTjEn7FEqF_uo!*PV1`U{P7N1&>hMkA3L)`?vy9Cgu{FH``@$p8 z4NRUB@5o_%(}Xkm$N}?9Rk9Uue?pxgK|i<2z4H1lC-mjl0CVL{M`fG~jXV_ywAwFL zC22}?R3|CAE3%`S$ z=k-AnOv8tUwtR;5yY#pSog@H6=60ZJ#N}8Dk!ZuojgdQYN-J_PgVDcye^^RFG8J3e zKh~JG_Lrcdvli%3JE%HAt;<3|&azBI8!_`TRV4?~oabgOvJrt%$!af&N3THWuoJB)-7-ie-dY0WoMUX zbE%dL7M&AfU;DnS7m?cof7#yHGp~ZEsbMtZFJ+~vK`)*XtW3R0IET!6fwNSALEsYS zZAvj9WEM=nN}e*uE1f;h^c3BUmS<491XHlCsE(eXPzwb@o^8vBjFvvwl(_z>;*Tr7 zGr!HA0oHwUnpye7Y!L(2P+3Y_`7}iqMm^kXm-S2X&d)@8w3#hre~AF1U5s2jx1J_T znf6T1wT{O6#&wsheAIWHsEl@@*n>72$^I+(;V2tMP8bOriLrVu8{A{y*5dc(F=e)> zz!(x)<(l%1#LQMpk4r4G-ozz;db=rs5|^Mz_gr|WB<{40CwgkDj^U}PyfjAB+TkV! z?V?caCf~f>#LFt?f4dcb%q#S8g~J4lca;1MrD>ZOFBk?w6JX9~wQi{~X1v5PC3U-` z+Q_=mD#d|mE!$NhZ{&s)d0<8nZiWS;PfPxMfgI#C;4Yenx>8v3<0fL#V`^(eyW|_O zc{&PRm~e1JYEaLZR<0GBA2+2NO$81vbUfGuUTCVgYTHn@{EP_wg{tB&TxJVy~{N;1EP1 zNs)Vi?}wyHw0BbIem0TEk87_C)i(E%#9+uPmE22>e{u|*9Z{1?{G0>_JxC}arM;UG z-22^==Oe2pHT4E8fS(t6;F{S)_r$nZYR9R{eTGqZ>P#^)GnI9<$3?m1=c3imAyEOw zgM7j6DhJv_r@}}8Ey0pg&&SVVtRdZwGuR_!tN5e+R_MuJPK*&6Gq6`F73Rnb?xig6 z$gU_me@y6w#0q{j9f08>aDRa_^K8e=(i;FDdLQLIYKNP>PxNh9(4GBC4{^l{rI4ea zJwLZ5bIg3Te_h}>mP92qF}a_evjaM*z+2bZ`vY-O z)-{KeYG21m`)Vd*4Z>u}Xw^f#94{?&{29(U#Zes&N4&EX3{bIp-n^`LUYrC~<;qE` zbkZhfjA$z76CZG`l7UeMx2qRbdd`$IeTJy1WaF;uMOA>BDb36GqAK7aJAX#&!eJ0Q ze=!s2>RzoKGWMh@OmdttFWZxP+)&5%nLTQuA46Y{e5mdSU0Xj6+xYm%)b5&ZqQ-5p z_oZmkb;ed{*k;NXTf75JKK9b4OlJ-s9Fu6X>AbkDs|u^lyH`;dC^^#mdp(8qlY-9m zW+ya*X#Q&QFE%^LaG}&JIoR!Vy#j6Pe-TN5pIn7A_qJ`pS%&`zwNDW0j?eZG2TkR$|6s2_fJ+C9Q2@rE&v4dH!gbN3x)HusV7egNhh|InEd=jjIi@Xk`GlT7<1*D|lI z?idqprQ)oYJxFP0rVG*?Z-jPU{F?7JTy>Xwo-4I&6}yH{*j#%PBJo5uEaF^YLScRL zCS*^Bwd1x#D#S#prZ|21=*J0{e+tstLEKTG&Oyv6kIK|)1=WT6ua&?%&G6}|Sh-Y@ z&a)*GA&0Z^wnOnne%WNo2Qqi63aJH)g&b$@bP)x%pM5byTf2%bLdyka*3ovn;hUG8 z6ods7>LtJ5yznM3Y0wTfOO&(M=_wy*X%XVSO320wPcd6~4;Ct_`yrOl#WTKX zI3hPuRZ=nu{t!o$0^Hgk;fO+!ruLy$NCX(KxIyhl0n%cdBX|aQ4*noVK%xesC2d#& zo6QxV;%#?>Yu)o;$EzH}e^Wi8YycQRbZ2~lj{rzcFO0piZL(1#L(pp+WTU1#ITVwI zjcOBBO?_sVXtk2{cGTD;&?;N5ju@zB$vy+sECJvCgSUJ7`~FCEc5jHF zt3*BbhFoZV$feE$?Fs_*R`{kVVv9?;Q6iVpOG~4U4gBryrOZ?z@Qf;}(abLY;2+3> z%j=4)0)42H;^m91g0x;eD{ngtVjpIn!fyRKfAEhfA)22ONx#prv060w$ClKTi#PL{ z=AsK(_tms)v&f>ME)?d)z-DY;7;O1dL~1g$uXCVQBIdAipth>z&VARH|0MHTd>5+S zef}Tu-{H-dkuM$;mtFfE6#+Mw;g&Tff4!K`Zrd;n#_xFwy+Acmr2YX#fhKJV^foNF zVyA80Wj$<{z5Yl`R_&y%T{j+3SB|B8k$$2+(E{_+fVtaj51UVWViRrh7@avh8k7o< z{|NFhcoPwAAT)<3^Kc2^f?Qj<7=TEwDECQ9e|15aqy=8fg;y7mv9>2C7s~xke?Rx_ zx^MeZ>#jQm%9m9cWWV4Lf9o zcB74)-f_V;7}E%qr)+`q2Zl9)%X=&LE8+4JQib_zzrgTf4tH%0kQ(5nGRJdyK3obI{PX6rhsGrcDbY~U4jv6I^xy8 z%X9Ai-Bo`__4=8Z7vp#vvri=#SOv4s&IYEI+EsY-@N&ZN-|#NSFo8Fg++iKONit_i zJo_lt)vr-}Q%yb$Tp*9UBKMO}Cq!z5Y8vNsTTQd&lEx@9NcEnIf4o$cXESrZj_SR!wXaDw`Y=U^Y zfzx%}f_3(8Uw^3@yioBm$QzOSY|h3IHur8p1%7usY(WrRac_CWJcc(V)g>u<41z{ z-4Zi<#=$~%>$p9$WQ)zkIy1p)G{a3>&1P4h)x-(w+f`>yyFvZTx2@&Fn!+V7`9L3< z$oERjj9r%R0H4K;j>>o9uzq40o)4k^k4}dQ$Kv>&yo9J=*Rz`GadJ27E&3e^~Q((!2E&Rz&-u^ z^5dP%69s-k^ZfjB_wT#;RJE1@Bp&|u^)57!0-+op0KM>_4*&W4;n%z0R~Ch}6fXS7 ze}CwBIw6^-F@~Qu@cij#dH97Jf8@@}yTgBfW7n^tyA)pg!@mxHVE(ej)&XNHjnTTp z7QChnkk4Lk3J zSxrsFxOZ17?*PF)?Nr~}SHFR(NnyqNplYSCSfgz$IO!?sPWZhVRk`26-@f7vBz1}& z-Umq?o;9Ej5pi?`w%aE!+~j}LgC_7jRC~?%=H+a`qy)K*$Pk5hh3(SRu4J(_vy#jz zfkUn(zm+q-^8|NClCP13^wqP6#5{`bn3dm8Mj)RwlMRjUH+Rt>{Dk#+TfU9!>$jmn)7Q@qZ_PLMkr=NiOOpyV@;nw|uxama6=FlZSBR2>U#T;^YD0>luj^^Hr095N zdN$046j=xW{bF{Ckt0p1XCO9Ww2NYNH;56;rYM!;L`Jz4QO-rz_m1Z)*(o-Pwh$GM zTqXqn2fE{3)nY}&41XcWFnPyYajFvBf7y_+^_)#mPqQIoXM|SJ&n(MWe%KSgDWiq4 zro~Ic9Hp`W?(?;Fim!%pB@hPGjV9Vs?=(?Gyb0w>@;%C3Cfd>LGtrJ@pNV#hDJJSS zY?K2vXJ#m78x7^SH*~kT0JUYO{3MNg?X>It#&+89-fO1_9Dnz^>+H0p*=eWk%&xLi z^j@ew`Fmv?Tut>k3%@36W01WR8nB(vmi>7nP#UHP+lk&2=dkPrFq9q1SSlz{Xj03g zti-jFy{79{vM;LT{K{H2lSxyG7{=eknHDE!`|(2#o-NO$TN#e=(CaOoVX7_FR2FhYz;@ND zuErGG+e!j;hPYHKgQ4Ouh%D1yUH>?QS)&tL!VKn>>^I0ngT6S=fM!cT^>`5$peNpViu+@*->YP*@N`S3)$;lpDZJ>lWHm0YZ`j=89mjieT}gEKo_ zqr`GT7@>-XgH=578@0Q6YFBwmX2o(7-3XG(X9*HJZEIuatC9^(%entH_Hh~nIonap zeB4@{g@2u_>yTp)`~b$>|0X@0_vM{-5D;7l2J6W zy6mxSjDtGGAuT}1@qR4AP*=jR{(chSRw+eKqPo&vduTJOg_^qkEgU=9wPPpOB?^6t zDr==$$>Qm3I`eJ)b$oxEC%DB^*X^G=-fC8HJvK)TaymlmN{t_%d1GA+Ksn0{F)OfP znSXkhAfgs{7wVNDkGFRh;zIPC_N04$)qfbbI3RLd803sRFyTOB6I_f)@(=f;sW;tYY| z)RePKVfsPba9+wIiw1gDAdDej0AiF{v0%G~No^nTQ^V?naIWx7+KF`%YSAXS$ zO0erb0B6AE^7EGNuq9a1@z}%DKHX79Kro(mlty<}VoA0I!!EI-k{g=9%fZ<|8=Bxa z>kCHOl6>3H1S1s9NOr0Muy^x4<*UP7&O;ffp6gr{s4Gftssjf&>&b$_8H*{KUH$#uHWQofxoG+dW-fiAZ05+<``I5U}U zYPzYIR4=>OCQoPzHR&Wi$F62r{m|6pUp4uSZ&Nj+ehak$U2jaddfle9Ki8NuX8Kg3 zWvxb465Za&$g^qZYPxyuxFwO+jP=N;j8P8~G_^&q#5awf_}J!HUtiQpa(~QB%};u| zf`D!>=H#*5Z2j|VK9#O1KrCv6)UoQ{-YQwXhBHi>NX2W*Ew>Hh0u2JxjAWN_vDu`( zqosVcafQ;n4v|(5$V!PYoJ%U&ynyE5nhR(SS}jW7=%Q`yhHt*oKG8*~w?7FuPj(RV zGlxr+LU-}=GTl@QQtQ07l7GkSsO7BqRa@_@aFOXh{XE5okNZsbv^!78dRoUuH>W%9B{QPqFf1RRim%)oK6Svuw z9&%5AnxPnw4anv`jo_cI&49wuS~Q@Y@yc;PHh?xMrg#p}R>dQf4(I}BEaR6W?Mqe3 z>r@Tr<%H#;!Cp6XT-ps3bqXV%gQ7tJvYk-tu3E3#VMwdQ9!62_FJc{+cmqjF(ZX|( z)F6Or039OWmi*tV^=SfsOyLfTvjr0gXYnn6Cle2o*moEc$eR0P*A8RGQ=c6jcZ#<@ z?d_y2naeyu!_k`^nLK*?Ioc1Fqb^N3s=ucDSngMv(XYptb9}$d6lXK3zmH<>^%m~h zJGSe^2q7}au>GtZEau!W6VctdDV5wXCohR`S3%6|%^UU#HJhKf32WJ?g4rYrla>yD z+qZHo&uUA3vxKm>9;z@V?alRW;K5H1MzeaL_rehLXU7`5y6Sb(eU_UtmwO6cp-N}! z+3;*W2g1sB!hXr~odfNLS)J+J<^^@Zmgl7BM0F%&KF;;os5UYon#UJJDIt|-zcu{g zD%f0kfwBsXw^Ssn-@0wPSM*X-raH%e*5NZ^MDEi~yORsHYt)iqqb7lp`c_&hXm(wU zsT+>xrWs1Kj#7+#`#KipeF;+nl*o(7Qai;JNN-uhA8HAgQsD`fQx{#EIs$+~)5m-md~ zhljK$bg?zhTU81cRH}IOw$tTMcP@rBf`g)g!FwH!F;g|QacTf*K$gE1pU|AasnbCC zn)kymOMOAxKRp1g1ptiQK%pwD>CL}A0H=hK?Y9T6DOKMRzvSfdrvGsBxG}L6e`1(< zt@+>b`)rlN=+<4k*zLs&BNRQepA1Y`h7wh)Q0xmhB~3Z-dkxNC(F|1Af3G2hQFg@<`X6TPC0=RMANiE;(IgkH%g`Ql8c0xodf&$0nlKCm__)_z(5F18Y{ikc@UjwjyL@Im&e7wCC;zb|G}rvJYxa&LuSTNp||y1&l4|y&veZ z$>(8#^>OukE#PB*$PrQOb77mR`gCP;0MTmh>mRZ@R9e zN+ZTQQ|+%VH(z;=`9Fo%H(-|ml^+zh3+f)4mjN-CQ8of5m&}15F&4<% zMM_TJCOLh&JG|U|IBA@m@CKZkUcOF1Ur727k{Yd<9DuMIrk5YnZx2!`ORodHP)e=o z<><4gck_6!!BY>QZvh_f9l}HEr%v>GqCSfI(dU<0f*(15`ZD$6Z;2m6Jfe$pU($>< zMp&FR!*c*@!9C=eT$+jH+T{vKZZEMHLz!zjb+=7;` zbY$*hJNZ2519NT@&8QFPD9wK1m=1g-%Xm}1Im}~voz5~>4oaV=N_*2oX8v|~U9`Zu z2Ph*v)HR8Xy^Lx%e3os0yyd|~^L6AY`P*iH=1@2C6}dmI z%3ZiEo@1AMxrbTa*vE8ohS{?tOf?r!-5ld0mC4w4dSJTH>ioT%KE9RRe7dHhtu4 z_OBwZA8pdjQe}=aoQ8eIwCkj`8y0?#b$vX4zbq94Rs>_GFF)@7m%iLZWx7M<1Zd-%*6-XJ1bS4e8LUBQ@2F#)plK>RFvZ$` zTIT!SHWsetDWXi34Sr%Oc`QHD_%ezg`PDv`t~Bc3)7{tU?sL|vvC455FB9Ql>2FP| zAP^jZ)JC(lDUdPH`J$EJ$S1a18+mJ^64qPPB%v2h0)48atIVaPk-IbztwNzRmG`lI zLl1+j)KZ<)2oqp3%!XnYg{|4KoNwK@c z)!J$bhbCi@7G1~vx<%Dhj)p=-X5&nFs$5;jMN%($Xz+_|FaWmHOJ0*<79bksa04eOaw3g#3nR4HqeT^Q z)=?{3+jZ_bt>ip)&`hRi6aI^TzIZA$Y>U&=9LYK}e)Sna>DdpqbDlg`i(}FpW|{rr z^P1#!)g7AMU+?h2RqLh@P|_DHu%S!ZJ4hR0#`B}b!f1rG>ww;^xchLDjCL{3$`_^t;O0oZl+lKpZK5mU8cxypN6MDDiJx|D~SYz0*~i^wgef}1VIVq z!u0cB)7QJtBe_Kc&cN%wL0&Ngd!P_3t)(rw4Z%S0fOy7$0qo;hS#2|3xP z0MT(4*E-#G#-bJm z!~M)##ww;A_*}`wim_V$FDve`hBS4Z;w-JyzOvFs=d1OiEv;1;2ydwcQTQeq5s?8aGm zJ*Y4iFG{RmgJxELss<{jr**{-z7RQ!Dm5*yrR9u&D-(n>VZpl_j&as~RawdbNg3nl z!)qL-ahm17_7}v{sa|;-dF)-DwDO*`RB7XkQpVzy9a#lFE zm}x-#wYLW$^}=CFyegY(+^=)0y}6!F+mYrbR?rTGResG16utIXK@+Cd0hSc5*0N>~ zT;nqj8ya9GzJXG zE@s}ILPe*4S($*f>%oqQkqPWah~tC_LcbCr#v-pD8QX%08imqoAw~v?`gtu(RabaJ zn2OoQV%{r*tMWk*{v3$BTWr-3gjTR%dVg#!o9sYA+gE`?%`S*;Vd~T7HmZ#yM7R*( z{qZX=RxUJ;tjbpdcchKZ`h_e*Dlqrv!x6i1mD4JJy3w8#JEu$=7)U!!5y0QR?2wlK z`Rw^k$fgKjDXGx41P~9~^HC$3dNjHV<*;87m>wwp1;r0Vj-|kiGt1}AHBbZO!0TUL z0J(_?Da8*SZfU}S;tlFBUenqSBjqimAAr`iAA8@X6jSVxO!UT5Owhsw92wo(XoDBD zy)DFlx_vc9BjGSr6F8i+>s@Y8sL);q65HSw9V!R2g0L6r4b8Ef-&!$A{nucxqMr3K zdw&A_{L+;0OX*!%Ls`vO##dxQfKtUD4|YitaW>x_3RH^Tl0`I={Oxx+{gb}@Wr|lQ zraxoXA9WhOE%0|fCb&SDTqF`!v`3k9gylqkv5U}WB0G~Xl)ST-T}@&qXAa0Y?0K@} zK*5Z3&z^R0l~NONBM4O2b;K8DO@0TyJWDT~FVi0LXMVZnWpY0=U$$)o>Kvo0>eVt` z(3SP%ChkpEyq3gH$0f4X`qwz_a)sJS6YiR4JP3NgT&hJS|;1A&v*H-(t1N$li|zyf>2yM!1%s3a$>Ax7uWqI1aLTmG0s z34abb{9t~W9DYjJ3Ax`>+|a=9i#V?r@sjFj4Ei@2^;!};{g}u)yh+5_@#_viM_~rL z-!L?{uIt4EY>uaGyyVbcRKVuOvFq-CCfoTgMjF@M+qywP~JFDD0%5wT_i2v zFk=U)1v>ZIv~+D(We}J;B}*e4Hs*-L$ zb=73M+u77ayE~I?2Q$h1{(=T1Xs*mNfgCRhfN(qj#SecR_~HA@<;Tm{tI`L@yb(?w ze*AtA@PNa+;4o;-!3n{v5{Dl@55FEcmlj?Zcxld+f|rBu9zM5J3i znCE}VE4J$bVSbP-_)y3;5=I5ab$Fh{gOXXvtiMfF za2Cu+HaU|Q;7r_FV>)L7Cz3`1ZNmZ(FU}-XbQO5%^8Hdi!AZnc#^d)h`L4<{9E;9! z$<9Ld)j3Gj*ju-DM`I>1@ZNXX@>voOx-XE`LB7R($2fT)RagnZ;;MCHm>Ut(f`flw zhM&H~05^~X3e97!~Rl7?hs0#eH3 z{94yt3cquiL1wmDO`5vyT6lhg*VfI8yX16kk{0>+vbOG4n~rX1J51EN{Z~0OYH~-q zjjk^9QMS;@#>*_%WYjJt>=;2`uf~5Lz-6T5c4c7`9Qc#2@p~!p3%i34evD_rNm?{e z5hW?$ni;3ht!$VVrnlY7IK!+}$W)Q-OOqT(Wkn}*tL9>PhA%FrL!FNlw(L@6jw@7L zp)o zv)wA!aYZRz;k@Nw+|vtkN@u;wfrh$iVccw!SElFwlvBi|aK4v>MIb6IlH!O@UB@@k zIg_N<66LvhNe<$YIFlT8)=leEY0~Jq_vsq`yi2NR$1tSQjhEX+AVMHLl*0sk1~=!h zm6z=Jjw`+)+mYHu1NF|0M5>*=-ana_Jw_lJCO5HOp(Jzjiu*o+T3hE^Ie@{ zg@bB*ljm0uiPFh2M>KwyU6;#7AR8*rrKhD+D9)^|!E!%!6*D(bG#XHcl>t*?>!~|Ms~P;9pLcUJEmVv7hEgtfwbob_xH9hz?XA_qQI44p zFmV_&7Qm$=h9PljL!{8;Sw~9^*{qE;^iW5!^2ooQsXX$E4a?zf7bIt?jRNZJqi5PyK)P_4cK)Yig7TLNzs1;Ig6q=8%?5@0LL53Qqp2h|El-CPO zo7p)O*?lBkCqRXWw?-C0+8EODq`p4_`U<#9-+dFGY0M>dyANFXUeBJVVb zG#4Wh=w;3At)=B%M4P(H(Ab9ANdDoR+B)$Y^IFO`8$O+mOVeU9$6+`=auAj*%yq4u zD+l8LWdt+lhL^NRAT~t%7Pp3RQDfcEN*rNUK5bggz*BH*O++$kn>LJJM-;8NZ&am9 z1tvoHfQtK(8dym{%^J%W} zeBG(zHK)kqF{ILOyzVslx-?yjx^(qRyuSlhPI4PG4N+2qKQ45qZ>5c_RqffSG z8VfdE@xjOU;n(sSTpGuuk<&GJ>_8g41|O(Ca)k>)YBZ41O#9Ykm{V95TEnvX_SYYW zVdS5EKTSwGQkH%9jWZsXn)t>G#cqUB)SOvmCW^iUW?1+2j7m47!z%S!b_AJ5(148o2v$ce zZzrJ;mYc2w?{7aTh)dsJ>)Z<4$A&|S!fm|VSz!kP$MkM%KD4%by^!jn*e^@jw@0*q zdQo`uSrN?*(^7m!ME8{CPCp%^wV$na!Nv3PI2aL=JbV3reTX0H#5lViH9LTZ!#Llb zm#tVq1c+MO?jPI-#F#LiITMyQ=MA`O(zBz0sR7YahuJ{vAhTIf4SHP_*9NndIquf%=$x za!4FzBDfLBuct4z-p$-N7DgGp0JVnC$l*m$=AOZhy(9;O$n7w>7eAY4e|sNdIt-*i zkX-pZcC6=Y2!&@msTC=gqKoOgm$d;u(gtNWRG2*rlz8vtzH$8%KXbScy{~}w_z5un z|0ZFcm(kun6StI2Agx%JpK~WB3%y%ObL%z?zUNoymvN>b7=M4iAO%v~WJ|WvgJMUf z0Pw>?5QO;j=ftP4Pv?)P@7|T3EOQ{NoId`T1pdJBui$voz+{DBMv3X;+w}7@=hEPH z#!GXq6kZm;JN$&x7bP5y5Es0}>5J9kxfq9+e8=lTH1x@uXL=s*DT$ZB%OD*uB@dKv zobZ9->6ef1pMN+BE$~wmpKl*ee?PTi8||1?a{Be#Q}{tE!IYB|en_XLe}13-c={nz zNR&Bq;T!(_T9I^&2a?9%rwt^3{)JD!;g8?rVCCKPZyfq94Cl;)pZ=PDLi)Uf*$IT1 z8v{_mjPOcONZd0OewtxcFPv+H1rQQ#PhSiVU;+XHYJdJkzte>P>o6LXAYQ{r8K6@^ z3E?x{!5c_*2C|rD1s*8Rxb_ds^ag?e48MO8g5Z#n$q1rh0U8xp!stDrs15yM=3f`o zxFz#d%{3#r4ZFMNcndqpguG5xGVc=Ak!1TQ+>(nN4FvO7sV3j!4c*rJqK?5$j)AvE zje?O8fPcEqvB(w56!gi-JwhDOAs%Tm zGQhm#k?tgHpm9Da{!Eg?NlKD6;W*P)3AcsQ5Pz?+WY8gYlH&OWYLRD+TBaUm=(8j* z3x#41@3ozy0&))ZF=z z+<)BjaVY1}uE9uLrn7xV`*nq-B#)kPEOUd^MM8TfbVoVr)FhN={c5?zdT3m2iNSpN zd48O~m#cQmgi}hh0k2iCBK;7Zz1RM|j@8eirjHvlyw zLi5#OV(CwuZ*}L#uh||Y8k|(!{Df$d!GAQ`G3{)J248~AqLF)~F`8ixuvHr47+ynZ z0y^hMrSXbcueVC$T}%L)(ZQ`EHl*7axMd$mu37SK$(7a2$PO9)I+R>F#f0j#dIw_4 zSxidAM#OL=Gum|e^Q1qZB%?|LR?s`Z(^FW~m{^&d;byAd6K)+j)!M<@B>@+EF?6PP9p&Xr_ z*^r}CIYVcQc}t~?FqiB0U=*e^OBQ)m!Z}9JUSPMKSciLHXgMBfC%AlR+8s{^q(yjOUaOA7gBBryS=q^bghgI$D!Nrd)E zy*YKC@8UoE$K`TB+6wPJhm`5UT6J>44-m#AWF@E;O6MbCGjwpO_ACLq9P+bn5(6SQAC3 z(zqaA?$3KLzzFA7GGIE#O(&46E_wBA9B0IDpNtc2Mf#9+u^V^}56#&*-R)$8VfZRD z^L+tpknvr0drTdqth0HUPgi%j@?64h2(Fccsff7Beu;F^xPNabE|;=9#hnr!0rlWz z_XW1}@u@-bG;b}$(LDk!S*0i^4dFz!E2G6{89dCXV5C9l6 z^;RUnGYkGGBt7Uzx8*%PlaN+2ka8Uf`5+Q>q`M6X#U)c*wWHzXAZb+aTD4UeTr9cM zBVpQ5Gb*?oVn`~KK{m>pQiE2Px2+%}f3rIm&1+D$l;sG`nN=vbpg(aw)t$j%Yr~mS zDv%0pQ4&)o4`OhHT=aFWI4O0QwA|jS6lQ!Vy~|lsFsS*6mCWA>#+B&M@6PFqM0Y#F zAq#P0fN&WG+8jh%N({z0s*vG;>1bXGv_{=xn;N-=N6WXaZAX)eSzPCLHgZ#kf1AJr zn~QsTR?+2Q6cazvAnec{rbm>p&ybgO+xfE(2@zkZ_L*FfZw?#L$rD_X= zDi&U6DrBbX5?>i86VRbOZ|mp2AGuo^QRofuh^_1J@E#23ePX~-OCTvQy zt}ajk%3NggV8e;XRHzSXlH_)D9&B;nu*ialJcTwj`I?71bqYz&Tf zB(+t?!z-1?l@wjoUQRScYDIounrf(yeXG^n3rtm(R!~tSJwYs`Nn|*%G?}FrjAnjWeKzx> zYFBz)CmPH$F8?>gd`9HFv~lM6zl9}ZHpewQJ-AQiWqupp`s ze`9AFVjiTMSEuyZrQdD({*t~wr_XU*(A*!In{zVEDz(o1iazcY+%6&MC#!@+0`@IYD}^SSfF|(o&Jb z^cJ6_NYTb$3Gvbk1NuC!8T2cS7$hIzo?lj9zLr&Mu&!&JTubh}!ke|rn0 zY@Q{jJw%vN5lgFxx!A%vU%4vO>-HS2aBym@p^-|~qq5Z>qzziL$;#VNbSEphqY@V0 z*3;lMvG1g&Hb6;^aqQbro$u`yFSV`L)Ay5KVb+%Fcr&d!dN)`2+^ct`hS1D`zW-`& zs-}HytD51)k-mF|^3xgZW*Iu8e_<9{g`_Hw*KtBtu%(d3b9ieVz`J=X{5tI{zsNvS z{?^a=(%akG;lS6m-g<0HAH>pOq;Xl)akHalZ@2H>~r^YrYgkOp?e>E4bE0;J1 zV$b5kt)x$T4hM#+qsXFxL8*sVaXAR z7OzUt#^6&!H7~1RpW71TW_nu=seAfPy=jEZ1G;sG962lHFfnIU4L-@S>=T0tCrJIY zJHPeeLoLEbr9iY&FPDZ-e^aF!f77_0>o-b?g$9<9y#JPMRbgYRoq8>KP>w#!ezsT&rg24pEae|`8@-k|3jG!s5@ z*A4PA25JnZ$t37=- zCCnm%d4}?rNRiO>rW=g`cNM;#B}>FrWQZo7*UmbEQtRtkl#Kha!~R;}mxxeJcMR+e z1-j*`3H38S4)smFSEr(y+cT%8#wmHV6nmp+Vu5!di*!N=FoyDRc6MuPE=;R(Oo`u8 zzEe2_mo-I^b=@l5#}zZB3VSKsM;>na?^T&k^SG12jRz6KVQ&6QCGr0Nz4kG}mm#_! z6o)FsAh#;TA=_60G?!5}0w#aGTT7GUHV(e`uh8B$RT&OJg0HHsuCm?ZROPlw-%>f{ zb=f&=F8lWbQlK7?C|k0VgW7J1`TznT2!OEe{^)e~-OKso<@42I7gTf*O!x772lPPG zU(j^ZyDk7IZ=w76+WqvZwefVF=|Zior7O_)NT2TQlZ8kl;6fL?eF}dFuaj|fnJZlv z#=y7WU-^ByXANCImnWQLjLt|j4o(^I?dOm0UopOSB&F20=ckXZO)P$Tvg}>5B8yrND9XLh{K!p`Bbj4KGphbfTjjMGMqO6T#3iFV+QCjVOE~ZnxgNF= zfhccUI<3%Gz+0i0HpT?4UcT85R?HYIcaH}tzYuJ=_=L&zWsc% ztqIEdeQVp5Y__81^K?tjVth(AVzZ7hNG?j0dw*HUQWl)cpc3T?{Lz1!umP9Iiz?qiCqODh$7aJZ3b;39~h_G%veMpQ`G8xtL|KA zY&A#}L89J~%&&O=g=c?1zT6FZm6Dfy?Q}=R=e^M`P#$+jhL)5wW{Lb%cVwbdbV(`? zxTCt)2*8G!C#ynQj6Ud%YBDHIZQUEyL{E$^X2-5zsL!2_@x!Tl90_ldpB;AF;rkUo#1hrP)%ryha z+mjP#j$Z_oRvv%F9Vn0X1y9LCLoS|NlwU~kpyGq2#Bj{CYJwWJs{Y3nKc{v} z@q)LT6$CcamLO(6x|~k*Zn_z%T2GOU_KQgM0f){9xz+*29^uA8SJRDG6qA%UX|)L@ zuD7@BQ5v_p2r4aiRAmM+$L&w=i|J33;AmgWT1}=mfwh0LoH4XtafJ62cP8g)H(EUg zqgrc&0{Vo>=W3soaY*~yqRlENGquU8zCVV^u@H;&eFcz0ZSPD*{OM=i{YnqNr@?t^ z`hOYvb)cfV|8_s-F0LEEk&HM48(Pq~1*|)x68WVbc7$*g)ltf`AL35Vye{i;8Wgw5NZswOoN>N=u0nQVwC~Aw{(`T2^c^Iduej27&wVfP3;{u9$PD--YkhUcJ*~ zJXsjbY!DJZJu_P3k&*9T_+H{M=Lw?gsg&B@hAbpls8k68BjYHU;rW>dZaa^10`@U8X9Q=J4q6Cm6&y(v*Al?&6&4)l4W zv?V_&Q2qtNU#M!Wollv)N z<0Oh;@kqt(VG!Gjj1jE64|b`@IIU(b7pP|zHd;ufpH!Wu(3p&#A6BP}_Z#}RS~Fgb zjrVqnH5e>4H1er`V~a12jc>}yu3K6UnWjo(s&gZ!c*_O&bTm{Ht)vo{Ug@gE-_8ha zjPS;-FybMIu@Mk$3vr>FAjX##+QAEF4a($p*~0%}%wL?}CwEbnQ*@_u>uCCu5Fb4m z%0y&EXctLI`k}C__c{Vn2xK>Iu6rpZkWkI$>uhO zO}n|dwo5>N@DGX4gAg_Cz~;9ekKMklGil_$VW9qO&oqf!FB^d-yEh{3CdlHultj2Ht& zJ>a*sgj%1J+*f8=Si|z%D~-~DwYBoyjgKrC+lfAZ54kj^ZpgR$6xg?X0K!=K-Wp^s z)Hx->yEM%(JfjVTioDV8Ixw|m%8Y04?M87i1TwALazOqT4u|`ob8iD$l0?Ba@ap8M86l-SydGFrOusuJdN}G)sKE zyOF`@-ySZ+veuvirK+-%&8K1JABe8-TN z1dJPwo6*T@myeb04k3>@!d4WDModvSL*G2b#u~Qb!rxrY;1b0t3Ey+dNK#_ z#2`RUHg>U$l#5O+-OI`r;wKYfi>|3byJorRS8v|ZZwDI6x z+Kj-h+wqXZ9N-JL&u_!XDS>JZBQx2t-JkMo!X%!OXsPFTbKC&1)7gdy`jQJU6FnSU~HD6%(o?cUjI#uy=1#xcRsrys|s#Yy|4YHyyp zmvpl`CV#zKNpCE-5x(nJ^iev9=2G0^iGZ20^Z+9;koY-4VEYs=cyS(r_>lbld|aFC zh12p=a%lBT4_T~@RbLfbeENCf)4RLN`@7Fx6it>nEv%g0|1=5w!0}gbJT!W;LNKGm z^#0@Y?TK?~a9wZ_=StzS`0Q}kPmfACj1X5`;(zJUk~lTvaLE^3*Gz++tU2ZRc%~#S zfy;o7my!ocCR0;S-@pIzj%TL#?$7V<{&iQ`cb;i4CSxVzq^G}qy!-ZhKK+0nznnNz z-cA3BLqCS$f_bf{e@tKB{c)%h@0gW=sP1&4IoHsE2JcwcMK$3g?iym@SFRyGL40yg z!heS6m!Og-Wy+Xy_ziaqmgO^)D72J8Oa95)JT#Ee&>BIrl!tlg_Ks+@UAMFWC17$_DX z%apQjmwpW;B7d5wV8Qs9w^X8RD-9^eyz!LHf7v0DBSTuHWZ&2?R?A~&IC<)K1%H3;zZdB(7e{x6-Ig9)2(Ie# zZeM!saTjmw1FPjfRr;_CL`=e+^yli|OASCYCaC5H;RhOUmTB|0_FpgmsTyd!-{!}c zUHfb6neej#&I9QK?BV8ZrC%-osnVOZ^sYwxmGs6UkVxwd(m!kkkT5pRRL+FK2@`n z(isQ8WJGtFkzHg>W@s4-846*D3Zl04Nv07Yx-H1R{2H-h81Y43$u!h`0`oJSxSlI3 z#C3zPx5_%riFul(3iL0TwzCByt4u%KZTUr;rhj_y4fp9+mqt)7h|<%fgNS%eSrXC9 zE>4a9^ixF7g3mn6b1D_eRydbgbKw(Y2?#zEqNvo0JXHoNR+~92DBTpwRidha;(X28 zrO>)oI_F$=QRawxSt;v>gFbO8R&*VA*Os$tUCMs((%LDmE~`#VF7{4o^};jxT)|xX zK!1?E0p$ksu40f_jb3ISt)GLHl{&Rg!xLJ1gqe_DS)+;aK>xwM zWW~~hU%^qTyemh3xuc523(l|ejw@D8WB(6wwf_EGpB6tz_VK+R9Pt4s7@y-@wQ!M} z^m5>LSGyqfoY8B^LO^naZ9Yw+Dm9b0xpqSxp}^B@JkLTh6lj78@R7Y+{-PSfd>rm&M(dd$DURYV(c*bqr`7%eZ!bkPsB1iNfWpWem8h^W3 z`DrIzYy}2t^5rS|XKe8CJcrWvXs>y0mA!o$O3|0yWD?3|>|6n|ZyZ1F(CmgM7m}uO)HNAtTCh zzr`V!o`2x*Op#}X?3_Ii-+z4u9a8%Zm?ce{{zLc*X;)g=B;#6M={fKs9k( z1?zd7XyDmP17~aDQaNc;R4zmdjB3lchW8Be796?qyQCEKW$ft&*$O%cM})qT@wFCA zIfCbW`m&Y%%5nuq$WtdS%{3V{0@UiLSA09Vsqx}SS48DKk44pLm4BJGP=!*K884Gx z0R7cjt9)IIbgtR-+*Y~u=>Z96WVC(u*X4L|R2RF*2_|Jy%*gU3*)ik#VUGecL3K%i zpKr{POxWe51{7`jd3ct~q%S%M)0VxaQ_m}QL<35$=^KnK3vh2CO)dVO8!pcs$n0Tf z0s4C8qCNFpY>%WkBbOKxB|%JwaPctm2I3m1#jSj()-YXk*o zh_Zx-H%rk^87m7mV;Z@yn{r5567WW!=u-9!#+xB>?yqv>6dX-Aj1^N*EqV;2Fv(YDceY9 z?3S)OgsY50eHC2VGYB)nd%(9=sQz7wy+~Pz9+yKDB_U`Ja1N!^%;4r~6i%!ci%CQ$ zYwv#=dPpdGm%(!!S_qMemOce0LtOe@xY=~8-#$;buf_rxL?64L`t!q)a}%jiF{yfH z)%U#i^U64<=wLnSXy1tQLVIQnHjV~c>ek5k=LS9tT`1mL=1_`LS^-@26U7Y-6k4RTbX*g4Gp{KKvG(CsjF3nc?zPO3WG-y?<9bsBm*T2t?ndAP8c}wkg3pfy01hjEZM+L|UAkD^ z=H;w8x#eN}FrRkL=ZWL-p`<<_t(#-EX>XHl-sMSS)!xZr^Da{2iXYek8s(s! zP)(>DW52$!0m2*p6CwkZ#QGJYIk)%!{Ncxk7B7Y*>;m*h{Nc7w^E-(LPH&Lv8fI?P z-V#tk`F6sMQdWh7pzv}HJRI2USKcVu0)DV`>z7a$B{2u1^j`|2?mw3iFeMbXoEIgZ z7?&rT4JemmFeN5`2!J2~5+u85Y)D2m>j0BrzLy7($>z7;Z~XS{W%&N`(}#kaVHSmv zx9`8*1pUD2ui*5h#+wm>X(evof82g~ld4fF!em7BBC33p8SpGG|+=Nw3P zIJ|w)+-nklNE1lf0@603|5kea^7Ky7XhB-$AL$#^;~7Z0MU}tBDA`1rvLVZQ486Qj z^MzVw+D7FV2lolhbTp30=>3y5E*vvjl5k6sbkcaxtJjMi^#UL9hzp&0-F!``1l@|6 z)_K$`eG76#0rYr&kZIGo3+%**Uy#qo_rg??11GkBB+E_7{5?tDiR@_vI>-VrLGrJ$ zB`{?C=Cii6Q$wfkq@y9Fm~i50a`SwjEH}?rN+y+jwyg>#QIT+DC|tJH1%4D|eCRD(-(msI=h}?-zVL4#V$bjx-wvlVm6+VizGD zCu#RMY#86qhQTzf2;tS-)HE#JiXP`#-L>U^`1(n{oW^yVFKEZy_Y%IKlT3rke1VBC zrN$l+u3?)miDD)u$t`7@2@~9auHZ|_LbD)(uBDmAFlY~h#YGGDJ&Ix292Vv_#9=TQ zQ*qH}Zk;!eLP_c*Z%*Ue;f)^G2iNe%aAss)$Vb2>3QDG&04P}&J7Hp=Bt0`lDqm{3v z!wbsT;*>|9GB{-ytzcs7RZJdsuPM{Acw18j8y#;-5jNvjl|k)X zzTej=Q|8I$BxO!R+o22}*TmOQh68gZSDM9Rn=|?tXJDN(_rjDP{ngOWz-6fSa)xcr zxOx@c;!L@3;MO@~>YV2=XHH|g%^7gxdiau>12|w@$p04|{yas8^L*&=%#7>je`|PV z72}vU168g)F6#Y7j{un5BXBP&mcz0;Bb|e>sJN^}W2{>G3O~9md!MdP>!hP=J+3>i z(Y29`yQveVy8o=#)WO16dLLZj+~YXZJ2iLu4tttIW<_V4K{98P*w)kzis;QObxa}C z+l$%MMa36_>ozKW~u2 zFIE$le9`xLc0qk1)F8m(a{j z<>=fw5+g!T@<;3u8=@|ZqA7~_C(L~IO)+!f=U@nCPRpsOi0Q#lT}ZQ^tU-+)(&MV` z`IAfUl$&)6F6_g1caFa{e=H(#p+&?;=$xCQ816h^hNUjjH>8W7J{)gZxT1A~lA_X$ zd6t!r)*ZwAmX*(MW)s*ocLik6Z-R^F(bs$*4ijilg;x}!Dl<(DkN1&@tJsgSj5hm`6fkuQNNr*f1+Maq5ib4A|-M- zwcO;TZrH2cm&~14bq_*{6uthb4!Mqs*lABBRvLIlGPmOy0Y$76F4q)@CTL$r@+e_m zr!Hj_=_!GfO%M&Fn2)t_te*O?@sZDq+dkuXyIddGrBBbJDq_bL&heT!yGESTl9YLs zcTeZ#5hkB2;%pvqe`Z-K6l*KY)fCn@3RHJZUaL7rpO{*^9E~e; z3`z47)&(G$0kLzA5{L%``eJmLOYPea&xMxeDCOR{7|o0^f33NAUR|?z@T^lE(j5}$ ziK!~kSJn;+C~I}q_5H1WKJW52!pAncndM7z2yim-l88)hKi_dK@scPRm!AoZM zmrq``xF+qA6m}I%l~RJ;xv`Wnviz7o8#A4?a}+N&57Ux!7$2|m=lCPO$D@oPSEWaV z;#fEC_qy^~f1~hhQn7wbzv^jEvbm!fN*>UB`V7lGQJI!iVm|pXCKr*hlh&PwvO^I? zt2O@g%p4hVa)wHgq^TQu-cpc@HtCVAux;6H?K1UnaW76;RFGo-Zgq;CouXd3kss}| zUE^%rzMv^8ZuJHCp?n&R4$8tY@%-|4L|KlHpSECbf9d4D4mEDFLNBG;hV%j?MZ%V+ z+&4k0`X^fV0JE#?!}YZOJGjzOJikUAaV19&MmBNP$JJ<$ThxY=P+EwF%~q4r$7~i3 z;(A*D+qep6n0$U6IpWGGZxd?GUMrCFF!yeC|k70WrgATS< zGx_u%`n zxXX9g#CITt_+ z$c%8i6RZBZ<7n_T$AYgr9(?U86ZXM+TK^qfNj|`*w%`tn*thBE#meoa-xI4-f@?+r zB>(Ra$XoHLij!+l#s3I#Q<*Z>h-USx@gIhyevecydQ;&z6n$y1T9Gp2|6Yo72s>%B zf4Y_{>RPd86gJ20vZj^y&mfk0Kg#-6o~=G#bJChAQ5XE_N6NiETXM3B((}BemWwi( zbj7YH&o_3s(i42AU0iIf(1Vn2pgJ)#U)vDx^EQlF2lJ(q>4^x5x#RQjtpJeTm-5b6 zIFf4S0#n8Bl)zDa3xQwTy4Hd@3Ka9f5K82BmNu`JN22Y20rdN@&6j~YB`TL9i6AC_ zwOh$@Gr0}E`ziDS=5PVGDwnDx*`BJoCHZetIVG97WDc22UO(Uh5+u9ZmaQDxvbxzI z0Al$7Qu6fsNuGXwy8d|j>D|D|i(r-4ryswa6h4snS4q6-?8z%7oKdGAf1G}Oky1On zu6Tiz#^B}g|A3$N{A^Uf5$cAQIzM}VP%ms8UiuxcTcrVK?_TQrc+Y6O6kZPLM6G3_ z0|!(_T%Y4PqPRPlu%Bc{_)3CdH_ZV6ZFXhlp0Qd{_FJH z(_dz)TtPvhf~0fS4hqsp9d+hh6ec|?3PL$0pwMuU(xO0s0$3E%qLKhVArxVM1R$CA z=g;3y)1ANm+~x3iN4a?>EeEyq(LqFQ=h4>Ur3)XKFMl^5__k2d&y;boxA@Q!1XwkX zme;DE#E-k52dxCS_*ovb6<)&@4>ndl-s{@jzb@J;u_}6x6>Ei+o2(dQMc&G#-pvQkM5Uzp*%!4Z@%o5~olN z_EHuLaIv&6pK!U~nViF5u+FmQOdy@j?X7}^rKuGmz{kS0T+SJbj96cK0BYc*Z7=(m>xWxWu|ODYjFAao$T+8P27w5Sln z=hFYPvf6wuu#J*|LpW1^B$KF^1Id&%xDEmTFQTpLu~B3AQIAqjicS`ZI$?Ea>bVsG zll&@X9QUkILFrMf4ykLf;6sAb$3u2ilce&X?@`T>SXPSwC{_T0iJ;j&Y%oA-4N}+; z9;Mcl5W~j&&wxNV{cBPbswf#P3-MOIE!iV8_+699YoXDvM}OXbmI-64Gv>iEE%Prj zU5hzjbO=-oq}!KtZOh~&CV{RecOa8>nAiP-Wm@Lnl*x6OY`q=#Wde+(vg^qo$OM33 zS3g*$W&TZ>lI^J+0JH5uePo-rEOHr#aIott9LQzRsokU3YMFmit~km?>jlkY7P&Ma zXI)?MKrUU7`D5jOTIS!CtJ)wBA%0sXr3D~VC7PE5nNotZk6x=~{?DwHVQaPHTL`Kl zv~;De`*HzhwkRLHR?GY!traktw$}>j32VBpZU-`9T8ZEuE7LmvXW|9o2CvY7rPO}9@z_p+(+nQETp-LWqS>DZWTG_!z9+RFaqT9b^ z8lk?EiVnlT%Zph`dR2 zfS6Xcl`^E4TfwtNx?Jd=Jr#n=xQfWpYk$`g<>G->O zzDDsfP;*3og+DK=h)>=cXT&d;$<;aDtH#T$tO$cEpC?n5eSQ0yw|A=rWr~ALvrepT zl)2^93ZS+XW<7MNH!RiiRT@@jt-r_$jKa#M#UNYt!F5D6%HTQO2RLWt&OJ7x$R3)! z#g{HsbGO06s@=4eoMbFzJ|CUdDPNT*)VWbr)A>z*?%z#A$^xER%YCAtr)_$ zjvYPqweG%FbRnmE*If+a1`P6{$6G5Hm>Xfvp`&XnEW*!`K#~A*ug%zk3zO-CRF5@( z{nS!YO3mDd&p|E3PE zb>KeNK@R}mThnh$b1uVR?Fs-o^dl30go<&dmXnB2x;62vbl~YN-_A+N$*RzgSjMl@ z1PzlgEYc8NVgHD2t!3V(o2Wj(x3zY{AasVc4nCV#3Lta9>qh8a223sLS3j~&> zr=qv51eQKux81kXHAkth(B8=q+QzBTo>L&b)6l%W&&|Oj1dxjn=^DHWeTu(-a~;SL zXyK0`&`oz#1~H!Rb?gL+dNEarI?E!dcJ6NF(_3?ysGX;{uh>qWqVm0id5Zmoj%I~Q zR_~1!wM&#Ew{v7<*U}P0H@v)i7DEE1JHnqij=K_ra_+d*^EtBV!Hs;jg>W2pd_`vi zFOK2CTjspXRC8US&x)_jWtU2SSf}T`Ch)W+M};gapT^R#6`X!=4FWGo4KMz#-3hp? zIWMiiiX!^uTOsMA44?y+c{*}OFwFs6tw&+#n7Fnb{?mJuo5Zcc_!np5BZbmE&S_Kk z!w@wp?53I!g>r7DoZ?!+Y}o*K$t5>>4&RRNMhP9_mhxPjm6z)}?W)Cpb_H@9A_V4G zJ1q|Fk&3peRUHKHI${UE)Hz%5E?n8xT+HVU8gk29>z$%uS-l zDb;4Ou$W-IS4w#PQO*M8;fAiEJ~H-c&4wj z=i{5nkS^`0XYQe81Y#SArjrZQ+r8ELO0ws?(^jObhSHMGLCPx&WDF~96gy-=o%Kxj z1I(bYV)LMuBW83==*9}Lx> zJ<=>WEx)fr&xd<>g3M^H)Y6ezzbb0(WSIEnPDWX zFVf1e+qQk6_&y9rx4u!DX>IVKxx>FGPjjDvq5oQUH#z`0u8$Pt-R_AK^x*H;NB9g& z`me~igkc+6BH2EFSm%YaZjs`R@2BMhRxd+0Kd|-+xdMZPc{J_+tYDCp57~x$3OsH} z0j_>DX69CY@RmYY3yaO@*%E5R!Hs&W(fVtrckJ zC<-t0hDKwYoO5a;L;+}OZp*z?MC0}yIn<7MI%kt8O=V4g24g&5lpTu;^&f_P586F) z$4wJr#A{qTzq_N__JXL@-S#MNGk~%ewu{<##6mA8hio|%DpdY3DZlOI7!QMTvxNGc zLBkE6(lWs7zCZgYBx3K0>La=~>1cz}3%|bSmaG|eys%s7#%|rPkHr9f7?16>?M2C2 zpfFU|3Up>Oz3^zL_cF|==W`K_53^m~4`VGa$LK6YdOJ5r8iiiV_GUVhJd&h+{abNm zYld?<*3m5WXHa_oJccq(xUh7~49pu|25NpQMI3clA@iw(GbOV!P!55NUTw!Gpw+Q$ z-=Muko2`^uhFuGSRBoX*?C8aDo;HT{Wx6V>(G+oIOSYP-@cjD*$#zfMQE9&Y%y;iv zZF^y6CKukXtmAfV+>)smmybs!7k^GCIGc0!rYw_C+L!5=K|3g7d3T|VOFEY@94DxN zXX8jg?$D{J)FA@B$gc}krW?+s*ey@H^`354yc}{AjdaWVgIN81Pwu2&3yU3H5|<5U zlJ^yw{4@*D&p=pXr>JN-^hfyf@w{g^t|8wtUCD=vBMkS#e^OI<2+QdicX0OQaMQny8rozV zRCNgLcJ~)+b!tnYfVx+$EILY z$+36794q_QpV9me^))bw3YQWvB@?%|NF}vtm(f-TD7TcdCAR~AXe_E~M^oPN5BXF& z-kG$F18IOZF|XK%vvI;oTXQZnL!BDke$cn$tdXa+7M?e3F1KYO9K=A$7agZW#z!|Myua~X>*W@)MhCubM|B=5d#zFl0OMC&-ftL^%v zGQy)N%aa?aJ@&zmlJta53+HDqbDk#V(08obMVD^XwbY7#Jazy)TWUpNl^R=V#jxb1 z&Er>EQ9D88zQ@+?7STB}w1WIjZAxTAc5XJUn7v>w2~<@Q_#A+B{(Q>kuqqwG=K4J5 z_?%j-v}lE_#zVYQLZ{k>zJpR9_gXH(&qEF_O-=- zvTub{u_`=&LW;4E@sD7E-G|%BKLUGS@8|OBe3GdxNw}0mdeGbo(bJn11vKpTZ1EKIo z=JBnL@c4ds^YW5bgLl!XZAK8+Zey!pHSTM+fr`SxjTD@#+VSyW=oQ*CJxpu)ePcrt z*L~I!;4L!z-u%UAfuPSk4X03{;vLFgK$CD9AD_R3_t#9T`F1<>-7TVXWIP`;)Mo3* zUw{LDt9Ns#i}?xWO;(-flKNLAUn&OCuUo05g+{Mwfht-lEY)?%ghEfK_Z^0D0u8bt zg?)UZk=S(E$AK1dX*9+x?^Ism%zK@i$T~HRBb#H@2Rr4gF&^(^H9V&VE9r%`ZYNd> zqlYZ4N{PKkV^)L>;f zDSCYOFSBx-1v-Dm%4Sw|^-2{lS8+V%>!YvhWHmge2CMKMw8ouS87~0OQ2EMbVWmP{ zhpa+ag@V!mIP|;s@hLS>QOX1MK}Al0g%vAPsTEc3sqm;>yQy5f?QbiO&#A#mr^vn! zD{TcTyvpiSHIoXby1`UT&sFR?n@Z#JYVg7o-S^=Y3K-HWUbf=pDwig@C6NRT`^9#b z5ilhbhtIkthtIkuhtIkvhtIkwx6isM7WS7kTqh`h)f&r=+c@k#U*R7ZjVMtsU=Uz3 zO$zL7i@7cKwAl94!}k9VOG%V$$#$HFTcC#|j!aP`#iuAad>iEO`RVxa^m5iXIN=RA zHGF&>fL=)Y21$d~3=Tk84a3Lx;jdRIm8H*-J}9Nu^l|j;>DL^dHF$ymdIJOjaCmkI zJVz^k`p7&-oq5i&%+Wv}pCOd#F>1?iHGfok>mqLLB9sa)uIzdB_ru>Ge>_QMvggP; z6g01JL>RyZdN3-YiinUFH0Ge<0!T=akQx`CD?}WD_Fu%nzwh*s{Ga9LfJ6<^ZhBl zKn+5BHDC}P^zh@~;p@|%Jyuo%NirGu%gEu!x1k&P!qyNZiA7p#Ok)ioNme*m0|J$Q zs$%(+8BE*9+o_<@KHjD|MwDb%rpH*+1|6&3nMH+>&hnMWZ$`dM^xRqjR`r;bT(%0@ zXzQSd)-yV2fRs-XmvCa5wne%rPZbCf_mpRg(Hw7=AL$d|jJ8gGw3?%-q<0V*P8ge! zDMsUjHF}0oZ#jhJ9ScSToMDT*W0rP*ja-VAFn0mB$V8zPfeh-hOe(Z7395&->@*^k zdUSf`nEiVC&#p8%L)JIR{#=j<$FD?hGcuKU(J%1ApsD&5BgZL636w=H@)V!c^t~zX z(`a(%-R>_rnU}NiLx^T1?NTf?&XT99PIZiwamB+k{m2b5MUbL0aXcA|Xa9?T+YzQf z#gQ7FAS(<-sY{WeGGR~zZ|kNSroi&Llend@M$^O(vG_XW>5w8u=Ifx`>pE{4(^mA1 zaaLviSd|i0r#gxilVh4(S+Bs9sFvavn^9RWN$M?|6zx(Qlgk=u4(KE20%@M(UzM|l zaU~2bZP)A|OLew`6;r5O%y8p>qHbNi4^cm6`hc1;g_opQ}PBi z>QhQ5bu>ryp5>P3nj+VVJMo2i)^v^dl=QF5>>_2v_cKBm_n%=Ol-HC$lV>gGM3r`z z^H835A?tFl)oKgnme-Cte{9ya7c)lmC>%MRv?c7S$1cwo zX{y>qIi7UYfu}V!@5TKzfuWSqVvjxAH6|UaVaQ#k(re+gpHXQ?&k`w2&uU3aF6ZLf z5O%jtrQ&oc7gjVXlODXW6`iwR%cF@FJ!-LeukaHeh9DO$B*OYuE(I^wItlJ=;wKC5 z?-i?VC6Y9^QjoNMg`UxWn%QgG(YF{kv9>&a*}iY~Yd~qBy3Vat7j;)zL)%U{LtoWs zO;$;%%daSFFjxXMJEq|s#vRL=4)aD?(?S2DvIc2&G0W5a7*SDpff=oKh1PAm?5qC{^FkF}XIK=p;*7f$4WYp7 zf?iLyZVxS##(@ieJ>~~A0pc;L_dP~%cT2UL`g9mCNmZgi1O1F%swH@kHF!OqCf$GL zq64KhlVsSmsaQIvN4~QULk99Tq zq4{8ETwy5++H&MlPP=-l_<(+pwTIvv?3I8mM_es_TvU9^zk zB3q>eQFZ7RK8yev25n-CBwV5A53dwUXWyFqqLJ)w778e((tDakhwvmj z<&7~wlUquRG)s;cp$!y>Z>ryu~ftmVzAjw)l~>WjmPLK3Ey3qy%%acO$L1_ z{dh>16_p2n+WH-Jxx@GqQ`Mr&-HIE!+(GZG%Q4ME8Gb)q#+Vju=H_=G)>>eI>oV!b zR2e`Rw`bS1!+7HX=3T1XuDGSjE%e^1EJ+GremhkLAE+YQcAj@&c3#*pb}HQp=6kxJ zpe;@Ci(OE=Qx`NrayPQ3z1)e5C(^p@hQX-v$!p_(c#dtZ?~Eqljdy1H(|HZ5Kb;P3 zKPU0(Cr3(d>}zVc)Q_@P_M;ffmUKYhCLQLj8C3;O`uA2w)P)mzyG{AkG$jKo9lz3x z^_8Xx1u16JfAu<+J=5DtW9PTh-`>QU>4DS&{CI@5&`qI?exW0hZhx7s|3t8+=K=8% z9`fveNtY$Ba7`zNY3b;Wy;&piHD3peSWDM7bF_=*CaSmX+T5zS8Lyq(>B~6GR5rEq zbY=?I`$iP8lxk}3d?m14kQ-6)b%;>X#R^fj26L?8>wmUQF>9=G%>~2hw&s!B+hNmd zkegzhuAG|Goc?k|pWP?bLWS{4P{9%G$#aq=PCRGs})I6KR_|SW_}9v*2Ub4o{HT)?V
pq4 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

<=Mj=oi7ev z02?^R7GT5bR2$=z+3$>Nu^3llPc${s)t(6q@ijIHg&}-e*bwVfpW9qNU928}l@9E9 zUOzKL>w0m?2;+Ry%Ml<;Q;<#=)%AjL27!_{85~N=3d+1_7P)d3vhhM7r3=t3u&?DF zD0P2wf&nEX)!s37wq9(j?(N)pvnbc63H}b*J);u!e%lhz>n6>JpbdZP=6*28omhv=<+s*hUsQD={%sknVa9xB zDU%`!tnU=O*`k2XS>Yg)5*a#6SU@w?k4uR%`wz@6k&qqMwky1ob#RWBI^%_k=@>yX zCSd;su|z~prF1|}hVYIfG;5g8v>FXVSzM2_R$Q^akrf+5ZO?qM%}e6 zdDXS3X!JSuc^Ou*kHuTX#ubUEp%s$d@}`hZdP!U7$8xi_TEws({{<@vg5>Qh30o6t zx0S;UJ~aBz{&n;p?ESp|oLaLW958>Po@d|no%2!Eu}zFC^!(TuBw7NwAU^fYhE1PQ zTIkRsg?(iaU{A~lHLxF8(8Cy3W3z`=!hF4CE!(r!T3V^48D)PPHw&g%J%_o0~ zJy{F6!-Ui9Dbo~ZQ^xvA0n#Jve<6p0=jfts9Lft194s}S0h|Yh02QcVD;R$`R4W}g zRBzk~6Lr9fXbk^B97+PD)}bIHSp_FxsQ;%@Ybxc0dJva_03(7j7jh}8O(=ubT**6^ zawpd1CU--kgr zmx8rEBA$wib(lT2h!lBQn;-6x=UzW>Qq__!rS_gU%?vlhl=t zZ~nq4xpGiu{HpI6O7ELLC?a~Atv035zHgiKR|DbqkO!t-n(gb%IGJZazd%??wJw3s zCaSw45zOZ`Lt!;;d!XE56FjOj+6otF>kj)t_ySinvt}C+CJG~`d2f^O*=`Q(2BTd` zPi#vBtukmm9z9e6Mk0TpHy$6#7%3{5V}~LAAfjmWg#bN2n&@$)Y;(COM=08AyXFw4 zMX*EH+y?wlt0SP3ep+Kx@zv%bH~XqONkvKX22crLKz^>@vW8@{wnRXN6U#j7*PZt7 zS(dPYpTEYT{j7gZUfPx<*1dwBnhQ2%j}afERR*^|?bs+OW%+-pkxRi1r$#_ghC`$L zygD<=g{vc@(sDR4D#C{oqtgBV(18&|9Id>aSk7kYfA4`&glPToF!O=kLw1sLoqQNb^R8fr%{7%d+4_6*e?-j}f@olB~Jllf&jN4iJzHbuRW{ZZyh%d(B zn93j7c29hRu1YiOwn@!wn&Bdy_=@*yW=ZYoMphcQ zf~7w6#*H~Fz4jP1sY~vOCA}UMzb96I-?Lp3wo71r8{K$_N~Ij9`p)6(pwo7hE9q(N zu<;N}as7WTW3TTHU3NK=PGPOxExrLAKwOE9xg7Y#Eq-Kp?ikV-5tEtao!RwKCbJzq zx9YneW#pb6HOb)^VDg@$*U2!(^xdB$tmuY|XrX)0smujE3l&%TIi6=u@0NkKby!KG zXd{x(0VjWboSq;8{kC=j3sFXv7?gjgU|44`86ki6{Qj5a>(i%MD!(vYrYyY&RLPC2 zWNEK`0)S~aInF86z2IPNhAQ-53F$)#59JUuy^6EMnv91)o6|rBK(gGps8WX#koxW| z$<1*?L{{3*y__)>^?XztK68RFOU3Mel@ytwY=d|enz=G#Hr z+d|Frfr$odAL;p{#GmE)V=u-rc=>jjw_8B1cBO%PynU4P2ydTs`2cU9W_!ll$J+OJ z`_%6lZ|_e8ZHiCpcJ=+FPun0uzx&jE`aXZ_j#3|C-BIErtUF3PXWg;(J=UH2z0SIL zBu4kBF0%P{sy|06v@${_I~<9&2+B4=+l_aA!@U8$0a)>OA^OdaQn%k6;qZ*z&g3us zOz>`aZ{Xx61&4Rr?=GxHShwrh%Pp2~v4{8L(MP+PIrTv=5%qijc91bsq^q{;6J=SC5?AO@@(Y6A zBPkTaWZrd9j8~oCk-s#h&XVbpRFeTA$#+(u(B9`;D@)bQkZd}$aK4+^oKIlbALf0uU34(C_M(d9vI0Qg*+jq}pW zRzkJuDB}iCawZ>bO@i*h9?0=Vfy&+?&iu9+xYz1CKe zbAWW6SGf7@n#)s;3&K0IlE^mWiW~8$c!y>vb!rF8(mhf$Bv~3^L--jw6P( zG(v?m_p-tMSKdChFyV%EgDZbw>iaY(Anr1?k_Wz%(iuTTwzwDbdeb9dM89I-&~U1^OO7faiZvSZ$T>Sn17NOFlW%-v6b+1V6fL&z~dfYs_>;B z6HmH4*U~Q)?sewdKt7AavkiL8T+A3|G#1Ld1^_RL7dt3CMB1Pbouhx4 z8GrJxM)>^PrSaGJ2`bDSd(}Uco;F5u^_=ENW)CBM6n{wyy)kl=gD{15jNAZWXp)LgH{q;grZEar=Qx}F=y-tSXxMALW&Qxv>*hH)_)w7 zq=W<^m?DXqgcXxiN{QFoeOPKr3oue%iv%fb^qu95jp#B-(K8`9XIdXi=gIe$Cb&b^ zyz)B+a(*2}&5OI|b}h|a?_V7~H@M=;1cmg-O-ut~gD-f^iDE>Em~o!RpYCSvB^OL` zIWQ#n&6~2dO^)>50%Fv^N&7Nek$>jS-c0)4-pJ^RYobS*9R7>GIdHJ!oFl(H0s<5X zF5KajwC^)q&-hr0upm5e96DFG^h`t-6d&(`!cY_vVx0X0eNb3noHih%ns0YP;VdH= zXPU~XhyXcfASWn1b}e7$sQ@+YUC6Jq)Uw%Hs=9^q+r+q&SPAHkQBWVLZGSj+#+}qd zzTWQU4w$xfoNrd8x*gz*6kqO7%@irXnHfd337Ll8$nQu9aWM^sg$0+s9Wjlyu|vt*KnxJ%lu>kWT%Ueb0)Lw`l1_k9~$s-v}4 z=T$(FiNeOfu|G~B+}Arnht;ynaL1&nd$F)AVkynzwOn^^>zc8AmyM*vhgB*;OD2RK zdHR4-rQnh&=~kpI?!AT+fg+Ld$2CA;TGdDt^t?Di3TEabWLMyf%OWk9VQHjdX)1rJ za$FV`%X6+qrwaL2@qcu68FXdXP7j5*{gVM9@^iDUi>y5@2oN-T^nLC1BLrs7#7hd| z*9_5$7Ie%%!Dm%29+#(!A>@E=b=|FWCk<75dfg5||CrZN$BS!M(lF}QGZrvM&R7=8 z?pd2TV9yKc;ryhrcF?jOy=mVA&=)+a2k3nd=tnH9A82BfYJX0w1|3(a+tZ-I|8IzT zn2#CEz3ZywD{P>&s;9Lht~y8YTa}*V zlEBP=?V(f7M1Lh8x?RqI;;|_4^=*bCguno3zx_J>Hj$P;PeIj$3Z%1Y`qvbiX=g+K z2nZOBhDb1}wACIboId^I$M-*c`wQ)RrXT)o=O_)f719o%K!AA_IK_|qy9FXzE7twNvlfhux})wB~{o&TEr!- z0z)vq5K}dqn`oy>oAo3_DEN~zt+clCmPSFa*=q)cuY3XeJ#3n-$eddmxpNcI$`o=_ z{yVm>=zn35m0Ie-8&l4g7MO!@kPAt>QN#87w_j=84;uBk`5WmxfRK!~ZqtJ>zzhmc zE1dBvy9j4f_uRV;ygqEm1jyqoIW)DaYal?=eVH0|qFfJEurG&|0YuTr1Iid9W}^hD z{l%A}gq5vnmH{noedS{I;c6YZZEe((l|* z`?J`YT6Rn#9RdHjN&Kc3!Czkz&&^#B+kkSFuGjFAoXzG;h#mmg8_kA@Wb7G#A;lJx zq<@WD-BiUVLp24>tint^@iEu*iwUYMv!#_5;)>%2tqGY+b_r@?ztziE?B<)mZ06ch zFD-2u-n+J=Y(H>!!@?A(0w^2h!*W5d-2{ln)+-zt5jLV{5e%?PxX zTmL`d7r|)*>SN#+_cxW~QTUa5XXNpe_Su;4CU@5fk3zD_!qN(@!rlbQlv3}4WPknw zwE}q%l7S_gimI4f3r$(o(ZMm*BJ#6n5P&Y`8tl92)*Pv_4Npw^{~X_H2s6^6^s*OV{Y8?T}FLJ@Qc z9e}3Lr)_)xam!vFEog=54T>P4Q-7m`u3Xg4_B5q6L(}jp!qLVOPf1=^E|kYnxB8yL zBLz069-FeDsdzCKM#}8E-ZHM`-H0R+W|!o1i6{F};it2xQ!A%l=}9i@5Arv;lWeGAq-fmUl&0^T$N31Q|IFFz{mA` zeh?ZDzBVGXde>_s-CVl-x+jcpI;0Z*aCnj9W*U`VdWk%3$!-$QqT$UrVP^>4~X^ zEk;~EZKL$0ALA>LLHRYE*_wQPq!iB8B0|f7?symN^9A|%V3J73C+M`-9hPFNKg=4% z1||rncFsOhj{~P0otBqOZ!{C8tod6pM^fPtyvuo4zu|wgq8i^iy5!K6s@k(M=07_FI6qbB@=)b|-n zm7d;88Em5rrT1E(!+A(_x+k22_ zktD3M+<>FK`%&$QRNE5Ow-8gX&AUre2cFYZVBUn;5Pm+Bx0kom?Z~0&DpL(cN`|wz=q=b#nD6===W`-h zVVC;fAMXQc`TBXJSqcWhj(V(ucV3`ED~>)-Q)qp@eq5!P^Al#E8}>Sco*`0-k+`#o zFoi%#+kW~S6sSRM1HnuMx<^z!!X?Iv7<%Zep$YrAh5>gKil^yQCW(68&wh`2f6<;2 zYdx@>kdZW!wJ~9Wb7a|%jx6_j%rm+;);#N@Zs$hW!K`)63r#5~euFaWBm?Uw^afhO z@*py;Dmm4x53~3JA6f_MdgR$DLz1Vw{^$4u?FS z;EE{?6f4Mi8|IE#ZYKO5&;!ozFe@58lu$iNFUbEnOVCVWh*_N&3=O!Yf0);G5`1FB z4ehMl!qbbWw5^^5Hf9l9b84qF-n&fynz0+VAXxpvK*)}_C|1;7&<0J_F?5oKY%^;m9Os#MCUN`A3sRWn{Z1b~(qKGFCPJx3D7sxv=EwEu_hmyP94{DNwsdLX(1g`&aP^Df3j5F zh!$^sr^rNvy&hW*TE@sl+LETU?T{NM|td{)h?*!F;(wLV&NV zkVvbUhF@7BAr!1sNGQD@TOpye>5CN-0=-rtIk5XIe~n_=+^7i9Bim8~*te+UIzT@h zS@rh#E`sp+KusaJH-b=K%wc=r9gCg-5%z3|N)J{?aso>@kr(q| z!*FRrTm?gED!;USK>&o;B$Av9pi;w@3@+BuDj|zCiFW+^+t1wZ9eaIleiNQM5EA8K ze}+4WC{ZB+SKMe{D41pN0$l>N$6QEJC9WM^Ro>SsBhO7Tf)q*kGBhM6UhhU`zibu| zdU1}?%({T6{}=@$tY=PExhxd#GIThvXq|2YSXyXOM%`yu-4#shm!?bf=QlSC%^lvG=35%1He*@*b@+b3Cc*y4+6J@DPd$}YiAcoci|AF1d z#S)@(4ESWEuyE<|@K4IEiVkw|I=w}yi&pZf0N6-_7rp9(bWkVV#k{Xp>($n}eXNM9_2bSRWMeA1W$~24rc(g|R&k56QzcTyLdjp{e~n1$x#6!fB)B4jFv^Yto7!CbIK+b&e}rEh*eo`J3hJ|Ky7 z{d{vGX5;zh3|*EY-{Ym{S~`tuf7foLKV{*bN1W;ObgJ+7qKeF!QTW+a7nS(-oB-c` zXn(GvF96-6+E}V;5A<7VrQrHQ?-MDzg86c(f&gDxSE>LG44nRjr3ym9N~wa<`>~}8O55ej90Yo`R8clm`-!oC zi`a7}#H|V#J+cqI#6al2%^ijw>Baj*E3kwb%AfokX@b!IjF7(1=c}eI?n&*pC($DHdxL zwAz2_Kz=Ir zZK;kpkhK(hYTK;Ak%*1M1XM#?gB&T@ELbRoT(L&Q=A+uC)FqvoTt=_2OM2lheMf*(6c)YR!L-@I`bSqhjKM20Ckdqc(?D$CRSYtB#Y& ztC1XYF->T8oXNDP;#j1;D|R$uU*M3G)K-9C!Fn~|tfIDAFloYes=Z3mK7g!je>CD< zZrg!eS!_ERFhojgnbtzUUtuMXfZ>G_5eqT#HoJ(D8vZc!^4v&-HZ9`Rx|5d)~bo ze_9?tc>+1QSHFK4W97GF2sB-er^|(5MQ&5P94}^P^ONzSM;3ea_wnn~(f6}YM*)ul zLoZ6l_-2JutsrvyB*xE59I$0h?Rv%!*0C6wyLJG-4AqM3hG2!@8cX;;8(kA@d z>GVI{)AQ+1mZ!66ci8>oJHvpOS%k-C2R-9 zdso42cU{ZIu4~?X*B6*o^#ZdBub`^rp&>(~42?Q827s#rz|}Z3XlSG>An%eBUG0#u zf9M^O$b$qhClA^O_=`S+X>d+3Q#tOQI?R69{WyCy>z=vqPTqfwKHyk)_OOFOkASz4Ql!203G9s!agLZ-h>`xJc4Cjj2B0~f-FQ5>OeVlMLDe= zw`%av$Y1WP<|hG>3z@37GF1xM7q%lq0;u{xLBwKrFo+nW!2h`w@vfHQULXT3$p^g< z0$cM|#oVfj`|#HRJk3u9R%&$*5pv+T@YhYEAK`zfT1p`dAQ6F??BzV5icr9|$;V`c zX!TeEY&+Wjn^Hhm6?)^6K`$9}jQ606gkUXvUWEV>`3Uc|Dnz9X8B$U}d!b~j=TZ{M zI&fJ9{AOlxc~p-}9Kfdne=DT`jj{nuk?#ad7fG>|?^mEx_Q(+6Y0>UuRz@xrX20h>Em_s0bkQY@SbE`(le-+%U4-e3fDBmRjym zb%kFfORFoAD8&1y5QDiDJ3!5EUwM5!J6V79rPs-5`nHu`$J6e&*u5W3&qkB(&FH_~ zAH4Smiw~32<>FvA9UqM5Z_nQ2C=O1i%h>@2{(fL}+p!(bdFKMX2XD@%ZQ+BH(PXkX zh*y=GZ%aq8Q<#IZDnAZBW#rLtCB#1BhvFj07~tfC2u#V_mE0B??uUsm$hqBc_9A~| ztGHRX+M2VWbtGtR{N%$e3W#^z~SN_Z*HK;ijtxwuf>T zfJ>VIm+k~`%xeHQgjpVtE)BSr^3aek2ROFsAx;;$&=K* z70tjUKqf6Oj=r{gaWxaU?c%%L9U^}ZXUaa6{^}5D?HK%CrT!mX9U{p1j1+i~G(*w= zI(KJDzv9(lO2LCP4p)a@=diH&^)CnP4rhDF8gdBW>+MHc$R5OgY=pe9{hGx(Ton-R!5!}7w?*Jl8}5+h4%g`RqpRytW^KUrzb(3IWVZVz$Z+#WSRaDx`N;nP zT=J)b3T19&b98cLVQmU!Ze*80b`JyuH90mom)W-~{(k_n@=t&N`qu}Eg!tvn^=nk{ z!3w~YsF2p^0Fni496+-$i;M6Lm^fE{=fBgl9@cBqT5K$%9AII6HBy&0SJt$}5$~Mv zcH~HWGVT*XNmMjxF8A&g%3Ui2uy3ii{e(|%&G`JQ^h=*%7M0c&H)lZndo_o@jzO5H z8UDQnW`6{mAg@x-C@VB@kWr85lvf;Rm3dVO=4+vC#xT>9@^+(snR>qT zD;Q^3Z)JWP2tw|sa3yA(F+)qb;-%;b5q(k>>FYE5_4@VUj|l;+j=~1tef#;49$2G< z>2;^20V(XeKmXBvfB3?|)>=8smh`~dMh7SfVqiP3wUF>l^o>OuqP$39q5JUPpFcX* z@_*~+alslmrFsrgDf%>eau{Vi;G_5`(6sNK-&)Z}4oJ)SX`KNTFj=fTfVP9JVhPdq)vmoXXPs=LNF~pPlJ!D0U`upg|L0tDMH$M5vQ1) z^%-`F(BLzi7a{T)_TfxE!!r z&1R4;u-Ow#F0BP%cCp0!ctqCrJdY@t=JPHDY8WW9-ba_B5l^#M^_3xBz~Z@?R<+u2BtG((HQW+aEZza6y@$vNwUv3k&_w{upZ zg|-pNvED$d!&YJ6ym&~=dLOYyUWq8fgnB2eQGgcZr9V};c zPhI*=Z;jt~V~p#;+<%1(?Y?YJiNFwzT5Yeglr6Na_^IuE#!|9*H!Nk_`;4Vz)Vsh^ zGEC(8c#S~}*V$dhzYV+F_C9NOcX6ET?kvM6TLC&-@2=VkEwrtz(DpvF752?bTcPcJ zW-Bo2U9c56CM38RD46T6#z+FBg6{r63Y^}_xRrz^O4uvU^5N0k1aF706Wax-^|P$$YO}HR z6%XCmo>Qt`53P=lU)bsv97A-D+s?%&(v&PkZpU~jOV8T?pAJ|6P&$R})F9PO%bZkO z@K4p4{%7VBFn<$;N?O{2R2418psjFzIEXlP8OY{4lNW^t6&&Kr>HHuLap~Z*Tne(@ zO}5hk?iwe8Gc|W9y*cwFarFiH;#msr0;kb#Fv#1S&WWR##yCp(?%jAh9j~z!FS#BV zud&{l4`-#8F2(pt*3(|*R&uYTVlFrH_3I?n(|~{l-+!l6&p$fo__@oy0RT7@uKRD7 znqd%h_F1fqRVpTg9)9`vkMDo^_8SOU_v1flgzP}kIR%c$&+=1ABYXsob-z=C7t-{- z?~=F}Z}U2$)zF2;jxFE12Me}b8Q0g%zo+I1TG9ghs_{8XHRP@|OWj6GNl=Gon)LU& zk=8cOl7Ddg{mi&lzo{#X`e*m>y?gjF&@~$Pm-j5VDl=qN;5`MS zYSK~@MEm3S4xfbVM$xj*IoWrpI9|h4{kyI8r@PExo+0&yABv($uFCUvq3VL3+R`(_;#1=I| z&Zl=1?iAQ#ZO0O%E2>CvCaikO^Se?pmg(%vIi;1k5^ajh{C=q^b;mlAag1qqE=lkl z^{{ehRpOi%T2FYlC2`&e2~BJiIh19^v?q!bjy##=?yNjHEmYq(bx0(&x}{!`;D1z? zXK5XGkS^8AMqPWn47W>t3&K8@O#H1m)%f>)TQ=8o;cw zndFVMev(qhY^C;o(C754@V(WeRDU;y{s;BcH4jK<_?k02Dgad!J-GO6-SZTH&nw=E zQ1FO-R4k{{UanU*MhR4!@I&57mwA+;Mt8>Q7%A&=&#VYyJ*Dh|7gEu0v>~%v0$gPs z#!Qo%u3=sBtQOi%AZ+NqbcE8YFqwCKKdi2!_o4?^d+y2$H-SDX8u{vv^2($+X0i5ZXN_ibZKFlQj+gJO- zRrvSHJik^Rb9hI^KK7hYytKyl2yo!8U83a9cL1amdL8vVW}{b3*ni!0i=ECr_F$*I zU8u9hCo`4u_+%FM8Y=Bt{57FQ({I(6s^MhsVBEI^qsJXgmZq-v?uSc>MXy^r@VX~- zAM38ufp+zeZ{O*sTgxb``QL!szRyzs1AnF zwm^`B8mj_jR1o^53V*w@v$`(Q!HQm5KD&J080AHTUC%}p6&Q#PRY8AdMQB|-?$CO+o!-dMR1-SD)GVP$_uaRltY`jIL z?R>FTqL-{N`mUGdv(6W6dQ6p=a``9>Vti@sg*Xyhq ziXX0yU|&f;M!xj`lR#|0d8gm$pst>Pd00^Je4dSWuqjZ^D#m}wC|})6&Yg|)?afJj z4l%mKJp9P-5i|pgX*yu-Ot&^b=c^1fR>NW6(Z4pN`FUK|URacs`$wL+n@c=~(YWwOiR0=ZsaS zlBEZm!jLhm6~cd99OkogqZUr}7y3#qz@5HQJLtHt)WX^DmDbn($87p`0UO!$ZD-6$Kl)M# zHgmsPiPUy(Gv(Fm@QbB$(A81uHJtptr_!{X6tt61H2*z`9fL;!ObYPQF`rQP`}Q=} zhcYr9cV!?J@E?#lUV}ZFHh#jWku9y4v0>6kJv1xdihcMu_}u>k9FV0+m%;WY69PFn zml0+J6O)YbD3?gbD-M5)Zvu-!W@c9ca+9H3kV7Cu&cO;|=a9djB3UGhZ1(Pqw6=lK z&ala1u^wMN*p}Nbo7_G=Ts}Yi^g)}=i(tX4?eo_S@PWjCLE@mZn+Fh1!}j^x_O~Y~ zmBY^kKSoNe@#FD(z`yqNs3G7Cu=v3z0H;T907o?7N0qHFz1Jxgmdt-Ri+ z*|N-5L|J{HnOCB4t~2F@Jxw#uiPkAUQ|^?x(YQ)pPmd}}6BBnh4}AKZ{{H!|50V7& z^7&ytxYJgI=(aE49)8Rt|evm@PV7LEmd02qP|28SSGag9@ZC!BN?>OdYa*ap6A4@P<1 z-3B)LYZ{Hh1fvvNtU>7D)5N*~8>&1cihY#!`;`wiuG$uv>BdI-m8j6#^b^(x3*h5a~)ylu0u$xQm8|XwQ2l74%1n2q#3Cd7S*VY@F*8FQ6T9S z3HR?`zR|j0aMeflx6pY6rG>F>dvqS9oJnO+uwe-bG@B+9CL|0n=x0`EpQ?MTd}~~f zn|<0CFXewwkNs4iZk7b1l(n}=qH?v6fbsaHN#Fn$>j}!_Dggu;gD7TRPTJyc6Dmeo z#7m2qW9>=7_ynb9RYlGIoG5ud&s=sile~eR;(U8qQOYyZKDKDc(C@4*MHF14iz6l$ zTttIJ-$TJAM-AHQ-eM@1 zlWu>;>JGRFe$Pc6Jy*)ZTz;-NoxJRC+Fa-coK36FCHJwm&D7l`GW9dLgDG5P&UQQP zR$1C7aV*m;_f*cF>9jNCd0k%h^mLm1JCJji8O)6{7&NIR8L<&v&qYshXNjqgk#>fN zmD~#~PuliML=~&HZFSU8IYR2nH6H6Pz84XOL6T3F7vD4eeeN#LErX~Um*C1PDM4ns z{|#p(D!7*&_&bidHlbFvmuQsmAn|v9qT=8(B8HY3eK(p$=G!`cr z#7+&ez73`CjkYeAO3N!Ff3QQ#c4AJgdI528EoDdXMIJya7Unb3_vEQWB{u0VPTw#| zceH_L3dk6dQUu07AE#d!34hzGU4aNPhr9HkWbtal#5F{_{r=DG>%*s+Dz6FyV5pGJ zVIIsw1z_CAAZm3KQb!&t^09n%jnku(K=op-6GIwNPgNCUh^~%SfAN-Ixz^KEHRdX_ zKFMH!iUC#BN2_0TmdeYU&f8q8zzEig$rDw=dk1MBI8$U#6{JbgessAi9V{4RfImt) zwT{;M_VcT|&W|fxMg@L$OJ`5n4Qc`0$}q`<-byu0#EcCZC}Db(^XBRr3gQ7|lqXdl zn3OGoW6N{{g9cmNe^BZ8!~iZ-8a$M)(WDDYNiafqi8&ET=SJ7oBm46a>W6)15? z07u+hyCrt3nL@_7%{B!R8xS|@CHN6vZjzK6&VLY$NER$u=cl$NQL_&6zApvR^6zs8 zV3hwVK$(DLupJVSyhr%%N(7V<0D7jZUX$t~Q7HhOx=PuSe_8^!tXKdo8tiV*5&$*X zxOw96-$DitR4p(ZB{((p>$6B&yLyp@slMM_9qL875jj0W=+zQ^$rGd3B)1QC_xc7q zQN;q+3c;NnIW3~LtMWw|djm=;<8DUDI(tkY31ggm;`8PdomMV1PaIr$Qpaf;N^lNo zF0{*|TDIZZHVgRB)2oa;#`Ye-@eY#a)KX?fq;i4}>;&g7!-@vUD|E~l|6HEtuCH$E zYmzF*M5>%?t$hoZpv@~LN=)Y^kAS{FGmX9{uoWw_Ec~B&HPz_y+E))xIN0!NY&?5) z{aT~Z8H*InI0r(9hhyp>fPQ1*Y)3GdiBK zXw|e-QZf9YL%ZaX!bPb{I<|bmo5RM40K4rp1Eaw6l$NXqpS%nFH}#aY_X2r2D)fw2EY)pYIBjkyYmC;HPtPkff77&b zBH;$DH}%`B#eUXFi&fflal|g7Xl=h9+G*KY0qF3vJ1u&M%FdlpWy1{}cUq@XR@Byz zMwG1!ae6OV8%cRwYsbSDLA7fh1l)eNhEDJ_)e3#Ad}-jU?a*QoZv2o3+7YUAjvVz9YxhJmHPy<yLjpn;EFkYDXp3;V=-bpR0{sY|I*px;1ow6o(*RhvUwb0?ispLCBw7c&HVFN3bDOncj!^U zVk!~BY4G=!Ut)*JL$7l`lcKfV%#K}tAEgFpFp>g-! zfX{8=vKCC2Ez&C`e+4YRoQHX~UM2C_l~D38#M3*-QyUTc%X>G-Grd*4r5D)KYqGTK zF!J*aG9PzU`mK!YKypDuwWF5t`Jed|0|8|f`5mI;)9>cBu_xgVL z=g_JJ$qMp*`0M*2ywD1SayV#2p}`D4{vN&_es9T6%p`v^{*WAgd>fjUFUc}qf3jty zF+`PRK(e{?V2l?kyc#W|FH#bZPP2wJk6N=<5vo!C^5$TbqLyr9YAI5nf+ICz&1=@1 zW)5^3sR|wB%|CG%RSOSe;$XEf7FrG{EBU70P6@DnArFnCqL(eX5+;%+B9he2vZ6-8 zz-_q$tjdbo2+!tit+62+MLb4Ke~xmI8p=jHS(-cwqt!0u$1P1(3X46Xe??2t-X0aS z7oZoiZAAqRxrWu)^v+pD$VNgIus~dh7>q2!F@i)dEXV&DaiQ-69+}7sYs_4t$PJ2q z<8ziK&F6h-k55L1>?TIM^Y})eLMuL}zWMue;uW4LJ-ht9_A~BwkzfqLIQ5^O#y(^2$?x_LYqEyca7SjkiMsDY$#48&G~j0Ns5y_ z*HYX_Mzf1-N0c2^Rix?O_-}XyX?We_z(qXHIo2E^JUc zjF1k@9CQbZljH)!_Oy6Sv4_QLihCAsM%09skY>ezN8@P6nOx97ehUFx3ETtWQY+7C zRY{z6PI^*#u2P8}+F#PMN%vE_+^m$3ZT-ChCx5CZLgw^>2J@_xca+oF>T{YKWkM;z zWn7x5zL9s}(>md?e;JQ_-6-U(&`Nh5J95<01kKpZhhxu){QB7MK(I7IY50#LSUJ`d z_QY^a(P4dm6c)Z2qFZXx*tNK#gD zw4`bd%TkoY5vKoPzL1?Fv#-5)E^mknYxK!qV@dhJk5~(8e|jk0CjrtA${?e#EJCRc zC2^umAV}L?${pqhdSTG_oF6sC4p~4$aVHCCM|5Wv5Eo_Yk_}QCS%A2bEF_1JTkx9n zp@SKv6&9eU87qp@sPLvyYT?+A_X9yo(L5Gs(hO~=UYWBs zU&RfC$ubX0#$O8Xb|KkbMulNhYa!VEST;&HOaFf?ukHBlZL%VUrR!2X&K3_TY+gci zrMt_Dx#xrkNb5It=F88;fs@H!#6{7#xLB|hmJbo&e|c7g=jBp6$y6^)j>boF4g=2k zaw-F0(fVbYgA2W&C?v6dzV((~^h}ToGst^#)^AljzL8?1pYhLWWpSkLR|HjH~pETsv9o zTTUs9Z1oG?3+bmsO7$N(pk~LY7o7T!9JoRQXIf4=QOPqc**MQ+n=zn2kfI=EO5st9(JOm~$1-82K$SyKNhfM!WH(*u&&)K_EpSoDA$1GEsR|!6zN@!q7wV5`2he>d(xG}JZ^c9gxWPtc=OJS*+b)?>}}!Mdod zZjeaTzE0Y6W?{|74)$f{GDP6I>iBzXjbS_-gGSA0Iov z=$+tPu$5A8uIgogH+q`mdo{*4cTOSx1-;_8mw~+~69YCdF_&@CH4~Qy_c$n*_}eSP zf8z0P&wn|{A_ys>qo4FOK0Q7kem#t0vEB+J{qp(yfnFF5LI;Jfjc_t7zx`wRa`-r+ zt&2&7$^Tio{PuMjMm`nIM2VV_&RN@O1|+J>EY3xt=~dQ@c`v0!?hH!UAlC+^s-WZY z-BW-mMk7(jcEo5=P8Km)REa^%7PVqxf0ny(`PrgIEdE9mB;od;xnZV6psGe}%MU z?b+%POvYdqUkDUI%p61sq`3$A!!P{~ zdEF7b>IIY)7UC_vz<`le*2?=8e-H4MoexG>cYE_&?d4|XN3y8CgvBv+fIqHY8#djfeauMMBv~7CH%ava6#HjI~{>%19Qo4P||n>O&u6S@qiB-d{7e zkaJZsv4q7Qm147VD@ENlL>dfmKAb2D=Dx9^Q%x4|jV>G%t4XVwR(B!pwW5q`j};|) z_FEC-F7Vj~N&Z3IuW>x-f5DV|w8FGld8KBTWa-Kc7e3`Bye?Zq%Cmbb znp%OP#GoeGDXHd?#=fuWOM;;EiN*ousIc5nP142&P=usiD*!f+oHWwg(5|1KOtaB! z7I$ORWtM3@^LgE>bqmCGt2Pkl-o)7nB=w$|+N8e9JyBoZ7{)d_f15)4CLykn=i)-D zOgi(7O`d&Tf7>df*725+S&V8N+g4`DfX}Rjs+-1XUF2e>d4o|LcSs+_*)@=)45<5l z>)A%;Hnf{9+k=7X@XAIb7h$v=Bv95s=jDp?O7n{=Ol~1CteL}dBzF^MSEQEdzsAxs zZno!!f4$n9IfFjYe~fj0TvG+ks3=@9AMA9!Bsr*fO!C;u!tawsrzh4<$5FMQY_n@I zGq-~vg;v!ASk9~13&^5t+(pXECQUMr$4pV1O&0IK9-=^mma1kA--aieop@>jS;EuG zQnsO|Phc3HeOF$)Xfs=yZ^E#P(_Oe)bfq|Syqr5)+ms=Vf2h;eBD0gPFb((BDo+(Z zCu|q++a}L#Wl6rO%qX5IdBreFd0W1-9k?L0ul}H>Eu~qIJP!EAo`|E|uuB>W{4_=Y z_J}EBBwKhTVLpvE2cVAjOL>h_A zgr>yE+vZa4S7)=q*PJsE_xQZA2ko4YQBi;L*9Ce1up|MXPIL@*`R_u*KnifqdHmMs zk|OEn@b2GVzx?_0-$5Y2e+WV@m}OXqVfmgPtrbD~e-M{%i1@RP{KqF3=1y4TQ0d@_OIeL8fY5BJotopeMpo zVCfOz8Hyh1(?0W5g!<=l__7>6R(VE^|M1&+G?a-rK^X8FT9NXQ_98+6#o~wOhY%NI;357V$1ezA;5CaR+ocsYBAgR0MzTsM zV$Gsme}Dd7;JzZ%hvqxuxdWwzv2LLNFFc||T&Y=(`*T)xm+3s4{l`O&;~e=p_v?zc zyfXWZc9RWAk%W&+Lt^IjZe{l4ZUF&GIO-h&e`2z>g3;a!i+h{}bDTg(~QInmDt@ZOok6f9jaBGyB)lPb+!HU6Xk1I9?@2Q#_UwPg_>P^D~@ne;R5z0_3Uaz?&AupZ4V03)(S4)3ie~p{V zT-$XyU1!XC#Z!yXT25cs0D5Sj#i6U6W?hVs7q$TJR_%mV_6<=BFz#WAG-9}9Y)LWz zL*o!GG!9j66=9MYB=W4P6Kpis+(X zqe|CwnXh2~vcEaj_S`;~V=QK5e>Tqaa$}!EEdm+s%`9N*ppG>LUgx9eq}3WX5_jPQ z0kZ{RL0wM&<-F~{Z<@oF)T5(ry^L+2j5_;yE7v}gY&R(1c;Svc)Jrb0&h1hrIdq@* z9i1^<<1tggx4CQ6Bv-X4krM|?kaf1)c1OF*C{Jr&UDs}PI#rl)eQtC3e;LY-*CX)L*w+C}=t ze)75RaiTkj-sxHRS3U~RfAwOJs_w3~Ck_AFb5ML$1N6n@g6VUZovk-pboDT|s|A!5 zSOE?T-7fOisQ;GI!AQD$yq?jKATAH@60i7fy=Nl8H|KFOlDkw70Xce^>{nM$Agi8z9~Y z=V6>ZyNF62I(e4ILer1mgj3+e+BMoCPU^uUcA&1cEQ@v{pLU46Ta>EGm(PnY$SsJd zMr0|7%|uu4vZkwNZ@+S5_)N(e-YS8vTyB z+)xSk?USFKnKq|blpgaR(BuNRNu}SE8aso@n;A1>`YWJlf0x9V`cw9nf3VUcykT10 zBYq_-?kDd`4T`5i9==hB{{y1Tox+!aSS%9(FqgrxC={36=PNsZ?AQT%OW|A5Lt)hJ zAugKq(7)f05=luz?OWNjH6X7<4QDtH&Wn=WYbU#po4cpYyGLz0FM?H`x~G>;;f2J1 zB{Ar1=amvptM2Ko`}tN%a=7kr87Z~K<#8YIYqvLA1wbf^3vZO#-gu)hq7^P0e(4d{ zeY)S?q<3jubkGe#(l85{i+|SvymVlF*jvoQpz#r&ohw%m*ngm@^Qt0n-LT zCB>L@9u%-Xm1y;ZXCol|?lGuEss^yya;gMv**H+McBE`3Cj3HraB$0Gmwrs;gdUnH=q?9yf)uOJ+kbocH*pJcm$+Dqf z1+IqH!}7|a7Ctt7SDsW}<>~9t$|mz@EP?OGQ!rwuP$NZU7dg|Uh4rl*24^^MV|6$F z>uJwMruI>Gigv>IFqKokQ|z(!0egDDnv;LPLez(UiKcN!gQoJ`f)?@{NHO2_p+*hi zrtr1w(DNuF=%|7K*HiX%8voT|%qzm&CSt_vh=& z56{11Q+2O@B~U~IK~}}kz2!#|GK3hr&-vLTrRcN~qtwoH#tCgC0LsKV@Z4<-d2Cu6 zCZnH!(`XbX7^2DKJ_h*&SO`pp${G^JaWvEWJRPj7sw4&`$}-YZ!jk8vN6as?(qp=& z&jl2-e(yFf-R4u4s&(WONRR{K=Y=Q1+ky9@zW!BB?k(%ATa4mmJhF;b1x3LCMVwIJ$ERAuQ75+3iL z-}1ay%=$R_9q`;JI0R!|cVlA^3VRv2`W(ZC#pEx87wEj>Q#9yzvagZ7P+Hny3<*en z>LyDXc)J;y`*gHGkds^&{&Q^%_HlQ6^{B|vcl1# z1}prdn}g+OaWe@QW&Z?V@J=rkPgWy;{!)#Y+GSpoZJ0*d!w6-~eqg%0&sI<&P0ZG& z7}Qh``-?kxBY|S8t}kn}WbJTQAtd+T`)FPAgl2TC8x}SYG9k?g*(!*f4y!RmD2aD} zA0}o`OTyWz+eSX~Tzy#rgj|LY(fPvaUhs99LxDN$=YHRqx>pV^yFwn+>S)7%rE6g#DT?IQfx&B(q9(c&;Z`i67{<0xIK6CgPAEqlGb@|MBFms$QXE<@6)fwQqz2Rt za<%K0_KfO~XKLbA-sN#ViJH8LkCp!b{WnIFTrV&=p!AIO{-^p!Fv zt&z@4f91@HQN1v8V%WY*=7hZ^WVm()%BW5cAdV=D7iAg|bVA^mkMo+f{roryOeY6& zYa#PSqPvbHoDmWdW6NByAlZR;6;7I_r7?t(4Hq_g(mxr z+w)p_BrRim9`+ghv^{Tav@~tc4+FeCKaBGBe4adQ&kqD`k%&qsfVF?V7Y_Rt0wtLq@(2Li8aXsm4n!EGXlWf5^SnEN78xJx1d}d6- zsea0^v-M9>P*{}UfPa76Upsi8c4a0PPkujbn~GVpNZZutx|22{Y3ix4*@urDCRV)T z$RY2O{YMUy5O~Cw3GXW%f1}P3R75Ny^X<=oYldst*>wVj^ikwC9KF$K1<*RcllWYH;w&g37n(zm(cGk8ExA(aoFQqPd2;U0b)$- z@E;TqTT*d8hnDAm1k5q**li(-R(JAl&r!(fU+r=cJYM9OwN4*%HfvU9`CDL=PFjbC z!^^$}hSZb}bLX`15%1xTcJqc+vc5OveI5yZe5a52$d~^j(ftR2fiuvTfmkdPm+)5t z6#_IjmqDf=CYPr0E5?8IcK+q#=NDNO!B_3P6}UE9by}rGZWgJ5qm_=o5=V=a0apT{ zjzs*#-}aiuij;uzgQq6|se&$Yi0G0i>EkE%>;2>9&rU#yN~jP{|NG-54OpXu2^x1x zc-*YNem(v6@*hsMu2l+&kCZVt0O2!-x_MLpldAF${kt(OT@uffgDfsmOk> zOTU)or=@E(QS#SoP_q=RL=yu}5$y=ogOq$xuDw=O*(4|Z$>LA${Ajk*IiZ~9l(n4S zeB5;B6`yT7Ig05?T%~%iGTm3{U40rUj8z--iCXhWUYV0hj562BogXW7KIN*-Xt)3) zXA6TN&ucD-s5^gZNlP%NJ#<n2K^aU=#`>ed$1%Vfzy@#*Y0<`XSlkeOXicWa% zIYkBgDFzUDbri2%gxN$j27zZ)N7c@1+(<2q>@DO{H4eAw@+(pVf0DLvLm%Q^6T)B~ z7PUSQO=cA5+5+Z%7dA!5595%CG8xC>(F<$3Rqo+k3rnuA{kRy_etb0x>08b5+3d$K z###og*QeG|MBiy)zN@zb^DHUyaXKaxb)}A-6;gFOV&y})UOLI6Gi_UDNQA21EX9%Q z7#HBOIm~sOmBCP8e<#&isNBA{jjW-q(7YJ4i!TTzW5!023$Jh!3OUn(--l9emrA1t z%iubx;6SP7vD4cKrN+a@JKZ5a1yQn1I_)Ru0=*2?V3&(%P{E4`4N_q(8dPPVXJ*l$ zGSZ=Ffulh;xz4K1+zx#F`IjMPP;|9^q2sd#sAtLfxVhOMT|f1iL_v7OovS}`>(*ae`?c|GZz z(@UNyeW}ff2NRSbK2N!+rFNPU79$y(J)~`~MZP`eR!?3o$3n_b!^3p)o=k;81*7B_ z*p}{G$M;Z-OGhJoTrE@mFMt`DMv&`pa7bA%j4}^`Ln?VL91P3mevJC|bXa!Srs*P< zES9!ue>!^)1X}-*gHu|-K&2A^zURv$$385SLNC+7gIK7In0@Px>cT&^fWcX=Tj6D~ z#8VoCiSQ3&l1gE2ZQPSFNhOW2-hTon88Kf_;a`bKderrSfMiSV320LKvsN(B=3I8orSz~ezm7^S>sjZ!P*IN{vljk7I(_WAzt@;7g? z@|VGjFB6w&@GBOVyDS^S{1-d*j3i&L-o(`dk0&>-+7$Z#`R# z0tN<7|NisMKTr~wbmAl(a#EfC`p@b2w}13dGcGMp<>RkEPTj~45{v^B3^zvWMliqw z4r3-J{UZ|0#JR%FDP*QbAt~Ir(saMayT*;{e&gH344AcJ61PN{C1TT#uz!6L6@JW~ z-wpS|33$a5cr^n)AF=L^JB=|gDCmEnJcC)o9Mi`=wixI?|Zi*)Ii@41X(yB10?%+waSowPB0D@vM1e*C(qp+W-_v+5M=QSVYpVSgOMYk=|s@~mOj+7WW_ z6-SxBNWYI~gO!4MT)LBFb{Zjm&P#W43|T&G@?HW;2r?l}=(8h)`Zebkv&c3=Ibe>O z6U8ATiM}{^XpE{b`t=-FVnmpYt`xVRiLh`mj?P9V4w#3OJdGISGXml2cl|3%xRP>Z2PCK8;sp!d0UGUiwZs&uZdRo5k$2^JKK2P%AeVX8>BudIybb;=LiBbnqsN)HWni!~owxt9`TV~MGy4gPYkYC4f zQ<~L5>q1jWrEoo%fr~s^O)QWfp~CsHUhSn~0%n}+XCnoN(=N^#Om@J#kR)-%l!lk@ zUI<{yOn-Z+5Sm$`Ua@;hI(xik9xo-7FTks?Fq#G}0y~d4CXg>@I;E8RR8CmIv=Fb@ zyaUE1>}9&s46j$Z*f`9%BroU?E7JyQ#&fY3qwd;;RcCQM0th;AV;P#Ed7 zfWKbPxK9}MD~+~;*q2S_ajR`1cV>&&r?huezNr88$Qn12skazpIv}_EIFM4V7K%>N zdVhkxl%9?B>02q{V%fa!_y;T#Fi6Yr|A{w~c0voahrHSL0aUMfJ(gn!VyOt|p{S=1 z#FGB@kjDeDMcT-tb`YpA8g_trnC2zYe~}hHe$LxLe5K{l*>H#98O_Fu*mBcDxpCmQwKQvFvj>DNqfYT|bKS21hSy z4>N_*_JJ!4Nq#&F?q@%L%AA!Q?^-pd%!70uKV?qUd549o)r_&9eVsAFCw4w*HmTX2 z?{p{GL^=pVsLqlac8K++E^l&VbtHGC!s5CBFlT#(CCg}}uG?hv#!LO}470(RYk%Ec zrcz)`AvUJ9svJ{iyf^BNn2y(W2Ew^sxAVc{KCV6zRa#m#@Yd3?zZ>%UB{hR8%Um5(3|&aDn1D}b*1w%iKtC{U%vG z^d?#Q!(^<&dJ(L@ZO@k6(Q|v~jl1+7QMiGI`;2cm05w@~2X#KYNneF1v$~@vY(8c2 zsCZVZ4V&LnmGo7JaCn#Yg|%)6F~mW=(-kC+9q$wrW@4_q-uj6>ib7)@0)Nv_?@<)W zveFtE0aeMa)4>r7Fy)Oi&>N9O1U?nr$ly_UHL!59UUi|9Y zDaBWnj%A5=jByb{tJmtUb&uZe%V+h!VCFsRqUq8{Wh!V z=CCK*3MqFZlpclDu>!+L>6FO*JDD@H!jIh?vkDM983qNY=`DRirGMLXF; z%=4z=L8Il&uR!kFaYaySUG+f~YSor-R`w(qme zwRVEnbX-+EOIbGBtaFqr23j<}VS}UXiljfeGdW^TCaW3?TjgxftUT&x&+|N=V2r%q z>^^R+r8*RdrQX=bwtqp_=$NRu_ZAcU(7o*lj~psg5s68+cl^WE;Xm(Auo)_lGCKFHdlK@oTNLRs|{hI?c ze{&H1Uj|Ic%(JkmQH<7BCSi(6)cb~JZcA5kZuv5_^M9gh;fk4l`ZGh}a{YIR z_!ohoYPt$asy;NRX^Z2t;x~#(q3WZW+_7l%S~s6DbvIx9HSbLbQes^-x4|TuqA3zh zuSgcVAALlGeiOnqoLmj5S|Wg+3AMh=NTY5+tmT^9NR66jP37L=sF%AvAotJ;$jwYE zAhEcDH`fXnnjt0aJo}I7;Hp@BTd9%*Tf3(GxhDLSwbK3T`|WQ~`F#40|Wgz?Uylj4-*15Fqg4vE)$nh2`s`35bq$DHhlmh20FKw zfmkdPmp%zB6}LwUEY1cAjUT!G1rW`)2bY0ZEE57SHkYC49}@yNIF~U4DJPe25iFPi z9G3_ZEWm&4#G)cy1#d-DOOI&FBo$d2=JCmML0`WG*-56r0ABfsqnng`9_b?|5UClB ztngYP(HP;`!zzh@+a+2MN;dNhuRA1?K%*LoW`0hr7Zz;eXL5{xy*4(?1&1H@y>{+j zXRXq~`=Ob+ye3!c)?V;98$`~#d_j{E64f1jfx~|3+6Pflvb#hQ#WfgN}r zV!~stX5b4g4=rTQOyhJ}%Pz0sfSH@vmU+)2vn2#UY6k-eby4G@?L`xh0Y)4;Gpqo= z&RFl#KF{D;f&gnP?Wc2K+F+lO{wOo(pre0^c~~7|9c0G0mUE*c;VjggTPfiIuaNHg z`v#VI0|`g31mHcUxlWJZjNlbqDY(uxOY*?eAbJh^(w65{*LvfMg<$Y6KvVjA|4rs0B8hPmwaD#j&wDLmzFCguE>sjVPb#J zWPW5UyRje_oogCUlEo14C1`K1#WFaw`zL(FXg*Lnt9TWX#MsAuV-fuV+Jc1vm zOO9zuFT_(sEj(|E>$%&v|61}C3K7s^t&OV4quR*R_?l*R-*2V$7;wU+DIIED8A>Td zD!r+mK&}VYPFcsaphq*b+u!rxDW zxO~Pk#K_EN%EV>kmUAh_JSQ?I*;ZrkE-zfl_E>nV?@A6-9+=%{%amKE`i)aKp`_;_B99Q+#B#ur;JshNa+u32X17<)7Ox-KMOt(D)J`)W=FQTIQ@d*? za+SoHfV!5cfP=_?E6LS~NZ)^&=S*|1s9NheE){n@>=Zotvr9mjC`>`{L(j+NG(I9Aeb!0|QQXl&kDR{HkbJs=2Fwvm6h^1Qp|N5`4=M62uI4$4LFvP3pn;GxWcjB zI+oz6rh|w#ao{wFPuf}tfR+W%q-Ii<8oJPSb zq3q-Iac`h<6c;ZFDt|s6IQ&i z5S%FjmHj>3AESS4!L1z;Yy-+9sG$~QDP~Iz16#lGu6eu?C)QE1PF=RnZJM%4-FSKR z-jC2R4YHO!v*LW#;AFJF{`M&ySR&4MvD^iwU4HrWbMDvyTV}HFjvc_q6VW*yn$Kk8 z6#pkFWi875?CuH{oY^wf}v5zWno2Ne2|#_`zr^ zlvKl?-(SK9Qd$`62LRy}4L|-GzPm9DalavytDjFr8vyN@KL1 z2@{Oa+6~5_Kx?ZoF$>@#B{9RA1*>^X>-@h-53!&$3s9?>Kq_>nqN*By=#rrkWoX9$ zDXkX7%j%!V%53Df5i&?*4s8orsq!q+11xCYQFG4Nm&Cnlghi8J1+b`#+?>J_b4FP< zQC3WkX2T+ur9QJU5%5f6-nGlKf|PCjLgiOn3F#f@obzv2Xm9GmC5=_o~$sQ+aWBQ}>*9M`!Si{}|!IJ~MBzJ5Rm zW}F#0w%NpJLYIx^Rz;m**`CK}6rH-+fPmd4t2>aMUX4s%LL&p|66FT941pEOh^B?7}Y&Jrh zjW9}9CQ2v=5%s?0Xxq_}kmDkC(Nb9{(5Q`Y8A4$GqjOA|jg;`{<+bprJqSb9&4a$9 z^JaSt+`>HMtOi_d1fp*tMp*@GD!y{LJ0zB1+du}n9GX2#&r&-ZJ33OhmdvI4$TV$> zbW@(JI}7>_dESzL=Qd?N#~M5)dTB{T8FTdLON{}&UX4`QFKV*U zIE;THH?xtcUW?4M7uJ|+F{eg8PtXc-Kp^+kTA5?rtCcyl8?_>-@~xEbfT&Pd z4J|~aABV`B1>o%0O7de-?z|xqT=BLHm4e9>aosN}4T6>OOi{4`f;StYsMjRO_lS~im=V* zw~Qal);QXfpR_jOM!z;mN>idX1!_|wZLDeD1_`_+x#Y%)E9-673rdY3cw4vg$x52G zji#f0lcIQ3#DJw0Fm3iczTpRN1?hIb?~&uQ|B~%KI*w`h)qd4reR9d&K;Kt#hp`YF zLyV+H@(u{~NqXn=CsP_HS#&r?keL?6k0uJ?}98PP4} zfRPK@zk^TSfjQn%pmsuo+P$^VTU(2C(p5?km2_GXf8=RlTkrrcY&+WQ-zJ$&Ui5#@ z3mRc0?&igA@?!4fWq+B7iiC0ciQVf4;%2J2e@mpi6V73asml@DX}2vhTZm6evj&9m zon*GtES0kP7-ruezw`E~!Mi8(<<3&e$<@wMYY?S6lsPd?1Y1RNTWz6A);mv6A9Qws z(I3jle-(cqAc3YMmV7XyqvsjD{W&)wG*OPk7yvA?J> z?c3QpuTYhHd~%#uENzY}Kn=BYv|0H)#vBa}X?pABQCa zcB5C~Dp6>%=uU_G3g|V9Vc~H$rxu%De~CbDj6j{up=0Z>U0a+=9AQnTsFEN>I05;2ABe9)a*^_ZL-r;ctP@D0MrLl1=5s8*fc?K)#Y#&hAQgIpbT@E(dK;zA2V#@A`VSrC9m3AhO{GB^7Wf3{L{)f3#>) zmALi9N`kCg#8gVbApVbaBbH8pGmA!C1LlHbl&{mm(KPl1_3#j5fVZqmnx$x4VS_X0VjXeT3v5jxe3?|k2(Tzja@rpN`Nc)y#IEShyka9VSj<8@y zY#?F91ik1Syunmd!ds6Xcq_(-sFGuYjVi%QA=Nf`GuEYf^i4r~=%(g6hsPXwp{KjVy2v^JwgVDgkm#ew0F<$77$h>+ zCiK@>icVmeI9-34>cVDyi^rh7oZvAn-eRS70Ef8~+>a>`o_JaHvOzeg6r4$1+prOd zvEv!TCC^nYK}zZ~#6*%@rD776p%R7*)fWi;lsp|}EFz@{({-v`H!om}ENW7~%bejh zhZstQYfqKxc55$kx>!7Bu0a!3(v>)DT$UtQM8vU(b*F!Dh;m-Mh1EH!#qbegy0#Ta zQC*I(EgCs!!%5Obp}!bxfcD7F6i@mV3oVGpqo00io}J)4CmicH&Aw_L(7QcAF`NO%+`fz;Qyq=8D-nO%o=Jm7Z&AayVY+*<9 z?tfP;X1-`)&}i0dwI+N*ifPRH}fSvy@Ik2bw(`-9%kU@1t!C#kA!T(zDogkgC)QO!?z4?A=Y8|?HJ3pQ2)62o=zoz+lJn6TSYLa{3{JnY6 z{BlBzhd1rn?1W3StjAQu;`9NSy%j)u3}S^~|5JnE-!{LE-;JAR=Eo^I4aTFtTFK!r z$H#xS9JSBv#NHAC$WylP2Nki3(m7jUTATaqL+=VvVEr8v-#r($*-*Dq@irsj2nUM= zd+%%l0E!RRd3t}eVtVs*IeJ|$toY;23;p-whuQ3E`nRUJ9L`S%BYQEJeVCux!MM5V zpEn=pmsd}wgGu|z;t_TpJ?a~4 z1|(zvKPP5>xD65jS!HQL5Lb`RCL08K7zr5E#9@B#K(&@OC>W-)1j9sk;p#1gC9Z#R zw8?LwD3mOJKd4&b8mboA2USbHLDihEfijnCp}0<wQ^ zRyiOOARR25fnNzJ3~F380cea2CDBDaiCyeZ)xT6i$9xdkaJV6z*( zM6E?v@ue1lJL5~OXRq<4RgV9Cv!>^yOChc^J(WXy&qyCfjQ*Su$>F9Uy zvHMp<4C)2;1HU@QLEofJOO4r0+kRE`~K7(H>*9#yw>!b#FR!~~! zSWu9Jm~x~8BnvPpl=({=O0fZdH`?$h8OswYA*FWwI(H<14WSmBk}B3E}-2neqdrA=0F08W4EwGYmF3ds2J z0ErWWAW4^{5kZTNFSx>Ul7OlwA)pE8(}hC>W~4>+<-jCBr+qA75HNx~N`SJdI<}08 zz#W1-fJAwar&@UE;Vke4NELjO06jZ}!?TlmFZ-pEV?|+ENnr9A{1%#Alwakq$pf0_ zqMVB3^@Hd`S}Rm`r3-&7YjlBmAG*N#hAwbN7nmNN-Mi2TKrOvA#$JP0>qiAN$FFll zI~$Z=2OQC5c!Cqkjz?5Oiv9h!jepWw1YS^pN@)vC20MA2%f`(S`hYm}v>u0L`#8LD zg?INH{96i3uO=j;z~7Iv(weh;*vnaQn>bw2>TYL1u~XSXlZt;P6nPBaZgS@X?q?!O zz%}2>UVtdK>L=foMA9Ln+=YzyGjyfqsP7{$c%$BZfyhO`5rw!rLBGDzJsV#(VCX|| z?&+X;_2M5dU%woj+KN) zXIyzj=Wf!kcf#M0yD6%>DY2|3$SB+7jd%xW=og>N+h~F!=}&3y*CZ59RQxuYU|%Hk z=+t(lhFHOtO;-ZD!bw_(le7h#K&!06NxlUqsY4)<^e_}*pa`nzWn430q=fJ-!3f0w z7-8oYas7X2n1~0LfmkdP0x&q25w0*4mq3gLCzmuUESP`mas2!JkAp12N)c@Q8c+P! z>-*uqLla$TVQlCycwvL-{`q!@HxP`lE_C2QXw`lHxBGJVlT&THBt4QpjO@OD?bwyi z1-u{$JZY^lBk+_J#`w%b`ziqa6Y zNRVQpoT+~ajB?hGB>w0MiQgy_9MRB>vXUdY+Ug*McF0%ji5zr++(eR=@LFWL4(U}q z(FxRU1D=vhPUJy%5E&(|qbr|RU_R!mNLdpyH)DFvXo@6$0XY;_O>~GTnK|^{jvuXz z+sFI>9F-9U!lQ8)U+#~i)WS;jXdHjXT=(KQrnUk{(o(-}jx$O-0Zwy% zfDE4v6cGd}H=%gmL6K4ffzK(LSp*dZ5wx9nfxNq)8H&-?;~nz|r-h z!)eMFmao3SkH9%$0XQXa^L$HoW2@y2d9q|a&iC@};yBCu`h^L?S^MDl!??!ylghZa z94&uhzB0PRqWIh9BT5vbih=lhen(M>HlcqZA`Ngf1-c%`dgTI+bq8}Ci{$uRq+YqV zs*j@=Ub<0@7OkPC_za?IM5#n@foLYE zzHG7m+1B`ZZn@uf>*2zea!Ej*CLN5;#W| z$+vl-5&=A?xF^?Fzh)HA`~8|xT*~#iGGMDyu1|YdJ>{sBqSSNVzu0V2tAfq8Aq$J( zC$@q4EURS@)b&n$=RA~SchqcofU=PHeHY<#Y)7{)T2coIR5dXw6{BWR+Ft!fl5>A_ zWtgFBR*YFhkJ5)NiP5Z2Q4z4XsZz>5UkTIYE`^ff3TX;LR6y4&6yC}=3SHGnaw zC=to-LHoJ7G1rhjBPpNe>)KoFy;+3H$Kdfbb)`#gc4@;X9fN<9=F%>Vlb3Xk1+@=mLZ!A%k;7X9 zg{I5Iq8Ihj)GRod2((0GUM=mF&}cc8vSSxn)5e6U18n4tfI>@{HB5Ea-i^#vK#+Qk zFr`-`Q|T}lrLh#*+*Bu(9P=VyXQ{fgvwZuGdXXND>2Gf-Yc=y4|=bpf~TA2 z!E-dmb>|$PQCs_7sbILh%TnH@9bP@=#PGR;RVey^_m8&9nCl(N8Aa8p4vJI0ZlOL( z-!!qV^Df4BX~I!vS!{pxEi*`G1lp;-ueZ-?yiN@f*JQ^$DJX&diims&!=bT#y_V+y zrFVb1Utpq^N%bxA9RfY0*lOXTN1JKPIp&UFp{b+-HB)}nmU}ucX-#`xHJ+j5f0!)H zS7z<9d#t1sP!rv!rr}Ux6cAc~?d$Nzx9{MsprCZe_8lxqF@Ar2-vXl^q^(kBrJ}cZ z&y`}aaX=73>DBG~TCSJd_c7NW+`fY}LIwL1weJ8xHNM_q)}{8HQC?AzO!(dW{)=lR z7c0;DHi|t_E3q^&^ktN=XD~nwk#b@9Kf3But=D(Ci&rMk2--NEu7sz&zRfXQ-OJe@ zW5-;dYwK6c7L7FdDkIpWPqNQYypOg)fv+YrZUhcYLSwlLp5+`d-7UfxdsoN9P-QUE{x>*pyvKp}onzoNmoGFd8h?6zGBU&^U3RapLNB~FjTW+5 z<6WpG1W{v~xQpm{oh=9@n>CcztP$yM_=s~)TE-q*yaBw>==)f>1S_dQw`{W{Q`p@a z*^cl@@>bxm+a3_(6(aeB5)dP@%bs$%%X;LDz_2ZkS8l;d^IPQJ-57z@a`kQuCc5Y9 zb{x0b1vR4;bKt9IcLj1Dz=NPSTS zO?BhB=O=h>y*KM~+k4Y!(~pq3=e4BYNXc8$uM|gvkLA{pM5B?{6rH)xhM3Fa+&Rf| zNg9N`K$X3~<%3x49v^7$bCEsQgJ)-5!m$&j7@c;&)kfm?5epec^n^A-i zw{X)=I}p7R*f_-snP8&{?^^ZWpAMt)OlbA$X;bBl`X$MTa>xY7f7#%Ji3bJ}$vMk` zAv8sN5b@BSXG8OG#6uGw^?W2fhInYQf}DRK@mNTFLNXdhy_O?2x7q389o-a$Ysp>b zmOIYl#)-n6#6|NRyxKxsw38KaNi9pn#b)AC#)WUO-zGbi-m$0ee{D&r9BkY$I0;;( zGKj(}sBLuL`md9Of3PYXiq(v_Xir{;Onb8aBifT&_R$^+VaZWiYrl{7^nL~)lwP4d zaFh0^1=63NjHpd+xlL^plQF4vBi*LRTcYAskun;*&bx`@(>F9^xSv z0E&(5m^Kuo!3ybn%n}2YiaUxPQJGX4Pz^!uZP~}n7@P9!f5j8i%uz0%C8aS+(Fikv z;YdyrUq_mJZq`5RW`?}6_9x|iv~NRf$J8!LX!7o;$Z=xAnGRo0m&37X9qP}mFB8wr zU8=dm2~#{K?g_a83VA~wcTKq%UiULD3MDaWw7KW~ z4QIb$ZDJ5+<`~}O=D>=3-6b_uwWZMlkecSF237rtbLco3uUdfp*s-0 zK;Kwgewmj~I4miDWv&EUXWi+a47c*_kdQR~w?jwGXEYx|ikTv~V@m_HKzQFFoh0^F z+$|lgNM{d|4m=9pYj#U#R;2R}E2(g@BQ&}L&-@B;v7{2uhW+P%KGCaLfELbw6h^gL z%DZ*|Fd+0$|5)^$LrOWop{NNTRLTLRCV!kdyp;35D#e6WSN(?GjRbo=htxC*z zT=?ZTzCzC9`uawCg|=3^$?~Y&)AubK>NiQQjrE(c7AqB!jF~GW!>_`7bIZ;b!=BlX zv(>`wERYcUIMs_^l}F|Xur-1+tZ~+`R5{Up;e|0j!TP1J*Bf67dnX*4N{k~4C&=_y z+6uU?ntH_3JzSJ(!WQQc&)?_Av^>oBUD3@FpO zNgqYCwG$>k`)Vf!g&rj+A6Yt?PJM9YWC{)ydChk|#{LDCP0S6KfmkdQ0Wg6efx>(l*6%m5zKE8KA4>Wy(rbUlk08rjS_wlp)>s4#x>3XBf zX>BcCfqqB&#^Z~HNIL-OqNf1Im*9Zkp*`00fA3n~zhh~aIny`L_lei({iMBS3Q?}p z@$Zj64qBM~biugDsj&)u>U?mDXje{&0urZ=c%j2I61VO`SL~^(co^I1MJ`;!%7 zzfz8n?WUn@^n|avJ85NuYj@ijAGAQa)FdUm3s2jSZsKVY?R3w?b4n4<`|(7huP|i|erf>FkUF;EUH+H&;3yW$NevzK!vK*lHXit*5$DU||A1omO>FnQ%o+|3Ng^qk3)HgfLLldl!=)moSe)rmiNi6vrP9B)b;Ty>bOVzm!& zgfeH!yQ&A~AfL9%cR3{(WzEoSi0yGb$gz$wz5C>qJ}04a?ZKxDw<8dwe-zEe>T?-n z*cH(n^D}_^S_x;7oCVref)ZH*x6w(o-!~M3xwBaDP>E2^0eNbCP`fi%6NY+5&CjG+aE&Rf2D^YohhCt4KM97uTp$mEh*~G+mtT5iyZl>_=(rrV9Ezel{S`Zm?+{;mM_G3J%{F2bH$bBw2 zPY^1WY%oT{R!dj3CB@8EuY`FzUQyJT+1LFo-IgWWWR-z9#(gO&f5ssy&L{-ZV5~*5 z9bro~!m=*MPoku;P*xqv+fFyS;^$!BN-;fstG9FT{QGpwjL+)x-XyGZjZ041S#vgF z=tdV3wu)iFvUnNnFal@b#*E+E@Cfs4L`w>1+snrbu?mJYgz#WDErLOMDbS?1&Y2u3K4 z8cT>fR4ltoq!snaszk;9t|)y(|1yfH(>Ki+ZR|_B7g*ve6sm4T`Et6O+*NI2<6rVT z33`_SNj!~cpO#GqDZhpq2Z&yu%N9qq>(Rto<(yfJCOy67e+X5cUd^iF5c!U*SO(j5 z-`Jh<6X%D#T617QVL+ptJ>fO(2^EzOSI`P|^;F}!NLD4tR3si28w?fMt+Bf00k=;7 z*H|4=RLRZ9>YCa#9e>MMokwOdJ#!4)P<-N8y`j7@R&RFyrm;E&PnCk-f#)q<%qHg3 zQ=inr82f}(Nc0TE^>&J*KJ7AeDjYCV)5)o*Y2Ti}$^ zgY)1rj%ldoKM?J*Z5N5CU(=WdeD0TMO6ge=O{r#yIG?4Zf!$q}QZ3&`H4L(*MbV~x z_@sdPstJu}#{=*R;xqrYY$&b{6yF{i>KW>;jImRjVB9s>+nWoKmC$BFpT`m#iSSv2 z#bH*oS`dJV)C!s>&KAi4mDMl~-5l<+D$iml9Ar&XYL$OYa9VO|aXUl4@{efj-AmtUX$ zG0s|Ojh{S{`+&NDkn-|-7|^x+l7;Djg(;08>V%0#5V?ynN+@fqFj;__1wqWLW?|?X zKP(*0!qO}#;!k1$QTWd7#C^3+e|=-S?F3Y*c_*AxBQ^PUcGkQCUKQ~eQmK!;CTgn! z+f<{n7ia~tuo^X5TSt^c`JYunYyBKn7b$1y&NQqQ+S!ptP_-~u#xqq3-<-NR?o^h;1i3kgB(kb?9tfDLNQu< z@Tc!DD*6w%Z-%CYi%i77v*rP{mdfmID;;;)%{581M}QSfB0G?TX)ItN>e)@ zLgT>t4|K*=Q5|u(yTccQ(n5MW4E%wvnB9r6jHP;l+3vpH*lp~wXE@3&qcBJ3;+Lak z+^VkM4VJV;VLgsu$)Vtv`&cR9pZte1HtJdmHu7>087hKM57KwY^9;y6lzC4z#ANb|xfja8^S9bMNlpuc6AwX3YmrOdieIK5AVE_C@+|-@~&CQ35Ko{ zH+r2L6P)C^xl4!8uGLS`S|b#NoKsRC^?e2I(m84BUjAJSrhzw*rS34VYz ztF`%Ck6kqfe>F=S)I6J*Z$0nlvJ{v07*`8RksY03rixPrA2#UE*PCWF7v9>CUi5y- zvJJPq{`GG^B}k$5`Vh-Qpda#=pLU8Ziw--f95*X6tm*96yu_@_Yj1Y4xC%UU=i|vV zSrQf550Z!;d$VMv!3gj5gL&cRdh_hcJ3+o?c$nisf6%Q^5Q{o;FU1XD%P`UVk>cyk zl-yA@8TgV%y~KAJRo;yQl>rVw?oU)SQw)3!=_kP^*bgD9YvTt}&g#I^1E z9VL};?9F<{`&~aQMmYAx{R9vD2Z_-t2mcUUt}^@n;f$?IC!Bh~)|ccU+1_YTDNvs_ zsv6-rOsn@a3T3PCouPf(dJE5etCrok2TXUMfAT%1gq-pld)ky<`(j-xPKCE-DGc3Z zcB!y*kLkGwO%ES5J%*7=yFpO*n4ZzX5)Ko@QjKm(Y%))37ryD+2H(4-H%`KUgX^%~ z>+Tx0GQ#O$OvcljgfxdeHS(pu?Gw_$#{EnwtJ)AuCT%5_WmBf>Hs0oqH=ncd0eKOa zf05=LJCBkbBEmF7scgft>i&cv1^;%_w`wGcgkvDVK2m5bInJA0&$xl}_{w3D>=7EA*~FE zWgPvwoD-%q!^%@WW61xlTSTAVXKiMHsqIqZ)Sq_72&9BWGg63I9;RwR%=B_CbJDr| zzv?A+6q%7>keP^P1N@@2eQq}0wJkCB>M0_|_kD_5`0}2Z#```OtdJf31OvTn~beTf}mNBoE-8k(_=_@;xPwfYud`K1QkM z{C)-sqpk#i5IjK-KXxGnF%%;hM+T|Sa)w#X`yh=3F*ZSTITmwIb_t?_HHFFNG0lJY&$oU#jcFnmTRGmG5f4&NY*EG%= zb|_ykdhG&xE{q&po8q0)ILV`5-|niM6{PjVYk?j~qD^e&)cc%XN~zn5OP<6zyy+W{@h#^U{~ z#$CwUr0GL`IVncI@3ZSlf7yj9n3Qt$oVLw9HjKBwBUR7Gvm&0YWM)Ue;~=|b*l@)r zU`^ZQDcEGq!;LL9-3?4FbzO2OY+ReOoZukSoxyS+Esf3aGfAno`WEuiI@QlD@>m85 zqdX37co7KXJ)cIM(>cQ$QP^>`A&?+?p4rveBe!E_VJ zeGwoAj1JSNdd<_e*B@(5v>M??&9oLMuHA7+F`^Qq&4PxGP>yoKS~!bxy537ZD<|WZ z=8>Wlha&AqDi!5~fACVu?zGZo4$uw<0k7A1IJyeXA=#nXSr@FV3(l^Kxel`qvqz)7 zAAc!i&_TmwhjAHQismDO=X_+i*)x(n6P6V*(v!5x`FIScjvb{_g1MhqKY&|auIt<> z*0r<@D5kwT0lPv;LfT2EX7PiMxaNF2hY88b_@;_k`}6B$b*Y zq%D{_ zD@T2aEpxJce~dGHIQv#3rSC&sOS%rQma=2kj{|fSE^7d-3E?1)DfB`H0R6`^wcn?B zsH2LQv+=sv$oa}~Mc(+0pRH^pTHXoY7uwq2wrqN%`);mm{kG%UfiMqK!T@X^?{@5ERpF$)UOO?5PO<*{C;yD)burj< z=b-%&RzZ_-&WZ6-`?E{Ub~gZ6!>O7cm^!$SwQZRwB#d+E4!o`Ek!`$G`Ylivz-wP= z7_O?7&-ag~{{uz`I_8&wSS%C*GB}qoOe_?a(*FY|mupNcmw$YD9v}bw@wYc#kj2l6 zp)$-neX&k6fLSoSbJMN*<>|%peA+PW-LRT#z)J)62JqB?g9f~fC}TX1CFq+}^B$my z5vuqGr}L3Is=zfa?(y+1bsUY~^gTg`5qF*T#Cbq*V?Jc0s`f(NBX;-r*2cG<;O!`E zBN48?mHkEe#DDWTx{tPTO`a7YCKzR=ew1;y#x<{q+=roS=CW}UWb+}?S~!iowsq-* zNb^b~H=U!W*b6vE?oBdaCF5Qqw?^8lkSG@_=4B+&+Lj%jWlep14xjvvKY?1A9+I9d zuQ0c=qVSf?CRBK3*Ls49a}|!Jk`_npwP8RYWUgeLSbuAp20aDcAE|t-X`n5iQIguD z`L6aEZkY;U+G*lk+D{km-PbZqR}Q(0@6T-9wEgTT4|;b~H;#Xl#ZJED%W{9y_c!#*3^qkG9JZ^@L~c%fzFLi9#0z zq$UG#y{(l~e9MnC$pi?LPOwgvN1HA={)Zr=hdS_}(!rp%1D=T+-Yuw#Mhdr9I$Vp% zypyxt3C#^B?xcL9hONFY{7mF!(s(c_oN0KxGJopw2M~N7{l3ith;NvJSN+j|=Q%oh zWV;|w`VBQlB~1p_wAIctDMs3&`=@-@g;_Z)$nM;TNLi&mw7xdeot!;in@}*vK$FRY z-VV%Wv?O|5{dGx=LMS?Mj1B>vc7}T(l7cBcVT7*V2-M?*2k*nQ#L9qn!Cjk{C(N5` z%76BRBg_Kd6GvhEl3r3VW5dOG$wH`sdK8ZuOvJr&kVIW!9`V`KBd4pAYuqX`I}7(x zm{@d@H>Yb12^%)-GM>vCCS`TzvUlC@Qix4VKHkN35wxZi7*wUe?HNZU1|`0Jvor{z zfpQ73Gb9YV&&jv67F@0$&y}!r<&o#ZM}L0Ll;uy9bJX2>x-URX^D+E1O-8S{5vq~# zO;{TWR9X2WKKpT-1knY9F_5G);x$j$b&W=Ys=BY{g8k|(BJ2t+crO`dNRJ#_YZb1| zXq0b$&W2D$wekx(8&pq8;Ut>h%jm6F;4*_KFyQcl0vAkauJf#;kM1;7j31l07Juiv zz-vhpG0}wPng;Q@buf?y0S#M6f4g*9MncTqD<$F);UzBcW+;<Wd?~H#gSh=eFnP07n;tpJ8=-oi)+LxbD$Z2MF1{*`Vo2 z!+v&iukIiWk%?}@Y7!{!+X0XxC4Z;A52)XTp^b*3zDJArXbzCfTTuS2n?{#b_QBvd zbIz3a&&;h_pSjiGWOUlvX(n~68io&Lu7d^Lpu2+D)cO%Z4O7&y4Tb>HayLS#nX^+P z?O~+U(hO3F&TFYz9F4&*FFX)p2+=lNK1iancA|>vdp~zi2Pq9RVWRg7wn}pa+A>2pr>R;BCe(!aNlgWJ0!f@)?%iSzlm^u&K2>Y- zTjHauH59Gps(Y#0ubNd&0y`wVrB$=92Y35v4wsCF%^j0Y*eQvyqX#b|a*=q~xwP1U z^-mC^>#*j5Yo=;s#>0`6kbg!Dd|}rb<}{w*_+~yqtMZ-kgvH)k-^(qY8Ouhu#-Wr_ zJ3CuPgi=m0Cf6tzhBKw8uw#vh=8gxdE24wz0R5azN;SiXvq1~QKdUWzjPGCzl9b0g zqXQcSku}rK4=AIvE7=%977wt@vb!9vE6DFFW;B%CPe}Y9q;FLmCVyE18>n21aXK!F z4KC75aH?U&y>&T9$rzN&ctrg2{UAIF^TT7_N3U+|i0fATA!7_sZJ2Vv_-vM9eNT?+ z-PJzgjA*3gw|szfIEACFZm6!L5`oS}VGU7VNu~Ez=bye5s{3Ksk|DYl0Jb?)zR>_C zlWHXm4fEV?Wi^p@PJgG8;5_Kg!?_)$R%bxdidV1tx{6cc5!UahV@ULHa{`Bq=N`nQ z1py}QFvlYoMI6PtrfA9ByUzYl z@9Rv6SGsE4Ki!m-8n`y~PG(mZ;3NvTGC+#fOL~7DDyz0sXY+Y(_-$Fw&8H(0Zw84c zP&BCydwM%mpnte_0bf%9M{3Y{jihw#8WidXO(ol^Xy3P19Toq`-ljq!WrX}bVXVkK zrXFuj*761V>PS-bSQdT!D}{zQw&AoPMP|XtjiLdbgchiX-(H2|3%O4ek<{~H9N2gy zan5%Azhd)(KQH^wPRbeQ&TMx~KO9@eZef?bQO0YfO70mhKV?m~LkG^qLAxZDBRkHbHR}GfeG!$bDhr$_iIdAGY_vustpQSupJC~IVp8* zqEfP_#(zeYro7FHvM+st2{BROFANEdvdkGd?zm+rwPM`1I^vzAFQiAzq#zI7qz+<~ zq)@wrP&Q3DS)D(Imt_!Gu=@aZ_d6p*2T~T(!tbp|uEqzVi;eSy!M$aANwa>cSXJPa(BNv+5bChI@ z7>((1{}>mloS6*bAX6{M*zb_?vo5QQGu70#sfVW3>@AZS;#)TOV%wN880IvwaO2^Kcn&2`s>{8CY~bt$*oW;w?$%iHhueSbOa z)EAz#_hCm&->=|X2gsbr{%NhA@sdEfiRQ1x(TDwRG3Yz12?7B6v2(JzD|{VLs^RQh>X9$)FVYmQ;C+!-%A$C89Hq zx@(g00|Spc|LHBqPu9_zL0vasnOkd~tXJpF=+mUk=dqK$#zGqAMW8*o=6~KyF`>wp z;t?Bb?RpGHbbvk8K{ygajPl16&)kh*_>rQ@&G19Sh7{7i`K_sKN*v*wQmh*JW{Acz zrNRhtVNPESEQA*+J{=%Sz7BulZx5UvXRB4{bI%vDkX>e+j!Ak%&)6YEez0>)&NE@; z5y|^aqw6)HuY3CzDat6Vw zBOQX2xjdJ7H}hRZ#sd3pGm+QAAQWo!aJX#hfQzE@C|W73uKRkl4wv*Ab+!tf zpR)x84TQI#f!BLejojjUu6v}`P8fqd#XbHRwD8Ie6nFUNyodA@*Zgy`{jPWP&)sg8 z{iwWt9V`hny5}L^PS41JfACffy0T&Y*}~C{%fCwnK$6f1AF9B1cU-m>A}_2lbxB+{ z2z!|u<`7!3Gw-O}c+(|THpduWzUh9np>`Ar=76nioU2=5Q4xY^{)uumElcNEEhI)O z+u(^qrp;a;&xbt~Kj~zl`H3yNw7vFYbn?LYX)v4XB|+ZLrP7-up$(GI&y$2bpCsHQ ziP<2D`FWC9Eu^PK?3ZXet8U4~C=S)l97)CaXq5L*xz94vxjN50Cnv#iGsiB@gzUhx zM@@4(^=8f&#@bdXe-Lp50k+jvo!6O?t#`R-cEPLFGUTXTY1d>RE>%RT^K_Y0c4bL> zBA3YjH|#;J8x#bL30@HRL;jfBuJ=CT4m$@sHdCA5*Eiq`LFUCY4@U-7>2@=MWI&ma;9l zGW$3Wl}Fmje=pAnYfBC#%D*9^sv{5it;}!i9Np0({$gYm>ST?NsQl+tZ(r6yZ~={s z3_`C)bX&aPQ>^W$(NR5yh36cU=6Xe>{}O@C9wR_(I*9c-h|_{RXF7+hL@(u>A^yYC z*EKws6jJ4+j#^-V+0R!jY}>2S)g5hG&f&7^QZ>R)e@FH!XADTQDWf;D0VTwuq%tA5 ztdU;pV>t_n8A#`2Lp=oaU5-RFd%=+8-Y!e&D4wvLt>vMPvOZrP>UzVetmyVfBbtKY z-MggUaot(c@2FjN#I&QN-|@RaNx!GKzog$&bZ1NYy%yZQq_4FXwyOs1S=qW#tCojdm1Jd6 z*g2Rky4V&?=i-#2YCSKf3XF@MX6R{FdfK6 z&Y$<3E!C}_^LpQCjPR^e4vHarbe`3?GC(f_%qi>ZjES_5<^z2VzE}@=190D&Kc4Mn4`18j+ zL}K7uj&-ni#XD}51CB+4>ImuQw!HTWGCNY7|3iraY%HE6jR z=fn{jjP-yqoGDjR{jg!kSbG)a!~^tvDz2l7m0EpM^LJO*{BxbWOF8oW?fu~&1fCqr z=a+$4EEShQ{xcMp=sgA}mw-nq2$!T_ER_M2mpWlA&wpod+afV44>KRZ^L~lJs_0=R z(JjwW2+9~Y!<%mAW4rIIjtb)p$NG8E3SR$=(3uq(XQ4++M$J>f!gI2)*i_e*9#G%3 zWYjOOHOr_saX$7~P)&`kYiq}Pt1RGr#U8gWfC^@Y-@NKzGd@=BkEkfPJ7U_#paR|z z(#U~CM}N8z(#ZM8;w+fybGpi;a8wxoWZg~6ME4MoDJaWe8Fcfd$KZtpruohf$k)Zg zxvB4!!0aou_`3ADFu^TdMg%?XKKI!MyRB9MI8>om$U(R+sj`Gpp5-M}Y}A+Z%S@kB zeQuVYyKxB~vCcY$J`7%^nVuCp7kaK(ywLMbwtpK^1aX4KTWxnY+wN|%eTj#xva>>Q zD6~lt3vNxhpT{JfLvUhQ;A>DmSCscugq|vg%fZPF|6#v6@;j!s4q@GvtFDMj2KCDS2e8 zgSLU2xkl#NkkfzEri^Uq$rvA22`7eGSgzcXdVpgP(J}|M)c|}zgTMVneucpqw{won zP?M%rldA^g9Bl`HnZo5*c;3MT*r|1enR6EKT<*78A72LMo%Ci#?Q&)@2^h?(^D}^b zd>MZ^af6@jbS89iR=duZ<^2ZMnECSx-7T>)vnnHcrM#`+8+IYFsCyhmZy{tR zDCbb9O_=GgW#)_A*?4K|d1-QQEcC2rY8EDiUJsZ&X5SQcdMs6PDR%B%-e;(xqznD~ zlN!XBPgf_U%J)qXIP?9qXiOQf^eb}u0MUQX&!p6Zp?g2KmF2W=<@H$5`#7@tku?=`SgO4fZoIT*72kio z7RI;Rif^0aMa3H|k28DSPrT&&@lNo!#m<+y0;+Ap`;P@XIBu~NeT%b;q-^w}Iw)%h z@p_`f%x|QK0^Br7Ra_rZC(*AKg<+VcYq`;A%=?5(nqCU{lKU^~AU0m1qeT!8;csDK z)TgB-+v_WDDWR|lbL_H7=&1W#B8Y#w34qET+Ax{*{x}Vsqpe{tNLyKLkbNxg4x=1K zlfhb+Buw__pv)I%>}$zKM+V3cI%=6x!}7#4yVwixq#7W}UcfUwb?`3ReTHdm1b@f< zJ|S@-xNhF`O9x4eeIZ%w`b~ML<@6+a+a zwpx$+v6Xg%AD`2P!S<5J`dmy3eMfe+OFbkd9{4aRxDc zazuB`BT^!6&l?=a0(vQFEpLCMt#ER(_YNG@id{$ozpS@pH_=<~$de`WNxj!sm-Mr~ zFD}>@)`WMCKSJvrc418VDkB;x`ARH0e2iCOhxFjQI=N|8RdhS{kc$mFOY>mn9-8L& z?Xi@(Y?Rs%_Q$<+2*N`W5=GqGv%w`K>dVTRZl4>Z|8{)VSLgM9zA1k>;ks{TNFY)O zw*VovrTzT9-!U34esvTIk9@{h&evOkN78hi+*aW8;k+*dt|jR*eNAU^_&m6Oa_qbP zGfiQSzWPn20Lb%#1^c7h5UG*DLC}02GVZ6m8P!}=ppBGr;HVROvDhT28;-{0{qlPH4{v^vm%)oK z69YCeHJ1^y85Eb%(=jKPZ)hwoe@J!}YhOrt`0F4KUms5I4`0rT4puk~77y>=55N?F*~_h+8cTviEV}B4g?z4VS7FY&VYSN_=qxG zeZ;_9jmJ30+>X2w-UN1qudm&|xA%v?A0}j|gf{+QzzN0F|MBA?Ob{?`>ko*+108<; zdHDYDYY#QcWBBGbc@3xoe+VfLKf?>n$hWL;k=fEPoelYDgw{+xk}&*zy%@_zCWyuh zkk~_%tiB8^LA4p;IkS)W)#)RW(2RVmpnHaj!+zm4Jd685shAgbpzt~EK|}u5iLyYY z8urNp=i{T1QTS$lv;0o8$g|{=nnt)hD_@pWWHPQ5rObMwofG6$f7!Dtm@O-(2?`kH zaf-6w5%+YF)XK_%j%mh572h&aRuG}c^gCRDxn+E)jc~RH609wi8JMuuPa; z5W%zx!`Kx>D(%^V#{D($HwjeMvPlnY3SL@U^_0Bw{RJ4_NnD&pbTjWVya{{sZCkw1 z?3}cPK_z8|1e<)&f654}v42~hwvi=ilvXJa z4Wr+_t}=jFtO{XQK)V)Rx%$?T?gb8VUeK_CoTdzBrJXQRPZ9AYI}EL7c}I4YIH>hB zo1AC)SH~r7`nc4tshw3?tLnsxXP$F3rkpVpbGLJZjtSX0J^CfZUuEbit$-ZU!*`mA zJ9w^~9c(*(e`3L-?m2X2bW_G~#(_PQC}vamLR5a?Yf?y^Gmc2>G#eFzsyv0V5}g}f zW*VdPOv8Uab1h<+-f8#KO3tk3JBu1cf#SwxKn4X<9QUPWX;3vIMIFfPR|~B1%DE2p z9ZhcCPa5H^>S-R>oS8fOog$thW?QJAVszq#o7o)glx;teG$jD}yZnD$5^SXkOZo`z5+&KTgv|(Lf&HTC$=XRI zf}}CTwf3#(StkFOIO0nBYNmfaQ&hYaCMyl1EfvePu zuC$twe^M;Qnt!!eB+lYk4-x||=pdt9E?Pa8 zGnV?*i-q7R6m>D1NPF66=`KGxP#_12%lUap)xXR07Hcf|_f2c$Tq?*rXv^h(Q%0Yv z;+XTQ`6E)(jMQ>1JkwfWRd}8{{@g(-O0iDpf6tami}fRo81IC0s)x8Q8CALTxv}w4 zd2#*7err`;x3ou;YjkccI#CXRpAwyjK%J;gd{V)kGU>37lJDYENe^><@sT3}&TdBCJ-1@r45rZCw<{6LuIS{>2sf9!Eu z?YaIK2)cpUtT4j6L6PL!&4h%Ep8Uw{<$ObdibrWZ{@e2n)NHo~XP!uDsVHleX)NR+ zO!YN+2=Bm2<#RO*GtU1T$-Iy~9F(gM!1gonEjv32U& z^yY$7u?ed2LVLXAI?FDmm257YfBFz~nEvIfETEA6>i_8~3#f41a;^BrYb+!j*&f;j z-hC5Sb5*1Y(d`8i^;V6zK*92;r8Gk_Js-Mk0+Kx>O+^4wb@<0QH#*hj-00$g5mYBV z=jt%Pm0ses@^&La1wyf}@AmisV+j#XS=&Qw?lP<$b8|91@@u7Mz1nz@e}>D&5z2FY zGh@3Egqj^X3=~XSwT+)Zcp5mGC6*-roZYCb@)et0Y|umWva8gRoNM&(?am#qZMJEF zoNBZv$nRVeWo0tZzvLEL#gn!-C%=omiVZof_d(=*HeB^WDtn7ivOwY-Ec9$lr*_Hi zJyfYc7oIu%{{z|54*!>dSS%C)HkYC49}|~&c`YcHOtTpcm(Or4j{;@)w_tHBrv!iL zy@tC94UjPt&Uml3a61Y>ac_p|83zX{Qc%uTufQI_Q(cZTZT22|2Sp83cFinKnU3NL zFHsZ?!uXmXl(M|EYb7O4$M|TAk6vrOCnf%|R6vuVM0vhAHW)R&q0fRRzi?qgpKU2N z?d}@Cb((5q+w-}#-*V>bPI;@}#y5YaIOBbd-vT8nGv`mP_aOGk9#``QpL9e?&!k-* zB?0y9mSF2vR|~n{bHRB5(7iKax4iDW@KZW(bU6uII&VX9HbPnDz&Ry$yl(EmR!|$> z9r9-XjoGrJxypNUChfVCZ_a-`sD_75`ptPT`X^P43$K=cahIZg5y8H5XVHJ1nmP-Z zHuaOi)Hp~x*I9JbZs;t^S-`G-fA0v?&8V3m{GMeN{EZigX2$4gT1MqxFfAdPJ2ft? zZ;61~f3)NKdeshe>a@m>O`g7}7Iuq}2F8`$6zpagZ*RM?B{vw}*><~Ai|wW^__-Yd zkN@Iw#(ur-l8P5!l^o1SME$=+(0Xo++EmmuGdjqGJXBBdbrn7Kli3L*Hb+! zoq?cSuOOv`*S}2Y4T|cqExYKJ;Knx462EK$9V0Ufn1{R-*5K2~{oW6dx;U)wzF%H< z{{WFj6#thIcq|o{AzUXE0XLW7ZU`oqVR$T+e*}5l;rI7no^(O>^O^l3rUn(;Fjz-Q zU{_2dWR_D|-twpAKuv-d2?oq@PEMqVG0R!x%c#uKsqReYuX3oK%T|Hr@m!&fjs;4j z3L{PJ=?7z;3kGR+Tx&uc$Girf3mze_AeZqZS64=e(;4a1IDgJCNcM61K4KA1KV_b< ze=GZs<7~w|j=CQ6G;60*X0+9PzB$L`vm!RL858lkva`^gPbhd~uB`7&^XB#NDRC@n zqmJ4+?(BF!^3`T7B~JT~W%Q+-KGO<)PMUBbc_IZAs^q!qO~eV@oOh>c9SM(fq0Ka- zu1GeGBse%>P$iJYxp044>C3F0Ys$D{f6l8svdEDUYd^CC(G+^gcBl+{Zw9SM9*>N} z53$V4(XY`~JuKM_A}VKH&$)?yd5X>-7x4zke=UgPSZ6*}ry z;{_fvAkx%ACA<}!wpqHxPYyv@f3OeaXAd!CygA{%pO?-FH0YtO@zP7UGyP(TBD;?* zLg|TVS+NfyDQhkm4%|T$A2od>h|S0xVilqH%F26W_~Db)F@{IBQ;irf^F&dwHm-u_ zDH5j@B{t5oi~=h~o>TSLbrfiv*9Cs@=T&v9$ai>wO_jA)xji00i;oiMe}DtTbJC&B z$k!XRx;fO~Ruo(@^`Zj}uw)%e)_$%c8jmu?p7#4B!xBGwGDLh!XiCsjMBJl!o@>l# z%6I51vvMAma^bajiW?b6()5sGYeq9E=j#IJdUae1Ra;3lL+cc3f?Oi6e50b1r;@7C zlxik_&18}YbX{V&C1a;&t+NAk0S z_?URyLA@T2yTu=f$2~D0kH;Ov2gGBt;%W{5Z{jhLQAWE*s%#6fb>jD{YzuWmWjhoW ztRLU@N8#A8BHKf+)mR^g#hY(1Lms^!3j#&P-N+ClC11b`oF7*ff9I08i{>i{(Oyzf zWY6|OM^_RbjDf;nzj{h3BE!Ym*R%|#;#xxcUfg2rM!O}3T@cYI?`~DE*jfPG(ytFB zdW4`1`JXq@6U4nnFT*HGVq;klv?;_b&0Ogo)r<^78|&<>3&y2O={s+j{Of9$8*NbF zu&F)5%&3ZwB_5N^f7}^f!LveTt(=>*?seXsj18t8C#|H*PSk*)JL%;-rpmb7=}U6} z_a(##@&?x@#Kx!qw2=|_?;Fa-lp(JKvtk7()q)Fq#di^wB&qP^dT86VW3r@UZQM7` ztYYwz>X&s`!;%>U#^?h+=4-?toJ>xt5B9HHWrmOwue%8 zr^daVQO2`Nql9%FNf#0$jV)F4zIMHeGV?2$r7NYSx0HEiWaA=&69n*D6=3WNnhW@2R{rtu-oH(iC!b z5dtLHEnPnuCzoLgz7TN|xy5R%mgz^m(y}F%AmW;} zIZM@(1@n0MU93M-RSV!z)35V9cty~iw4E(n$pKE+wK)DHfuTKb!amu>u{I}ilc8|i zwpZcfe+9g6`k<8C71Jg1rk2CD=3bR2Nb1cTZj@-dI!5J6d2_uyi@O;=J7J%ql_?%O z)45OP#z=)Pbw!WMN2EU88XPampjB(F9CWd>?Qi8^vwFrsvNK7SpK{ErJsy9M6XUtP zJ)SRE7T>^S@wi@`a*yxBxQuUkw=Bv(FOp&ke8ni6yNC7T&Ge z+fODdlzc@?9@*D>7!=w`hj_+Q$meck4b!x3Fn`;e|`S_7f;OQXWP3pw0VZlQT0!~tnke$@_igCU7rV%&FqUP`z?83tz^ODa>&~LH zrT!*(E(R=a(fo}Dk0$=%4S#%=4Q=C$dG;{k-5bf+*OzL7EJ}Z|sPOV%TKTc{9}9B8 zIwqa%wSn$t%yqu@kz>;vWSw@18V&Q-Ara_1nL7QgpySG}gf#RqfVv!@BkrP=O z$S29xO$pg@CcS?lY9(v*HP;PtGD60#kC0FAiEog$V*qJ3psy7SUw4ft3D2CcCyi)J z%|Uf~+dzbJOl#Xy6Q?gyxDE-;7E8xYSt;%Yz3@Xv4{we(-j4FDdD+B=QH-lz%>FFE zx9SXl_%7OzZYee(1Z2}_{%#gkxhK(4pu0wyn8Qjrm#sv&By|0~7nol7h zJ>bot8y^(Ou=K+T6_&d8gn|sb@`&uN1X3f@LJqL~+S%`C95#lw%xNq-y4U(yw#oka zZ7fq}7%%DxuQ5OjI!Zi+O$73qPSxUBw!uyMK;!AzjGDR8GlCgZJxAZ;KRuxtBtAGF z_=s3Htvr9Dk2*yOh4zM;x{+nYTb5GId6Z}w4bTtt9-$q!=ObF|>{P{wvv<3)4P0EH za`JE5b>&Z8eb%lw)Rnt>%&xc89+Gt0KVjFQHCEQQzyZ6SdL_HQeCtN3f}GTnV(|D) zcFws!MT>!sX7U9PSIlWe-}DO(d-_zZJZ6Ks7TJHaVE!hr!#lM;2Wi{d6%(4c`=SZ8 ziV2hhLVm!6N13R{i;7S@=sQp@Io2t1tzq1I0Nn^V1rntzvdTW1iCV3aE(hrpw=a z9rF)6YHztFDvr8vIl_)n=W=FT_$=EyjiBo)PU>XK-zh=gf4o81- z-uhA3a_dQ~0~yESItTU1MUg9pIOleg8a9BJ=(B4a`|dd4!EM)1C|Ekp442=m;Q~{u znd5qL8F)mqdi^dW-dvP-Td7F5dcVSx908;P?@*;Vvm1IWwTqgbu*Bi-aSM!2QIcDl z?@Q?->DdXrdaGdTn}wOHW{Rt(pHF|%%C*~y#cfT8r)|=}kNS=xr-;J{AHyA-t_${AkyR9h-(%0-m4VH>ypCgde;)`Ly7j- zYgirsMy%~$<@#G_%@3X=Ld1R8YIJ`mCHJ>V(d@X4(gH){hM9&{Dq&{6Dc8I&2`LWC zA(tNLl+;jVflJC~Y7NMVaZZ2t)VqZz;U@NmyzGs+tHd4SM)kAg``l)PtuVqcXK|Er zYIngR12~)LY^j$7K@L7lDk1TKg zHwmUMm&dh|ZPZwhKTCY|tLna1DWf+lW%jL`0wxj8qO+mi+`CG(B?D_`WU+$bmim^R z2lED+%!TjaJ)!<`U%Bfpl7@D(HMsal7M9mh5p|JsLOUA$LW34VbUP zuiR}cb({6^qW5v8e41h4s4cZD+n2W?j)FRjFNbS#mp3=MSgL=0(y@$fTBV)LkOp~Fj)UndlbeFm-1FYJ zrlRWqs7!KOU40}|IuGoHLuSqL7H6U>GS0iH zl%ys+i*AivUz2~f=ST`)e=FLrk9=W*CF@&5y2r;PjhPXhuZ4kED~@%Mw` zxZq!bqR%IYvk`Yoy-`)w`wka3K|*fH4N*O(2g_%DR#z+C zQ}3c~<|Kd3&@~nP8+CGZE&MWLReH0BI%${^XXEsidRpRj3VE72bp0&9Bl5@w(mv@q zJy_u9b3$nQwfKFIw_RTJW%MC10cYdzmb%eWM%(ZUp(O8cE1AB>Y)p*94<5fQ6F&-0 z`y43I!wP=}HEsNus*2u^M8jnX1s&F)&Msj?y&G3ZSWP(X8jyCDD)DF6(zvoQt?(B6 z1t{U_j|VqvB9<$&R1^6P$v#9zaP4IRJMtpU93PrS5`%X3>m`q6OXx7Bar)8!f~4Qx z)jq{HC`GThv1s?uUAt^2w{a>e3}vYuQG30%c6qpXI?RruD$XkUcR^ z#--(dEx;j9lArINzy1eI9!V0HfmkdP0x&q2&=4;$mvvv8yG3BY ziR&~$0vNUnBo%~0mZ-$3ED91;xc|P-EJcY7DT@^8S`H9-?rv{)c6Od;UXGfKLJFEp zLoUSy3t82L8Yop4N+9tuRYIx$sHMP-{0;@lT`0j=T(Hor?Lnv^r))tgM&~5WAGVNj zGf2w?68n0UAyt31K`MW2Ek>h))K`b9Rt#%2%wh)Ba>CQ*PjhNeyX(|^ z1DsvLJu>#EDG>Xva^gVBqoF`KZ1V-#n~U=sY251Pc3jE zpReF4lRw2Jv-o_(fyIv{lLW5hI%5bo!FlB3X9mOKyl`l#^mi3f^_hzVq3nCZ1G!$K zKq{_P!E2(vMyWy64Z#KPD)(^=sS4J>7NnBT$C#y&&&LUpxGsJaI3$;#WFeoK@j#|e zF<4r^hlRBCdzgP-yR8HdYWDMRM{4A=xKB3reMk>nu1BU zDGX);n~IysH2FT@a5!?`hjPFXxw=4tRqGO-w&d?>3pMq#giBRl9QO#)bex4+lCO)) zD&5Y&SQT>@#bwpL516xR-#Hel*3S)CsI~ciO+szcH8g*;)Mv&Pu<<@~4XyOk$EF*r zYY%s9Qr+Tk<)$QiUw=Kk`S1B?cy@L+o(!+A-cJ1L$9HG{4#PL&i{sJ7eggK>!SMIt z`{CRDJiT}|I-2amrJ_Mu7$q{6lhmTC2Q$Q^?O=EoF#YS{yYZXx@H~74H^l0#DqIZb zY1rhSpW=T%SK|3TID|3ztKsKg{u!_rgO8kDot_@7902e|mX+XMv`dfBP``?)BtwG75QmipR?1Fukr$i z17MZug)LhG#dkA5Gqk&)^FG zc=dn1|Nqr*lgatzUx(q>caz_)-o~Tx`{DPi_vcTJNB;Zg+p`5J0%Rg@6JAx(ZSYqozP%kysHm*BHq; zy8qoj62}oexUMl$EVlYdV7h?J1=(8*fSW7?el~9VFWzBT391GQrRB(Tf zY9EOqJ9DHtr?}gzHguPq${*dulgZ89#gp4xcd0XXX;Zeqn1~-K zV+9=|xn4#5n`StzMb3zC3A^{iRcg$|Q*Ah_*>Z*>g{vC!RMBSaKAKk`WP|WS7QG6& z2|vZt9eGTFR#gyawWWpd<|qX=Hr}X;8i)4X;wCT#@rkpqWr+0?!25J`SrP3q2ozdUqIpLIut2D(-pqg!^C^%w zo<3Se&kwkvQmWD0Bx{U>sS1CX>r8+PDvTf5xm2D#cd$yfuG21S359b$I$>iP#Tw^5A?^VeE zwI}oN&WnFx`J->~Lpm@1h2qAyc$O9OEGuT(&fBU)Ew{BaHx!lSF|`&m(k*yf%e&xI z_NJ0qD2Dn@knkx&iXwlMREoqalKh;IeCdNzj!b#Z40f`J4Z@I@F-slz-1ZW@*sfA9KdA;aG3#IcF<#GWc39(AUrUt ze`rmSz0#;i?w5R?L={C&ZQywkNk}%fa(T+|fOg~aDB@7o(xZQ3nB+bWgzti31m4`d zg;O&JL4iqL9;6m|6~B11xJXq>mQam?Vq_s{lY2f#&JUOYNx|uD>D$T5kw`IDR9q`Y zX75SyI&1XdLo$0J+r?!Iv zw17zb2L_x`{bzq<#t0bxvy2?UyekSK6ho*NO^Oy4u61RfWP|#%mDv2}N3&cB87Z56 zZYDcBJ^$C}!}&$$vevv2p6cRvSpOx+$7y74zzoQx!md=;8L1Yz+9z*V-}MuROJkhtN8Jto z;ys(~+l0VVOkjPs8lg!jYVay9CUAAJ0lOYd>So{mOE#RvS_-u@7?d8v<55JNiNbFQ7$Ln zz1;cv0~#+q49g`?jd}jy$i#P~4?_Pg+JF8XlwNR_yOH}#Y?t?gwmKpRo(b`K{^RY} zC!GhYRj~1Eyw$%xzdil^Gz=Y3u??L?tw2Nf=l7@hfD9|^LPtS)gWZq6y01^a)u@9k zEwA(+th*oIx~k<%R$kDeJZ&xWOnG1xv+t}83ge?*dGx9^%jD=HmrR~SO<-n|{C{}y z<|-mvg&1l?(V}KiEs07gA@^vC;yBAk8vd+BhCd*ClMG!UgPx6R=pD2|M|E#(#vu*j zCR%1`KIbvrR_RTBl2e3kg+8^IT;RptCJIVYXDwgu(D_^{$YeS6(wIld#CarsL35-m zG;@er;%nNwJb$n{E+0Ovwke=f#(!Zma?{v#6{@V9fVM_8cy+$Oq)ekcea@3%?8c8I zcGfa=&|-YFiku%@|MVU^Y~>6Vn@76)_c((CE9dDz&ZrO% z%o&x`ot#mj-NPB>7kuiU#lHN~_e~>!UV3VeZ6;!^XPN+tngQ-08Bvr9zJF2R0?D9e z1%!=)wzCXdP(iz&%QECqi9h_CECZlGWF5#dbHpQAW{!M|W#+vf#WLcy5RT0BD#Q(0 zfU%@Jxf-cioVVF-K$K;MY#YRF>;|#4pa$(WyCvKx%jTz$`HT8Di@Y^F=Dh;2H+AK( z*G&3Ih_jX%Gg^5@&Fna{Gk-4-T2K@kf11qw=W#hoP9It6mJU`RIwySB%w~zq<9Y{d z=DwZG$xD@jb`_Z~7Q}_SS=PY7E>YvrM^D8Xu?%*fk`Ef2BXRLd#!_-It}} z=O|}AUz1S;u9?A}>Q+{fsH;LWw7Xue5ns0>_BC}4Xcr1_uZXyDExlgZ)~X;3Tg$yH zE+%k6In$UYI+QL8S%@qz5#a2;)0TG@O)ffW+n@W$$L=oPDWya0wL{eu89H%$UJbk< zqGC|s!VNDSdXtm-xPMVv8pkk(eqAL+o*$GKP~1(z1D6`brPk7qxvmz9Wl_MZzO+3x zz!3Mh$4#slj`c`VNrm}$cB-ss47pc!kEGnF=Hwu{LX2s}6}F7LxP+156UG#bhMcaDO@GN(^L=s#K;_$gsSf=2QXL4A zO^-*3CAJ-u>ZBdO$?@X(&{PMU5S|GQ`p?OAfLRF7JUG{>r0&dhDzrOto!8yDPCbMD zxlV<6K(13G?#^{;!1r^V+O_ocj395y7vkUv#lIY~VP8t?TP7>3Mh|X1Yk6lem2$kE zaVYV%%zyX3?S{O$Uc2@7`~Zl=BKW_rU;$Cl zpr5axU*C-vUPdp?$kyAm2c{v*zV>9K;l%?ABQ-nYZ1Jy zm6BlX8I43S?Xfwc0Tm>rfB%H0zTXj=(}~SObk1}kx)fIm8?4wwXrVGAzE~mNac)~= zy^Ppv;uYwWw^wqRlyGI+ZEKv64En8n~1h!y#b# z$7k#vW+*)qTMxh5BeHV%NIl=@ekI!G=&Ud0NgtD^=>0+F&|+sXy1W%8h0keTDCHhh zk2>S_DwkZsLo}~k9t+ntt?zIh265_OYeTHdIG3zU6#w#EgYyDO_;%l*+=Uqa0oNNC z!IyzpEE57UFqc8Y1rwLRR46EyUz{wSf5-cOKL7n7iP%D!Hp2Nd`CtXWV#*Mz1)LR3p(79sI~LCe0G6vK9{d~b-i8-88u(8wRzX4b5uihHB!XjSEn3dJQiGc zUg8}o#V=gZpX+S_bu*?7!$?*{?S`1nq;M$zrwn_@nYBXMG*ny_NbdQLd{!-;bxN0~ zw36u!q-~&p`I#d5=Wif0GRm^Af4#l@B;(LkPcvS=P5wL<+zVRcUac%Nta*SOrB$1trNFMzRethY^Jv|?OUtJ=| zOn7Cc@2>}ZV3iX-q$wHU;cEZ**YxA?wTDWMObQ7{<~Jv&KVGJ8AiDH z2EA~=yO)4VRt0>l#>y9=)xv|4@vI>_FTfsqhy(vQi^?LM{FcdItbA*HbyPWubda?i zd-f!S3AW#DR&>AuT%`mq)f3TlS)`Zb>3~)r?G^F_4F~`pv_K)EjCHZ{?Xt`}tlI1{ zsj>8;h|%;AQBrOs!E-A)e@DWqlH-*(B&UrQNv$QfcDlQ?Fc@K+pTJLu01lS5@L}mh zd6!Efcwcs5F7br;uGdl0x(;Heqt`*Cn^;0r_T3OQScHOHr-%6X0f<4Eq*oB#P`5N@ zfp#TzE3cNe2EVD`;(KYU4@taeV#kdcb7O)4J?eL3iZ&+)*=BqVe~3Bj3)k}+oUmSB z(5$jM8j*rp$@qkxZfpY<^h}lz=N_2{OlP#K0sQuyu>_YCeB=f#1W<4c9mK60v`Hkh zl0fC&a@y(17jY6{IW@nUXYkA-#dMKp5KE2#`7J|StSlfVVN+aj0R$Sn%dssQt%de0 zNy*cP{dtK=aJ$jQf1-iQ#Q35g_em&--W`-epF=_LTc&TZ()v-3%dzMt)4p{k(BL>Dsf8$zM8_!Z9cDg27B_B(HdQ~#b0Kc>T1lB)AM;11t54Sp8TyV=9foX41QV^+9fKs8LDh%^V!!$1eD2BjG zg|2RWLkJzCuu{!lxHK6fwAQGeiX=NrxBmV8m5#l@p)bwn4CYQ5FnoY?XJZ73JA{?% zn2kb>w)1Yz_7xSRp?GP=G_tM^2%!8rH6&%$?kaCzfA@+5F2y;wLma((Zp7fhZQ(_{ zzS(GF4rn)rm8W}~*!iBQm!juNKiBP{R{6F5$CP{2eX2cyRqIPFT3?rY0^Gl;)%&Tb z?WxB?Pfek&b}UreMW_L~QkdO)a{`?w!=42EHSZhO`;FX?@60LT$R*{n zTp1}_f4$g&vQ^EQmF?I34n8PKgT4ncw}_tICkT>r{2M*_)~Xc6kh>;`WR==zhH=P& z2n^n(uBXFSlFTUNjBe*6(eIsiXOtm*w z{@7(!>Pl=IrUrGY_OZiuJQvl|>E0P`;3_f%e{Ot|L9lvU+b}ZV_@#_}!w6IN$5lz&mpt7GeQeUx*l^{? zZ6o(I_glRz4UiSLRthM$3kFQauP>04!#v3L&;}f$xpR)L9W{~KmA4Xh56&Z*9t(2l zf4Em4cQ#)Frkp(__w??TU(fk@`);WL({mwdY;=7~hubAR4QgCWQY&O|^CK(a_S-wk z<(>3cNagg3dd=~QoDxq~*hy{Ci@Hv2(v`03B($xKI|>jb>ZWQ<`Lm7Rl%n-|c8yf1 zsnk(%V;kXyQ-|dpHd1bJ2`T#&k8-|Ve*(@5m3n|%{UPw_KBW;Oy({A=prX*xH5E8l zxyL2}qttJ%aM?l1bH~&uFm1+J3VAxVQApeSI@bwrrv+dEaJUEH=-P@Ce>>WH$bNKB zMa>;oLtZW0X(s2#c{N)_Dtop)1Mlx=UGuqiE?Xc~+^)%oZD?UFDaK4#HIw9ge3^2cVoE>_Mi~PU$Hm9ztm`}8;h1QN&#BFJ)a;jsFGS*O~6}eKR05)7p z#5J$YsK)jwTd5jYx{Il1{9Jj>8Nz8;1znQD3}=soXB%)WromKI69nc&(&uBTg_8Qb zIbqh2eP~k$XslDq+UHzL0`|Aye@i3S9r!71mKbi(tyb$`YhZR7VvFi&aMXh1?2#+3 z3#t4iSEIERQkx#z&Ka>bR+v9)LabB}0g{j|;fKOQc&G#ZiV<;+ur&bOU_{(Oyy1wr zgM48`-0l90M#L)OXeQiHo;}3fmD=V|ms`~z$ew8w)6uq>tPY8i7$|_@U`k4(-Tdpbk-nU6 zX9FI`I_Z`+&_R4>w}LtZ2(`|N-uUIi>L93ns=svnfB~uKG2`q2Zs-Jiv~Kq;?T0F$ zee_^NwKA>f`E%??doL0se-t}u3s4t8?Ch^fHC=C4%bKC#xF!o^11qx52GokXFPvFd zAaO`R|Gx@ncF;>IR+H!t6wPyC+9P0jF0!NY6P=6oGkfMG)Y4=60J#wgUA?*%otocd zQeBXLSiEnLjpZ{`nLSi0J6B!|Gf`z$92Z4^`{`dD^c9NO>bV9$%snP;%n5;8`Xje{&3KFM=c%jWC z61V0=htE_+u#s^5_&of2d*A)F8_8pcSKai-_g%bT0EKmd@DYEG;Q8_A^mX^^NR>I4 zLei4_59RdZ+ccc{!m0?81eDey_5xagB)dgL0{SALc_pDd3w6wbDi|R1uu2iF&^nA1 z6HKHi<04FvGDBq|pXFa-zdJ+hSIQoe*$kAG?D(p86Qb3u!QNOGxEW#9C_#h>*PuJ? zpRA0Yh#vr=^g>DXNTVDm8kQy=BpE`MFn*R@(s$p$sPgY9Z}fY_eH1^PviV5Mn9LdA zZnb|ElrRfa;B{4vDp(30X1rS-Zr+w;6u~dBlWuiiEm40cqnG;@3%PxNrG&Dup!hcU z&kYpGw4J+FAdP}j(jx^jPB_2V-@yF>#TaMQ!ZdJQB60>YkA+0XMjF)9{4ed@ooS;o zJ1Yj46kp=KWoO0FUABEizvc8!f6=UKV2R&URylv0&k<_;Efohu1@wU9dfFuBC@WBo zKHQy0WWlzt2K_sF`>q4Ekgfu49;=19@)tXq@lizec!S7>Q1PybqB3Ae zT!)i!j%?gKvZ}L2c;iOO@Vc4W!0G6l;|jfg~)+qvh$VxYLfeT*Ze z{87jSUVG+TK~ym6cTucfbk`L@gqH;vscd0{C=hJLDBO+>&wH z9bA9hKn#?(;4+3hw1#R*Wj+?*_rO*p>M4GdN%gxt1UD~y)O$}^#&{&xvD5S!{D_@1 z_u*$Lg$F%SeK>wW0M!MLq_l`FXh^@LfJpT^H`a zv!et!qZI?f%@c-JD=Mf)qOrHjdz8C=LU&4f5sV)=X$!s0xS?YDu%isu=#OO^qy>H8 zPOa#HrE`r&kIe+wHNSlx+^XOP4X^K&f>I9CABnEfAw{JnxJ@Ov1#qs?@o|3uvx#~Z zLsgJgO;d$#P;;dc;6kV<)IkZQ%#DbEp*n@CkbZTJm64ZYbxQ2Qf}Wi@NgX)om(=3A z?96#QQ!A;Ua<<_{Iu1!-O|DCBL@lLN(5(irZgq);c-s>>5jvBMV5bUsehNjwcY;(ph1HGgX7Ak*5Mf|;SmeqGD$V(`LPrQ zts1Guh%)Ay68ksuznt?$ypk)JE<+r-Y=R~~`61ib)*uOyVuRjF*O6!%gUV6+{f7gFG`AdU3yEISB z-|{**@fvK

tLa9B$~n$fvzP8Sa&@Tg^`Y-;UbRFNH7&K?DWe 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,S3LWS*=F!^f+&(+LlIVL1o< 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

  • (Z{r(y^BtHP7H-jXq1H^1^@|tkU-xIn`)^Ms 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 z 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�lKV(`?cG@cCa%zInLJ8mGXNnKUz|#_8Li@ zi>Zb|X}}YdxqLyghZ@a&Afk?>dUfPnTl{Sg3b?abdWIRFvB0EL zIqxq*HAm23#<|o5u#AClUBQWOK3@xKu#%~Mcc&X(or1 zOG~Z`H1GUOhbVN{LVqrjeG2DN@QyD2nQ&ayVPf<(XmTL}w?q{&0tx*EaDoAB`u>r! z87EyLb0|+N)~6PeX&Z5GOfK}d_DkYXo(@A_mjY0 zpTi~t&2lERhiMv1IGtAR*8rVIrYdwVlLx(sjU`P)+gpE5>oqr?kPtv7{$gITjlk5& zfih$%%u&AuEr39aK6m&^z#WkZqBPcQw{TdMsrAcy7&l1|8Em+V&9$Y!TV<7&au(aC z!#%mO6cY`6QghtYFUg`pYGa#?>LEruGz zq$3vbcuJsmYG*Sxg2UnWNDGsmCJiVV#6u)rwP|LN(u2XF;OXeH=?gJMuH|J*gv(A_ zP8G@lO~WMO@b5z$hWvClF|RKNmM*=J4No#st`BaN;pfb`jZ6Soe4fZUup)?u7J%{3 zpmVky+M!+Q)gis7{CP#jl|jVkZ6|^FBws(HM<~OZqLJ{DQ}_I(hQd>Y8oYzy@k2WI zw{NV>E0SRaV}QII`H2bf_gh;r=J0q_8CND-a#pjWxaWIFnUu zUV|uqWFL-G-RLouy6{4^g^}9Y0+4Eh?v*?~oYpLUEU0d)k+d?-P0G`c}hBs|FUA4e}gBZUn=OLK}lRWe}kiPxbPD4%3IT&W+WlUNX&G(`St zy2D^4M({nx*AVAF_%W8{pDrD9!!@9aD7$aEjPtKr#gclqoHD~wGF^);34j*T)^z2u zjU&j2t4!L+-rDf?+C^iX*;)p$EywA>Tk@BzyuH^Qmch6qC>CLN-?vzYZ8OnBv~}87 z3;%hHqi*9XbyR=X(uv>+(>!-zpRDG|irj(`#-R?#6yQ;X&m2#}s*r(Pu4Lq>+dUcC zw9OahmBJr#mkq%3LK|e60@VO2hVYO8CYevS{JrXHiSR~!S96Ij)G{WWHAvhleYn~Q ziYi*xAGagn{~jGU%yaep^H#*|Km=< z#r5ArHrh>48sKUuPbO$E&^e4p7+@~x8dJG}qDqP|F3|UT90ywmlW1PNL$Da5eQq=D zuZF3;X&4OW9od&Z(N3O`QhzR;R12!Ljhb1wo8#M)XEd>JVFRQ5|5)I>eG)G{F9A_) zO`cw|AE<7PbYp(s8tDa}QNv40L!1ESx;aJ{?%jQeOi78XyWiHXh008h0GFq-{Zw(x zA_+K^Mh8ph>INb;u!kQNBf@9Ks4|Oa84~7b$0nX(2fVfFDkZET81x6jqhd$_MXI0M&cO$k|%1^l;Yc zxWXi!2s*$&DZ%6~J%5b$S<(T6tr~3ZxlIn}cSIiNL+P|0>=fasZm0JyDw&->!soEuSN8zVr zVfQO9xaeV?`yhb}dp4b^6F)5~wxwMmMe1nNKtry!L#Vj?0Ph3=YgHMP>~ctu*xZNr z_Fo!^`FLI?$?|NGJ4*1wSxSsY=x$}^6ucwrIZ*!WA=(j`Q6-a($4xD@y&;mvw z!%FFQhX?SI!*qo~+D5}MRO>XQK6A{9wnx$ywF+zALF$B;L-fvc_tDMVD+38CD)E}D ziL)QE3s6^AZ8!G7e|_c%9I2m^YE@KOTi1yfYSzga0Va*ehzd1Jl<60zsN(_2>PQ3u51X51kS?O=}{+T?e&f zd=R?MzNmj}nR1d)`a5Ri7FjNIWowwF^9vt&^e-`#NXyv$sYXn!c1ZPymqn}%{$#ZJ zZur!>fC#F_b{9{&E?M7v&77F)v2{4sX-%iQuDTeulbg4V9bx41&`f{$dg|}Q-Dxlw)>5%)ajZRkQ z1hLSJL`br961I6Vw2aOW8e7<_+Hzb4@=IHr0n}_)YlY^M;py=I5uW|7bC|NDuny(8>HOCmZmCehs5#M7k)cu=mf6>EG!6ilIwOYA$h5`}RiZt2G(Ex-I9k z(wbuAhheS&p_b#1KFftHPLjU8>)Or(G2aXF-1OCgiikVU9CPwbXgB)aJeH+R{pOO39sAGsSh=CpGzw5;=EVt~? ze;e}ymWf0TI_~iNY7Dxu8Ic%?z;I;6BLRfPvpD5E8f~^3{Ri0FWs^3BW49mQp4{o3 zwS*^~Rq1^_*Y}|!t3pcwo&NIXJs9u<1{SHLFmf92Af!4@<=L}S{ImL3^{@4(r=K$|WCXfU&Hy^o zN(xnX?%luQ^QxRV7E{k?sEJ!8J&(1)vz_~m8i{1VqpH)Zf;12|*p_(Y@Af0FPgZ!@ z9)1pHWOAid*Eul{js5|_JX;cP?V#X|MhwJZq)Z#1p#1qSIVKICRwlCD{udZZd|(-%?M2Qq6hiGphc#f z4vh{wCtLvA(}3ik{mm|iiQr%6e`AYRO?^Pi?yM}oruE9CgX5V#eW= zWL;%F+zwM(6Ib7or!}(n(sIq8rupf{8<4MP1gEuN3tZ0jysgxe0jze&`T^*z)TeZa zSSf@iMM%*_(0|Bycr+BZ#oCZ(5o+w?Dc1xOQ@~SVz`<=zN_qzDk7^MJ?f5)E2oQGAU&vNd99R%Bgg^ zzQtXETG<7$^V2}g&Hx-`;|?&jT#zc=oo(~(no3CL2b}tYvy_yH$UDj!lZL1la3LzP zrBa>tHIb{j!x0>6r+`=2F7g}MrONU>?ah?2B*|aN{f_`1anFM>hELQUma-Nyp_Mz2 zjAH(&2~eoC8ZPr`OJ$-|h#yN3LB{Rj2@;GC5a>Wg&9=mpu~s6$bq+Aa^lA2N=*hM( z-qCPz=ocb}y<}mi85#CA?C{l(^}az0#!61aPb9c|#N@Mg4;(?VDxUOwsjtk}5Ir_P zr++4Zkdcqc^j3bElAPx_9^Zvw z#uu##4?)k=xk9xniva3hQ~PuVEf98zMb|8W+k{mov01X=eSZDBe^|+ah+TYllLYcV z3|P|CKOz#kdVF0@njRgq90#OFF8MHt36Nb9@a_5A#5ae!e;k}dPrchLWQkJ6 zxBPfNT=VW-7y-~G3=a5LF0Ac1Bfkm&jWHgmJT1)R-sc}|g6s41Tov#=5$R0C>M`_SoO-v0*8}W&J-Y9G=|fz|k%0OR3SD*4 z$=A{=jGlNLaP#m)oY3OHEBbY7ickn7-hXEL6|YyNf6#xBnn{{}B|KNA6^YIRjs!V0 zl1FzQcs+WVSk~Yk?;^76E!cC*|GFtM5ZpEn-RAy-weNV8pZNL*@*=E=`Ty&6!8y5E zfD6(*l)xKzUU*OrV50yi6)-D|4*_7f80pL-B!d+JN?o@Ef`s=!JlgqC1|zf5_}RqS z;QQTY{JNH|BgPpSucy*rQX5C7bb?s~t3KSt)ZVj1=*b;(l61w_UyGHKq2`yV2%}rH zgwZXE>&jCP)3@D<$nX&+7v_Z0vDYJsIN~gl#b9+fuo!)u?E@2}L8lw1qX2KmTVGOs z1{MNoX*Ip`(6-=vcEA*Pic&qQ`0R3d6*#_v(!eEFH9c-msVnusrZgY!rP^f)!k{3_ z84212h)pQB0{IJxM0vSI;>oLFqQ^Y{EgCYNPjXEVgj1zxK>?BSi*6?*Wr1u(!GT_} z%@@?-o2?G?;|8?_g1T-#ECB7YJa}u(5=_KI zc^W+h+SMQ(j=L*j0|(R65@*XsPXdb5(a&|$%Gjh@cfmY)OB1r-B)u!NXa%>i_pI)+ zu0HkdD%p9>_Z*4(??|$n;k){D6g~vU4NB*mG06+|KFT~!otkWS)&esE*2}D4Sd`H- zMC_75Yl??^3?U|0+xgwkp^9OuPy{`c0G?_GG zg3F*2fTz{(&tqd~WNR>@N@HU;>~LmJ$c^?PsJHtAp|{yF$AI(Zk&D-tnc}f;#@Taq z3N$kFwM- zENp`uf7UOL4}k3l7;(W*^l?C!Z@hO_jdAgD77PGYNNvc{busKFz}3nB>FSsc%HP%V zEB|(%|Kt3^-bYXn|KHa`^~>wSqwV9<-Q3~J_WH$RH}Ks3b?D`@n|LSi$@cc}JXN+w&Gm&@L91NsddD2*XD6CgyD<@bNyT$ISt)&v9K`TBg zqCOk~9TLLt*AMI_AV$oG!(Y?QI*tthCHD)*@LFSZ8~EV2!|oK&NjI|va0W^OqB^vN>0WPhkpadVHwgE zudH|VqMaT7fH8p3I&1#kNSZ-QKCBh@e((niMFszNI|q>1lEripVjg@_fUC0~ULq7C=Z+VxQm${eOm-&}X$~#P%w!3SQIAjQdkW-EXg%Bc)XY0O8zf*?P zw+6K^R7$`lFN?xB!7LIB(tsOM!+&_?PBE0*dkz=KQ@~78yn=|}77|)Yq?vMnQo))6 zz(}r)c8o*z8IL0oZT+BDmm`WljwF-x-frP z#yohG>cPUOzrJ+M_;PPI4VtKU8rfktl2xuE*Bem%Bs+rQG+WWxAeQT{_*6se@h&yU z0(*{JVD6=l|qAGwIR|AMOEu)qbkD<&h)dv9-TJ#pCr;rhJrIF zB`wQ;DmEOx5B8Z$rzloGkNdj(gRJbebyp)Ul}txCXoqsYzA0>|Dk-{vQ2$dv6$Gx0 zbWN;V;a4p8TIN!}t|?EIZ>?7UYGBfrj+af?XU_LPYOt-5&a-||u|^fZZL#??jc}EH zJ3I|SL}ddS3bcLpU6u2`@AvjyUrTGxoZEZM>GZ6dC6K3iYKuAL6*1|vsTU4xN`Y$! zwNWAAcN`ODo{{bLJxsaEecfoOu)+O}3oO&D4zgp|Y4IIKOJ8B_h*bEhe#Q7ZztpbQj^WZ_CS> z;&Xf=V4Qp<=W7erhG=eg!w=QXRks!TJKp$o$2i-!R&^^BGU? z!PgKCb@P;~t&LHT0iwAVWvN7AkhChrY2J)NSY2C=gZHFfLY?w_fvpqd8#IK?46AIqcjeD>Gosz+!eM798opdl-tNU|P&o56G%V36Tmavf6U?xZOj?LyxfAKM^Hd z1%nt$s6@~9BPPLNLzB?hIED2YTz6eO2_$CLw z?SJ;&rEjuVBu3el+QxNi=hoaBv5rRplLWXi!MJ$-gOGlE$FRIW&;UC#c{0F<0^m)M?~kfZkgBfgFTT# zkjJKE7*eS7uD-qkQd}A;=Jt+9ACEvsDF?6$vf?!T7usYv1lS^y{Tw?wD1NU0ypb|k zWPbZ(lwl=D$o-oV`xUec5-U-$@U!?O-`5>qhIi#bi#O{Z2e3uQo{yr9$dn=s_ zEfjZ~ljL6Jo@0?e@w9`gWe}{;Ohf@v<)Rgs0T@ZL@Ss6ipv@?c{Sz~7ykm}7x^Emy z6F{0Ba-W?na_sKXXI6{!w`bH5?7u}1jr8_eD#ww~G8oup&aMXvo|_ZzwGNkQhE>@` z>zYM*@e@L!qU#<~f)lISkFv331<6^O*$0JiCuhSpGBvH5eseCdqW0NKI5_xAD?q~Y>Re()vRzfY@iTjqd2QWv`mZ_4+CyL3 z?fYQ?(P<}(*HaMvRr~BdXJgheAM(`S%M-=79m~Bg^4elCQPJiKmh8``PIW584L6WXWHCZF@^~7dt=XWzd4A-Dpn_YY$Kc+`~fF&74s{NK%Vv{ZIsNy%*j}O%KjF@pak~pO4>3 znZ-INi#|o}C7*OBau&Ct*mt7l^*ogLeC#=+>9wMQATp)b)66I~bz6MhXpM^Drphr( zS{#;Lt4S{{hrkG~R%v>P1ig3)>;bH%qnWkxE|2ACLh8a*#7D(Tj@!kPV_ub%w->&# z&m@FI-+(#dMr;|>zsyMMV3${C=@Q!io(~L`(`IAHazL#7Ge_>$0935^7&1po)|6`m))Vka+%#?b|9GM(LF9|T#^er$Q zi`ER?@`#8+F3sWoNNssj#6`k+BM}`7OZyX+wwNnW(?a?;@-`7uj^CXHv=+9nh2UJw zcO48%L{au`PE2u7`s4N7RwNr?=zvtb9s&$4THiYV*d z5ViB6zuiQX0)m{XFi^1<5NhBm$^M)27%tM*a;smH*}?#E_nD5_*k|IPH>EJZ@#Xo+xNNpPO8bYQkftnndaa>q4&-JA*0zB1mr55nOlU zwm_%B2*$m%OypUZ3X;U%rJ!-&p0T?{Dm55WBkaKEb>p?r`wPDv!OiuX$jIQTflo?5 zV?s~%&!t}NS7^Vrjx4|_WOx?gqY97cPX)MD=6e{M{UcH-=|={(+b3?1POcM14`SP2F7co^ zlM9ERT%~rFIW%o3>+=!l$WMJZjM1n4p4qeE)XcH}guCI$a;*Ui;kW@R7h5amuISS4 z4n^!J5d4Yw(5^hf{qZxPn}|PNdtMKc2HlOU!hs>ov?Q=!nx|L7YhMN1Voi1@W z*adzhDg_?MJavRm5~@Yf{TxQdO5t2+7qvfy%xx{$uBtE36|tG(-}up*Z3K6td8iqo zqa0wFji~{VvTgCb{$8Z5^9lWwcV}tDowVMNvQ?35-mZ@t*WRM~kntc-K(UcqxN*M)dCQI4aBFkArVolV=BCT2_*o1fwyUy?KE(v_*rakYV!SJw z+$TV5h2XjOQ)}odPrl23 z#N&^&GOc64vtVOan>iKFsfTWxVAjiW3p`2>Y$=g+_W@6p*~VsK-}FBK2Awq0)~zM) zk>Sedt_A$|vQYbkMxlsb83jKZW|%*FX*ZeQsoBt_)EgA?Bka{0+h-wUwjs#)LU%n$| z2X?pE{p=;r_3T`wT;9D!^7hbDMsz~?Dv?dEX}pA^_Te31*g1dN z=Xbzu6z*z(UY3xOv6I^?xWxVBE|=ks(NQpkfKn06;Pa*dOq6Kcp{R?~bQzK4eZv zS0;HD>rN_0X2y!KHq7n1a#M78#*c0wU&8oFI94<5>5@8$9Z_`p;gy$J;q7+sD`zXo zXAwtK`4cS)X96o0mG6Y(kPjzN^b0>z>nkU}AGQ`(Dn#K1DE`)3z!1jzn%VJ}0g^o$ zM(Ti!6d(h_2(R7P)01f#{&6qN{5e2ol<;-DU567C60O#!fiTUP*`%Se*Pi6C&(kQ> zz>w8ACa9~rw-x=VCxX|wUd6E1vUVJ|`hNheKvKWjRP-Z_MiN7TF==-qJu3~hM$Ih3 zvTkBDyqd^00NW{yt0bDDW}Cv{+%%1@r{t!cR!Ae_`SyB$q&uq+^@{WrxzQ?4k!)tK zG?*2}*VlAoi06&#*rEuKsgA-=9GG*|lUKOXm*`K?K=N%DP4tv;$2F4r+G0z${G;S- zT~f5mV=|XR2P3m_Wp5dJ>1VR32t;$L*^N<;!!O*O^xtS$TpAeU-J- zydvqeLMU^8T@qH_VI~SVZf;na3JvcR<}B7 z9`>5&J6Q)C8IF&4!`s^r55KScA$iMBnm&Ggh#ydYld>+bMX8{1`r{wdr-%0=)*{jI znev#lZL_sR%WdOT$WIiE@>s12HWX(qE&h);WWH`Oc+YDJmt>hO--o~$SHv{Wn5Ew| z%T?%?nW09Zee<$QOvy-}dlM7GtIBsx(JE7Y9iiO*DjPD^<`m~aKmAlgCh*E}VEcYU zCe4n2+UQ?p$ejpNNSAa&9~(6prQJyE&oXNCT4}3)kx`>}3cI9#&!~4L_X-A%q?K{- ze`(c`Rhmr^xa9#2fW)O1s4y2!V(HJEdWz4RM@ihoCvb zjN1zQFZzs!H~;?p=}#a3t`&p*Cr)Ke<+M+K2S0tyuYq_vlQ4ZL@18f=qn)%0tY^qR zfEVzFX9#2)`8Yiwm(2*q^b^0tVNlNVruOjBMmRJcC2K`7i*;WQi@migAqwyfTjWiC@ z1vVcGc3hW>`$zP4>9UXdUI4_tcSQ5;@%S*4VFBK z8@mx9^E`=L<*kcb1#64JI*DmMq+FB|*q!^XheF3t9Oj(UBUF@ROf_SsVSdYLCQw%I zltRuq-Hetm->iIti^Y_sTwKZhDAcy@aURJo!C3f49-?A*X?opF6zI3Fb(M?RJ^4pBXB6=QL0swuIbC6@_SGmf<_*Xvd-j{ z#jvU7J%`$lUNLDaNxrn=0iW};O85B|%aCw!_URlgdS13JMQ;Qv0^`Il^fTE2wM!mCSS{CCkZwTBrpjJYRCF zIBI5crYQQBU2BcZb)-L%z@mfKJZ=`4;7(uwpR7A%D?bq&ghFb4JS-HD?N_d4@+_n7 zP9QCC3rx~!O!I3=T&fS?8~ZL*9Yx?_XM*D3#2& z(k^1lV<%ZWYC80~m7}eHmw0qAFC-xc4s)4b`?qo=<;p4~v+mh)lSEHT@v+AN+$b*d zMk%~<1dqPU@uy*xbij6%-gT8zZw*cwGnZU9YMB+icA38u(aSvX*5Pj?dGVkiF6!pF$>gMh1-1XxY!jyS#TJ7jKDm&c*+g{{NAGT=Y@O?8mOoZq1n8 zMhF;WQp^wZ(_rRe%lOysr&ZPR`PeXl9cL{%sM(JM{j8oD7qtA<|Dv9maloYp^%mX) z)P(xOeX)3$Ft7UF#^K4fSe|*NEmmfBZLzY-25V>s=a6Ui=evzUaXcV@$FJ0t2OW*y z!ke_W9&t{$A)aM_^}F{AAjEbD48pC^#NDZ%g5m^s1a^0W1F|`Q)mwmNEAAXDA;iws z0H5NMH(h>Tgj=Fs^wjj!#YqQpirGa5G4{TnS+8<9spY!f;?~i8JjK<9#&hCyW|^x+ z(<@2oy_SmdMBg^g?CTQOxRCfN5vpb~tKvT4HC@DYJ&oOe>2_K1em+?;w7gQ^oh8`s z&dOKGW-~Ml9F>SIdr@X-fq`8k%ceo8CW94C^+Y(d3^iww6>I2nOW$?9hCSDyv|HYj zIJ5#CQzURBV85EZYYDNkLH6}aBqSa{4)R~>;kqQ6?Z{h1m|OXNJbag%0;$ZuE}HSK zt(-Mw-iptz;Mvu%3l{ZkbH$Xv0EJ-x?)?FGh^)ZORfQF!LX-S z-Pe-!bSt*+_wxo|SvXqBLgR6f2wHIhzLKDL1oS5~leGB1bo_{ZQ>u$noYtJ*jS0v# znqPB&xSdoVr$~BWs!`1yjqlUX3@Zj_amAkFA&lWm4Wj;j- z&C0Zm-BQBJ*S3q=xaT)WqJ-WoEv(zP63TRV5K+Dr|&rVU|2L ze8urJDtryE_B(aOQU9Dy&(rB+(Wh7VhwtdL%#u2hsIZ6#8~ zXzawyZ4#w5fGQA($-K2;H8QCpDYZ1xQWH)^Gf)$~kL@ec4}XFteI%RIO#8{Aax4Uk z6j`N7t@ZQgZ+X}k9Q2`iPt)88<(a^lZnQx(s^eS{P2!R+LABhSdei>Bzf+nHX`T0C z@9T*&ZOV3k4U-}ZAE$=JDC$j>_2W_X;37Hg4ycEiT2Kpjj4M~vvVveq0#InuRV^(} z^zpdijf10;mw)$8ui_3Gl};F;9%Q514$p<2G9w2(9=8rxX;31sMqatz9%Tiy*n1eY zi+dCQ^&Hxwp(G$@?n2I#w8+^^_u&-N3P$AUOUz*N;h*$ohjW#%DJOK4@sQ_vJ+!N+ zwL}MAjL|`AIgHISC=oOMD?07)1lgTJR|>wsu4O1=0)N^MQxjqdJdt#zO%&vE<3!Mn zB#eEZd-!_rMquRxacLSz#s}SiEr2k5bGHLDr1&j9DR`S^v1N>C;-J*`v8NpM-aH}N zMN(5^29h>Yuj_BisI|2QH?DP+sab2mmsd=9JW`6a?nP@s&(fRRGq#$f73tT(Ym#2} zRtYq&?0*EFE#chwqsHblg&|7J;}68ynf`r#dQP6L;oFkdN?+MUz-jjzJ)z2sM7+?3 z3S2M^(CPEtzuxB|a(M`%AtCx9&+j*>hyYbgKjiPIr)@$~FzNfXe)r2ZA&Cc<)fb5) z5ygV+hkT(S7?RO9xBhCC zcWV$l!?K1}*g)XwwH(=~X32+bnGH2Z7WG#tvQ8p?rT}~K$)^^s<_PtshNv|qyqa$X>(HysP(wNG%q)@~bMc^Y z!Artc4d7NaN1=Qi58IkBp~Qm_V?g43c{`IrL0rBiFCo znCs7Dj^y8*81rvV9?bVI@v52}`~m%}K@5udi}RouEmIYX~mn=@Lty6%YQL; z({3y4uWg(4*KW*YH_w-|{<+8Z$odOJY_8MBwKD#SIo$NB&-OczOWFPf9l4{~e#0a> zEp>%dzeJ90J5!hD*Y?shzgJzFpKh`2Whs7T5h80%Zt!epm2+u1K;=h9DIWCytF+Dqj zG-<&M-%UN2?TMQCk>+awL4R)1+eb&D)E*sq+_B*75=D(#k=`@q)m$sR6oEgXQiLgx z1MZH?Ca)pejPG#ete}mYL$oX@oPr=S{fnCDT3Ssg9}`H!j6;&5^hQ?_@{2?7HVg{z ziyTFPJ?G?jlO|umt>lUcWe;*Ixy99$Gi_bPl_WP}+E}(E_%0DiaevRi&z3ZpSY2${%fRYunoK|Ap2_sR_al}KQ+g~X@x>cHWcjpRaD$LtU_~bv zxj>qSKkVOSWrqj#HX}QQ`yTi9trSs`^sjMy08D!~*Ft;aoTYy|2S;NcDu&23ODtIW zn5Lf~RFSMAI%TnLe}5!1#jJ;>3Wp)BW?*L22c*9c4)@1j?@v10mrcpTJb9UVI?Ib+ z*z!M10pLO`h8Z5g|F_rJ_<&?U)o+yHajxI1^GdrJbdrD!vz94sis-Dli|%qfBH%+Ey%3N&Vbfk{zqJ%4F#X~0xlJ6XqcQ02aetg$K;dC zo_2OMTWM_2Pv1_!a1OSS9<%$=U-kXVtrD{&mZTv{@eG@m;b!* zMvPU?r;B$%=}BMy`Nzxr18ApwNEc&N(s23nUzgus{@SlvX?5>KY*A;iP2M}#h|PHA zT)cR1l?|baZ59*c4Z6J1{BMH1A(uA`Su`%tcY|Zr(-{5c=I8R*lm#)}PzXadH&t1G zC19d5DY7bIR!4Y6j%MmWT*60H6!Q>}_nA*{#8a8gGZXEA4WaygEpuj`Nn$JROy(}6 z&~x_)iOr^j`+A%0kQo_^$r_i%WP3*PQz)do6=!GRAR%U`zQ40L-*MyaHV{P}F}NCU zrEc-px^13Go8u=eDJc{mLvzSGwlUj(gLOXo{O;3aE`QDzGW_Llziq06jYa3Vp8ejD zC>^N;Jj=71UymFvW&1RV6*>v!Wm#Au0Yfr$Lg}+X6*+qx)4DebRO*-P;?O8eOe!VQ zZRY*MS7qC5TMlLk-4@-jUhc#w=RkoAPr|4y3KjCUAMSCem_@ih23Icoqj#`>z|~B8 zjtk}$qeZcpSS%rrTJkDLbxyG^L$>P|@G2f0`I%~GAGlf(fv>+du!gIigf;I}Ot#;} z*M+=~VUU!LJ<($n$8haptSnxM6<@b~DiWZ`Zc>0{laZb;E-nR`ZKXc73$q)-Uzv=y z8Q>UlveFC!KhdusrpHhnei~GNbCl#=zS*gA=7khj!G!m}#oZ)~oar<>Cje#XS#eynV4U+@TYh36hpqm2-c+ABYc4d=V}J{ z(P1xz-Xr}PP}y^zp}&R_>P#<%b1AJojvH6~=$tN-Q6WQQN8v%b^ouM@q^al@`iRI8 z4I1CllpC;R$QZsx(qo;jBXG@BDC+rRtxr*Tt)HRwhEhhwtc|#Tpk+bN$612WUfI;| z4=tfIa2iV}Bd06@%vnn)YpyH-N2?`3Eh=0T-i$Qd069SKYMW=s1i$5jcU!Q8qA(-R z2gT|Mb7x4F{BvG$D!g&b3G})RkY;K#S+W3|vlG8Wwif4beK3iz5vFj$OK{e7t^4V* zv2>Sc){!p}MauMlVe<30?;=XR%Xu}^r>C+`{6HtTrv?*v{m{qTr5utpY6*Vp^IMD# zg6m0C8Mh_tTGo=5i2IXvLGyO)g5`4KEOMpg2#TX9Tkp!6m%O6b)l#{z$MqP9Rab+t zwGy~4ZL38_gZgBt5@Huk$#PF1ru8Y~pLqgewv-C`*+GtfX>XK^dis4HOZVlTb3@#( zD9&hUppTmd&gPvoQ=p|wTwfM{DY*|JrU5Vfs#2++dQXvB<81Xd&yJ!^0-^~w+nMnN zA8WQHY=x-oWLbiboh%EfG*Kdwqyn!Y^6q&=+pA%eANrIF$|UwG#@+0vMpoP_YaVy9 zd&H3b&KjD3WQE;$Y1f&NcOK*oL$8+caT19w97Tr=hM2AP_R(8r2lj}K{(E^<5&;m!!paso5i5B3r zjKWN%L}>h0`%XtWgtJ4$sOwaF7vB!-9alVK?}F2RupLoNQZa!%wvfJH?)C+VH+_Gu zt4$wJrBv*Qr@i#p54S6=@V{DVSq%!nKLZ&WN+&&^atMP5*X46PymmAm%Na-+3iqWK z4pdGtdd5n65qiKd;VfX_%)JIRt>r|j2+P5apmw8RjNfExd27o$g9iYe*_pnPUq=p- zX%n=6C^-Z#$FMa7in%qNbkmaNfPW?x*WXu;b!*(MCQZKOOD1CL))h-iXs1h0f;fd; z!4WrJE%Ra97INdfsXedUa7Pn^%4YrqcWfzfaGrN%YuX-!`~7$;v!?MK#s9ZfW_Pe7 zj)yoIrh~TTNGiw!r@A_y%!6p>oJ;kx^D4)GVfm+8P(x|gf*zUXnY>SkJ@sNu$@kWj zP9H{;XHT`z(x`EP&vS@RXWB&c%#l^4aMWJIb-E;mk2CRCc}%%whsh1?@XgQBWutv& zTvFbq<^cRoiv>_RJ)_y%QrfrJyBfhI1-aLdA!Vle?PL1kT%Ue8e>VLn&z>=4TyvFw zG&pId804YMDbsx``3FYhco7n-$K zA;xDIdP8a7(C_Nsp`qWAV`t+I&i4!zw2rn%>oRf*tt0Fd<)JIeZEP;V;ImNaoo(UK z?2Q&)p19G%qv!Uri^9>Vay6wTgC3fH_ypNVETi$D*(Zz9aq%tl-`ddAhYh_jyqbDn zLvO29uw2cFJF!gvEXUO`DI1@0*`uX|5hsY7+aR)Vy691zxVa1x?mCX_sG@g9c@r?o z257yCrC&R*N!5=}=kPHdUFKTWN^i@>ta=$Nu8zQKsPcnrUU79p80pvhvR7e$ul2TL z4NMyA9>!OGSQLTL*`ebz`lLj%cLFP=CS;bW-{$ zP9O=jIdXh(h{onwOK|JLkh$x^&@MRQm7N`;-}b|!WIgC4<1@a^Uz+88|y| zin1%2_JW(`fZydY>^eQiyX~a8sCzG&)o$b&Y5cGPGJM(gAcWFREDTeA+}|gP?*+%{DWf(c(lw|&>xm~na~9HSLVAk# zb-!6=ICj$Itb?#knTQX37ci#1V@PNPjP;yS%m_I16;lyomi#3rUr8CZJl^CZ2W~C4 zwqK$>x|90h`6DM!L6~andmtZGp9CQYY90~REm_)0rtBJ(LCN7M9pZ}XD{XmO zB`|RLL^b46UD!t$^6x}RWmM%XBieq~WLL*!OKY^3Un4v2IbE*#-j+=iOZQx2&FB1B z^Tm;?YQ8vgw&qK;W-LuKa^+Qc2TRk_<>-ww+*l8$HB0q>pmS|KSY#;mAdOHQ^o3Ka zC(o~`%#u72r9$lsk0{5vd|4~Uv?>|jTusN2nR19SrHwOqH=fIc!Lz^2;ZQ234dw(P z->khn-R5(eEa=Xk8R`atSIqO;^WsgZAQI= zHq3yX{{FEEKY-B8SU*Y0ynyNFKhyWkA0ySF&B@!2ZL~5sCX~Rfl?~Gxw`Y*9gwETv z*~NXzMIXbb`VsNijeM)9k%$`QnWqq6;<0)-bxs;}Q&lJi!2$T!U zT>lV*0Frp##k;9B< z7Y3Na7&yxGnS8tAih-2Bgl`{Y{dnI#2=qqZE?r2J{gsftXwZ;w=@V*?DSm@9YTKYq z(F^60mn`eta|-1bSmM5GMT5E8l?Ni^j#A55*b?KQM`JJV(TT z0y*x!pWUGWx&&WzZ?jNOD3t}&~t23G9@4vnFqfHCTr#3xfc2 zp~hpe?$oeg?MO4;(SrX2-F{(c3T1AWw7@qJ0yj68ftxQQ4lyt|IWJ6QZfA68ATl|Z zQ8yYVmyg>&1%I~@efO`pKwr`ab2*$3a*7~8KI$}pgBo@Uv^De~E89e=BN@^@|x)!bd)JHz43IWxSZT&+!cBK-A*6yQ*DT{d*GoBR77a|_uZC2W_F54;kq(%Awtf0=e zHlj&qTN{;0o6q0cWR(38OmIlTlZAJTT39JMS-~ZK#khjCcRYSFruk-!W(`-hxJRsu zi~(A^2;Z4WHwu%3_HbY;2pq@ULM&6I9%A9UT7PC!i%ga0$rhcea(4`d)hZGu5F|{y zN@){fW*&(kY_nTb5XGEBm(~ex?DsQbn|r7?d}2^n%RJ$(u9k6II3z@!n$Ir8!u3gq z2u~E6pMX_k>2qM8T&jdND00hvzCx2@5?w5j3jH<-MLGBT`rX9cQ4*iUx^9V2_O879 zZht%fZVpzb%RMN)^eM)8*fpt2{OI$F^epoEF-UEsVClJlm4wJ$Ry-J4*k>Q9Ogc|L zGJ$M%kVg8}Igb?IkW+c|@yDxg{_|$N`t;)BaSYGL zgMUupw=KArIR7ppHXzqwp}F?~b= zQ%d~HaCvF9{_zw1_pS~5)na-R-KZ@kX?H|RIztZBwg9Ar=s9`x&NNn^j>n&E&Mz-u z&)=SZ75{(q{buv#`cJFXcjue$-@Zy`mp`t4c>Cj<$KS4hT77-G`TnnOHeX$A)_+(3 zIz3ybA6~Csy}o?4`iWA>iB{KFXZr^I;i=TePa9!okLIa;@iOo-{PukH_ka8|mOeEE zNX05%ynX%p_BzGgVA^DBe@_&$MNM%So zr0#~3qmrta_heE*a#aBr$t?`ef(NdXwpoWQ-H zAy@@`68DsS#|ZY4Ypkzk7FGi(9dAP^ErpxGMv0N%T#@%J>K9E^ca0!e09;_N2tgpY zyV>zp0Kb!=dI9Grhj!(fDt{1M*wfzSfEO@63%FmvCa7$VH-fCBzu{j40 zcB}{GJbp^*w`hO=j01o>D)E9m$8w>rqtuZ11<{YP=682)LB>aIdw=8HLOCJUAJVyA z9zO-J{envUmeCM<`&iU>Igf?XfkROiC9d_Lp+F)g`M+UO)Y3al8g0sbm^AvYTPAHf zIB;-k8=Tq(r?$bVK7RG_tKa+@o!8M!%Gv-AXm=`g&;%YQ^n0kNC}p9Yj6$fPA!Pz| z=fY0r3lJ$<@?>Z?On-w&vBDrR2_r!BP_$!2&5Eom=oV2XqXDdzmjG^sQXNK=tSQ$0 z*NlkvA=g~cF=hlFy2-o_*zX}|7@h1&%ahMF<}4qZ`F;SUIKz=5mtS8q4# z>yB^e6KF4U96qNgMk2ay=A`Jn&;~x>oSYuxL+>{&G_xpYP=E0uK1-B2#F!pWLa0XN z9-ZCw`p2KvSLyQVyW{*Eooyu0s63(=6ni*710bWzl;fsF;CPAMi<=IbP=km*;Izmw zEw1lUe(d@k&^^C9Y}-A9_haAcfT7B$Zo#+*3}yHa^mo8W%7JbEyH^Ou6a}QaMFH_4 zMM0zbi=u$qZGTY^`EKvQf-kvV3Q`bOt=eNiJo{R5IY`hQZauhk=YhA27T0x}c&eSSzl zuE8_)Sf25g@||pqUQ-`58*A`P)8nS)mf}6jV9$(FU*zFtMJ$*WA=7@rpCrH0GT$9B z_|T&mIAo+yNsSK~*`W&1e!x%yf@k(ahPoy!$?wdu?@gFdIyG90OGZU%qW8rAgxafDGhC9zS)-OH>#h zY#JN8AobYjW%OV14&5oLst>fn0GV>cjKbNa;XQkXzvW$ zvIi0=n;$Z?dN1lfU^BIP(y3^MS6r01$lHt9G|%~7ySp5#-mH)(WUVq8yRFHLx&6?>C>jRwa(QIH%g% zUaU^p(|Q-OLbZ3^LM^+=ayEbpYJd>c#KBAockHo&TUBos+vr;3=vHov*}!H!ItyqK zJ$`>RTxj2G@nV9?zt$>^NZfci8&H47PDJb;YrKw@mY`#I52C_|s&RA!WWsGhFMl96 z;o|=8wjez?q9gCAgsqyI*QV|Pg*jJU%!q;ll>BxnqD;?w-pV5x3Y(O_5zIQFqPkV8o zQ#R11EocKOlG4gZO+tEP--T)iHWV}s;3{M%pgJ!{-3_2v5tx|)Q9i|~rhm43aLCX_ zf>T6MXQPS$jF!bLsBk>W(``I9*s<>=yfK<4AxEFyw7}HcW$0~z{^nkm?(Ps-Zb?-B zr(eTV*=-4GxnE0A@0@asv%%X!TSwupqj1+zhU+NxZQNnw4jXsaDD`cW`Zh{^8>POD zQs0IS^W*oQw&4`VI-(=LNq=l>Il1pS3&$P^uj-1pYL1d{xtO+K{5a2zd_rL}nJIdY zJ)08(YAi$<;1Y*B0M5&$wxIyxsLB!Tj&?3iHh|rBj6fCal_*jhdDFrt%h`YuNN8j? zir!SpZhCV@{e>bC4T3{GqlRD1gueB6#|v?YV0R^$+*Qf@hM=~fya#T=go)Tq*f>$MAiy%K)u~i8Do)l_;m5>=>+0VAL2;l~{Fn!kjPq)k&$$(*P~{NyuI5$| z#!`C9A)@QhwhJ(WFUb@Lvl0kDTm{g=-t~{Gv$L}?$FYTx>k-gmKaGDnw0usj7k#zq zH`Ep^&nJU#B^D@^#9Sn5o&*7j)o@E-%9cs#F|HFWuf{oYA+EMtZ*4;5m@IZE<(74t z>_wimVLWn~u&B%O#TgAmT3V+mW38sUb{yg=zWU9%l{}AEC}x!`c3taC_#KIIf!BU=Btgu!W#g};3rN>4Al{}wrgXo)p(`uoSuf1w02ZQKOF zoKVxxf2QxdKgM1Y*yBCuoe)v3HDVu8&B)S(nj-3|-s#Z12ugp_1bnLhLY{Rs-NEgF|nWWGH|Myg@Rb zjI|{<)o93zF@>WTQ|LB|vDC5=W9V`~A~XA^vmlF>3WFyrrG5y{C}%>5=lon)ZJ|le z%=*p?rohtBb5ehL4hH_=Z43LVUg@kfEE141#Y)yLsYb{n6cM?`$K(bRRU{W#M~VO* zE8i|zvv6%IIP1jaOJz|a#G7nQ=q27S{p6`#Cv=L#q3W%=2&hIc6h&kk#b8Ryxe?4F zqh1te@-`}r;?-fuzs%pY*FzI|T&R&l75Rugj&&%HZqA>y*KvH|i8=9IZp|kl-iX=k!v6W-uH!k;1NHw}}*LHf*#O*Kllj_k`>#bPN*uSXD1D#GV{T7juPm(72+?G#!)l`{R9?x0)1`HlX2=@tqH zlcMUDP0RKctV5_);J!%CfT9{VI(bgcNDtFuSihQ_0gVjA=a4gluOBaG28Z4#XF!oC zGWW~-lcS=H1t$l8g357vR5{LURXNTy`zmGULpGWq_Jz%kzN!&wtj&q@VyQg=n1@5R z;O~EeE2AfiQM`8Q5qrz09*r+sw3ci3GS-v~NDTYcndvs1riiD)`@^|XGaq$>q&{~n zSC~E{)kJ65-7yUVFEo^=*pR!j_|f2+_ce;*aG6-&O+$bnjcBgX5W-mo@}?Rhy`T8L zWL$Q_HmYgnbN-#goG=ZKY&ve~{Jqn8i_m|98Fep>Ahcy1M9Wqc&Wo^o!+FbKe8YLm z@Wd~5-Xgp{fzLtwgRdV?{DVVpBz{4Yg|g)OWPa_ur8g89J%qVqbg}uzFa2JB`@@v+ zZF+Std}N+;ry-ZTtCqcySZbIj*i_*+0J7AXmPK>#W%2G3{@veqeV$8u1yvck)sq^V zJ5be4w&MlkR`tHW;k9<45u&O80Zn5#7?-iYHxvRnFqd&^4HK7O6fP*2kmorwf00Kd z#Y1ZJ^lj49^J??5`elc9a>^4pGrfGBKwfD13t9%5CI_GxVS4#K{rRZ1VR<(4SgjG| zaq`{EC#@e4yvzVD53C=Yg~xfW+15Eod6fxub@_y%!OKkNosRNE8*JmV{_ExUl`hb= z3LL-2kMY-UFROo7Z6gL1ahRB#e*z8D-``j9g#}XV!eopJV5cAdOkY=jj8dzv;WL@d zgP2V-6D`bUSP}V&85KI$%qAuFkbk;<(l#Lf-By({dHoV!9{}C3Qlt6FSp5K5qBCZ z?Oww&8&*o0?vCF2g#ZA`jMM!c+ z8-?VGDlL>%HajZnv{bOnkymt9T}!t&S$>^%N1O7t1Osv1H$5$Pl|!j%p|yeH;G{od z+N`mSxhBWWcxq@a&rH@{LVrUm0gYZx01|taPY&AT^KtOasWVc-iGo#H5^?cuwGdS_ zycgvoMUk`0L6Z<8u^p*Rj!MG(+tmEf9mV81JMR}@jOujU7J)6F=;vv-3igmUvfR+q zuDM;(=tIq;htgd9-duGiKN5Q7EZvD8$&%6rUX?}8GIsLS6|`xLRudqY2Y{z&Q<5sP z9ap?zw!errMVCJ6ITwG?Eg2_Zcm$I;)zZkRmS4-MdFE?4HEG%7)U>{FYL-^~m-W|` zkyRT*K$Xcq6oMp&*QvwBa^2c5||6U%}JXT1mG4o;&l= zr{)3Bh185}BuAOI5BB4DcWbL%-Rf9!QE zKbpUE7u@cDcoBez$`W5uV4!4q9o$U|jP2r%yIp4&5h*vooEOrVuFFmzc#aqA1Lj2? z@isMtabAHjcd8+bw+chMn^~IkY+Igp|1BXX{mp>jM6pnB%!d^pt&x{LPl?1&Q7sHu z-@jTI09{xu7&H>yaHFU`>hK`N1FPdvmm=&rfq&XgahHn;7Y^b3NZbV|MUSOV!CeE^ z_vfww(1qLuQgF&4y&!^*I@gI&?I^haPuhGVHm7!XUlOuSQt?B1&lqv)q5Kn~z>;?D70e-d{$Y5{kN(E0WHw_$s!3Q)%4Gg zRd`?&3QK+h5MG(-=fBgp)t{r(qH8!uvpL0Plhz`3W&wPc@x66E{G(cfkRQ>z;eHvPSzJ8gHr_(GK>q^5&V;e z@gQS1>^h`;52;Pt+?JnVc+V!sA#8%jO%#`hvt-euQCFM=B(yU%>Vhg2qKDQqIBbCg zur_MVF&5w&U++S{ZG#HXIS2;j!)esX&{MV{W{OG_mphfDBokYrz`DM z3imV&(Y)jyn5~~<0cGh~A}RLL=?G?PWMOWx8A0|`j5m-aD(C)g6Jr&(S=zo}*Z{0s z=`JEIQm~A0nTsA3IQLsJUwt{u-ojn-K{ThFUpoS}&$tPEiYnSXN7`M`6<%%Mp!t6dpD-I z1LGPG0!e=e#vQP}KjRL7u4G(89477_(R|d|&I>XJnj!^jT})XP``B_8iN>BMNi@ki zMWU%kA<=Z_7sw-j={msKQVC|+QCdqe@qIW&qDfW>Dcl`~6y{>b#B!xtaF^+J z9+w^Drv#w{?=l%13xYIM+Nu^SR60-3T3nS_&>Lmfh4hOq4)XHWOV&&aQ?|6UWA|;c z;W~M4^gx+fm`54W*##X+Z*x?o_^ByT))wQ$rZGlO?T_MrJMc}Fwd*9idGTtat0n8~ z(?=yE#u(0oZ%IZB@C;UX*JMQIB3y>|Q!>I`_3pYP#E>w?4M4jjB3uA6d4taC(p^*ex_z=m*fc5>8j{(q?$%ocn zIJzZ}k0%{}Y-o?8hE(^{m~`ZN_?*h!y;-@tw~~$pdYCKQHngxO${K7`YW8gHK!++z z!QDogkZnAWNi-udVzuiiic8}_1m$WLGtu%Uc2 zPhu1xmQnrD+45pTUc@b)qmN9l|720?gmZep`-|;=BZD@=OZpJRGGKjwVi^EkNi3i^ z*g@SXqK`V<8_xRds4bEV9FRd3bzNxvgv&zn72YO~qA$qFabl zSu4DM@polT)g)UoP1`G2QWK{HW&rpEo>agIp3+a^Nu{lj&X3=xlI`yPg>}$&#uwHR z-!I0DtVT$0KLj%lSl^!+2S8UcqXW_K;`#CW#`o1uY+Gfe%4GPK_tZ*jVS`cC@1nVu zs)W!*S6`7;gs!RAsH^ElEONvVwbsqcXah4B<0zY>52PTjDm0i27-&56BK$u?r#Ew# zvA{PJ0y#66acT_{mtAWbD3??7Ig|k|x9IaZ*#dtemG@E3w4r|QFh8KuG+s+E@`LEo zc&8YuQCoGsS(k63%}jzFf}^zQl#@{CF@G@HG!n7w@l()dhxPqwvjcP?Z5l~c$ao{K zK4@?+shMprZC;Ab%TRagGV~aIrV&laS#*i>#NDLWeFbM7HUD*|RNX_tY4*%^b>w=& zjGKQ3T_(svsYydiALQPV*yIGIfba@pGXQD~3HElx7K`oRx8X@I#&9aNxaNHF8}q3z zKT6h{vx>kL?1PFx&7_1%AH-@}N-`d&6x`_YY(-vD1a^|oC<40~AC1klBsX^SDcG#T z0G2>$zxw`c)&aVZ&9vkvv~;C6pDF@7DIbT$Xh(j3&|P{_kmqh1#VpY&e3%KEw%qMrKlz_rJIsYI|0Xdmke|{7m zR_5DyB|M<+g&(CA8L4;R-uC_6m7D^SYMAY(;FJ#Q`*TVM=t52b$x%r52Ht#_SG;1} zk@QhZtE1-OV(RH0_C*$1&sc}&FRk`CaKk$Jr6f16?#x3U;CV?U#$G{7%(wn$NcB5z z9^b|0+CR$Z^ZpsqV7%aQT}KQ;JpTg^RX|afvA{PJ0y#C8AzUXDm$CRcyMINq!5n^n z`DG_rbt!_4ALFh6_Vdf`uU*{;Dq(CGtZ@P)41avv#TOckur3UUB7h#g|2cfw{o1cu zWOerhn+JkTT5C)L8(LwEAFNeEIagsj=gp09@#R|>(dA7FP0Q8)zJDFMC!ar!`*S48 z*j^%hj8_9$o#7#wwwn=k(0`$h-=i8<5jozc&CdYxoa7;=l;DBu zfX2?5FjbQ+2SSa)A#_R}FSbBl($G?dh@UI;Z>%9kk>?`5Qw=d1gbShCpuz7dc(>G$ zPU0(SNU!4$Rzr-mF`xe{YDlN+KVL&Sg>I}N+IykNXt#OswSOAYtsZL#DqY~?`hiN- z`oWcDqlV)Nj& zPf4Ae$@GHcn+4PbtrdZ)TnCR{3^{ZlQ1)2L^BrYgd4HWew3c}a3pD%eLAjUU40VZb z?0(`$ZuB=@`gg|-Kpq*!%*?Akz6n6o0w~#aJ5h_C{hHqC)zw}}6c|)5xwbw1ju{oR z7^n3uSG0ww-0B&KNRms;P%tYfYy|h(ZnYv$r99e6h=)~LI}SJ6_m-A12b%y-)Y8Zx zyqno1t$$*xO>oi}MpBdGcNQBilBLSBOWBH=$V<}-kLQ}112MJsc7VVAM3sgDh1=_xTi%vJqcrDVtkJ)qw$ck5VX)Vy4%--JzHrn zf}5c??mMBenYb-cMq0erlaGC(MPt~<&v@YjL++&$*@Nw*O`hk`Z(FyChEfs>!Gf7r zKYxRUCfS^TTwRA!V=i`G7oADwG6$IkER~XZ+a-6z&&&jLD`w4JIDvKnI54P_7Pnx%<#O6exOo9 zc{QaU==BQy$ZzKKgAb-U3c{l&JqEAbQh$(jT7gtQOt0YsXvI36h66>LppB*~+ za-1~DQuNepb~sn65!qI{nGO%65l9(HVJ{)k2*6j;2<3(K_)IP1$+CuCLaCcjy!-j6q@P=^3ctE0(s~p{C{W2 zL$|Ldk%!(sZzm7Eo{uFDo7VjS$OBN(0(}Q}05Sv^_t4)k46kvFCdlpVLVHl!hI$?t z5j$@42^;^ctkZd&P8^DHZeS*)r|0}jqPDZY;c0!U$nhMTCtioMa~;{t zNF$G27tb4+c@iS^Tsz)BF6zJd>+n-^gw;afTXIByr`Y%#==^?Tm$AS%6azRnHF!eSRIMT5n#r52_uvc&>)9ke~5vE4Pmfc zk|D^ISgm!2V0#Irp!-@Htii=l8_a-Io1U3m#YIK01}p5ysr3NaQrp!+jzgTT zM#piIEwGd~vf@}bvg$Z*WGh@D&4L7!^#~|C2~_M_0h;WqP6!5-KmkZ{Yn%X!nN?xG z#5zHBBB2>u$%#&0gK?6if0+d(1oL8M!A_}@vGB7-YI9bTQ=SZ{*{SN(S#g>sA7LP^ zVHz#C6eKo?$&6}xW5^WI6ezmH5?~cEP_cO-$Vs$$f#FGPYS9=_+whgLODQ&p*Oa+I z_$L*f27*9M+F)^+3N=_=X0mlr(N9)xSD{KyZP``mlFKAZ8$Ardf2naJtFCb32CFNY z%@){JY>fh;QBpO8HmPPw62_2&W=-uFU5%U?WLHI- zT~S=s(zJ?b1`Qj;eyH5+iZ<<}(`9p8+(_G0=p^2}1)n$EW>#%m$ac8_=1qIR=KE|b zOwb3JPYQZ6sAivye+AqO*?^+q4(qA`}LdkfAGwGg$TqsU{Hpe1bc_W zpP%6GL3Bv$3zjW{j2Ems&Frzo@99vPG3!YYYv7g=IO@acAlWC$I~_E8(R5D-1WKV4 zV#ZoTq*RhmsPO4gF@uh_qsHiArc+{1Sk9!;+e%Za9A<=tl|M)Mf9 zydHk~$3HEfdZVS--0u4B>gx2riNTpjYhYZ619gcgmx7cKmx#usKBz1aC4mB9Q9DsL ze7C+@f8QLxhgV!{;D%T5#OmhS#p&Z;KaAfWk7wh`(RAVY`g+75&nFTgZItImpN!k$ z!;>e&tDE)3@oGF7UOjt0yjgu1PiHIR)!EN042#LQ9&a1@D6NmztK0S6&Bf|=Lt*XO z539GAXWy{8fq6G3@pdfSde`^{<$Vwx ze@auj*b<$H^GP}|?-G+QwDT@;#rqz-i{X`bJSVWnG4m1foRT|#K=%9;#hFQL8Ah^W zH7^nsBs!KwqAbN*#bJSHB=tEh60Pd3+Vr@{5Z2c{GGsNd&mlur@!OH1+Nn+L)TVZ7 zQ#-Y(+EMB#chu=q-O?v3^*tCFikO=`e`7NO7A9)-lKH^cP^eyM zce(@iTJ~_dlVsJl9T`eU--!;44CRXP(ylH6#uu~hfedj(Al=m^n2Rq5R+os#02ZS< z7t-Ww;(c%-#&L{iTqt;{a%fyAfRmIN7s9D2hy*}N7Pa5h&z&w98{P&cNMe3+e-sJ82e<=t9*Ej#C0h74NvP?TpMX?IY+LG&niClT+xP*#7d zKe~4vP@3E*`A0fZtW%VAuUqneomWXK(DmIHOJ6Nf37u#GM3jCqdHdLehzrbfP7l zXh|np(utPzF(f}|t>~kBXJRMBecU^<9X5NY7YgKXXipLa^)x3_UxcIDKFCzEC!}Zh z&T{e;4~0zGqa|d&Z~^}=Y(JF&MP+-kh`_Gyp964&RAKxlDO^=q>H|Cy&vwkVpW(1C zigjEW>le{9k+11KrAs(Fn4)?oLoPIO z13rxhlkN$TxQx&7o_4QcX>g}0!mTi+%Tq;Ww}dM}GAl*LmvA-(Do#T8bZbJWwywo^bKRpD@EmlQN>sx z%M+Q1)PPhB_iT#UDB>sZiUJ2se8tgaq$iGxsb^!VW8z9&q6c~9b$sB!mn;1$qYX`@ zqkoGfME?s8*yE0VZnc~n>K)#;AM1L8+ktHtVvfhgfmMoDdP2wl+0bA|{Y07fd z*kyEsMISJZCFzD8Fwr6n`Y_8bb>w|`L_ z?M44mVmTQbx#CYb%@gKx%Don+IT#uU=3UKqfShrf3(B`FY|-QlK!GJ1p4OFS7{Tk4 zRsuMiQ19f5i}GoPtrdh3Avfah`;JLtNVcM1(__YrGT_I`$7I6lff8Seyp~puYYE6E zKvxNrw>V{LSw^;6RUNr6EAf(&i+`NS1?`3ZRVQU@rP-S7F!Ru9cQ+``ElY8RX;0At zr4rJJhCZf6aow-af_6rB!EuDCA+K2fLN>jWxlFam#8{9tiqgI@gyQ?xOwwbs|9z?Y3$TB;TrZoJ-6@NmqkM3@v zznana5-I7Rs~(P?Sh}m5{q#1s3E>#Gb!V=8qkU>ZWMd+korYqTBxfpSMXOdY44c~tQ$%AHJ>K@H+ERFJJVAq zS?z{?&zTWo;9EA;{*tQc5ED`@On&vw4x+%WMTyFNUCCzbA2oo6mIu%!n=NPQOqWz2B?uR@$t%-bcv&uG!Z?oZEiu5E)P9Jzz;ZCkfd@rL* z*?5_UR6;V~x|dO~l7G13UnuUGUUO+@7j3)B)d{c2k(pjAv|A{eW?C&>${6GKEQ$9M zMb;3HlO{G|D`>}%w?4K?kt+`=qNh+zX3<(}dYZG!c$G7e^_a4zM>5Ow=BdnbMaPt@ zld)N>c@B4w*nbQ6rKS++_QSNp;>`>! zoe9$(H?bL5LWw9>BXo$&7qD6O31C%QVayg`kWTjz&zXng=#aHvk`amk^^2Z+HQmjh zvM^~S^L~(1qs~j#<5bLWIx2GIaXy#DDl|*XVtaj`$YMb-#Rpj*+TcQVxFm0ov&z(w zO0A5P0mt4?oPTDi$!KbY?e8@0aia{XiEghmU4jFg84Oxa3OX9Mon}r0jspB|9z!6@ zx04`4LSkVf0eqwra+DgKg$rn1C;6xJu1&vmkHBsQ(lsDSPNv0e8z7Q1TsD?G980E9 zykQ~cxl9{#`ebKw77Yu-Y=bekJvW_Yu-c4$8&!F<)PD--UD8HfrFgFy(KwmqZF)Uz zSdhw^;je0`2C!Qj`IB0z%3#i*{O5AyRQKua9`;Tz149D8)j!cDS9gA`mLt*mg0wx; z;+ODQ*;=q;e4XkaoBv^-{LqBU$k7eVyXhm1jY8>60lc4HV1i{d^isUA zM+nk0Wd}WN6po>k7MQiCzEba)R2yY`3Z;j? zT901V;NNsDgRKOZllxWibkt6j;$(ZJHrn!egxu0=8hu;M-btHqCB0?L&7ibOqbFJ> z?ZwML1Lc@fgZ$2)ZaP=;U_Ffq-b_gchh9Q2ujyvKHJH@8p6x}n7Wf$_FDH2Q%+zGS zz<)LLy{%k(NAbLs3LP#}mC%|=DSP^xs+x7Yb>G`d?@1~va(llisgH_sOc zfe!~F92^~Jn9yuZ6&xW1BKyf?X(pYBYR-Tq3?a;+bF=xqnttS!=uMi)4oWk+iLl=< z+sL4SNsNY_9=`xG(?T(C2a740L$yeP4d?b|fGJoVeTot>jTTMkjQb-|yJyoJW`BdA zdpe(JnQWg=cJX}jWJO1TXd_3J0rBD$N65z-u8YtDIMzu6p=$%Q@EBV-^iFRCv9uUrUhVxaU1@G7+Y1}$%4SKcs-Tc8{LDeOvwBc>o%*i}3XJH@UZ zC~JD;VRlqiY#~yKgN#T`-sERdFIf&3x|-z<;i4QR+ zh8plI_5T8@NgEF^ta*xL0 zfOJCh47>({Z@_Cb#|FF>o=%SRSo6j38mi1%+o|lr16*K(2ZxTp4ycwTzX_Z*zlxgw zo+jW`5+*;V*~QhA!y9s}d-s~Ubsq%?6|?FIKLE1z)j3xG{{>78U6;ZBE)xVXFgZAv zacT_|m#q{!yaC;}Y85)u1_WF9b2yhl96A-3VR;x7mueh3zX9C0Djhlp2n5{3I4PGw z96A*NGM6D-CldiPmtjaLD3^yNIuUm(OzO(d6-|6cCq_=&(v3$W#a<0r@PaBhoZZ9^va!ccpcI}{6ES~~A^9B+S=OL{{% z{`LI(K^N!^Cz3KY4A!v{G!3WNG!X4MDe)Lfa>>|65Hsg8OPPH|Wl&0?m14V7s!w(m z8t-w?iskZTX!s#WmQTMtiBCOT^l5O)g6*-!*|RU`C!4<)SbjIMZP zEt=?za=fsdtU?)Cr3!hom(@bKg7@a^zNKWcG!e@{s>MO9mC z%si@A8RNy8mDq4gMl*kZzRH=BSoCoINnD#f`7&XISOx5j!{@YyE>bA4vbcbIi+ps^ zldCJg2FYmkF*5iJ>5ln(W_M%uHiXJqcLQ>+#?uEuyRfulCg=9A_ToHlY{w>#J+V$D zBIAWjbNi%kfQ4!NhNRE3at**OlYZKJRUVj}^rMK6nF4p92?~ErLcne^I|%|CCo6v^ zJzy(F(M>l@XIH<)&nZkBTG0Tdg^iPC@3$Ik@WOTr<&IFtc_jfvy_r~DnC<7rocZ=lJ|_tbJ?5DyUlar zi8M}Zbvjaec3*$7qX3G7dxO}K134qnO;0#Qp)y;K?JdQPgw0xUlk0%bgzY|}Mns}t zw3Dh4YXza@-sbr znYtR?5R?$Dx47rYr}D^8c=W$K1)=py$hBP;kmXKxZ(V;F3q!{IcC&4K?D<`Gee0Qq z8A}}}_M{>GRT7c*Dro5Dw}X5jNHm?@Nj?y)%>Cu7^2L77K3=%K`TbRgB#M(?fW4+O zEc+cf9(6t5O=!T&lJx#V2u+7|N1^E~ZxkA^sGKqTQ+joJLPp1~2Nv}R0XscHfS>45 zX|bY5dBlIJN2OHgHmSR&M`O{Xv3-H5J?%MhC(I+z3CnXnC-(T&k$fo5kEC79^I9O8 zNm*I6oxkEPz!ZF@$V|j}nTS^-Vl*nv&|4^8yN1ok**7?MKa#~U&L4YTPBPhsD-b{( zF#VW%E!K#Ue9%4pUWj1QI9ek-qK zNhld;?tGj<+{9)kuXN<(blewknOXM7a!{S)d3Poo%W^h^Ijl7v%hWxaH72iZ_j_L4 z_wz?yH+k&Tqba#t>iWtWt2>4AE`B3>?{$g*l>HFA!|e@KxmQX(bw^gfw`td>L;UsXNwu{f5)k3kM! zHoLdYZwCW|6CRb*!`t^k(FaNYDoHOb4o)dyjT+v54u3sMsV!YQxS~~A!w6~{=daIZ1-*10xBtw@X*!VNv z`lr{o&A*%Kh&BRk7%V!Wq#FMDxrrY@p|CCtT8p4y`1Ni0zWKAaTE^<`DQsR**rc_H zP1v**h<>ov2;*D{TXM{ED5A3mx|3s|V_5imn6$C^y+*ztxSiX^h}N!le~e$s#GcLU z`5TlB<=6=zl=YuqKZfqj*Dp0}+G=4#=p9kN$E(Ri?ctQra_%}|1Hy=e2k8#v3cBoK zyaVJra+`=7$v24K3ht$>tTMMGTzg?u#SvqHDl*W~6YS#?qbexq8EhJrd75y9`V`yk zCa5%euVdus@&-+g=N_}@* zQ{Pp~k&=jP)v?9$tTUp|FaEA+e>ziA(OBUfJV;Uzj8HgTBF9i)6X(3dT&R-da_Ep9lSmC@AS}4@ zAqt7o3+cnBP{}0_FP5JYHK3@Wn?;9#CHv3*xD5*k3rH1!Ufa!d_3O` z0g-kFBr!haXvX+H^89ATnB49d%d`D8mS?LiU!dAue`9%zxv+eREi$v*VRNzHkA$cxJz4kBqiwd7L={8*JmlU9Y9ryo^i z(LzHdfBNS*hwQLEu*&L2zOc$N286NrvFu)T6;T8|0~sr@Oom24bE=O?W$yFNxns7I zL~>?v?c9;6dBV9PTc1=cWxVG53AG-#Jhj%lpI{ngg)`S2ENYregz%<{S^hZo8t<8m zk)tmoPwU^%Ec5x0NtwPCZZlDnIeXHR?gRHrLmLx1qi!&N)qE zsLwxGY>}OCu-LisQIe;P67F*-UJLbsg4Ygwq26glTOH%?&)xS<6+0kTYT8=)S2dz8 zI+GKzOsWOND>*uFc-@kQ;mbtncFQ`3oFsVV(RA*&K<>$UJ}pb9r+6)nyK0&Ww9?6I zf2u&`NEJQYRMRvQZr5zE?xJNBItpCt#H_r#y^blMTxs_p9aCV1mE-E)#P{mpo~2&I z8bh0h4$(0IOM2IP@KO4uloAN~QwUgx^??f3jeMbm1w)fT-HEiTE+``mtpx4hNwq-E z4!`Als%65_qj`0TYC%2B%;UYMTDeuPR9c{>ss-{YO{$(1t#j38@g@|Tld5uTh3Wr- z6s+w1B&K|LUBSN0~Ca|xM;Zi-D{h}Dt139zM#U&9&t+uuoE z{sY(eYnNg9EE5DVFgZ1sVQ(!Xm->)E4FNWnaq|i%f8ASKZ(PR>e%G%UpfBk|<_w2J z4yOnLr64Z!Opsk??S=lB|9jzg)4fo&o#d4=KC`qSkFz)w+@Y^qw__a}}N$@?&98{`Psz)t5UrzG_ z4P@tTe-(GR_D9wds8}Zjq~_X5+^Axm)IiqeMQg|@&%72gtr=R#xuqkJnnIS;pP&@7 zmad)VkZbMgDF?7>C!uNLE}2T;Ec0Cr%r-xv1{Uf|;LEHqOLO^I&7fJez!lQA3@dT1 zeJT8AqrQ~iZL=v&L+RGRLoF0y>SPNgYv-+Ce<-yx)EbJmE(=yDjo1~#XF}YUuoQ$# zXRs1PpeRIOP)(e|J!J#s-%;zIN|2h1QwmDEdiX?)@JLDtpSPNioNPhUyzQ`pW-gty zprvnlGcbttyDbH+)Fo*Y)MjO|Rq79Sl0$_@bg~3U(6-4<$db3w8MXTzpBNx=wTa1t(9sH^6baKC9FA&0;w!Gz_gx(AuSqW*CSrnx_q z@Odr$p&1M&^YcM=zXQpkCF@JUR*h3i9eXBjMsfqWoKCyeJ-qP8 zt;N!5H?o z8o*Tzv9&aTgf6$P3 zYAlEZE+yu~$I}-9kAF6Ov;1*6eH}j0mJ7nHu~aG|u%G<-bNst1#O`%r@IdQzA$b&! zXtKzziR1|PK?*3*`1t6G8q*i!>8Gog%QMLHj~~AEpHF^StzKXJWtx6|x%%bJi+H;H zZTj`iZ?8Z7Y4LXY{$%yb-(Ro3e?40*&i`|Ax`@BNnqItGzL?$;bc-}yoS#l7tJV3- z7jIUJ3w->i?~o?br{87x4b(b%U#}Y)m$*fk$@66t&yz4VGBlEAimL6F#=YeZlW}x! z-0UzlSUl;y?=WeN$pde_!&EsUcRu14BXE6-$#!k={)#Eb?5Sj}m-=4Uf5-IP;%X(~ zOSQg!?%Ak8lOLvk{_Ec;1SkL$&fdIwb-bGcsV*Awlvs<%gnMunwOG<#4`r$m8F3$0 z#h1fByOO^n7{xY_WPiJ^lL0^yA{)>UhgNo}T=?fDG7^v(-h1 z27OsL#l`Z?`RU?fjXnI{_luuio_x7{*S$zlo@&d-c)~fpyRIS5);;cGjljAHN6%*r z=Hkx~Y(wdw>Y!{;Z9{1q6b&j5iU&2;(6NS&HMFmBe8l(8RSx;4NTkM%BsJgh2f*KuN^LqzN$qtZ@J- zN{$9+K{kzwOi{8#6mCS0#KQJ4rT}V)4oUDd>t9NW41vyK(4!s2ZB#^*kDrUtMvpXur6*<`p z-e#m@C_GIbQ?W*lvJ%}*F>LwOii*ttxD}O?x?*%kf5iwPl|2z|Ml@*Yt3IY))b+~c zqngk_q2_9Fd2d2v`S&I?TO6b00%?24z6Yxyg(55O!^#zP-}Vv!ja)Qt`>+C0qtBCv zE#|OI&P3}Ags-1o%oo|GpXnB5o>J2H%X~k}xJ8-o=RB8X-bNv}QOIo+@;1ggZH#r= z80)k#f7WSZtkcF=rwy>s#u{y`(bj9w+C1yCo$IjS2Bob^w5 zJHwgH{DctNQ4Ne$y#a9aEkX~|T{2r_AFgeLu!m4yNMV3|tMGSU;P4eOFkWuUXJlAJo)!hQ_V7x0XAc7_| zf8=Zm=Y=%+a6%M{7~Lu5&4psr7TDlj(;kT{u1BPo<`)iEK#M0nL$w;(VHEy-5obT+qG=rK=clk{UuOIJX0e?R8;hg0vdeP}qflg%4&B;&nU5m7>W zu~G)~rS_1}_r{oZhQe1dE!pibZO#MJ_IG$Th>|xH4U|bVsKG~_)Re-0?A zX+$fqo@?b=Jmfw&*OFSLFn&-c0A__tyW3ogYwWL5ZMxIKQB)s4^7IfOd2L%Mtz*ND zaRqsNmLhMxvIS|Z(Z^+5KVNDc znasBJHwjX1_io$lZ%b{@82xQ2f8meIxYS?67`7$vU0c3)+oJo8mdX~^(a7l!mT^0d zpx=3A>k7w!IqU}|`)~@HWahjNE1Kl!qoh4pvtoVOO8_Et5_Hd)=*BRJcZ~MI2PZ3WO$FwNMhRY#=@bDTfF@+4#jgUg`yhW_57W@LhW8h0ylUs3l3&- z*@TvY{3PWgLlo#4%`T&grNxx)zt3QQ=`HKl8}>O;{sV>8{{e%=k53I*_RhOkiIx~L}aInIWvU+&?HYk1}`LB{ZX=t!Y2?J_) z`#$`>l~Nmi_WYof0Q^|~?0BTzCs2-8D3c$x`(#mV$F=%U)&Qkl+LzsVRGEU~mDX7q z&O7h}Vch-k_UlGw*2`G=1rpBUU@QveD)YOSG}-lXbn2wENCKVhc1K=7XTAcj#~^=2 zo@dEXr}?<1@NXl=#!Ef?VBMa6^Yx6zH3%|(Fr)-~NYMi| z91FVu-5H zT_ZFcLH@9LA#{??sG9hL2HBGg3rb5i#=!9XE zWj50F^&4bvO?skWRMJ6RRb2O&LpsV)-qs)vsac!t7!p-BP0nc+4*79FkV1JjdnSyv z0ihkuByJ2xS=%w#FdHWa;YB+Gn;I!oV|7`5AyTYo=4R%oCl#i$a^uOihRY{J+U7jJ z&up8b%FAa|GaOo@kZkg~%DFkc2`A~vE|r%MM>-{cqvq&x&ZHHcu8qv%vLmKduHuP$ zf?tQ0qsE;Jb{4_IWv3E6^Z;Vrr{GIdM>}$(=>-5 znR*)Rpd^aLw2a0VW zi=WSb)@4`a2Ca+$-^sVe*~b-Nqy?!GoQXbQm%=D3w7XGOFJFwiU(MFLTPQw zs$fxuq>jpZmc1>v-OFl>ZPL*rtTv$(>+IOs1?%Mg?H+NeSx$64^=M6vy(SZOUTe(} zk%Pq!ZSi$=L^f!B4M%fqk;kxV=9lTDQji{h8$_nc=W9W`I@4yCL>W&OjQpBi*=G5&HoqZbP`T}(mShuALZiSPl`LtJr;2qju z1TB=ZA83D3X<^3_aEw2nh7)#~byI8O$-nu-div>o1 z9=~2C!xjE8{)z53nfcl{g=ZIJROmQRpO@=A?}T&E?|9bE8_=~ybM3rSd>>AGR*tf! z35lI}57cY*%%MOr%FKBE`6|EEPa{VW%hoZDlM9WeTRNZmSRUcsN@2cQ!t4s!ZeHLi(5UD2Y0#)+{6;j=T#|yZH%7&xBUs|o zZGZZ+-$mR3TLMr!uRnk-LD%T?s*TX(jw3ZfZq@okTP38!j`;^*jsh42W<)1~9vR}y)##M|0inHHO((vm4@wkyZz|ZX;cDT2)#%y2v-hisPJ6$a z*0+6KqTJuFRu1F+DxJAs<+pk#eu;YOS6(iPt@pEA*Aw@a|K0o5pHxfUDS^Z zp8o<1ujjazK^!_2mjXH{6PI5|DJhqyN;;N*Q&4dD>;3l!nOOgFGOqIiwU#u;H(3D%=l`d<(?E9}Myx`2fRA;IaRV;q!?vX39`JI3DPP@s?orKqCbyT@>XH==p8} z1wIY=aAW%ujP9Qm%1*7BfIthaC{t!l_WTBFYzhd}p#QFqiLy<+2RVF_iTY<sygsOAv~kyWvLt7OpBx%8n4mNbL@o z@WRGACEi~X&&U1z85GLzVUM&RKiL6i)S2Bqvu|GJe5hoMg-n+ni45D_l>o*=^xfXP z*^?1-4l|TO3KKt(&+_YfG$m>w28=FyQb6~=$0sx9k*D&jIp`3%QF5E2%k*4-N3CS- zJlEXYP5gxuu+r~AQP}xXVs)ZH&I1a}NQ1pKv~f-cC*jM1f!=v0Prtq`r$SJ|dN(~` z2)}c_5^77#H8$-#^;dlMe8`GqQ`co?A>{!Guc>7S$0lI&=%;i*a14U1(vTPlM<&mv z?3oElAFoHB*H`&wY~G%lKU>LvGM(hOu~rntlwVD9g8rKwlJw~5F>{Hn>y{HtqmAOM zDxU@^kmCMa(+Z8~`hMn&S?2>IREge&B)jNeT)d5ftwa_Q2}2HrEhnX}u{OZ5uY(~+ zd?zn;9|^O+tVKf>Sy{ogx3EjeP`U6^QC6F8GqgZY?8f-1&|-vx7GlkRXrXM&><7UM zG+q!RzK?+y$Ti60rRX9!z|9bb72tKl&?>;-h0XF!=z_}`SN&MB_H#+>5nMUWav5TZ zcS{-TPEWLY5~Iz_IooJ!1X8PtAsm`|F>he)oX}h^Y9g0FE3XB*`%27q6W&d%>5~;H z1DBZ9w@44cy_IPQn%7Hz5T2AIuRwXIy|C6SpuE)@fs9RwS_;W+7tck<_L`i#j2@@x zjJwsRg<^hp6xrjV1t3{~?$j&tuepM61jQ53c^rz1p+(?{+}${YI|9$i37-u-8-{)X z&rbuM;Jt9}TI9Kv$~yFHsN4~If>T_2%@x=asG2O^340=q=WQu}N13!VJF?q~u~v-$ zl8s=o5$uC-s&;HkZbTcL$^eOr&aGi806WUic(ge6a-ElQGaa1Ov4<=*3kHhO`Pr!1 zgRc}J=T+NMUO~RfLWrJr$42lwE0uJ@YF}XmH$crj(ijo|zNNS(O_smjp_4r(=1kvV z7SE*T1MjUPX>S>S6{#!muwqwqO1G45jEEI@0a~@EK*mc@C5UrySP{pnhn8Bz!?MqO z`T|W@D@aXv%n7BnGw1J+gC&!Q)|7LQ(KxAw-06%y18rX_nRWiW5MGYV~^Lb=?l2m^k^pfs&nun zd?65=m)qU3Q}lMFQ*?9h8;Xq!I(KUEjY3(Uad(lp-o3*XBVGr5U%IS`$AaSstzPT( zT#kF}x~pD)l%!u@8sCN8o3hcK)pe7;FbUYyfYYXivMO zSu`7GW7aUP*6oRRoPq?6x)FlkKLt^iPe=Fvnu7GG>C7;Mv4~WSd>=FnAu9~C)yzU1 zR}iv)Hy?(C-p~+!;4q|r&o?_dP@095<_-gqhVq7iNVDULfrwHz{`b-(-4!?7CsE&i zH&kyuG9WJ$XOZTVvxAh&-?HhTZ+661Td(^YRtT@R-9$sD<=4Nc1Zulm+OuP$(uz*P zPLd#JZ!kJ)DBWpv)SPnV=%}GqYo$4OLtdyp4)$nrBp8FaFF?n^l70-!|^^e|F5+WA~tK1njF( zTP))3lr0wUGHIKZy_Dj(j=F*^S0{4qol(($;c&36lR+mGmyt>+6#+Px;aEl|mu*ry zlYf`=*ZE%`e}Cc$^@68BrnEb0BN<^+@RVmT^ec_O&d-uNx>IzgM1b?-YGF#ZLdKow z;Squ~Gr=QF9?|4Qln1UXK1p_%^iV%i5CkMhd12{rSNW~1-!|Zj%KE%x# zfVHus=D9ZW zRpp`IJ7(rFx}Dvr3@3B5?2E=(CY2E9$lg`zZY=~Rz}rRn-z+-Wl;qUm;0$i@>?K! zNE0f(nbLI5gV&2tn^;F-0E@D-b* znM-I9S4So)vmqKV;r{KmQWCVPfQ zaR+i&oA76e%ZArN+@mflLpxe5hQc!{zbG6bfk{%!HT->cp-Fdo{_Qyh5d$5(nGtzO zrMaF)JeRC2f#7fL#?3Et0cT$WhJ1C#PxHi=*;cq40jEt?T1hgqyJdegaYq?Va@E7T zw~S^DtGz8C$Z9 zy~H^3B`3!5Zk)ZE7%zX1uBEVt^Pc*rw*_arsQ%OJYd7sRYs%~;h8%mzEh@95{Zv}j z&)!LMr6QLtVaRiZUdeOCG|v@gCC`m3%<^1eW_fNHUpO6S@9A=_31yvTq}K?cR;3&; zQm?r_7}CY>%B0a!mPYwPCy73xTD1O~xiM|gT+bFO=3W>bO{aem*S%&KMS0mR&q|88 zbd}{t6tUY!%f8>%3TqU}!fD?YI1Au0UQ zR^Czb=$osOTS}9lj?9bEzr~2sCt!6noHw_yf~%a0Z#iWyro=5pmN`Jp1;)VmPZv01 zuzJ&kk0TVRnE`*>(f@kY*;a%*t5A>Lb-9&f@2n%CB#~>~*OADD7zf9Nr2coIu!P33 zw${5z=PRN)mvY}y;j#6uJ9Q`2mKhBXs5^C#7wS&kj4#xkP>}}mA_CO+Qy~cg_JF>- z5R-E29^H~9t`}i43tLE~2y+MF#xM;qP=4JPUo3xg6K;Rj*{0_r+B%!&)7;m)61&BP zU#PQnkRDWL>sAR7sz|zhJt~kdCh!Q7aktrxI!n3R^QBx&yO>ZP1|AxSL$-%K!F@lG zmlO^R5T;q=BQaFDphZT3qA%Y?SFt#s;2!Mrhh(I|h zhoreT${_;8PB|pK>B=GT>B<=j3MduygneIFy*24S5mv{R?sRK`RDso8r1P)kY}z$V zy!f|aobLd*Ja&n;#g@t(xk+CksSoY@Lg3gqimB#j+EkGT@DgLY6s_$a4pS5os~(RM z2V8&p!w&7)l!Gd5u6EasL+1+Zb|wb!O;o${aJHpX2HU!8;;_Y+bJkUj&Y}?_ly>ktkQouB7EKCl-{Tct7N(Ue5w{c_7nMRX&BpBS9~() zKsw30!8e<&1^P@?m5wkVVPNWYLJ@UaW2#BV4K)Q!A@-cQ--8|ZDnKx2Rlf@GP40id zk9#HL@hl%CD(3omhzn)lK0xRoEgr0uMpD`-9?UO=nzF(Pzvf!bv2MdJaum?d?k9`a zL_`-chN465>flCNYnbF>K<$phz9G_5P#xA5s3y)ZMq>ppUB)Hzh<5=-vmL~HX`3i> z*G!Nz0|PlfCF9s{@n}Ya2BfNOw~K#N?Y4PUJbJD9)E(Q;PshMwrikExq1xOn#y}!} za8S0t>hlSTU^@>9 zPU9hz?>J&JJH*nwQ=4xK(6E1OQk&n%a=$j8OQ?!v{_Sgh+{ku1Q{f=X`UmpeAelRK z|AAd@P@E(OU+8iJ0&~XwKX$oqf96Vwhm<`Jep07fONK)Jq((PTd?t+0Yr#)hG1?93;g!ww{Z!Vf@ypAny}Of-&g$Wt?#A%wx`%D z8-#;-X~exC?hBAR8&JUt8T|sq5lMeFeG)k=k=ix#I(h>%!C??f=yMrKHDHCt)X@nz&6$9BwIWyyq1qUR!>P6-)Q zqhEq~E3`A=TnLR8+Aa{ZI~P1Fg-)V7&dR&IEn@Up1@~O{p8oQcd-g>^oyUI#w2gF( z3-nimT_GLuklv27FYu7&z4E;jkk2(4CuQk;<)jran-vSVcPoQb_7$F>K@id}E20J5Qcf$OlpCxGDnkXCT9rzbBULTo zbNP;=v>|GfqB*33M=Gc=uXayu1f(@AI1+bH*9$>_waa?8OF-Vo`T7d9FxJda26Y9M zR_!Uto`P(2BAF)W3TIGRc@&pU?jQK)DiNo<)u4p&u){N(!NAn|ey4w0YaxwZC~c}| z&~~X-bq)OVkQpk{p)0pMr$?neaiGdtmG%VTYokmtcW1jd#tE-iE}c3Bbm}gh!lE26 z>(W_~A~D`(Pp5!<&ve?JN`;c|;aF~QCZ19!6C4@SC;g?a?)#Fq*&*JrrnPYasa5i( zlZL_HTjN^BB;M;Q`Ij~f?+vj$2A%xMf+wlSJu)y53BH~dJ<(!HN<3$ z8KxxNgw3sJIFNhkGC?@m&S}?!WtItp?|tZRrtF4UfPH_M3(~R_@cjKQ2z)7@WQ#L8 zzJruRs4txz-3+&hL!JP?zwTX=v|e#f5<8Tvzqs>Pl+L+nk142xnW}lKNdYNc%>p;k zp}v{PawGuSA?pV9vPAd*8^ucwF+X&0?Vykf2}y-$emvmr@n|E`oT}(EuAaNhV|b$2 zG5Aga*Vccd;(?i3A1mR-E53cCgm;j83ExVDGQ!0sZ)egE@AU2h&y{KPAt<9R5>i8Q|J!H?}4&GP6lhJ?YNX=l3?sedHW~&%drNyp@~dZ09<6rLr-e^^;G`EH4!t}ITKfwlsynGtGM(-|gQ+SwC(QpO%7r>J;! zo|u11IOqkJ$NT`Ty-;DhA>fG8rcObn8k%1alCO7WDWSERXLWK8daB@Zk~vMr-{w(z z${7+gJrO+RB6=f*K2K%jrXSCeB!tC$47}*wgd8K8;#o zCp(t0x3W_9hS45$%ch=3?M0B>YHc&^bN+uozm9Ga%{i~ZYIH?WJel$KxC+2!pR?yzi`wyNza%h9<2-Vy8jTVbUdMAP(DoiMLN^0de&w^ow-40El>)J#EMtCeS~dmZG38WZ8^svVZIqu${^hQ(AQ?vVRBrsjX< z;}+}92`RZz%5K!LmhsFJ)aH%sd?UiNdTbM)tDI2HuXAwAeP=|3E`irP1JrlCHqrb+ z2hU3tqtm+Q8C#AC%|@enoqt3R+`7 z=N&zugBMQOg$siPZr17~*G8kR=L3H^Twq?K-O_OM*tc?Im55HQmAsaF-|?ZiI+rrE zVVj}#TiP_pEgKsaoWemxLNTYX`H--YF7OZG-lC`@TsFF7!t&mkETd2BqKDOLgU+pV zy)FixmB8n#a^< zqvA{M)~J$Mp0<6?6*^YOw+4Zo!WJvF11U;7m1@b7{$e9mKG#4}J7qjSxLfSIwdx!2kA7XIV z^X7kY^r)lBsrzZwN1{ixM;bNsjQ8m=EJ|xVfRq!t@k7{hTyqjx`*DBUg~kuHDkSGs zna3iBu70V9iSqEa^+C0U;occ_E=~`WiJE|&wY=7N53a@t4CbX)(WwKg&OeGfH)E%m z?l?CQgq_&*aiZ1ylAj@3-U=1kd1$n8J?B>~qz1S6)9$io?yg05N-4CGFyr+x#C!qP zzWag1Ovpy5W~2{u(nx;{vf-AuNI4#$m%r||{aT(EZ$a9wBb~wDSW{x9YL_4uL2+8> zUY7%&f4yfuTP!36(g8g@DYQ+MGbvo6TkdPxzB%hku80{cjEaNTtXPcQlk>|>7rK$7 zl@;K6UyEdWcpG~S6w|M*&nU83I~3Qs^^xX4q{k`mRXoq@9}0ifiJ9Fd|&udm-e{b%8=Ld6xMdiv+@pVA8hRydE3m55-T{`l9^Z=e1;LnT_y-}wSm zW|(x&+L2){H~uIz=E}t}6+6akolZw_3vJZMr~XeCqu~i_jf3C>sCn^HaNA1Unei?g| zIX=hvyu%B4N4^@`nuYNX-r`GXWQ7tuLHUVhP9fS_{eYEI3J;!*A8O^84kQCwzWDr4VvRa)*l$|ZNz3lodyIhJC|$a~e^+%F^}Z%phMxV9eeiK}W#nxB(aNWgH6vuIM+w@C(3?lP{?tk1R!+j1wo8azEFV z2$nhlzE4{p-+2gVdF+hLwWa}uY&B?euIvOE#IGd|q0k2t0Wz17>MbXiu<0oT zmji4%jekXf=JmI?pPnGIUhb7&;{|zjF_r{#mHC}+*v+b=ofM$Q(LlTw`8eat!^u@# zoa1%$V&;P{mO!%vbmKeYLW~pK14Vu=-y$;nKffcEO6$BT|4-rn$2C9}N%2r%$P7df zAza}J11OZ4Tvr~WEDWxSr%h0T zb#z@PKG`Hsg{VC9UB0fXrzq2a00#S{GP}{|lxc-A%bB09OnF+7C{W>oLCOr+UGWsM z85lRtjtUGsseEB#Jt~#I5oVr5U<7B3R_K z&#&d&1Pf`m4Dzg9_lA2du`xL;(*=bgnSUkUe?P(M2@5M!Mo33R4B15cL+_E^3vX~i zL+-~{DH6Xw^1E9#yH@gT6PIFvLz4ZPGH2`Sy5!S79~R7tD-=G0rGE_i z`ts0jRohw%WB|BEQ{XZqw}&|;gft|iw8QLosB^tU*iM37A<;u|5JWS4egF#&vYr;K zs8POmL{UY=@cNO$EIk$Hcj?}k`LtaKmAo4xTP~u~_{^DYC3l7AYD$sD*J^MXk87&B zv*8FPq#Qeu(uOk$2;%{hi>-dyaep(3N@&go+9?6jb=3oAj&+IL>wzQp5Za)yP|MH| zLTg;UXUkLBL2EHNTOs*AN7S%eo&8#C0=J(Yr5E5vhJxc{#VTlG$2|!e>(m0TH$ld5 z`!+nizCHc(w7`ySkqlja|NAL?AgP71{=xyobEf?FkISD=KaW(01_#<+Eq`hXjM2K+ zlo6UEg;rA78vD2E?wE~WmMx9R@)2C-KhbQuH@`H>wOl*1oAryzui@HABb=IW7_SzL zunjzN1bLmKPO6(rt5K3}u?TJ6%|5aT81IkS501jK0b-U)M7uZ9g*>b&2Dv~%7!{*R zge#3y^6)-(uWK4T*H~=ZJ%2&{8XNHULZE=N2&oZ*$EF6ARKn^}h1e=3D1+@QbUSmq z6VphORzf;Rl}+M2j9>GwqePaSjN5Tx_NxH)Zw+JG(qlnNeh#kq()55$ahmC1PHtZZ zRhmLKnd;8E+eWZi_jt?Apzh^8aEZ+n$2AmKH_%!p+Gj<6o&Ocb4S!ocIwFT94c4(S z;7=7D-D)L%GfiU(E#6(fM@<{DjuLstR&9I9l-@-{vnN=zE6AFe$I5%N7c%yf#UeRn z8k!@q8A_dElVGxJdde+}ODJ-y@{%^!D(Ya{m|lvljC{lzO0h&ul}oxwp08z8?M4a> z*QDL4rx3N)uRdgyh<_3+%0jR!_8IMdO3!iSxKcOTHU**S>FjGBxyV6Wp#L!sA7rRO1G>{((B%$fVM(FIb$v4pP3!E2&a-WKr*_Y-7Lctk zreaoiWjxealSb5h-@k)m1i6U)z_2W!+j%Foy}IiY==wtw8xCN7t7ridA@x~Dni z61}(Z-F?JDIo`i(p^MZu45`plwD@=vVVdp8S#c- z#>BkUpSj0)3Q@Q^u$~-e7D`7a9Oyoy?QF%Y*Jhs;p_K&T?El#yK+mgx-?-WPX$o=! z*kNNZ4uRv11G0k14UB$P07OoC>W2kD)Lxi503HRn9)Gpu8hLa2V-XGcPEAC+J~Kxr zHWbmo$@rA$wXvoF#`nI^YjAwa>>&$cOyc)NCCs8Y7nq@ktD&q#D$>+WcQ;<^VCeGda zU3%?jpMOtvIGvP8&HE6g!?>5Xr4y+&_0;5~+NsGEDQ3!Z4$Bvoo~-M3AtL!m=k0L} z#;#21mnOf(QHi6vvTIJ2l9he0(-h@V5Xc4gx9-sI$e9T^m^d|3i54AmQr!_qh!krw z6%}grvEAd!!2?qFTEF1onZM?ogN8;ZH88oYt0+s z0^_zd((Ml;rtajj%x$-#s7rHhHF!D<=Pk_-gCh2+3Az;=b4dnabGA8WovnJiZOZzK zvio*3mfCo?v2hj?SfV4FZEW30oxUD#^fN2q`k&)RFK_cRhRAnc3T$umbL;3;Pb;>w z?T=OJ4^uuh2N{ZO&G{5G-Z|L*2R)pr#g{=GIu!ylIhSGTEhGXsIhP1#I5B_ST3v5j z#}R$^uUH^2>4W#~%dZm1Wq#cPyWkv6`j zP(SsRVI{@J?WqHyhhnwe)2|$@F-X#nSM%XO{>IhoKJ~3ex?Nc>0K(Aed z)!Mi$lhE86T&ytKQ3a-cSI?U9S#>Uz2& ztIJuTNbQeXAIAGi((RDEGZOCtQ;hS%UH~;=P8=jt@&lkh%t9J|k_2TsWUt#!me(`>G@z&!@IvV~w{4jj?mc}2i zW+#icWHn-wIj4VE{aZ_9_v_rEYCamC2K4@V_hFyQrz53Bp3U`6a2e9 zht0!cNr9HbGDm^ukV(wgW)hCZ2m*rA%;peMgK0baw`!xJ`y!h~!kBcA97qfqhe;%LA;?HNpyR-Sb;S)tp zk%r5Qli_%=xHx@xwU}Mv&tJWOmAA+EtOcuj^y_8aPqi?iSh7s2#kNN1@4;1Db7VJ^ zYt2@RO8Wa!?X$NYMg%K)HT>=G|8N(HaCn3m3g=g6XGg!)OwkNc)lzK2+cYh?M1}ip z(KJ(ulDB{Am8`^!$aK>*4BySq<`=I&LMtKr3t@N(P0TLN1CKxd^m+09>&5Y67HE9% ze15*bAkQ6zJZAeS&k@{-OYh;yli}sX{N(j)@pgFm?D_C!_IYu%Vizxuf0|)fY{vQG zvcpgx3D$5qzq&Y?U0y?}Kl^d^{`C0U`R8sv6%l_5VfhF>T;N@gK5blNH?_-a!qBJi z=u%=JTp6BL zRT{Sjmc<+V?2fbGQerC8B!K+US=4V%g0r;b+z9?q1Mx_XogsaaxbucW0p24M4B=1bV#%^tOa(nWQ>_f1SX;PT+rE zC-AQm_}2;i>jeIF0{_}3$u`h{I}qJsu~!L}Ojl|wbjZk@JMJOp-v{tjj*Q4G6$~~z z03v39o(j?laG3j2i@UO{j(!12KEkq>eH3Y1kc6jcJ$Nuu>YlP9r$<%~;=R8aD1gaB zr!_Dv3I(ARly3vg^JE-5!3o$>TUCFP{Y?UUf%wq5W-A`go&Bxvg*MabB{F1Q4BaKo zyRp1X(TgNYl7|o_M27^)k{u*P_m?hbAb;c9ze!;4U?fHC!5K&3xJO|cI#yx&gH>X`#XOt^K4RV zr&vl`m3edn6)Y{9+BQw0+~}-mi>8?ftZ|!`Wb97zz*U}GwD8VMu<1Gzyry_}W`dSh zn4nH9O(!PUCMMV>CfFt>*d``8u5!on4t5lD#*a;qn0jHFqf<}$$Wl(jatfd(3 zfh{wz$Z0Yoy*EEm)f&a?J0zIIhKd8ShT;cHDHZV(KH}W~AGBQSjoW`XL;~~o2EiY0*h?ZG<%{Xd7Gw4P>@R6mn?M* z&w(-|soe+dD3vv|^Qz8$(9X}UZ_v&r6tfA%Y^rD2RL`)fo?%lx!zQFO+a34V5Dl>a z>v2YMu4Ptm%U;0$Lg z$epn?#U^`n_Nxn}Ig`$JnKgtwbrXL+z*zg@FMQ$p_89zJzj0kfU* zIHC>6M)yQETB+#!^`{Y?{PxpQ(n)HQw9NAS=F?K5-SI4Eiw4}TVqO;Mhc9H_(4oBd$&Ma7<5)y{H#z(a7q@ofJLgucDZR-P1Aed{+PbLKg#2s)-q6b`-Aly;iaanF0 zsw>b$75L1DJI2V!NAg~-{uucYdGL&{c_xoQCC)sM*_Tbn_s)3|i-H=!A;eU7ykU)m zS5^*)2sueQ=m}Bbemf#xXM6tv-tA@X3T19&b99qOCk~fkZzvU)9MU%`e@Sm+xe>nm zSLhFz&84^jf&j~DHIQ2xz6Ci2nK{iN^ZySilEwXPvgOVke0VMEJ+i7;dwqJ%Prsk| z>BrOc?djW1!O1eGg_Wnb-%bJ_aQs(rylM2w3c-vLr?)>&|2%Up4PIBgfODnrviP^d zPknh-!r=;G=n|J_3*ubYf6CXqM(MOm`n;Py1#xh=(mKlny;r=Dg0Po=z5V@(ljz@W zPHf3-EHIQV%Z={;kq?i5#?`XDEe6X~3uTVA4H-&lTN^&tEU$XmLsS zdP~c~G1FuGB$jZCg0CrBYQsF2gTOC06O?6x==LHs;2-)m$(-a#f7)Q)1cii;AH%or zZ%_YyDr%96Y2!~u8D_0L{riun@BoBn#`=?#%nLaE`JdBoPyZOHlE%l+=seK~+!(Dp zBS^!vb|(XhaSg=?odS<)5C6E*{a_q4h;~W&H?onG9}cwOPf*aF%n&;o9NF)a($68VoLz$=q3Kkxg4Zp&YFq8UZS*_ z2i8sq4)b3~zCDLfyOeVjm*BUh^mxU)I4}AD7 zuZ;U_uEmv#e@n5P?}xZ36+26s>tcH%szsBu7LyVeZH7ZlqDQDHnxKh@NY&>`oY#Y; zr!Ma(Q24G!7_9oUn(_fmCs2oS5RhJ@CQa33%ph(-H(P$EykOqL zsOLvUhvrOSejYevk0H%uey^mVNPpeV#X3M*x-Dk1f61FLgQ3o94r;t5XYWRW=+QRh z9)6{GcuA7P6{PR9BCdDj54w7uvZ{@b`YmhlwXtG}w6ZeCk6o~7=n|Zhp~B+j6qe~& zd8fNS*E?Os6_a9Aj9M|j%mv3SHX5rXKszR|T^YFS7t&DZDd{+KPQ?*ila{g~UnUjx z3O`V?e`!Cj!KCd-HJ6~MgO_Z2fQOl*II6~W$BSKiOrePPbZ?`W^h_F!P<}ztO?l{u z`J}Wclo^Ez^$mPbK%9e$Zxa2NYy>i7Fd`W8{*c2Jh#|J=&U&4HR?4^0l-B2i?&k#B z(dJ>g18p5>PZCz}L8{WT$<&{u6=A?wpqzVhe?yds6HIz3dGAIsPm(QXGMqC)Naawn zq^DeojNHv{VO5)((w==S)}WMjs$piQQ_EZmPj&8H6`WAltO@EmqNi~kJk3>)ie6S} zm?kq5KOlZYQP;4hlbdSk`1kjR1u_U=TFKE)Ys0B(y~E}dbSOH(D(tV_8a@_pBS$-P{;g%U`Movd+%~}g81e4&3 z%%rXd7GVJ#hun$LV~eoxnn?~Lmo8(~&R%p+ggI9Oj9H|a97O5#uT7DRce*^EcC2QJ zb|OjcQGK`JMsk(nhpXhd%Nof*NLV>Ee}mG-nTWFBuojK9_~bx&1|MQhkA0-hxSy%+ zG2j^)Sp+Mw?-supSq!~FE?&7fZ={~p7;~sPR9t_E&q5nPX=au9MQ9^{#4*Jk%}{q} zRGgPU$j2j)Mxr14@gR>zAT4GQKB?<75J=~k#DqR_`Tzpy4LTG|8d^pm(R-P9f0I5x zgg|05!yKp0x)Tbt?JtHbyA00D3oai@SY2 z^_^NG^pN(v6FuZ;bxbp(WRJv09D3vA6QREbXV1+f6)m@V9##9;(BXn^@#4mBmYW=f z70o%CM|v{S6nC{0#p9Du&}Ab5ggcm@4mo zbVxF%QUK%~uB?2iCx||!n&xeM2WJ!i5?H6CnPh6TB7AwDc-5IempX?!r2!w8;DiaNXr1cSz!!;?WL z6ag`pF-0~Mmv@vpx_G9qZi$xD{nbFN@2f>MEH%3i%RU zLol{WG>vHbL4Un5VRtQ~?Hmsa6BYi8tJc_TaCvsXLQMHA(6SNz0MevKv`m@VIe4S< zjONK(M1}?a5r&+o(tOo;b^Z#2M$?zeT9X;NqgcQId{I^z(bGlv;c#b`sD2awf*=9hEWO!aX%L!Ya`M6oZ$rKlDNm%j9kH;{%Dp@X=HEyx~ zimq&@Stq?tqt3RKtRrB-%NLyb9B{xW5ca!@>r&VFN7meho#YRQ4%I`vsaBzi(tix7 zye2`}Dz#0*JA#(e%nsbGQ-zQkkpCynzT}{v^TMWJx{S%H_k>bm7k#4ynv5#9Lv%&V z;seueArE`4Grg)mHW>>=$ot=7Fc8o``{x@b|s zQRP5z>DveKTTr_aHrkM*Y^98)N4Y7mrDtfXc7tgkZiltoLTQyGEF-y3nMc+Gx2Xe` zjh)HT)|yv@s1zfWDgMN6yX2krT7f7HgQe&eL1pHOM@|t?^(%K$JCK%1ZGVSVmoC+r z?yQg@$^qvGtFch}28}G;pTJNRo8F;i(2y z!wFz(PUrfeYsDL#5(nGxsQ|(Du6m|NY0%zq^adkXjnBP zKdQEpbW959p$Wd;ghIky_J5Nf=`^&hgQcH%dlKMbA0}H^Ns=DO1{phIAXmxvDTN`` z=~nqXB6TzeA^GN%5?{)x9n-jnJLp13s>6PdJ5;M{=lWF@cQ_NuH&1!|6L4roY8;GW zsKo$HmyUC;cvQtd-L?={ZR;!gx>6e^t$CoYO9>R&I(}+jx2f!kkAIEDT~a=AusyVq z99d!=F|H-z&i?OFH!HNFueNuyTKnU@sh92FH+WqMnsHl8$xB9D?smK_z^(_r_+28E zsA(r}SMEoJTfD@uAy*U$m#`4L?{Qj{KgYoyT5QX97E1!p=NZv5@yM1Fu4krB-B^ev9M@bEhtM z_fpe*O}2t+JFx<{-@L3+w3VzrvYIS}!H z|8SPs73Qxy5J6ECq#0zsr&T){{7kzj!=hcgbN+j@s|EB`+JDud`+#<}kRH*lj`Dr& z>WKIR?dnk2(XMv(o_5Kq7q_NKDdY+xm_V$0QO9E~XV&wlh4k5~lp=b!i^%zD=+@tm zpYAmy{8?O;g4BnG!x72NJp;#3m=5#`=9{?rvu6n%faWOWveE?2E$!uK<*n*Ny$!vr zu^+V&_Ld7a`F~KNxGBUkY}|) zUk)2ZRdVSrCT#Wd6tk4ffsfDln=7Utgy6>Ja&Yk&ikO}$lyzc&E6+HdD8_zqGrZgM! zI+bV{@6bd_UMIC9Nm*|WWfS@!J@gh7r6 zMT0bb^8ni`hC@7Q^mvss>E`t4rM{xs1nBRn{^Io%U|zpu6BkZI9#cT$4q8n`3y!3ImbYI^(t$2exd9KhaM zCKH4{h<#hYPcFjtZ;Cnp13O9Ct&>3~6aq0hml3lW6qj-HCMTC*uP+3b2A?{V0Xesu zpE?Ht0<`$IrJy>91_b-WwHuc)r#cmv;;1MS12Zu)m$9%QD3^q%I+%aY0B&YawR6|QueYvwR>hV5IGPH%X-Pv)f0 zBm0{Wm5zSatA0IyDuRDPYv-q|E4Jf%A>c(T;#V-%T>fNhu2+Bil_><+rx29UwAlMD ziFuqawiFAD9(5!WIj@Ltk*Qjns&(Ar1KC1}E7NVCEtTGX7VFx~#p2Hnm1eC}YFa4e z7|Qbo@t9Dfs(D8F_9{=<7jQBIE1_wp+!Nkm@n0Cdi{AM?mOFpRk2$t?c_vcisq$DUx`O;z9fN1&b;Y&2we@;lN{!taE>a;FXJEo=v}r{-Elx%&d7<&2fpw@cjLsZc7P~8*m3IyXV zGi4TKHigx6C~AM9YWC4}D)~MZK1YRQh!?Q|6@cS+h_FPpM4}n;8xEP4 zDuvh;oUQ@P+4`j}je7|@6%KVFu1Qc5_mPs(IaZUO7=M3#cQvgUwwAg@(Zix4+Ko&MK_M>s)Ym-^zLAld8xz+Xyi$(!Gx$g9=UjE%RX>-JWBuIfmtKE_ zM=ImJ`e&|;%ZyK`j2$mNyf#l7yHy!G!%j@|Q?`F4CA**Ksx+|&ZH~|&!RxZ!t8`g{ z_KbbOyhepNvQH~8a-6|v<<#!Ybeba$S3ypWX7#y)s?s8_m2nJbiY%gAN>=xfyOz<{ z)|?zJq}*_XKoc9ud$a!EivFF3LH|yt0?4@YWr{!%hH2tdP0g~2Q9H-&TXK{vt*cU1 zC$E2@Q%ts_uQQnqv5Uu9=8r8lr@A1BiU4ONUk`Y%SC*h?cQAX&shj(#0ODfTb3Qpw z=h$Cu=3@=DnJelA5p~a_7Kn?(11f81X*9!H~1* z)5P9zG?2qeBN9&C;?^RCj$3aCi)P05Gz@<&w#a^vP$-g$*h=CAXXPhe2m49!ntL0M zJIe_=n6gcl+0{F1>n!bdA2FooVKFSJTlXZ}{pZx5F*q(E!Ym!xnvOu%PpJpu6#YF( z%W%@tT!&3mWa&N4DV8e|>y{^72c>^g zed`g`Eq;exN7!SrwDq<55=$TWXuw<$?&SdOj&fhQb36C(SLMP&liyz%*k4Zubs|jp|wqoBfbacu8rK6bB{f1<~a1uLo6tdiwh(N z_w}htrng0o5ift#4R>y?nXcM93#hh~m3ge-l6_Wa-x5_CF;|(z z=Vx|Z-*bwAp1|((kZjkoJo+Id_Bw+R%?rbV<(8`3_h4@$se?eRxSINxiqnP#xeXgE zv(@c()1zF6N*ab;g8|t~D2hJNpEcZFhPhxSgHs}*0^02+w0f7S21HVsWsrYB#??rP zb?yoQ3YCNIM(*w;GnrxN5@qZn!M!EF%xF8nN3_M!7Ye5ZB$YG`a!2#Zq68lU3U;9QqT6kU5;pPQ3t>WUG6lk(<9 zS*{!-K~>>mco|;>y(1r#C&oN2S7>L~E{r2K4G;}27F4cM?%0|6y3O_Timc!F9T2>- z)OS>Cu6&nV5lB`n`Lx|BmaFG^uRUACNanny#U8MvVJ`Oz-4hG$(Hvcs0+=@(E4Sil zE(e|o15jk^99CrA)Rpg&W0`_~%xDMbsc_-CrSs=sp0}ZANulwx9gns)%;+7p>2mk& z(m_Jw7msO`L-$C5UH1J=TV;bE(>A%WZtS>rOUCd3NC!ceMs`c*Gdn696nMKQ*{ucX z0E#ieXH9Qw)l;brs1TMXpICK4WD3^K6k62tyX@XS&Y0>Uj=XY(v78-M7KQ(1ug5fwr z)#Y0+EXtKl_fW3P;OQV^xA)X5@A|TLN~77VFU+$aY&z1CEc{vf{wD2)g8jh0f2whJ z4)gq&ZU3EfTE|(*sic&D4ZokY+ix`HgE>EDx8LZXc$NOxA-8dtzq)uiyYlQ^{d4`oJ!~oEw-mbg;|sqw=um^FzD*=#6r;IVH<2$U_*4 zzOyluksJI*&l$MTzH^tqKcBEX`8I9K2-Roo^7BPbCzHl*?ecqnc4C9`Q+XXJvQAxv zNO5C#U!;<44teH#clU#e!7Lm;b9dh=uNPm-wTq2+R(aK59dKsAYOD!&kDO;jnw zQI2h&6nX+VUpH{>b%ce1Mwqw5z&8rLy%Gb7lnyjQyXfb@LJudwMrx|iH$I)QR!o;%MwM6Do(S-;POa(UTe$!7`;b}5=X zfN~dEnhkEkGrL}7Pyxn!chR#a=RNSc@w5x)`cpX9n=vl>w_9+o9~-3d?K9w9Z4|<+ zm}hrBse9(iWuo#BoLjKEGdOpvqOHR3`fZC@;oND~y7JV2&Z?OHnUHODROGN6T9CgM zvPI8KxtXa9*+zT-vgP(+fNTvdfFHpvz|X`nn#%YGAlvf9<^U$a4anAzz5&^m5i?{f zGv9`6MK231E1d0TGA@k~`qtaQCL`C~n>;63YzMwABYReM55l)tfYVK;wzmNI9h&#R zw*>kCzLhzD4&d8#cZF}U{aEg^;9Itt_kOn7+^c>7wk4mkIL#DJVB4zuLugh!rJtXh zJrJT(=*-SJopTVAi*P$X{DI%F9VRX9xp#Ckr4Jys;JF*M4OjXE91=)#-@6cc?qZzI zFrucJ%JxvY{|*?kb`Ik~>=B0CJL-PEMK^XN%aNUbPEGjw3!p~e9!ihR?!!h$?a`xfSNKfJo4!BB#?I14II(-}TbNnd+uyUtstt>xxr8 zAEfjwh+YJGHb^PZ-K@4x04X`Kd-lhf()WXuMssE)vuJ1^q%=AmU|96|A&}DZS~ctm zCZHjI-~$*XhI_jmnRj!-;DHlhXt*U{XPOwkJDv1EqVat9LHh{of9ckSm>l*MNtQ$E z!91?FYdwL1A3zx)@^a#4W}k?s@XQ8aB2Y^3_;qN!d^rm%cAcd$6L?`U`hu zkTzu$Y}V#momW}?_x>fo_TcHQV3Km{J#F<`)@CjS+9I5EsPBp z>rfCkl}~yL!}SZIroRkviNrPfID&D6s2D{fclr+T34NO~A00o9qqe>SdDOT%FRqDY zg)$GZJ~#ZFsNro`%Q9D(zl|SO2u#Ur?*MrRi7Q^sFug}6pq zRtf10J-AWJjuIC<7^!@w8_tkUm};effWjPSSGpZ{Id`ueBFiFXX2;bgznq z`f82+3EtAb4vLUxRY|Th^BZs2H&I9$llLl)H)hLqii(1KTZm{B_#vgLM%fM$Z*E~~ zMhZ~vm@q|Bc3vThhxk$6X5e_1s=yebl$z;ps%mjWY0Ql3OQ2{oP!s>ar=D@@jAoSy zLcxDRDA7|O#8a(RZ@0YuTTu`znG~#o=93XIUU@emB#)4glR_68t^#Mp^Zc^W6L^r{ z=y94yu=f-FPS&_8z9HjB;VNRs%F4G9>kB1pa#=M%Id z%_1|rZunMZ>5RJ`wv$9`r$sw~F}U;b2Y4xnrJX;%K*I!aA=81Det{m!TpJ6PLhiIs})KQUoIeF)%nX zmwwR$F@M!sTW?&q5q|ftAkdfe!8|1A!eJ2@Na89D;Gl+;0&NXF$nrK;>SzsV9k~C# z-|%QD*;=J*X}v;yk>>2qA&0}cd^2Ruxo}7!3@6#p43VwF+?fzWZ)v{Lz0Col{$$x zYU-atfNV6+ltXSccd|h4#6A~OC{*T8YbY!fS~0AFtxLdIqPWnhfKx7o#%eW}pqdqw zborS%a)L%!`H5L4cWoLlxLlJs>3@;~ zKU3~%Dv8~A`zpI$l5{UC?jT8d{v3m)YPr+qo|d`OE>Pk=RTrbcmRg+$b1yIb9rtsP z{;7MqGyBik*-O`|aC`Li*V9k`dAFFpIXhdf!u0L({Pp7eWkM`TN7G-XAExi{0Oq6V z#o}c35>6i7qm^QxTuQ_w*yvbuJ%4&M9ln3H^5LGHp8b3JW(nf5jT6 z@0M?u=ZEj0z(D>&n4Uvvi}SNk=EpyOSbcxEI$kZXz5RoO<=G089C(mS#(kCpx23`~ zKgeuj^8>si3k(wvPo7NA&wrOEhl|zA>G{)x>8Hhq)uqUN|DPZKynsO1(X-V>kIVBK zUMwz_@6S&b7niZxKl^d<`t@I$O8bi_09? zIZdr88I%sH4$21A))c2fivb_OcCh|c?**}7=Z!`Qn9eb%o}8|CZx*9xrnPsu4xB~AP-;I zjEwLC<8Kr_H6#5(lz(!^&DcJca>J56!e0hcZie~WLq=0c9!*uQqUpUYois-Rl380i z=$I1k*VKs{+)ak5leCz)?bp5z~&4zM&s%IIg z9>Z(`F4s8LU_g<&w_xLz09t4pR@6-q^j56Cueoi-3O4}m{oV3O?I29S zd=Q=(e$CM<>mt}Ll+^{vz)HRmr+|Gqi4;xEP8Y#kc;=CIfs;4DRkr0bKJsI4w04FrN8Go^XAAr^ylCt**n}%f;mimzNXif;?Esq)GFGNMWKb_CZPg5|CxX*4XYeu@+*jiQA;uP7~Ybq0HW0sv{2p z21LrX$2@ehJiAz(AD;pT&6v4}mxt|>UYpuhy??fk*e)S!Zn2;;+J-eDP^GO#Wo%U4 z09!Y(X12&5HT(A4K${M{CTeAdi3i?ncN9H;BmPaEAG~+ZmmR$pr3gyT6q4z_WDDGpq>ic;9tCk;fSq9up z`G20k83`#$xfZaz!BO@Zu)aM%ef{&|!VUg%ebcM{(Y(rnMSglvQ0xCHwXboEV8l5p z*KJry8L(FVe_HfSZU%@(cMA~Bt_6rX>RB7rsg3H?M$oWPo!ZqKBe>Y8fX(jTjz_wV zek!Qaq8~RGm1zBh)BA&b*NW&fLL4%ngMa=J;{2S59x}vLr1*BfK)_X_+tFxjTZ!8A z;hKGf@W!-*3fij!ze0gR8p*h@xRvyH-Zq@xWQ7J2sx=r2;H&_rxBGQbtpWt`wJs_} z0HcTOqKZR8(OtABsHK?vZb`G4GfFUT5u^S=B&{2K5rt?&y{gskgdiwV+eJz4{eOS} zs2IKNM=)gSH&_tNMK_gTnNfS>g5C9-4rwRn1w=5iGNcecW_Fx-n-nO141dG`B=NFv zxnHy1%P&9IzN$P>6XyqQ)_V^uYobrGcjK)}kB`{a^@L+E-iB3LiCMPc92!$s8LZqj-zkZ;cj?!n&U;093H~h^RoKz2#3vv9~oL zlhGHy0pOUKuHAMaMF@D%+kY;az1C4KJG|{upkzimTHkgl134&{XvsR4fAs#3 zmtUV`GX3Mp!Is^|qG0Q?-K<_B+d*tEvi(}|cRl}Btbrh1V=IWYp`Y(ZGoOQC86_Fv z+;JaV3tzQKk0$Zt=JUZ3Vl^1WM&s9ltxO2=VDsT*LcDCS-tK`g=nJOmsCu?)j*0Ll zge4q455InSdHUz61V?E>#!p6De?i($e|~!k7Z6Ao>nEjz2b{kDHGO^hZIqhgJ{}{4 zVk)FDL|rPB5kzh>sD%SlAk>BN<`^!UwF=|xv2>zGuKY{}&1sev!DRB)0I4X0iqr(g;+Z1n6uXA}ahmk>e?2&QcJ|9U z{FQOSNgDi3QH)-uNK?uJHsHT5GYR-ZH7b;=WCf>bQ)eJpumT!4(4M=X;!!XjlI0h`gM zCY$AW$Q06GEs-!S`ZvXQM6UEbUb$v}lt~ zvP^z9+fOS0LToitL*`Mw%yroLs%mAHJ5}ew0wNN{empUeZSV_OFQj(`dyr(89AAYY z&?KD2iHHPwpQJrYx~}yh33PUNI@%K2olY$*wqrB5y}%5p(m9*Hf1lF*htk?NdzW%T z<7o3(r@kIBC{0>&W>f2)MRmfES##}w}~MQPM4451@>3+>|m2+QA6R{F>l$Q1`%sLK}i8<+E_2+hGojwXL5w4-qlgJ_~*-j z`2pvVUDXKkVell?z%1(){6<^ka~-lnRKro8Hc`uUF08`Qe{Xf_bE|VK=YFxt3CJTQ zPpN~%D|t+l;{jNo*>gy~yJq>3s_6#X5F|^7QMx?l2(B_$%t+;`O&>UM;yeJ`RJ>_6 z-z_w$vydKpaOB`%0cR?RMWFL|1-_EXbtDJc32)u_^sQ}1e%dBJ$qOi61C2H=E(=m| zY1}nX$VC~cf9q^8YKKU(FvQGv+Y~?7$tnX$IHNMKbsZlg{mu8z^mn(}+!$`Q<}CIP z9?!`L>Q5Q^Yn{I~p zjE!;3MyrG^`z_;`J&x7=-F0x8?K?Gtfh*C>QP4HsF@lHM5=oXN;O3a7l;DYJv?Aal z55IXQE#l)grdHMp$)^VC(N>e#CJ%uX3vKq{e5pvA6@Fn+2zj~Z7PH?jRSRo2Pe!I& z>K}-nf2+Xvy=Z-r{DvhVYT(6%s(iPPTX+i_M4Q!{rGXZ{F8a0JYuasZN+q9GHl=Dc zwoCw@HYdf6?2bnk*lrOw1(%43u@y9C^brBFLT{;oM5-LaS`u2&UaPpSKPQO zakCv)i^4ngh`4r|u9@yG#@K10<>*5fm!iRX}WcayU57ivKAV(j2Taz&;5XmmscR`8ISdC+D-oj3$S~= ze^9olR$gM9bI9^sIj?;Aq;^x-!7$G7(Riumj4xi<%6gjNv?L+B-R7d4^1kFUK+{WY z|+OCbI{00;NlD_ zP)_wvL`Zk$OS_ijfa*~&d|Ds8$#9VUf08K=e}}G=6ta0kfZYQ4xSZ^S>cxV5hxgxs z`V5#eTi+P3OD)!dkZ=|u?EbT$SvYRfMA$~ugco49nk|Nyk~B(LYWMU1JHYNT`M-Af zeg_f-hr&wx1{MW_ahvvzEZUE9`|@8;SMI)qK8=H2XM}oxGKKIOlU5wQNyq*c)KX4Nv?KYW1F3%l;>rbujfY#M&!;C9gUV-ohQ;Yk>iwnY4O= zKg)*4J8&)&lU8^G<&H|~W)_N34S8l=!(52g5yj3%t5uK5NSHsw0(-hP1;Wx z%Tr0S<27T8uPY=PN`>)4He=bdlpHiBDlWEc(XqI+CkWQ?wLDtc)*x9*07Y1&oBC*3 zF+QuWd6TS+q2EDNEEq*}Crz;sl!L2db;Y9BXi9_R0!?W~e2Auyf0xqYFQF+d*86Bm zv+9+aLM&kb;l?~YqbbdzzmKLwqPMLx}V zw#^|zchClp1IkDeapER%UnY>|;g9YH-?Cgw)H{Bydwzu-RH0st|7z z(MKByX#7@E)EW;LZY(nmiLF0NM+}lO6yBgC4<|`nK@p1OX5+SFMGQnlG9=KN)vWMBM zhmnZo4;OV6f66JMT_L~sU$?htWfsg6%az#E$9Kp!1i1-JRlA&=v_`H$fQ`A)2gxh%}L zc1@B*11#=(JJ}J)30HfNV(o}HeP4JSkVJ~q{*fY<7SrM$ z_%RuxY?hwt*b7ZF;2F?Sdn`&dJiR!ly$uRXwPy~|W}h)Y<~vD=`jVq9NLcIPOUmjj zD;Z6$f7_^SJ4-!QZ;LVzD;Pe7V9xq6m*^oOMh@_G8VeGJ_|r5tu5!J`&P6lTV7_CN z%pQ$Ei5TZD__!jJ`tatvF$R=G-EI4>`ipEJ^b8C z9lFT@yGa^DG;)(Ng2=ISFEBhxZeo2UDJeC(N3#K%4JE$IbMuUi)>k&}bGmTy>=ZqC z&0^ltu)LmLj0{ie!mx-X>(6;1e|wSg=H$~@@HX+Cpn0y+ST8j^)vT)4dG>3PP<9Iu z4ZBg6LX_qfsareYjCE-Ci2(OJyk5_m)bzR%zwAJY|FPn?w+?J@5ftaf!| zq$l86E$J9mgv^c}!9E6cRruQ$xzTsYrkq$4?Nvx9m}oyAnJj7E4=6zZf0$NMjGJ1q zeKVtq&3ZN3BYA$+W(}H)X`<+~Cf3Ylodmdvxv?EN6`GGdf$_&;y;=5ZiRr{Q8x{xk zCRwOJD5PN=<80YyVla*dO(8anYw4LK@8Znssvp5QA*tOmq-NS;)qhHAVU?RGd`ae( zl8;L26ct!7S)xFRqr!t+f5?iQQ(VcKFNcKP_fXf9(Oi}(q;=*a9*Z;OIaMNRkMhtgBpDmQcI**1nD%?(oF2VoeFlyLVVm>xVl z1Bws>9W+hT(de~x6b`tb@5mzR-)mmFgTmKN*ti56Sh0;-ee>=hl%FF&GJMkDN% zddPai9&5Y+EEh1;OSq3LFY5?USQsyh#;pUqjlyHtVEU6Po&eiM2rnn(f5u2**=LV72JJcL)plnX zqX5mSS?V+=w=^qgZjJrSQlHsftQ64en4oux%3jife%!C>;l(>c;$czDuAm3Do5P%q z31>m9=LG}E3;ul_=Rac5se*@U)1zcAiM)f)&H16^nhx+?_s!t}=BHtpw{ye~p@NOI zjsfl_GMGCCf9xTI8Qkw6gpLP2HAXGx$vP)w4{>2O!U`qKUKxP0tfk-VUd8G}_6F2t zPsvoJ7w93QAL;d+2QHfyYewVBw(eVCF6enDXZy@~B5MJ`2)Ny0iM8x)HqT}*h7GZ; zl55N*rA*-mISE#nOFzF)lfBF(uic+iB@M^g4cN<|e^fWvOWu3CTseYFqoMWTjf^Bf z8>C4jb}|yQMgZxLWF(5uT?P#e?(is#_7CF@t|dX}?*tyGl_0l zn@sbHG$^rrq%#o`#`JF{-o~>SoRP;4r59G#AZ>yBsJm~D*h>!L1nAcjx}FPE5e^iX9^m)rt;nzA5j7)%4@#Tch}M@~sj2FXdaKMf0hv&9`RugZb9(T?o8e z&9`M8+AbJyt97P=h-K)n__%V)?u7p9M<0Xze^KxK$KDByP;(r?9UoHmz9G2pkOpIg zNBW?*0}7mw3-4UFPiZAtv~wT)dH_5lp`KjlcoxX`_(#;9T*I;sjs#fv-!pu$S}0IY zVfcWf-20DE{Kl#WIesJU2O;@$KG@Ilo7D?69~hv+;ET;OX}%J6y2JB6PS)?hLt=ds zTE*Ag{9UWy>c>ep`UL2B^F;uIHq`^GJ?{a^e_7=_!-~HFTTQ>0ad0dX1Tir(IhO$m zFB1VZm(l+NCzod3I+lM5V~&5l{l1aObSb&>v>o*(Sjd!iKxHur?ki@W2e)RTX~q+|p6=~)1s_)e;O zucv49%Hx>n9pV@w7z{v;BGDAh;7+`DX_&Kyo#H1r7E(xdLueYl2e6wbUp_O~Uao-+ z(hKyicRI`*ER2xhG_&Go$~GBuD1-oBXwHOgRCXa=lCxdz4hH~?KTGaG`F=} zjNEeWP%rs{bsM}C0Q!gxi+oea^ZbPA*4TZcY-`5+sAPX@j8Jqu*P6!Hrdm5Qq)cJ;Z#-fz+>zHIEM9dQg3dJ*!B`L$g2-HiE7Rzp4IGATh2{+9&MM0;ei`Lj_ zVbR+52tN7iKj&;WWl%qFweO zw!qn{Qjzy%oF>l|Z1o|W8@qy)y7BCoL^ZK`J%KaJzEoorM@b7AZHdGZxl|{jX*!dj~_Hb}V-6Eg7PfZew2W zwR&qJiff9kmTO1Lzjh?_!jXHGe_%xb4j)wh!8>8jmc-|SI+hjkIvs~(g_$?Tu{Ngl zd3flH^&M|ng;lomOMMF0YL+th39U^Jggt+u#ZGZk5Umy~S}pZpl{HFj=_}~;G}qi^ z{lPSfD{?7UH7r$RJ>&D+U1H5L(_F3W^U3(s{o;Zhl}Xh&`CDpdYZa}g+Gt`qlcSD( z{roS$Vki^zln4ecA%097Tgl*+vGsjE3hV#*6mjzuA7AYTp$rp#PCJyw5Y zc{ieMZ_>e4c<~ui+LU(t!UI*#q5$c7V@lT8n|ZCh;$4zC*KNo-juW$IC07)Y=^;3z z?@vL%g9_-)x+Av&NTHOvf?Gi;-YeX6_XWN_BptJ+x-+-7j@*k|wIu-_9>lHMDW;S; zzkPf9{C-qFnp``_R@n8bQ?JCxXTg7W-dVN+VM+HRHt1bL_L?h(tq$mZb+TWN#Oh|L zBK-AU_a}VKRTjbhNQB>+bg(i!gz!6K?nwA&y8URv@65U*;cG5LYW`I54#HO+1?R! zYZjYMYtyd3lOO05Y_X1GI@?vXT?d6ma}HY*x_dskGFE;00ZuIxGY6vikwi>q(#M`! zbjI9K#GL8&qeV<-)*VHRH$p6FcZG)G^kJcLQwbvz*!yy3F?}ydw!OSho{$j%lg8e2 z)k&uqSdsh>pd%!g(If~H12Hi(moZX06qm*0I>7<#mxts!jDMp`Dip{h>YpFqreWmE z=b4MO!YDOzQ6Iz89Y|f_j8HHx(7R#<+sGTYdE=}M`MkbiR02)iugVL8##ozZl2*eQ z`urTzc>Hu}O*jQI7wZFpJ23ZNh!u56!8Rv_3?zUO(Qbr^zJK;|&4>V`P&Do|s?g;f z+H5=2G2OCCKz}xNel@7>Q{Mg?Bt-Toqq7dSTVO#;L9(K$WJEL)9<%vAW%Hz{GJc~TTL{Q{SVO2y z6wlyC9);HP){*fwQ7^_s8KC0t@HR^2(u`mettIP7}`Fjii>yadT(4cGs z(J!AjH6DUJ*ioeQxRXR}RajgSHVyO;y-N)+yML}-u#8w73LAU(B}KqC>Ve=WZ`X} zchqoSAU_A&pdrXEp95($BATa#<*{CR&efG$i5$2{6*v8j(F_(F`S4uPK4^z<&`!0+ z3yU$-N_h6rp%?=YUg6b?G1QI`!M7MYD}VMaTFr;@hQtgd2;O$CeeNU<+JcC%+f*~Qre?>IsJXQ?KBZvCITBqZc~D{gC|Bo9Ie{T4*2QDC z(LbJ-8h~Z+z>(7pBcmqd#0W2ljAMMzS_@Ct3=h3x6B0q=BR0tyUdN@!(;j~PwOp}9e>4ksdVS)^8OLqgZ3~=bnONbtJ9A>LQ-124=?X~ z+FkV}=!FIUW?kZG$&x8GF>P58j}dn}Qoh?=v!^&B%>b zAi6=&TZL`~UXU_l>}IUuNqsL9%+ zhAn)1#SK%4-MtuBzh6RTIx>0F{ZhIH>Iuf1i&vyt`KDuWGGv8Sb0_e;e#b?ZolZr6 zA2{t@c5(@)xiA=3+@`~@PzaisaTJA=`r9OXT(8($48B}Jo}-x4BY)>>n`h3E2QJlo zVrDaNi)2YA29aAg((a)Eiw-ycx-+MyvAq6o2507NzQe4TwmGwxw#B#Dwl`oUbxX4% zwUPwJHI+h5+tROd`l^ZMnJ^by3eGM$wfA(1;@o&rafZwRjI(>j3Im}l+$7Hi+4G=P z+`GT-AC!Oh`+Z(VtAFdPiCxQf-LI_h`(0+vaz5BI`<7Q&ySl<_AsPC5HYE4iaE0rs zm+jwOHlZ14(2s1?t_qN2K03He1;~ZAay_SiimEqmBiLVHu@!E)e-Pz}h{K3VAT+x~X0c%M5_Hh@4rsGh)_>wh*i)H#ke*HtHWl=JNU ze&^odg0Vt{n~z!WcVBl653CkS_A5@>H?Z%89)7!M-@d`IeOoiKQTO{769KQ)a10ww zQR9V0)%JO=buL{$6`E1Xec~V;|OQCE3(j8Eb9e{QG{x zv!d3KHjpiO*N6=Zqa&U(7tZCIIdsm2IHZts$@rAgsT@j^PL;s9b*crC+$js%*r}32 z%e7NE7+a_Cgw*llQzu&}iRXW{7O<#4j3^YY zHJHm(Bx|s0_*umK8h+JOoE0UI^X-tgRPEwRg-W%PR0E~lxl#+1xpO58RBFGCQy@-# zE$2YOU2QIbw9X_2YKfd1b0DMnHVK?`CN*%GjQ~xVXU(|oJGCHC*~wahQ0=7VAk6&=LTg}%Pd0!Idg-(RjuzeE@*Xb3EQU?E`yz5ct`2#!1CH=i$Oo!(;2iJ zYEGR5$C^nyFA3FoJE@_P^(VkLs?hv|3UaotVQo$QD&(jwcd~y`fR5dy@XnUGOADDA zcCeEg8aHunt%jzv=e8DFn^`mq&1P@26f9YPn8CFv^|dgeF?H4Pn@OG5!YS(<5Rlp$ zWPll9i>CSj6n@6D{2F}L5Mk!QWFY%3xG^O{BxJ&>oU%9r!eW?JJDs3PqP|t+dMECC zMafOCT{cS8yXyq9rpln&plnT*aYq?Vop zBdU=Q>nau*)+Ec3kS*c;zWP&<(!US39?u{y`<_)Q7GSdQv(@?X0`mOp zyKns8CqJ!LuU`LcntnWA{dDy_o-Kcwe!lwU)x#HyU#D+RS3mvp)#{sz)#CDp)3ZhV z`Q`Ndl{FlcWS>Yi*jiAzAv>!hywY-2~O~Y zOWfN*_`Iw;)9dS|w2RQuGYu3=1I2&RK*~IjG7qH811a-B$~=%V52VZkDf8gLg9jf0 zDWh}4#sLq)i+~Bp0kU_GKxQ>Jh4>)I zj8IG1Tk|Bnbzq=$Z(SvOs*^i{hs+L*s2SQ7K%|PifS!vC^)A`=ZXgtsa3+6JLVE+S zO!;_1cu4ycqH*-83Hk=!-U}31ZLL6i;B+pjrFuLG1OTe~94R(0a;hk_JFL(Wx9rm; zg^?O5I`iYnz@D9DBZTCLMt@5PsE_se6xiPc zEAN$poh`5grD^~`^)Lk0D2i>mplr}O<$Jg8jMI-~T{x@{a<6UcKt*=N@3C#G6n$d1 zHmzg2Tt6<$b{r)e9EFm*3%|)W(((cR9?Ou2kiGX>np;7Z$saX#t7(55yJ>qr>{iPS z?4|>g>A++#}<|iuc;OjASdBKfHCBd&=94goI*he=g(tU&L`hA^j5p}Br+u}(<^^vpyS?7*SSE^EU&=m9 z*K4Q!^f577-iH)_zo7BBeF+DR|L-| z;mAbWFN~_S3KuKnM==`O#v^1fuS^aCXAwMcc@*6y0_vG!O{&yT_8Xz7@_{hPVoEpW zI6gi~e1DtE4Vx>+++2Sj=-ay9UVk6BV^qoL>_jV?Ny~o>`zJfz=B`CpZ|`mqum_Tm z))@66i?5gDubdy@t|Z- z$7n*XGl2m5H_jsy_~{R(a<_SYEyOw%+$O}aGrb?yV%iKl#338_-di#-dieOQa|s9R zZ;C#BrRpu6m(msuIHejwe#hIsY-sSZNl6OdEX98gvn&b4teXj_&$CqTasqns^3^;) zl828=ISk4dKVVok6UX8mJl%sb0+gqGjDu(Doqq{FR?G-I_LC;+M{{c0acZ*&8pCRm z{M46b*0(2Nep367U%K2}F)EcGk*vDcQY41l+CEFUNu;vRN`LEI>t3RI^f29Nsrub` z!Os}s+k8G8U&O!6FP$FM{$EA@Xm<90R6Z(~At*c*0y8s};X4$URQEc;e}v;dU;h3e z3+t6nrG<5Iaoz~zhWRAE4DxC6tas-Cn^GDOAM(#YL^c$CgER zR2PB(RN1^L3S!;yV7#K1soz|qlpb5!)c*^QBD(3951Bvu)%yA?i)*-7uPBlf)|J`A zOsi_k6lrNJQnRPZWh^TIf734OlRlu%pS4zK%JcDHfsDcUwtAW$n{I1+JVTesAOPfQK`wgPDIu`@zjTLgcEyyHibvGp@p)MJ+ z@+gvWlSmrivcUx@f4o^K!pi1>l3^w8(&hw)1@=z)_t2Y8ZhffcR*dABAt!V6%gbsv zY`{-xmrvgw{#Xz@o|gn54^rqD?DD@Qbt9h^IhMi!c!!@+V|!# zUM+k;eRY$;3KxvhjX>AMJfs!5m+5`&JDICSBFR+QpcbuC=28>q^DJu8)3t z@OgRoShQ-L@-&2~&`Qza-rLYcnb_<-!a30O!5)@bGE1)nX4!HW$H7$Z9KQ0|hNwh-3T$ey(F*CR7Iq>u765}>3@+!Oe{lezP(15XYmQOs}R zJw=7ae^sUR`NN)RAQiMkGc%MTKpA@shqiVB(%HO{>V&~yIjaqg_gMIJv$}1~8pepo6S<|nlY@o@2d^=3G zPuXJUG{_vFWbNmYdM}Y z7D*8$)$VFU4MEwN^~ro+ZLak5_(0EKTV%JCq{-wb^QuEnvgjzcRH6)K(&)J+D$V95 zO4s?{Q$BidG$^~GBwtOTl~|pK2nDl-%zx&|QyzqpD}DYD@@pf759ZB~AI;UdEh>K{ z^lPC&&rGE{ZmmB1RaMwOUMZlaQK3tY@`)-(NjE^Km1$Qgsggv)KJD9KkNHRv^#ut@ zzqoPrdu_ErQ}(N!zU-K8+AfQDqv(83+jSb$HDBN~hjuZw;ZuN_L{PD!;ihZ6=zkaY zZ}d=&(ascL`%+0`W=fT>&WByQGSVP`e9}1co)Ta#qUj8e6zauJidQH7y?4_a>4t^l?qU)8Y z^9vW8sUF#tQ*-g%)fXOs-BVY2Jo6mBfv>l(@5{-OeG<&; zadKN)13h&^BvIzQB9dry2^M$dd_@#de6OSf7UVhQy#xgc&SmUABC0uRDUo(eohaT5p%AgoS!7QC_ZjO%@Ku zQ)z!(XQN8dZk(OaI!+U=LSOHwc3%@bw!74I^|A;Y==y3M>YMS!xjy_h zP_<}zmC=AvvWICws%WoD+WAa*WOh{%dc_&g2*99*WiA~79noLFFno9u6692?EOB>$96AypM zQsp>iB{Cp@XdF5E49e_h$uj&2-yakD0=08ENul`TNYnH?`@^#Jm*<08lQ+TwE^s}n zP1ZR4=Cda~WN!-Jb^h);A3dbKa#~2c&|c-yf+PX;8P|ZRzRQ*KZG9%|`Lkxd2zV+*%ONs$;M(m5dOY0W@P8?&8#zONrk%saI z6N?N8lm(;vl9`3h<)49NCjywKE5nNm(+qI?6;pczfJ5r&r@_D_I2`3 zPyd}lGX%#r##nxm0`S4_Z$AI~`|F>-{R0FO{3lSzN%33&@1~#mm4pZKF#UhX??#|O z)Ds9V$tdBM zrK&?jp{p3-EpW-S;g#tNRd@}b_Pumvs((&5uhY%fYEMu6kDta$vt~{nlzkgola?lS z3{GpHlJwlcFpjH@otmX1YioZLn*dOFZ>^u|P*u~?(r8p z(i7TGqy!s3cqC+#CbQ1pzx~W)-8T0H5W{Mb3ELtk z(j1jG$(KXrF-T|gtw1{ClOX-q)c4A9_jV4v$6Pb_*3JsDbAjo1O5R;u09CHW3#FFG z&Nj`~Zc~1=>U}pAn%;kJNuRN_b3l8{oO8JcU)GCn(!yCaX{EWGGg*th)I%9`pd?`` zN15W=>(oGDz`dE^bTV zr3-qYPj7)z=@n(P?M!^C;;cX+8_VlUf$FFeP+zi$C*0jAu4aGqlEa6Bl&4%T!x~5t zlspB>%BOg|}>iwdru@KT^U>J^~2$23QRq*`+PNYD_4vTl^&dZ5LMuuno~#k0+z8iuFt z4WA8aN1Z?os_thw+cGe;sr_+qJqjDPB}UF42`+)~grk29o6Ek=0^72Tl)}h`*6)#J zfE%q@jC4*$xj;YXgmtt)74rJOUr;FpF)DZG09>$mdDriql80u=Tld}hDfw3=UAsGK z5}hu)-|fOH@~OL-?)0uZSpfmBUeb@)bw?dG=f;uiHiEB3oy-UY{twY2SM#BOqNjxn z7cG^x?Y4iD5|$R8@ecDtX^aK)2Hm#JnN9j>KAlTBym}9`#Z5bAtFrHv0VO4+F<|}`qpL8w1Ja;=*gfMa(wz%fp z$l6&w_TF|%!$R&8Om)7pp`?&9`f-x8Yl*(><(ehJY8l8bEMZbah}(Cil6YFn`%8|< zoQzst8N8a$NBnVFi-b+lXuKsc)tJR20OiO*bz(yUj$jIYe5(17o^C~sKQj8K@k#Md$u&o=* z2!7tQ32gwQaqE`Cg$MVCQY>0t@Bj=7+&_QS-E{OjO=WBtN|l`Ei`Sf+>CmF^TzCwb zju(+0PGq|AxgqnR^#akqoAX{U15;=l1PjZ>L%}f5!+`>`NQ-hSzsJi*Px-3SP_pUP z1Zlr8kjwJ}3Q5oPuiK!`Te3HS<8BM1&6^}em6cW4x_?jz%0wea{rKiegOugTm;YJG2je(<)MXb;+ScckZ zDUN0Oyht4=u9xXkP`@jSi4b-5{(_v(&^W(Au{Y(>Tv?oJj5pK-#tW$zdg*`1bdkl# z%PJ(EXVTg;+<@3|G>5N&f^5aC-JQ)>p3>5Amh}y_0e}~l9k*R}A8@JWrs}dT*czt{ zPM#&ia3iceDpx{!)k*WG*H4Lr?YTz6m2$WM-jV!`ll!Nm17Wz(>3XXFofs&DFXeBB27Vy?w)6%rand^?FdzkY32Vo4ym5PVKo$C5h1Iz<%aj3freZqS;4 zPt1SLq9X9JVg7FYME?XEPuI`eG#gOH<$VKE!teED^XYXk{bE~WYsJ!~l}<~bofqxy z@S-1|quvx3rMfUn#u8AlclGT3a018oAgH&tXz_cEbM!< zBTI{SPR`2G^6{C&lE^5cGuuOkveh(NpNvJp_g9 z)T~DZewLHl|Kus`@V9n}f1oUhgZ)EWJw98sEYv-8w|@*bA`Pr%wAu*nMre~ZOs3yJ z`vbX24osH$MNWD%iBn86kUk5GB=J9OKNo$O=UPl7Q)IZ3?KH|&iJYWvC~<}zTLeK& z8w2dYU@RyS;?u+6D#76ITf#FSw8SQ`Xj!oq3pO*g0;%2(X5Dw7e>_xc+3KKeomEB> z3m4YMTSm>#AiFzXMo-SM*jcn8V6v%v1+p~T+ST1(zwYZjaF}60QgB(wyB+TuoZ%jV zQlULEx5T~_F~|c$5jOTpBO`5$g5EbKDW@FlhxvDR`eL)63L?x26IxyIRr*I_TaS=@ zC)Qw_TCc=wV{k=(e~wPp$SekbFMOY?cl9D$>FMM<{H!n-DUB$!g|h#&cTpE#SE>}3 zI}X?$udaJu)H4nK}K2svGsi#CpL8046!+{WzZMX@GhHUTp}hF=ku z$|wetI$?YuQee^bx3ovB4wtTkt1K~rEiMb-s3B|DsZOipa`$-t2nAvcj@!O(ePY@Cc+ zIT~3i7Y%_(E7Bw~;uqhl4|uusf*pR!(8)61Fl1tk#<;92_4q3SI)krW#c3zS6Sbu|%U zPo_EV602NL?cmUYbq%jgbqp%3h<-!m%%I_nYXyM)k^#8_2>T2w;njKPWd9!G zO7P!Qf7UU;0f(tsCfNsLHj=fP5KJj>^@Mid3G=w6loRenNc6P0k)*V9h8tF;tTwH8 z`5W9fZs@U|DeR>a!~IQ{atgicPJ2{FGbwcI2|OyJ zu}%@qHYNJAs%RYg|QR6;}vuwb8hWmb{~0@i+%EQW7Yj@-bHJ zZ+Or7+)!WZ2-EB6e78-d^PRQ~WU>xCwFRTO3}h@cchVPFB8ile*lc{W!Z2jxZ>Tc~VvYv$MFfyLfzuDF~st=MLZ zHpjJXQ7EI=W@js$EU`DoEnUbvW=dy?fA9Uka_XbvD0IcqQp#E=UKcw`c{H?T+l@?l zRc@dr@AtutTWlx6zhVMS#JQMzLjp~}1{VCg zCeU3vQnRjCC32seYzG(B&W7*ky$g6F2>X*VWi(Ft5M`!pE&C;S_e>dsRk3;3fBn{O zm}Pc~(q*daEZ6Jj#jyE@Gi;0ow0!eLw{~13-)Fvxm`azTe)>Af5fqcTk| z<*=8d1Ss2~;bu@&pW@gn$yWeHe^Q>R!0)D0sq4W~N6GCk<4n){=>-);uOhiVIo!#> zI6Wc|yBw!_!6^v7pY_LKXGUOomm9&|2R`=g-^zYryW1j8y)B4A8O&i9-nB|lhX9Lk zn2X`JZhJ`T!hq2T;9NNpjfWsBT~4RX-6+i`Oj+*S5a`W0Sw5u}H!$6df6B+O#rhQU zA#aZm75m9~3XEG=Sam(wZj(dK6B}=*V>jubQzn%kG|6q?Jjit5*vY;Mvv$gvpmE%b zv6ZSr%-T)P2d$lTCTe1%gZ?6N${07vFD@ldkq$1SOjpC+8>Ocrm2A`4V;p-{UK4zn z{K7emW2KIKtD7<|X%Ug~f52z+P6fE45f1&V1I}4CKo(aU!PvrC z7Azfl3rD@>DMMNd=eLJ67H)e)XW{mSG#1W|<<4=8WTn&HsX~Bb$3|{Yg^=A|xw0Z! z9NelNf&E<5kB99lz@WZA>_p&zC!!=KX9fF}OHdsC%2`L{Y3r7Te}m?3Q?9DTkEL0` zjH8-S*)y;IGrQUhvE5q>%eV$`?wj1R+SDwIYhdvgCpfcB4N{$cDM|j6KDCq=#HQRQ z`qT*h1$}DsEZL{VHvFJZjWCLSsAW#ur1N+oP7T>v$r2)Q0G9ns;E|6WyQOqb7HKmmW2- z=qr2FoRRV38l%7(AFbPVHY>|J* z;5g?{BKC}m21D3tpFqyf(>g1`lqvh_)0VGy_HIh%kR(>Z-bVALAF5rov+v%5d#F5*qF(qf3*94)DZ?!dWjaMg%k>Cd~`<$c4-Y$G&xjH~CX^$lSMs=}(bsJ2l&i#Kr zB?>INQxr}kMQ?%opFS;a;x)65?DBIV!2`y;m9C3X$pyo1Nn63J@QLE_S^LG^9Dnx5*l7}1%;mh71RBK54?{!(A8$6_FicVnXP53aFzK}Okr1TE1bau<3_uhCJIaB zmV*=0m|8RDd3y_n7P|d&}q}tPd6MvnO`j29Aa;%3A zg}9(~dCG^n>nw&`y%_2qn8Hw}?(n&Hc6HdBjb9-#XO6?Dd}*2<4h#s-;F#QwAMF2c=czAbFGf(ay3! zT{hPZ(PaLxgCC}oaDPn*ioivb=0b--4bDh>O z_I2#&%6T%hYBt`#5JZ&*=W>+iV?a~|n5LEdXb|;H{!1*^@m3`)6HZ-^w-QDh@K!?c zad@lZh5_j70awE4Mu-;K<>rVMHP1RkD1E>(%=MTnVRR#dl7C%pZcu8T4F+}C^KyGV z=1Lgd%Aox&w>Ky;&pPHRtz;(d)8o*u_atHd?`Stzy;#jpg4V zrmHz%Q|YKCEBJ=S8tp=%=&5EfT^vxb0LecLrc3nMfPdZ)(Z71O;$r>D)BF6H{M zn63<}areV8UGN-p5d2U~7cAgOHU9^7CqZ3eosFn2p?|sn)}`LKEv`#;`#@k9n>yw} zd@!&}cYPONmoU8$*rn8O19l0Q-wCiw-EldvOF8^+0lR?BGjM$cunWjZ3iYnQ?y+eg z6S7AUy%+{62VgTDh2JCeuc?HocS;DCZS-`@NfUMC4v4NF1kei1^A z2NnME3-3JUySb#R+FgZhlf^e9UN1@;NqO{ z8#a~SDn!$pRY31pi^1a=+qp>?S1=6E&II@03-0MA5lrw*Ivr^Z_l=3W|$^kbed>+DCkP0D${HmF?U#GOJVnA_WsN0Xg@7 zUdDf|Vcdt2jo~h8i zZ1=q45+@|v@A7rgLILm#O|Sr9F~N1}PdZTvY~%c;!4kS{XD07Jos< z7i>tHnE|6kc)?sxVbMy%Ts|&&IIU15yK5k5Rld^V`6}nw)9?@}=E1nSj#LnS$!74* zoJ^0043yAA66J~+(pTo!qMNowH7gCRy_2;lS376+l)l!!Q&Zu3X-v^c(rVUe8S9N7 z(BI*1!4u1qkvz#z7kfMt&A8J%V1HEYqZl_|U@8qZH)h|vtb2&q1j_Ju$1WDR@>sLr zD-GJBGPg;NZT-@`#blz+{fC zRir-MX(BRHHppIHYvi6hr9JgUxO%zZ^iis%^O<+Acr@RWSENukkz+lAXlyb#6_#DK z2zBLm`+8IId<^(Gy=Arbu!O7lsIq6W_3;g+Oos`6LW1Wk!G>4x71mjxJkG5_8@KEB z1%m2eIeviI8ZvR?mmTDQ(!=m_n5Kue-LTD5YQUIPcicASxB@p32 zVN7H5o)TTpzu$4MCx4YSuB^|pdM;I;jA211z!W;hkur>mKnM4;m>SP^7>uMU`=6B; zw6bWAP9t_$k?XY2yX8&UpF6uuXOZzMRssAB_}l4OJ;{P1gHqaX0%Qw*zQ?XP6JO6U z$$ecwKWTDgbwmn>8!JwRZ(whAzTU^4t0|v~g+RVm@hd#vV~oGIntsv6GkgzneE;Fe>1&8KtWbd)=wmYw{XxBXn40 zm#x^gOxS2;tbgMxp_PjoH(%M2Prv!}@wB;BBS*(hWNdBS4eIQcTn|)@7c#Cn?G!@n zy@4M2e}>s$xe30+4j6g=Bq4U|sn|I{c~_qwwg~~kk;^aFH=jebWGu*G5m8aJg-tJd z-cDmwL|$xacX0K**j8<_SzGPj$xt^st>_YF>FcBT>wo9BhyNb=8w<&wN&<&bZ^Rb)+nsT<610lYh}26MKF zed}V0x9si4atNbHy%N44N4%{6k?p&A@@Zs-#K&kPBlu_fOxrET6Jw&JNV!#xDAI7s z-#Mc?lz;q7V3mxaLCHdch|YxdkSn%Hx415B+G3-)E1Y4apIh^Qy+ zq~avhUBYSFjkOu)v}Gb2{E@trMVOo|oCcJTzxxcqUJq!?Xe~fnDeD6&;5h?O!zm*8 zAvL@j(3a6!fVNV`QKri^&jJhB&pH6fO+r+?Cx5b@wvU_o3W$tW0Z?+9^IRq>gCHr) zxTe~-HICESA&u*$k_Wl&@AF^LbIf)MkPIMxpf{vOb5jjL#Xb^b(`qYu6 zlz&%6Z$e{c#uybj>{1A95Zxg@Vj*!jDaG(oG_90BD~Xwu!Z#WCCQ~p9W0CS#Rm@LH zp;Ui}z5L3^%=Xv18*H+;1C@PMAC&wIh_umg-`uZAX?=9Dg;1 zzD3)Pj8`zEa(}n&nzo%l=ghX9pt_)KCr@MDww;i6$F?1DP=;{luALD2E={|Z=Y>5x zL3~}yu4VFrbnL`YT;8w~48E^^9cj-+z%30s6ZmGj@I5r_4uxbl#M5e_qa6L5hF!a< zJ2mW(BQ*PE*|6ix-Z}s74ZD;#lYfSr8g`R_cjvWhm!D|Z8M2Hw-rleijLvA-35xqQ z?2IABh1Bg0JHcqBc8FAW?f#OGcSe87r2B*R_J*Bcv=*SPl=T4>@SFiCAUmX*?3>=7 zT@Gl&=&W1WQW$?)NzECou62yjyQ`IK7_D~dt(5goy_Gk2>Lnm>md*v@dw=vG1*bE5 zkb>fy_aKqWT_1+vP@-8)(sH>OYOYUi6gH`(u-)5TImOo!5%-Jb9BQjLGzkq1EaWYm zYbM}ZwMRLARcP9*>f4%|=D*IIf6i`oxtioC>;dF<^?Yib+JwaUuGnv?2uRzhdcNDy zLetoUct+E>?04L(>P=y)X@A_k#hF|R^!6FzZ~!(HL!c+iQ6%K5!XMS6DRtIeigHE{ z{A{{gwAiPf?9w85#hG%W%j2({8a>T*w~=?i6?{W9-`vJDJF#rmsh3<*wT0$3n$!-3 zR?6qu269@eJ;>cGbgGdJHQiGLlt`h3N8#y%7O zd$wzj-gDsRTax2k7gHa5NcZGPE1fZ>P0Y@7#YVJ#Ub+&BQrqC1!|=%Oi+LeOLJl`Ck7jc%3E`xT^f$& zj#pn`mnQXx5GL$$)_(`5n--mPNZkm97Dgzh3)N#E+C7;Wp>%_pI-)qq;ffK8LzTKF zVkb)@6c;)6fTSAqgK7QR5lVeJJtmn904d4xZH({R6Yn`f@pl=aVBm*Gn|hZ{Pq&sg zT2JEE35o-iu1TxwnFExRp=pF~IzWMF6}b5K0A+H3BG5T=fPW&WE*PN5(^z+aBBb4M zfCA~C27vB7L6K75WrQM_UN}RM)YlDB1eYIViXxBW@-d3!@O{luz;W5`%nfrC;DQ1* z{xEZt;r|m%xtzth4-t0Wff_C%IT3C5eWy`Na`{Md(&8K^-0wbU0j?IvxH}D624CKaWlnfBFVgO<-q{o_{1>h0rJ+!-^20Br2>_8Cme zXC*LOA*+KauvrGv^OlBCc`cMm-XF)=ik z!LcY4ms?0X#ebZ~(~p09|MMNsqI2d=_%poGPp|KH|Grxm0+MOtPeutQj5z)M`(5}# z3C)c4C+TqQ>h$9ur>}Q^rK7fLast)FjnTSOlfu!hJ{jYg3|~bxNnCssmMLtu{PW}6 zi9Gr3*D9w%g-bFJ7cb$}t$gXA4U^K-9>F5~E%q3M)PIgiTv-;9KV2Ek9x$q5iE6wt+ZGugpDElh_h4PEFp0W(tDjMNHf_+H#3pR?jdrR*+ zzz4V@rAvKPmRQ>;SGL|D0dUDYC?Y}GgIjU~wgz-WB6pM~=*=$juKQJy7e6UqKE*bW zMi~4wTSVLWT0_t2dL<&6QiiTKZ|AM`N@bX^RDVmsv+og{TiNlUM!424dy|V26`6~F zx$*>xPnm4nbJe2YkN2WclUBjGc{@z{4A~Ka8j8Y_`wjzw*)~eQNt0u0?-6?BvaMxo z2~ec6X{l+XtU?1PkM0jfQD6#>+7Unf^KZ%vopYH+S)1Rh>0>o}mIvPrt6o5bd zrF4;N%EK6jHbwBpM!Tj=3X9jzn0KHT~!FG?WM=ElN;ijiE%85MNQbCnG5X=zqdU zdV-i7Xvz{wT%rdtT*gt;D3cMkW5QM_RWjJ#(Uqv@X(&|+kZ@?)D-(_({y5w-Mz;LC z%3TQt2FeF2dk(y5_0Ks9`gYABdPTkPLbGZRu0&+fkg2f_*GM&~_NkUb0*gLN))Z-+ zs}Z}5$e;83xsXr@v7Q&=IqRpFet&RTKfe(1ZTsOi218e|5JqJ76QZjzq+?uNi0-*k zrbVvS8n$S*wF>H9Mcucw-8Iy2PPR3YIi$UdPqoy3A=>JQWbMvObhk|)D(x%%^0$RK z#XS!`v?yzHZ695BbEVVEiWfOmC69WMaUh)g-YL;CG9YcQot@n*EfQi(YJX|3^F9&B z-Jk;w5NoXBP)f5x#Ur8`RId>DOw{yi(`z--ehGB8YJr#>yDq`#Y+{QY!@TDm?XM!4 zMCzxOl#^JdMQKYBC$etY=wd(35za6bu$jzi8c!_VTXs*t05wnhBrwdH$)HWvH-$fi zfWOjv6^`a&*kNIzV5UF@NPqETzsOyQ!aoNVnHeu)WMlc%7eyRcaU($v{K zAiL0mIebpg!usbKs1g#%j!SpqOlpH0Kh&6zRmY0U>Nmgr zy6tYo$pyNd=-e%Bp-g4WqN$-WlS`%wX*i(c7C7Kd06;xU$XmhY;C~?+_zyGqTGxu{ zaR$t2wU^`v4O3`~EDGvA$a(J62{E4yTImITdRsULI-(8^sf%+P8pj$_Tv(4)+A}GJ zdMqHd5+78EfPP~?SCb4UC|N(6dYO2N2Ltr)^D8;#Tbry<*dg00 z;mAC6GRK-4Ed?%oH}z`kd$P+yx-hVk-R*AKCA|4Vh_%P_m46WEN!337QSpa{!EnM! z=WZqu0)+J2S>ToWEM#EG@tOcC8b+r}fLYgfaoyPVyp^>iDH73eD<$Jx%3u6SRquOh z#(l1`W^d5-+r>L{OIcR7SQ(?CMf-Y7pEr+IG;>yAM!=bXa_0HW^?GZ}B9*hGb%N+1 zWnT@+c4+O?9Dg(bhB=$r7q0U5#MO9Cr>RBvY72 zQ%$S{&k!W|Yx1E~5fGxj_VRY_kT?$W93<~ZUYQo+u#_*?O6f7Q`C*BI(fu09i9xN?)bO3AlXRe*_^S-B8 zjNiu4RRnp!k4Lu4exGSZhuW+k##D1j@H0NNW3SH6G*R3*?J0h!Fw^$r0AnLaDu=A! zcU>OZV1HqE9dZG)R3uK67LYhXps)CHQp?0Zho_UQFiN5WbllCsbO*KFoCBo~VLmcx7Ok&1%L zCwdfM8;zPZQnK_cua@W zimp^cj26m}G^jg$=E7cS7mJ3GsHH=Ly5d!ul*S+{6P#QT%GMW{srD5lU}l>9KJEokzOkf?o}4`r9B7EsTc0B5EpechS2s{wmCgN4Jz7b2 z%mgX5w+SJ0+cxQGseY819*>F#I-1h8@PD6>YaI1s>j0upj1FP{vC;vWfEjNoEnTbHA3X2_6F|n^ ztb8yfa4sZDrkk@~SlGA}Bp8H(vS-rfYb|1aG0Nj=z3e9`_ie=bO_ESw*M{oCK!2{) zzC2FvQ~+nZSLA`K8>oJdk1kL}0B3{l(dh!_*FB`dOwskTe3|Pa+!C^bTc8?ja56Pl zh1Se_xKtO~$JUqVBGhgT@e4WE1!m1$4x)+X_RALFBeS=fs$@CF-YkN`RuQx-VC5po zRYx7+%uy&qk2(ZuOq!jejss=+1AoUKARSWxwN$^6Fr>@Kq;MJ!M35OfmFWf?LeDobypMTp*h8&f) zZVw)BWWR8pVYoVIzW`EhM2>6hCtoj@)gl2M3?j_Bs1_rx9aYHFi}%I2>rM#)nXtho zO)IaOCguCfZ(nd^pX#U#`K|_)VdJ3SYHC5H5mRbG zTK_B>ltVt1RZT-a^_qgeH}r6cR8p&3cz8e3RUV#40^QZ*w>&)Whkw5HEs&_lA<$!F z|JzKM@3y|jE$mce;WAzq|A3vWWkv`((lvI9m%TL|Y0FN|U`kFK-@r@|e|~2UijjVp zO4@eZ{^Q0f`NqeM1v>ni>ISv~jEzbiwN)rE8$YV)V^L$lzGE^J>?1Nfw+GH2h#H8e z%<91*H=>3V4lO@O^MA9FFWj@*xIxy9l3japY?I>-*jR00dhqFVvGkClmuSGd7oD z>MbLeOE^3X0yZ|6;n)Huf5lo+ZyU)Ce)q3fpfA@4&(3f-?`wO1uSeuBuB{dN?ljtyM z+^vIM**db^M2=mK(sVg>m}hDtbve%!a+g_(kH(B8vNi`UUDn(NX6bSrR)MjGX2Z*B z$5`GbTE{-RTNXR!f4RM>W2sF6%g(h{ygWkHhl7?l#!pVI3Ywjcu?y1@d zOA{4hNyB?6GJe7arwde+a~!a&4C3VJ$Q$5JYV+ zGl*K-k{BMV)ykg$hq zjP1oOiet3Fe<1U8i-Qh+MsB&s$U2quWxBiZSBOL!UIkApLn9_ z`2Ex(iYbr3Wol;6-`VW8c86S3V?O!z+y3=$H>ErCf=Xc?9`b+=w=U;A4-%oz+e|$Up@b{b9bGZBVKW{H5 z;peOV-PQD6|0~9bA@!ebFZ=7O8{GfXxyI9Tf6JK5$=%63a77W6AtIw0Gh!qoF@*?3 zVxa)fZ>%U#9JL}NSvV3hU5vJ@=tJEaF*u-XVFW-bBw*ovMx=@=r%0YcQINqXS$QwN zGI3xp(R06Yj=_o?!Ld|M&vQD6V+*E+T3bUx(IQ5spemt|B7*DJ@hggZP=MaT2-H{D zf5i71ks@jg>I;I+G_&?Iwn8R0aYf=xVB?_m?K_nf)t!$^~r7Ye0%!_Gj1zz_5 z{MWyoM}#UMR4A9%pRcYi?o-p?Jhxy%e+d)ZMHMbkFp?cqK|X?$%pFt-^_25YwxT-; z1+;w^)sj$CbVaoTt+|@szPiBzcLQqxSD9hSue*Ux^nd*_`{C8>?QGHwOrt*o5yBv6 z-aEwF2u6Pf=9`G~aM38|eEc(TOmMF{kevR-?ey~1WcH?i@$9UBJ^3=bSP8!kf1Xu% zlV=rr9M39sg=f*ouJXvP^2n}uWLG@0D<0VukL-#^cEuyRVi~1z3?9eeaf~vKQPLs! zSZPrx>IEAGyi!mUaH;S(Zzpi76~ascCs8ow~2)Dpb+yUz%X==&K29Z8LDK_wq7 zA{gZf6lCcQ?;4VBn1D7rp{wS~Qqf?-H+ldQ2vCYb%_vp{{SZ2S7}2&Pe?nH-5|>t^ z8GNACTYi>Y4q$~7*({Aomzo;`!a~C;3fYnCE?q!vRjiYsREtSgK0tQlges^u8j-67 z_3L|#KxYr8h%_~Yz3AVI9KZ;)Zr)okxF{h$ITJ_&j9`!n+VqEHu~a=VsR*n8 z_Gi8cZNs))f2MGn4ZC#@=DbRqoLA%HIIqeI=arF<%E(8>ws6k}Y{MlDZPRqI4TlcL z>?jdh(Aa}K?3ZylrBHbZ%it?uW5<||CQPTwe$z1l4b3a~kwc7pjOkSL=M?iD{Lr*h zgTAIV@4CTc{G4J3f7J~B>t_)=sG2k6@`r=S{kY*hx(z$}Yant5c*JX6Ts%{KyGQ2F zvl*JwPK&5xkmx2dBcNzQYNE2i9NEf{AYF zLM3NJNGXaZaS^5PemmF*qN>ZJE9gkU-jA_^U4bEJX7+@{f6M_L{1Ov6g;Ib`GV31ojoS^3bZh&NTOrRCkp06c~59T zClWm`C7;x@=DnTVVD_p&u4c&w=&_%qakRK!v|X zJ7VBxxt1W=&uI*Of^9i0LYpgE{lgMJ%`LoV59{Bw&2$L@a#E1h4Vg#P~+yX9H@W6gRH=#4-H8@9RHM=UXequ~-rEVT1?&Hn@K zK^ia$WtTLV9S{UDF*G!nk+mBXmo1+JCzsq+J2ihc)<*I(KmGH>Pv4(j-=BVcQ*g4( zX<_B*{l`h*3ywbp$A?CrtPsp7aeDv#^p_XTrNPfDet>hO@MH12!{7S+tc1f6!q7*Y zpDl=&I#you7^TxJ>GN#*Er^4|k=9ur=v_0-^WWb8^u$SY&a~sooj6n4ID@~9=koLi zzMX%+`RzOE>cmu6shBqYWGpb$DC??`tCsjd$uvp`_&2ytiqTp|D`o{`3aB&()Lx^N z0IjA1HI@FBsFxP>E_3i{eBu;rn7&6T!dP<-1`Si<@G!I`BZ<^2vC&c3wI!A&EbSok z<;{duvSHo)S*sV)KTBeXB}s&<9PPop2_}CDzrGKDeS3fU&(p%x!Z6V4^!MMN!V3_Z z8S76{GLNGC@sHDwr$3KW^U4puqZ7x4<;G~;FRWo&yOTk>R^?UcEqaSNaXIljSkf7g zOZgE!uY2-a;~(BJ=hPsG_!>S_hmz<}%FAIwh$PSxsp;<+KW`LmLGtWRZ)p{iFD8E< zlBCev`PuOB1gMg!Seg>B^o02)WqP{x|^U}#IWkWC0EJ?G>y3_y;v*0xwF_eK6pA(+R8b+Qx zF0M4t`H9D@A^U~=@~>aE42aB`HDX~vn+39YwJBrfm5twXPAS#@Xl|vt@#}vZX6G%B zG!9Et^>}{<-Xt$w>g%SH6lxlEE#BQOqw>Aklh&0wj&LbOKF8!~@*KUO5*Hh2cBKt* zR?03?J10XX!H-i|1!FQ;Jl*J6r1Z>s(Q7n!da}ExXY&?eFGEPLnYRPKP&!o15c)z~ zve#6dgS*EyiymOwLUB~H>NJ0_TeUzxcCKBvV_c2bRbJB-=h%tr zZjV#tDEWS{NA=Xk^I*#dvlJV?hv}Ai32VNmAkwxqIwJoa-&5dk^1VERzczNxIUh>a zNItq%dZo3PA)(Xi%fElA^kQ9|O>uyGAkk0xD>nJRY%;=Bta)#~FF$CCwbQnM3uNR+ zMw)Lj3eCO3+S|?g-!>y57?*azNNm~xy@<(M&46tVlV)J`-_2G>DTqaEa6EpcQl`fQ zL=G?{p!Bq)b@2092NMv@9|Nv%ZYW-JIh}Ki4ac=9vTr4|Ov8WAI<%@Uo8qo8*?F;P zQk*F%ZeH5#@idi-+Yru85j>KPc9M`b>xsyq*D5n@43lP`Qlj_t)$L)DY4;1m?%)v( zrV?RW01Ml+2MklIq<2NPW9_A~5;K4uxz!D3N#drqVU6d+BJnWYL3joezZi6nhbofR z;u}7*&HBJ0y}^GPCcGXw9o!rNC?@#gI3RC6qRrk)EZucXr<}kVpvPl6@Ypq~onyKK zhbRY*?r_7xz`1&`GCzM+sgE5-$EqIAUB9KX*l_+TZ$IM^+MpHuLKZQX#c-y*8b>SN z_aOj%M zmYrznM}Ky-46^P-%V4(;MoUla5z#Ve^MGjSDN6B}Xc^@^7A>Ro?~WGb9jja6onYw) zKR8wfNw!%-r62sskupfS9Vmm%J{BiEu?K|7pvuRiq$h|T@rWQ9q%?u4E z^?-0MM*7irxS3EIdqKP4Yo}`87HX1l2Mfx}!e8SJn1h8Zj|h8*egDE-mtR~vDu1Ig z9|(P`ajz&3c-2i*onulijqWysA03i;H?jU~@Ang7G)fE1T(`hz;!YPg-B@JI41}bl zV7|FsH%%hEoS(y)5@C}v+97@#bVS&o(j++#&3P<_QH6ovwS5j|k?dh+Lzj@z|QU z_9Sy1Bs0Y1z5ru27`R0a#jJ<0CzSmMLVMVr0}gUedof5664x3eiF%70wj2WUjKnwj;LMYy$_Mm2<;+J4rgi*6N!qr!7y?*>Cec zUlsONPN&H0P z-VS4r3l0kk#ZH%mUOOi+Oh|i&RsYi%0Y;5N@oQ1A$uu&-sxp+&mSxK@n+g*%wS8{! zlXZJrM*Hf%3GlHnm)l-D839d~^;b z*ii&rt>6TN_3^g0^a2^^6##;@OUn?^{6@VrAjb$MgachvoflCiDg&|0nAb99=q7vm z2_&i78Xw=c{sxx@8dbKkwJ3n43K{<)C#+ABNwpx)M0ICv6Bskki~ilp0S(F~e~o%A z(AhGtXt>t_rSUD6I?aQFYcTZzV_Ag`jV)%ZnkzWZB``#{jklg9g89PCk@p#ookH0i zXu*@Ty=*N&eIl_WL)jku(!pJ>T^brT9dUMZIs)tXKmk}u`4q1$6<^yXDBhw&6<>4; z{OG1h73}M4gFz(ir4nuFBC6%ve~xQ5azQFS-G-~^kn#4heD+UWkpXHli)qqj?0MbJ z#nJ|LL`L#8E-M>=%?*>)O!~#D?G;_fo7x^YvzE}cGVy6lEdphWsQCLeS>hf7f#cROe%+ zy{fAL_sk3P(;_`&SEW625DT?)3UdS8w*mYgIY!$@w-i1?@1LMcv7>Izl6aEALc#FF(?#(Bk*{k-niPwK?DT%%AS2oY@ z9a;|U*6DEc_S528Upruf7jHO^HdrnW8G16i4VOE@d$z$23$hIUEX5^9ZD>D8%tj)rb zDKmn2FT=jWo{^GCBTz=D-ifx96~;&I!>F3=Hd2y_%e?X${dQ0>Z=oIQSd(#v@5W2j z{R&!NeDeKUc8YZafELnIwm_6aCH+#8+f9GGyp2ZkC{UVALCdVWK{BldtAyVwXaz>C z#2x%-<1hx$YO@akJ18_VvgT6?ypXPC==o~0>Xq+FpObJf8b8uj!&p)EjiF2&yXf0U zHbz*wdmxix>TKTHW(&S2U!o{wH8Q8n4G{{1x~#736IW&muh~XPA;@IPNA$VL$oGHB zGaL+_G2IDX!?o;7o;}xMyJ9y*?efk8*JUm6-8h=-@OEj*2(5ifaZ6f*!l7+f+%F-o zORbf#s>CYg*t;gmE@r};HDElKG1XEB$k(zKvX@L(wVY?4S0Jn@#Yg9bOHvti#=ejEyGO+%;D zEW2E@Zi5PIGAQ!GF+iE_J&nxO)`fbB*U{(WG=}>E}L&tZse{dl&zNI3Dr%R z(K1rAx}_jr26>{^+}#`*y%T@hxS5?c95@%j9d9JI9n3Y6iqkAyIlYnc6MaG58gNM5 zEqKuhKy3G13&^^psZ=mx(MWNTT9`u-$^~25+0NS$Y9|rub|ch|5t`evOWm&R*!Izd z3?(;J+<`PYI9SS%`xxWq8Y~ey(bz(Z+UAM(w5tzoIyv771iYc?{BnO~4Cn-TYxL5Q z5XSava<;LZ;VK}s!fT?e{cuKe$M#m45teavC}l8D`#J_>E+X2DP8fySM{>#%<6US3 zsM=v|d!SJ3#)Fgh_rKaG!N&iblPu2WLRHqD=<~hGj14nXfwV>rGbtR&lz!wr*k5ZB zpc@$XqyTo|Wd8(1K23kK4^(!Zsm`M=V!buf*;PZ6X4jc=7?D-uBQMF%UE;t@X+(r)+w6ohl&d|^0+6`Gt3J&{tYkp z%8APKIV8{?Z_}(45@tMQKX8M;J`iCjZl68k2adIa2#V;l>;B=WpN0IYEj$Vfz7gnA zI6#FY$AR-XKtO*XH(sP3o>No3`)pvKB;%a=fG50yG}Xc0vLIoWJ%|R<%=$%{o%Kc| zHB(jh=j8RW&hYj6cw}fz9e;8_ECW@uQRNerZ8&**&eJH3O z`d@Z=1F5D0?`8X`K#$7ypt$YE&&u|oL0AQ!1aaP#vAv6L1e#VZy?&m+pUFQG$}v_s ztTIg-b)6jFq()^KXqMxx<+nfee24ebB~*?i|D^dIh)x|hMFFB1eYF*G@sq3ItJmsMyxyaBkk5@|aV z1q58h7WJ0_kUJHZ;UOs#mr-szE`KTVUSHuKXa<6}RI=3ev|F0nw)(c((`sfE_d%9TrOt@K@czE0rK>plRSNWyL^B9<)+Qai(r+9)Av743SUV4t0X>j z_T-fkPOH=RKTrRBml7O)F8DE0YKio$Y^}fQwwST~9yNrTZ zM$@;V83IE3;AO&hC4BMxukXLTNg}<{30hbePtF^G)D$`sT?Xkih{@Q5#~==al$aZR zEd5T;zi=q4(vw7ehO1aCQfU(mej8t(;%pYm2y4%fM`oBb=Bx_p&<XPt=JNt;Y5YR^IDbc>Auqw6l_yf+y^L$ITAkh!W?5KQ-zGe;(3bIef`oSd zM7_PXlqcByR1&;z#;UZII@T=W7GOhwlN1I&L0f(L3l(5|`t2*Ka!{M9TvWt?kT|NS z@{M@?Yoc;dyoG+E)e{HIN+0s4Rl=$9gebfjW=tkweN1!5v$pRvUw<+km!8&HX!b=B zi{>E9kpDX90_l^HWNDCm60eshMQQ05SA9}mdTR*RLIWv3y}PayWI4-%d({`BA!$Qg zadxyNESIyEjZrAsa+RKcCd`#1ixw{ClxMK(3KHg(qset-Zu)lR)dEbF-Jlg#3I)}1 ztTxjca&lb0@WYi~nSXXDPAySyi~ZVFdUbW7Kr*WM(+YRbWf4@RDeTF5d0S`nw64tA z;yK7(>FphVL{v}w1ijt$6Ip(nGSMK+YB#Mj*N*!!H}PW&RFjZc8mXQ_W+U(ZL51cudp!KZjnN>9oIeRHunc0g0V+tLvv43A~H>*ceud@$pg!YD02c+-AUQfUG?dO;gXep!&d}i``zuautjaMXy z5Ok$C@vH0_a*=J_3rS8Qx0n?9%=eJI19XUpl-!Q*JDM!trv(9+>0PVIremCi(ypWd|>^J-1V!{c9 zygj@ua85)!5UMVl%L1s7#trt^m8f7%yq3<=$C~V^4c!e+=&;G?i#=Dh&4ky&J-Puu)z&X zK{B9cO!AvJ+@?R0uy#+fzmIau{}}0oHUl$D-cs{r#eDe0n-#^fL9EVr4QwCR>*6Ll zgfpLpYfu>5^}rvos-SXRr$;z5D%>6vpS)&iKY!h%Fq?K5QXV3``naCUKPo0(Sn;?C zaU-;s>RCTx0##`Z#uvU;@A8r&Gc>RTrVID>{ z-Nv{+ssDAJuReXeL^D{OM!irqA4y5B4W-EOyfyV$nK2*Xam5&A4pte)g{K`4CAZe2rCyUQW4*>Z**^l|QZFPu^w<43qd4yi}DD%^eMz{Zkhj8I0zXkX!Uy%yR! zj&bI73)_0=S^e}U`(SdbhgMQU#~%9Gux50z=USnE$jfr;Sl$4S7hmXyW$I42>UGN8 z{^6j9$J-`qA-%tYdFsI_#%5UR%C|Bg&c{gC8iY3k?Moxc4$X%6KG|Gr8)4q&pyo<#BLrTI_G_2ibUPw{D3kjl zLDTTrLS*T|3=6DZqM8w-7XIB?QkbaD=qv3eWZKt9HJA_u9Ly;x=y9IaBwA%_K>tA_Ry~>wAD`L53i>`Q=9|kL|9u0 z?NR9*4Ea8wf8F7Kadg#Ac|QN^vebp`kDV(6r_nDAOsQwE*YkEfW1JP+Qh&-0Onz-% zn$F<`Ik2*pwqM^?P%)-f;_niy$TZD3o(kMOXZv3g=J zM(fs|Q<9>1_3QS&kWPSe_*a~7eacmbAV8bVn^@8wxrrqmuXQd@Y>Q>MiIrjMO|0eD z<`)0L3MRrk;0vB=%&`h2X8#tY-y_|; z@VedxD&4oe+fCUk5Z*G%G^bRI(d#Mr0@sS!l+u5D&nU0`(ydjM)$0NeO`zsm+})+c zJcnu`ih{G?diGWqVZDE=Yx8D?!JvONGj`z%!d9_Mm_22ex|X-4luWP{Z+(B@Vi$yX zVD^gfjtAs)#U0fq*ubxGvE*f>apl=|1E65OtOazUguHS?rMh4G-k58CA&l?a7#I8v z<_Srcalk1P1Tir+Gnc^uFcSecmm$XuCzq6YI}ig91XP!&c{@&jSxRl`y3hqu8bg<( z-=6OH^2I1mGnC~^y?k+?p4(jgTILwcZ|P9p=DXq*Jk508$q4V2;hkUp{r-<9$*5O6 zwGn8;$vO~(O~Etb1%xLMB#=lWKyZ-YLx`hv5mspPIMDj=R%YAh`~-C#MVgI{A?OHY zfN9G+5h7T=Jj39B-{8tS$e1C%=*XP}G0r&0@l2!8=)FEk0d#qT=JY2~y&e7jjpXOm zN`5*7fdOW|MD8X$-}u4~?_Y^;fjNWB8R)r_<(QwnB;;iQHwb4>sX&sjf|`+vs$#uO zVtY}L_)n1WwUgSp=O5}SfhEtY6m{cwdWsbabHBdhS=O$9haBHkGLg2?H>-stX)p;1 zD{R_Sb;f6WjB;_-nP(*K7i(B*#Q9;Gpn?@%x*1~=S23MtOTK^2SZn5dk$AF(GgH|( zeMIcqgD_F-BL>+53vZy{!P3Nq1!aC^op>033|IjkX6!U;e!`(hm$fbaf8COfnS<6s zDL=2QGHt(qyrEypvuGfIP!KA2Vy*Ba>ku;HHXD8THLO6a*2>La!CwWkJd zyb+auGbt&DMu5AiHWnxtZK)!Be4=zb?^1JbIWXAoLG}|J7UaANE5lg7L>%Fk#eT(oSNnx@#jRhvk zl16nS->+B*hrwwTX=l$8OD8M!GnZi{xp#FG$}b!|TYX;r+tmPzWdBh`3bldXifh@A zTgwP_veqN~Ybm)D#=#6R^Q+RSTOv1?6U^0tu1%48l|y6}4z@w?e&$3Hl$rqk2yfVb z+YInVO}fq*y&!0h3y8vb^$3sZj4)_th+2{r zD^*eqJ;sCG1_Y7i$*GJ;o!@HnA@-dRo^#JBRnESt{Jm8(;Z0>d&Q&uN`$56=qItd_ zD53#uYOefj%Uki{Mt`F+gwk-WhaO}OQH$=WfZ$k zIFIzb?a)#zhT@v`E7R_#89?wx~4$Ur&ofjhJ1bL?8(VKw{?-VMH^EzkgG$61@V`Ep7lJ9M7rx% z+FN-`*RD^Ur&Hxy{_8DBmAW*+p#&qjSot_Ll9Y%^H}lNcNqJdi(gsABDrMd@T~~eC zHK{}DV*=%}uo0k=Z87yY(t)x4JCfZwdx zIMO>prrAt8(yYwjdhY0(F23T~%`UDTtK90Ul3lc`O-hyUdyO-H)QIU)`m7BqsBkP1KB_s?UwQnZzmq} zLLi0Hc3w3l_C8DnO{AUlNw=C7uJ;6tHzI(Vp?`2wb3fnkLfY*rqprZ9728_dn$l~q zt>2U|dS#k7dROq@3-wyk-3(iuO*-ZLk?T8L^ZBF9f#H;YjjeM`^P!6qIWWxarP!Wx zLY=JLvyJ%9XR5xVu?y+oDL#JxMsI>o9t|AMCCRKMd!9pT(U?A`A&sOhd$*+RwPpBe z@5bx=TIu=DrM~sE(u{K#YHOg`;OBc`-wOSWbw`|UZKXcGRUHqP+2HPIRi}ehUSM!h zblW4Z8mXjz2vw@O93J#tx!z^($yDLCy4~!j)b))Qu2J-e*7-<7ZZ&MkIOOAZTbWJ? z>0v_tXSLY1j7N>!C$-ph6pXqo{wZjpdP&jivwk;{(ZEq3@$hp0mt<*dCZ;Ibpq-DL$e-=6c*ZlxtCz z?5&ztU-jV|Z<-`R-()MTu>Q<+iQ4FD!01oI@cHJ(=PPb8=6?tgjt(ydTlc1Dgy;2l zPPg&_$Bm|8puhlQYqD06T{wlIO*mGmRSRpytDajZht@Kj?5C%%a3jx_Tv;g9+;gtO z@wp3s(`xL+^|eyn?ytC)x1c)+!I;(->!N<{C@=We8t+n{cJ&*>#4g0Dz7vo=Nmt4G zx++(SP#d}YMxpWYVq{nUUZ;I6Z*anywr9;rOl|u1Cun8aPLPYVO}kavrrp>R7*nbI zv~IR!2#R;-T%Y&W9RZlAJG^p*c*9fjtO2JvJ-z0qzE3^5jo)x8*6sIk+TB~s@Gsq_ zR~}&>-r;&XyI)G*!~-a1dpL8~=PaS9-J8*FT(=R1@BI`6dXrv=OU`h}nIbTd#B~}#L5(;C z+8VmByCZd_!_`E+ip^oViNif-O&loMGq`jE^H9ztqh0JAoiZ7IZHWkrco$E@- zt)yN=JKB0z+yb37rh(8{7li_`)Gl#F(eT}b1_+hBGl)b*r>Z58(A1WpSo^3do;I|C zVnbUhy(lS=)m~R};M}YiDKO_gNMTG*>7$eqSX%Sm1e4ZmYM}nlj~3)usw1v_w+{2`x|ZY7LEBZ&zDrlDgUy)>J307%HfL^sgBzsC6MBUo-Aq zKoW>ceV8d|qTU!J(Ny~=jDzOv6Dd%hl3N{$8k7t7-e9q=JFkltM5lH$?0C`&RI1vw zA_+z7T9L%TC{0gGFfP+m30Atv3O=)%CIz%$jqQ;aHJC}SkfkpW>18yOa<*P>Uao!o z1y2&CsSbI$PqJ`-w{-1e@rg)2PH*1JwNCYY0XFO1W=waou5BTgG<9_gxf*C{hkB2> zx8FxDl6%>ut#ci3S@ZN=f3?1r#WhPwr}}t8l;zRqpRb<0aG${ND&MXC{*Qk`@u8v5 zlMip-9zA}%s|G}liUCM2F+rH~s$uoj=I!S6`Ma0L>(IY{5LVA#Znx{xlR(qkKY!eQ z{e1g!yAFAJ@N{#sMJG?)!6ewA_wv-mgo~KoxHerY{f$pLv^u?U$7fK<^a;F9f z7iwDNRtluJr4XDfHjgr*vA|bx<4ACph&(ZsD>4{2tOQ0Ffzu%|;ss^XEGrA z#O#r6w+!$>)>_F1Z&o=aBI6xG>~CBwDY}z?n2ifm5w$#sahV<*!k;c-T$n>dPvDZz zsRhPZ8A~2UcXdJmDjA9eGa(#cQh`1TSQdNFd@h0d61IDkpf4zgOe@iSA1lHN=!+8m z+7%(Nu)KemI0A6C1O!+>2G~||RNxYwDOe<$vuY_3hIVx(z_89GxiSK8@@T(+6pWRB zWe#Jr6o@LZllXN~Ko<(WB7g+Yp+YeW=mX>%JLk+&fIt!E?KkEENa}n6!*zm#Z@ASu z2fajglA0GfKp<-7dtB%smeV({K5Ww8eO0; z8Js19vt)3V49=3lSu!|F24~6OEEy~(gXL*4SCssFL&r_54UVG(*a)U0%0<< zM9+yGHB@}}0FDt^AhKSJaYvvcV#CBM6rIT6#j-5m7_CJ_ogsxV00{PeofIX1CuC`i zwb7as|>s6z|?$afHOx>^bR8P^j^e&U({04s^wM+CWS)zT)_k=10p`0f?KTzhcNM73cdkT zV2S1ncALSN^&#!n1I~fJF5w`uWWL6Ru4!#g^yB@)y@!VlwV%@%;y zGU59y1oHma_n)p4f{~dTd?G9RcAE<`gy`H-%m3Pwx=>@F6{29-t0vNabEK_xud2S$ z1uoyCs;?g;-1}6`$o+)u&LQjqYTX#9YzI);rva7kai0TK9T-&yMzw)VZ6H${$kYZh zwSi1JuuMmLI@;5LWje4-M;|)+(9wtP+Wxw6fW|to&iEOKLhw9TW}#|^x#g?t04bdB zU27shi>6wc7C;ra08TW2q!3OKtL=Iz?k1YeQ&AY5BeocV7?n_kfiQAKh-QhE;1y~T zAvlek7MKZSv1n@u0T7Gep=*V>+nLDDvF+R_NFa>u5CU{dDK!Ot6y*0py2J(^a>-PN z6c}dA_FGcyH5L0uVbK)(Y2h4&MIET+0pUUt;G*&pDT>tyR|fBY7=ii#I09f`;U$E@ z{K?>U(-;g|Gf;Ws*vLCi5qgFrj95%}uU~|J@8~=`z~7|w(E63SoPK?aF8em=tY1dr zMU?MJzrKPINkiYXCA zWV3y$7DVl=ZJ(;1g6WPFVMkTZ@qGtppQ;7spugt~L2|j0A^0_jPs$L^&fa^5po8*l zP`(Yyw=>H33m<1C9;Gr$GD>xn+9)l-`)B*F0=p8dAWN}-ArG$A^UEC@N6pNcUo4v> z^R2-pvTvlQh9OpDwF)T;){|ewsSK&K-V^4!+iJ-3YKHy#eJ-C1zimWFbvfV9SssJz z*{?&*LikRE-?+L?2q+MSU9p7wrky-V7_ zbPXWXKmyf&Mn1)GtH|GWol!PKNz#@)y-f-8ynvy#3bF)$p!a?QP+h7v-4WO&#hskj zQW7A8^~APN4dhE6`3)rS6YQ(zu2^ch!agvA01LAv4g^FxxA-1aL26lZtbT!jvHtB- zC*lUcVA@G#Y#65!v8o^NM4ytnhiWyFS(l_P(INk(l^A49!?SYt2<)QbhQPt^=LJsj>+wZSLeD_C4Q48AdC%-8xZQO0zq?dFuh zc1{_78*^rXoJQ%4GK9u6I)65Jg9dNV;0+qQL4!AF@W!~pC*umAj4OOHuJFmY!Y9)e zzN1@zUa--K_}(`I3lxALhcvz2_hz6U4CLH7$cL`BD2vi)uHHg<~0`DSZXLe4XDaui$v3bykM?j(NVr{_od69%Lq63U9*C z@aq42d42frp)vwmknsaq5-9EP&(DX@fr^B&mk*IU4}U5rr&vzX7@|f_U<8pHjPXK; zt|TYQ)bf(U_~+M;p=PNGfrG_Z$tJfzZwD$dstjERm zjTGc{KN?xrX!FB#kWX#I8pdPp55G_Ru*QisE7_hXjAi1WfJF1>EwiFOSyyaHLnM%pK(q2MfvUMAj~K!drqh`i9Q;s zZlfMR3PrS$dI03_eLp&cl}MEv%_VSDs7I56Lo}gNeklJR+Fuga@;K!RFMJV=&fa-#l44+f@BlE0H3(xxHGqsa%_Ae!&AAO4lITaIDH{+TIu{70e`6$FsaUcW2c)yYO z8qzvZUodrjAr^-mT^&zGSBM^TO2W9_lX_pILye@jctW*ZZ3J3Zl^0m@oxcHnLJbdPVK!TL79_>f1 zg_%;)z23XL6xw1xd*|I-|PFUoSI4D~95Sc1u40(?r6;cJy z)K0h-qpTH1scvv&!zK5t@#y2@RgOSg_;gP6nuJTyr&|T#F@oyh@xSjl+vGFV#Riv6I?yGaIlo{5GD&64zbq z8Ds0bxGXgp1}x)x^ifSB;@M^2$mJ=4XIVAnPu21vnRjsr$dS3m5Xup|Sc(f4+vy8Xg5m zgiTd)%(G|kqbbA*ny6QkTcn_lg$j>X!?F+cM8EtNwQOV%2nFNneubb^Z3FCXw3nNd zJ1u`Qf1GZF=B(7s68w>{^T)eUj*O}_EKxr9*KJ%_V&k68*v7YNR_ripHULP^-;%U&l$jcXmw=T!7k}pS9GSy0Pq%tJ#L+#H z2*OqR09lBqT0yM(t7O0n)X)CLz1h|DZa8ka*&?mQVAc544}A47qx05n?AN2s;xV&q zmhF{`TO6y~^Q={0v{Q&b^X|xY^}plP8{-!lB$gyKdSUCi^JtM$Y6{W;T}0!OV?ju^ zp%Bi@v|;-tkAJ+N?3Fm68Ix#POGG`{6iQUsMO|k2N<|K{RE0S*92?A+M+Peysh(~^ zRnTJ_ja{l>PECAlVtS*gE(&$JriolJC*e)&lbMu{_b=nMlR_DFLm97)iifkmTNz*Q zz#!a0jS9sJz!27;)JTL|ktw-G74$U~+3AV+1fk>QJJbOBp@2 z=K84or!#?Or4Ub}R={uc$-3T3rJ8#q#z?5?en^7TEva4#x0D2&z|pzcj87w`!o&Sa z8ZM&%W=g!-);6)qisC>x6J9_1h) zDS3jk41X!j{B(B>`rFTd{$EZUSk5`K<@5rzn9_b9gXfi-KXo?Z$mqtxLhm*0&O3XS z%ZeK}kgD>mo|hAzCgCg&z!j|XC5|2>&Cbzobs~ktE^E7$(&epi*juh$9h2ASoLXZo z0l6(44xRGY+#lM)H7$gFx!VP%+}djIgu%Ah0)JKurF>5)3vf)Aqr;6DZ8P$Gr;7Ki zdKD*SLm#2uW~FM$?yll;@A4(RWA{_| zy-mHw#beTr$ccK@w1Qkpk!Dx!o2;dz*yG28ld>(`2I;YaTCP{^IiJQ%*Q8c?he}CV zFMkMcIq(cu60E=bf#+yYDXhQQrj}Adva>d9tRhY2;>F9B&q?tFrmbtI+9Uh+I!XZ- zPViC3q)IE{C4FL6zUHNn>7-9g7nXaN5^(%)#o|I`nhGe!K6C+u7@z? zP`!sS_MK7cJ7hA0LIYlr$oe-2;r{_<|25Q?0gyWtml04Y6PGa30V$UknLCt!;qflV zpWc6Xk}Ud{H?Q{OwhjeJSLCMYC6XM5oSzaBsm6CoEo+8)?X}o=Zo1R|ZpZ<8Nz=9UWhJ)2k=->}O|Nay|pfbX`Z~zcN z;o;9;4!=JAZyuF(Hs6!^B{fQGX)V1P!3tyi!J?+&O*Owk1>b{z#(JTG1^!YXNmT#* z`P*T7^W(P)5ug$XZWda7jn`nktw#_++qGpTODxuS>2!F>R;gLP_{Qyj_*>C=`tH&) zi{Yncc1`WosWyT^(Y++2vrWuoPQ~ExvTkhIg^KGZkwblAcckxGDlpzd1ePwZjn05C z-u}1~0D==%*@dj159t*UH3{VPLa-#1;*n(a%gyDnDol{V+JDe7ww4J-36N?QkQ{*R zM7!g2g794I!qul}sl7*NGKn>lqsy$hoHr89Z z+aMv^;_8<@dn^ib6d@ZPWd(J;wt2x6BuYv%Mhp7?-<;A)4u8#e&DL~^k5|$e1wioA z8vllLW|S3Z|E_dqXk3S%=Cup>2kh@kWt8QW)3d<4sf>`L)vqjn@iB3?SbJLPcc(J+ zP9Qb;FQl?r)_+YZn*{q{DnlED)BliDY^E`!xZrRWu1jNz6BNu=69a9+nF6YP$xzfl zJtQet;4h*1k~Nn8H~jx#Z(VY8ixgUdJ6mazPOn<+X_&t~0HXuzkt)5+_I(@ZIhzxK1F+5kt$Wr;dvd*Z@$JRG(tzO_q0w zZ}bZ<3|V1swb!K9$V2j%qDtT~K5F{`L0d4bJSCfLuVykx;9=K zr(^il*78_?%N1U;=doYr2-~AgR)fBiU-dj=4Awl}y4OT|Sm@tb5h!>T{jd5Ejq6(K zh)@2dG4!-T*J4O(QSG1e_EO^9CRvVBz2#gOwLH@%wnvLG+{*SowbdQ=Zt$#5GIJR{ z*~mIy=an^z*nZtD`qdF#PO{v_EeTJxbKk|obM0Y&nsplXs2Znoi#`Im2^CeOuDbGF zYG1R*)JmQgHo0mg)=ym+_b&tl`bp5PprUE_XJU*`(OOrg@u4bz3OFUCGjkOMkxT;~UPXZr1kkMgE`w>0 zsYK=YY^A!}$mn`qe;*TQgX#lk1G&;a$*$hE3o6Ew2F=`KO*Sjjjw9%;a=Gg@GeeOZ(=t{DYdCA3wuP!A_p%3I+)K9XFGz*TbfG3;)x z1wlaJRG1d@StLv;M@e>Zlx2)?K|P#=DT<~D>NXPgIJ=!{ysw;(Iv*V~?8nG|Q6PPh zN~bkGoE!y#VS(g>$&o@sJEFQ%832YrdA}pt2bd9Mr=aIi_o$H#LQ(pfdhBa$+;f+e zXe3Hh!;aaoDTG!@s@048f6SxEcjJllH0#PrzsCkZYN527XK7(=n&~=IT=;2>4v3$^ z4C5YRd4>uguMk6SaU(IztrrE}oL%|?e{X)%r+O|8RWs>|RV>5R1izcHw2Y^OY64=# z$2RK~;Dl0o9>A_0%*axrgdTx*RHJSpIvMYDsH8(z9+u+2hj7%U-z#M~cYk=mTob~)BLcUm>JICvMo@lJwOp;cjV13n0~$~JD>tc3 zhXOYbHk@teUk29$E7`UTv4E~}aeDW-t^72Rc0Pc^Y1?9-QmW78w6H%`pDXLve_hsS zufORSzuzge9kO4QcB5{;I2~TfBQpOGp`4_yoxg6?{Hw*c%DEbLQ&)amqDF>N?nGMu z0=sTzm+?mf69h3aHZYelNj?;p>Y+Qpe*ka4fBgKylj=oJflO(4(MB@TChLjRi?sgo zG7a64q=me5uIPyp)ZcsTj|pY1xNs)vvZ(O#7fBfJ{`!ruvapDi7EBrFb&y_%FG&yo z{VQE0S*dt0XkwFACO(riT16;Gliu;|#m&PgRaD$J$*(9q17*#age^020EtW#e<7eQ z(b7OsX{+f|J1!y&i%+(o$mUR*X(6+u40_OAB{=M|L6hTYGz?1zgxKyQzT>C+}zvPbALnPklr$Srdm=EHlt>+Gh&-4tG%UUkxBO46XQ zo6{aV|M9K+_4VWBzhjJWU{dSLf4}~G@ed>@rj5G@!5qlTU;n=R@$yUGYqC!N88Sz3 z0j{-Da~IG|DNE7}IUWAcXdo}4SLjiAmYd0Y!b|c?{S*9qcIVgXg%tiwO4Sbn-fQCM z{8nhq9Oa3w1rEB9jqh=20Rpi7!*$BEJz^F;z78a+7W{^`cWu=NOJX&PEwpxBlq!fAN%j!rEfpzIFEJ z;P-D?m!PRUj*w-4la7d4&44Q&BNnC^u`<7ihzTSIOyRqWgb71R>0YT5Nti;xK*J|U z*rRGdfne4Y0_mB(H=qEKTsuxKX)4K3>yoDE%_bFp*4&kETgHVLw0Vy*{gjKCWvR>@ zFbz7Hn#b~>uJd7FhRlC|Z?cv6 zoa=L@IkaG$cxl3`*hUAE0?5k;xga@UQwsiKhFAWl0|ihBEe*(8Nx28OapN^*8_c-cf# zE0tsOq@7ZRvKi=HFB}&(dt-*Kud$Y>Rg0Gve~F}%=AW*(kjhX&lT|l?cG*Vy;(*V7c zjoK8fW+3_om_-NN6psi7(X%@na2BUUV9wQAzb=W)4fjkLi;fEFx)KyPM@gz_{sY}m z-aI>}H(GKx)o>~1ja;Bh!tssaZe2~>Hfe5$H6)w6eU?m@BZn4@B`YX!W@1->npc&njXT@SduvL=z_I@Pzz%N=PF9{5u#x{B|_ zY5hc2j+WYpBUw38+1jmrhaP$D>4>6=tfGY-q`B(jA--mdFH6PMzOhkBu81FY()M|E zYw;5Af6!RpEK@MqBBz@CkgAs&ziW|ab3Gsn{`u|$oOV(?q$#FZSU-Z|`Q^w=Ha)FP zrR`D$Eb=Bws-#0#Cep0D!*Pm-2~O45`8eWd=Qiu^yB+k}1@E%Ms2UVA1SE^iiCQmIQxO zeFs_+c?``3wB)vI=~rw9e<&B)g|>BYvrvRg&oQXi}{lK5JZ|31e`6gL%Z_T zf6f-o>XF^I5N-rRK1kVt5m+E>uy4ul+w!Pv;C5M_da$5wnBZo>L)Ee}u5Q5$fpNV{ z4mq?uS;(Z#iq(|%eB<2liq>7b&8ewMn{6x|#g~xMl$NT;K(re<$s^J1UXG$yiQTFd zOCF-Pp%Picp!eH+hH6;_wpA1C8iy1#e~~J8;y8Rwip0$OaV)T+vVnNtr@MCK-FT+% z2E#_wLgWRVd97s&8*Zl35ED5z_8k!^8B8g9Sm&H(f8&rEf*6uBy_8{GosDFT{#|47 zd5bE+PRfZjoxpfp;Q8Y&f~w|bujY`YTifh<{4icWAIMp}9xO6pf7DSHu#TkGe=wW@ z`~ObtfuaDp{O1t+PT`Y?eJAA!V&ChzpV)UTzl+$Pi&iG~&!d%z{SsRHh<(@cZz1-6 zWgn$mB=$!2#NO!75__a+-t2U~OTI|%f2-6J$i3o}0|vkNUUKiPDcy=S57FBi=FH$};@+H$ z(N7Y3#f+0D>h3d%5;*971fjS7Fz$(}Q-E{57<4D|dGJ+`lPB}}PRdDqzLRnyp9etZ z?2&skPLlB9;8fb8*l}=bw&{16`3yk>c0sw2g!}!K^jowC4(@4U&9%qZe|=}+q^9&K zI>A26r)@e@PZTb1(&mhM01AR~A{o3>rueAYm%2Gp`s@4Xj&p}tNC!Dey3+klbv#HL zr@2T=>i@8`J5?Jt$UqH8j+VLoO{wed9Vla{@;Y<_s%=99FQ@jVdd4kx<^PW;A4HLF z-67!Z{bAxIM6zJ6|K9qv3ac5ZCjB2v=+Ew#A;voumq80R6qih^JG+1A^IxyOJ;_YE z6yAh?!>j-F<@M>`r^<*zLBEn*{PikJyvMu{2K@$>nUkwHMH_!FiXn%U(^>HWg*Ag1s? zBq7Efc)os4|A+Codw74oBw@#s@@YXqbWQtfmqaKu6I=iM{62Kw{PDF)PgxL3&iH{F zKQ9x7j4QmbVEYx3E=aWWGzMOEmQ0iZzm42YE20;C`UA8|!3H6P40|X_yH390T|eKv zT+%R-5>l%fe}VQ((rna8tIwccm{724Kbo!8(qQ-$4X*62ClY_#EgAMlK_2^E;bm2e zV7vgS`V|jZR}>=2B+f|Jp^QF9h4Ks&==0sEtZVN$b~+{O5q1oxBwiz**+gcXC?bZeo)JDJ z;z+;>fP@b^`;&jXJVFY8aVvPQW{e9s z7V#kBKp3@!p6o&FpU$aZ8objG0uts}+xv+6l$#`TxZ zzn3LN;Dn)>q^kO_MK*D_-gw!E1@GI6HwaKuD{O6w zzhBr&dY)rD;_um`)DOusI0Gr@C3DFpW2$sa@y!fYx6wV46jH{*i%tpFiaJJ_76Xo+ zzanL7Psaj`lQoZfx>h8tw@Yddq^SHZY^ZF#*F1Jl!k6UV$w47>$8wn!x7ObqE9!J@q`j%?U$<&uNECN)XpR8CZA>M8f) zPtK=_13ai2P|=fB^pb^db~oaTFv@w==E zmgJ8E0L=>EysTsW9@^p}rk$2!amX+jChhlz%y5x}Wm?;oxKIZCofWx_tMLk{>B?P}sPwgjK_MQGYPjYWgl^x^f78y6ruUh3S$s zZ^j_yIC1Owc)pn;q5$Yo9wV$a5o%}8LI-D%vz`Tov;Yq8S!k!&xF76UOr`!_k>}op zX={*x|8M95l#WHm&B0v&-}+t@;JZ zOpBF5yy1Kc{luJhg!4U&cs|MM{=_Xtyc3R#=xzm?!&(?xd(Kfmq=lga^njUm)(ZaQ zwgQ-ihDM%IGR$n3wXCtz>@x+!no;T+bXW5{uw08#Pv1_(uL7@CLc)yuu_()rN+^Go zd8Ib6Z&H#=;hX|2CkR{IBNrvkx;6SXe0DWy1J8IglV=Vly;Y#+z~sgh!=J|%)TsOW zsoi0z52FiXMMu^<^Em}dSWe=*U4OX|98wG@#fqbu;ttCVYk9w?Pzdm4W@`Ju5*yi0 zkPfV{kr4Mj6J2Kk!nM@L7DBef(lK8S zE+Y@6;9jqVC+nL0I?R5s{s@;u(&Lc@2)f2QUG%!r`m2V~v>8?2s@&w|`<#DO$TNoh z!*+y!RKjy74TD)r;f>Vzs>QT_1x^4h1^$JvXZ`Sk~#!h(czDz#3rdKapRGOgTh-#DQ z-^TlOYpOeK;98_tW?U;PbANy21B0U?%}Forh>ktpDMVqMKNRn(jDuB;4VM<`-->nN z$0i-k>ri(t@$0Q<2i^#+{4YW~B}4K$-q=pWxLbz%piT>;W)vKab!>9zRe#Da0XyI* zNg5soJ55Vqm#*(xuuB(z8$S{lcUt?A0BXGic4_AVcDnt!Ky^MnlT?3MS3obVdj#SV zZ}nF;b*Ht`sm@Q5snlXqF81!+!TedNiu3GHIl%W%NpYT8@nt>k?U z;U5a$fJPX?1B)8~&IXlVFK$v-hYJs=b~~o|Fc#WJRQQJHNIRqHfHdx28vvc~I6Jx6 zu|AGRMMfw&m-{=h``$BMrSihaW&Wx@m#y6HD!{gj*@ufN&ZN@6pP@1y!6rl4tmI?K-+^q_BW1n_k!f#_n~H2>x*}bJ$r1oMJ{9RELWr` zihM|kC?^}@K$JNSiKJ09uxO*wAe9=$Ls@^TgGzOZY|uLK)uFPFBKW2%w|6oal_O9Y zJTWJKS^U`^e_8P4*oGARAg3lr@S^1DZ5~K#lO$yzTQlg8V$O}MLrU6|7aNj9ZqhK1 z%*Eek8d5231c*;HHr~ubGH!!G5R**2dElgNHrX(Lo5qDHa%$?72(mPWg13cYlU6|H zHetmGTCI^7p;{vg-kLUPr3^x`@nRfdYMMbmk=&#ee;cHfHaAR5)EWbRoFkD-gMOK0 zQinm-X)qabN-$?+1GOHY4p>qQ5DkiD&P@dcE1M5cB8JUv(MkkEk*0#CA=i?cFi0?K zgVi{cM2!LNP*|GWnud~d(-Dfm&`mKsOQmMhng@+M{j3bSUU;~SruDcLzLcs#Gz%+3^|?B!aL71~0N=FK=7zPg z$%_gW#HhJhfj62P(nt#^7}7XJJRkrR;nB<}a2eZ}5#I~9k(^<&M@c#u407ZQ;H@;- z8E;LdpZUr}oy5XXB3#mGXT&T^qsjM8vq>Ref8Mg@!86vRjTT?wHIHi%Oag(OqZz5qYL@BHMjT4N4Cif{%wlW_$fPG+BmLNB50xoOAoT`(*g^DHa+_E)A74s z-z~<^E-#m>Vf=h~^=5JPDk8kZ)A7&a*W(xXfH|Fx-!9HquPCM9PL?VMY&k@LUmNt{Oh-0`~RQ(uv)#l{^K})f3f=E{p)bP z{Av90{ZH?X-zG;`z;a`qlEx%iiUk;ztN{F6Z5yV(x#Hui~xTg|`aKWY>5E6V;F!5@>mJ%T8mJ+_+ z2ra(D3db0+h06W4NRfj^_h=3YKIF@+?nacLjos2hiij|Fg@+BYsA&#UWDe|`e{QV= zVsMBp2klk@E?U?SqH8t5!ZF`ikS||(mdhCa+wpII|A+6-P!Z!5HokoS_U-9DHU(QA z#Bv}k!vU;FashGjAl3|zLvY!$4&xWgx67-S@8JFe`wxck1zdh{bvdNz z7~u-P^(d@O+sP5G*XW|DaP(@z7e1E>UTi4oRPI#ily<6i$~IJvouW>4e;K*U$X!Nm zGEVOr7okr`NPwHb2pPdG@MM9J5W!o`qY17iWDVD?mRheplB z0(3!)?2|nU&JYg-sRvlGE1`@yKzo&-0<;nfBaB7>j0~VD_t!#_g`Bpg$Pz<>tM1bx zX^t_a3KIZ8W9R2ILwv^6e-j{+B$x!?l5-9YV}v;f?Z^_Whzw>}iWrT7orHF1ak#s) zA~$C4?v5-Nu$i9D-Am2KC&g?I9Do4sa5I@l=QJR#1}`m;F%suTax*4F{+F(VL<(L} z?9<{wzzDE&@M0}h03rNU34oA8Vx+HpI{_;u@8t)KhYVxHS?1G$f84Wms{=eA`Tn*Y z95suw!4kmL03>lX9RRt3g0Ln4h>U2MVg(kK9Y6$_8?~WD0C0_F@m_n)@u$c(wP1e1 zW z2aW(yy8!DAjt#T~e^Np*a}X;x|B^#kN%5EI!2#5#N^NU9x@P9vYrv2h9(CS~nAr=V;E3~0f6?B# zuW6;0z-en*F(d(gc+*ObFsXLaO4b0-`F~;Bgg~EAxuG_|f1D=VY94~Jz{a;x4K^WJ ziVPKq@W*Pomu(wr@UXLKUjfW3oUw{NU_CBE*T1P9YN_-DX6%AllO&h zZ7EX}Y}HSHSk!BwtoK8w2#%SyiJ+7eBGo5sDS5P_e^$-hJID668L($5t;F<>Ac{7; zuOAhz?u1{wmwcmtkx|kK4KbA=Q*6l=UfJfF2`S;WX|ES;Zhr_A z;|x6mRH_XbZloiS1Y_MNodK&ztrVf;wQ^*=cVnuZjNfQXDLrO}KVM#6uddE65VR-w zV@eK$Du)pp z6$PQUWh&_o04F&K@{b`J5>`3Ra5}{h7CnKll@RYw<+4`^t)(VIR0fF2Fo={HEFl~N z*R3T4aE8qGD^dKYUSiE&BN&s;po7Bc;Sn1hf4mp1G4IuZ5^|ZP60Hb;5_^kohVB@1 zAiu^D+A)7sKM{sbz-+YRlrEA=6+tM^0#)?B^^$iZnYU>YxGPkyPq^cgV9TdG$Da2y zXe!w3ZDj@FOb}JGV@TB7{7Cx^m9ROaT`PfQ3u=3HpqLbE%n^wki_J*bJlDBP*(%{p ze^~Do?$P3*_8Wp}*I{$^v)2+2xZemtPyN!#dcP5S2c|syerw0?y3Met&;#pJX4q65 zJLx>w$-OKM=1^M@OEi#o{v-K)h>yE+aQ7|=_8S5Cua#hw^zCSQpArR25wYKE6+Zwn zRr{cp_uFItxr2O@qnGhnkm}PRtYQFNf3+UM%Eh}|-$LvafbnTvY z)b8nywR_TS?d~_$rkd9;tZk^;sZFizchxo&bt-j=J0+dUo$4~E%b+fUW~j9Vk(4me z0$+EvQ1>FmsG9@6Z;!R{VhvSj$QFZGYM91vAeD&t9@A|t1WA^W34~MS6oD=8e|M~o z5;$;6@9VO(xI*RW%2Jbjd}4Wy(3%*bwQ@_E2p9vSoIyrJ$q(6l+qj&)Y9SOc@YsT~ zGS6_5%czap72LHFB7U!HzY-7QXW6gQc(-G%#Rf<0)k0#-2#2U#0D~f+2F(E@P)1@u zXK%fT=epc(9%cXu(jCPE(~OQ!i0(HXp!bk(L}wBJG$93bJF~_>r0l74gf7+)5fG~1`U++PQi88Zl`Vj9XI^^u?L$>vy zlvkN@2&W%ivhg9TDI>fbBpzt*H)mo`g=GH?+4PDfmm$VG6#+Asku)b00XCO0_yi}H zoWDDge@9mVIsNte+k?$pwApVv-f}H#HSb<+0aR_)IgyFl&>4}?IY)-PFKQDNN>m6@K}7}S{`cvFvq?du zBLaC=`k(THnL;T!QTaicJ*Ui#RXv=!mU;4de?Bi6N?r!OX^yjlIt}Z_>z^Orx@P2$ zFIAHmf@;vUvcXxOPZQ%53SG;@5L=2(@`gMn<$J$U)iw2{Fod!KPo&>0srs*x zNG(_RbW>7r(SXI4V%ZAUC1Eh^s^i#fQa3zFFn+4Un}qUe1aZv*OELxMQ^1sf+|>D! zey5uCnV)J)gw_Ue}ffBn`- z^iH!AP4tUJ`W#u|dQ!@`M8p|e^DNm>D5_f!W<#Y4l0&mrM;R%|6~`J9TQLLj2_D}r zv{a*F$RekPEruR+ght(E(P-ynOfPT=SI(%#?c1AzsNDoA$2PZ9Q#puy&pTf8NVs`z<0 zqz^vUe|gSfbiQzy)c7F*XNulh&xHpzDRvlHQQynV8)YSbmGRtBe_5I0qWcjTi5}V+ z4?$oAdV=tNhQL-9qtyru!ZidojJ}aQq~_L}WgaGFe)u)YPZbc=T?k$;!QnnY9fcKrFoLja7h=*IAG#1r?eU6)8hpYRH;{FObt=qJg;ftUhUP7Zg9rPKZa>8B1y&Tnf5vwEE9z@QfjOdQTg<=H1)P+u=Gxpov|&qsX0s5Ksxr|ADN??* znr}BsG436`qnE=P&BR-@&1en4Y@Y|*Yayv4AKC?JR#<^(8j76}O~d^cqS+PEAZorn zsHX&4NO;~;Qp3K1X!4A;*K2^+uGgSwc~x3=l~2MOam=;pe@ou%HU+O|pqbF|jRupZ zY4I&p@5V31r5BeaJ^pflmIJxPbxDIO_!-pz{z`A97-DkQH;k;g>jNC$^+6jjdF0kz zAJLV&J__-`yFM57h(FWGavx21fot7tRnM&kkJnPN)2$#R^x$a9bK{+0qV=)a*MVRh zB{UN7_>9V|6g#Pq4s(y(!GNSY?b0(aIVf6=3cW1&Vz9{+vm=$#;9k815x>y z{R&7vp1w04AG7`i#&-qd!Rfj4eci?Ot!e!~v{lq;mm$VG7MIgDJ`$Hn#yh-!MVc>v zzW(;43+n@)XcXJfSw~8^8Tgbv86p*yUnI1dU%)-5J4UV;(|4IcamF>ym%Gc~Nw}a$ z!%hDC6ldG#GJ5G}47=DuRpzqIvzYU&o<0Ul09~qAUspKRTnHgs%9A!D6wPswQDb{SKkXTzm;2 z(@4RY!v7_?XvootjZtm}6Xa|}w|u3sPnl%)=iSf&qb&ML#!olfTg$i?;1oDR=9ri( z*r>C3`&#|_^7{1e!Y|l=pu`7sfBkrhe-N;;E_BW*r$hJi@9z84?={t8l=_}ZOR~JS zmU(V@tC)Sq!KmmYQ_B}+M(d|&67RMeo@&^OqrwN*>VN_>sJPHu7!sMRY7# z18bQ;c7V^T-iuylI;dA9-grfp@;jEy6dN#(B{_=@^li|XJuHQPv824_15y}gloW-d zQkW8J@w;$5%~9w;p%(A(r~;W0c-(K3Ii(hxRC~YECL7sg6=#$sRv#9ZB2v?IKwOGR z#kzV$Yp7sJpy|qJYF2DWl8Rsj7J~*)L$PTL*i=xbs4VVwIqn2eD`aaf;PbW$PGC}W_GZQuJ z2fOtNVGj7#tLJ7H))!_SVL+(68+2jP-PqFI;H0}LGa9>pn>@SjZY0j9qrM+$gu6Y} zSrP#F$_03MQ$R*Q8^5n7c#I_`{lGog zGo#qKID6331?9k13m%6&vtM1$L7ozChC;ir6d@L1wcx?HGoo7xa1xHHs5juKYQ+YQ zB5C-g4L=b_RXa4`sA|Q@IEpliCd?@~O1d4T11(N}iSxnN4vs1_T2G17Dfi-(cs@ED zxbd6mYFPUy426oMvR2x-3qy%dN$0pmX$3RJq$H!EMllN{rM*Sor+T=^QG)} zKTa_y6he3;PQm{0_BMcueo0%J-8DN}D{68T<7WX7WGRgneh~l>c&q|6B9OV7kLtLf zi4614+{vDuK?b^F7a)w7R+7Yo0pfG`5>mGnSX`+tkQqv6$tV>=7N|T?bG+#q%q+4il2#} zHNPi$45H~%nid!*%;dtfbGqW#Ln5J*0BZ_IV}v5xG5&BiL1{LKV2?nWALx{LPkbe< z2ycR7!tJ^H_vQ8Q@1d#(l^}oP2P2j6!{6TzVORqRWBouRtcT&pKf~9i_x>JT zD4IeVLo_i38bRa+qm_`Piz&z?Jq0yKb;ke4&qfA~PL;e@!~Fc^0u5V~mzAcO(fae_ z+t7`?JRe%?cv8JAz#PES#4+m(OF|p$XGGpm}rD5Hgw zv_lSMEqlz&id*f0IiTVd-ceko`Uq1c%ls%5($mC8q84^b2*h!ud`}UcRwaa>6K(q$ z*S#o6xhxHW0A;E)GA9<3u4u=HI(wINR&kav{R)?)bC43^bcSmEFDF3#kol2eVG2Jo z^D`NF3F+6%i!l#UfUSS&H%bpR2i7FAm||8-QqElzG9+LdQ3Ro2n6eTbW5(n=;(hhI z@re|%M(lBZwe_aYj`XY?lcGT7HHpgwQ0?XwK9kGU~m$8e7H4Q0=0yOlqBQK`s zG?qVAv@@1JZOfPPG5f1)d=<$#41UR%Q=Af`f6PW-)=RVs+|hrkj7xkm_tWCPEWc*3 z;&`Z|EKk+;x#m!nv05MUg{_^V)vAr79c{iQnhJ1X^fFtd!4mt^EK&T}aK51$Bf(oC zdvN5aP=JB}I(y{Ni7!TYRbs#_#Q@l@29G`;G}S-~R+MsVPtG^a@ZETc$=Zu=E?B%u zthE4~W_ipOp#p!lma|xfb;OjMgqy;;oSTyWMOe2U8cpGY9MDC5#cVXPQ4DcEa@o|t z)hK2eB}da#){jDh+HuC_oY7%HMBzc-91CiX!odj3C%S)+;*;HGy6+XAf+&Sc3FtS2 z!A_WkA{;`aR8RK%NOdxDp_CQ?*{jTCyUU!;FsNgxH=2J@WUUDA{EQ+)W_d0E{Dxpf z1vsR(=&8;iPKkP1=7n^{tcB#hn=j9)OU+if0D?8QO92|b!+lqP@Y^7eW{_*x1A7P* z)5C`JpVMV2IR&&gGy<2kU#BLm>Qe)7p2j$f03(&30IK}FJhc>KtA>?+TX@sRsz&P< zv$97QBmaLQ>{5>HI#cUHnpj01QVR?Y(or}~l&Wurp){j;q}h5QPzs`nIkFU_4Mi(# z#!$iOrWpHJ{R1{ZFhb8crspdcr@J$kfJ<(zoUkLX56l$kEwgRUO(xn|=@g?6$=z93 z>DcuA@^Ya|`MNYgV@Fg*UUKof+!Sdr0%V0h`YC^d`fQLOCqh?0uD4=+=F)b}-IE6-Td*&WJWRYO*6M{!J|V*(A} zVkXOu?w(gLIO82)854UaoKyYR{|lztUxOK7qJf#HE4UyS6=-Hu8q-{KFGeyNM_d%L zM`(X(3PvbY8)r&U)s3_!DemNyKsHU2o5HTO%GwEc=DloU-n=b&iy4oTZgPVe8v&Z) znj)00R*?GT|m3I)@2e|@v!+F2TUZs?6#+CpzoY`@`HH*8`+ z*@cbD9uMCNWCC|PnswIkjb=;*vtx`VyDbCCU1*ZiEJL=Qff#%K15h=3E3}50q5OZC zLko6j&tb6LQI4Q>lW;NOe7~69q}?j~sqMVxeU!d%G?QcZ+DU5Ihw$pw2dSeoj|Zu_ ztKYBg{x~X;+&b@7ayr?o{)7=9w;u?~$7avw zEqfm*xk+@>E^+0+2LWN;Y#uck)ML{w)VJk0U`k9ATmLr0+NNN2ZuG&a%y+(JX==Lp`VW;E;4dzzRyqhtWH@SX5s<#rasb4 zW3rH6a*tSKkbm@HD3#YRuo%l zd(NlV?(XI7;lBk544@3HpnrZodgjF;{8w)+^(9CMYrExQf zh%bD-uN#gg3=zb!XtNO#O(+w(f)sknn*55=pUi`JiDBDKBC*%N!Kix1v%KeI<#JdW zN2{M9N7IUglO2igPDsx&<{Cq8TG2a&srl-GH*_QGxa@-$S<-6dB#rA4-@E6Hn&#Ce zmeC^)9_H&$WU@w?;1m+K4tevbrmJtJ)e^WC(FB>zc!xlr0co>5y&TM9ag>W!a%|(n38h#9?J)f@(??~ zQ(9ze&nJJ-;-TuanCddlsMz!Yy2)b>*XM6^;8xC-%|4HxB6_5fmuz!xaUNM#N^@u% z<)42d>uh8th;`^$jn>O<*<_J@LA!NjB&U*HputPsF+$6-i|k%9Xr^<$AEEUsQ7YBZ z>~?``bb^lZHEq{)0?7RGZhS%y7(r1ZE%CdlxrUifC^J zlfSXo^b-#Jx1YI7P?hmNk7RdKmm$VG6_;Q!C>598+dC?MZtS)W-sdU&0#zlF`U8Rh zNt!u8clRK>i>`{ct1jC2UzGZxEX($coy<9BG2BT1;pYp| z9yve7%- z($slUtWVRlY6!0^nUZG6^ApcSu^esvZw((^`km*?^ISp1S*sk)h>TJg9Ujs|b%r-S zx+?iP)(*Y$6r1GuWQmWqlWrLoVtg!=F`ID1w7PVE#zOiRABz@wt&Fe5gg`=;Zt5!c z=XtV>Hi8{$v1(wSjDPH8%t*>zkgjh3TpdYTH7m5U&s92=+4>pNoynspgz8awb;V*@ zfeisBt%yGXEl&Tk&#Xtket8hgF=}O97%|7yx)0j7UtuUnr>pX6eI2{Z8dskdZLGG6 zRu0gA!7So+8-cX7s<@RSfmJ?IljG|Wd{H|&P&PpUwYX+5S6!2jQA2}C0H|=KEuBr4 z!oh2GO}})QJaaXiF(a@~=5Y_(a(P4cRYYIiQ{bFJ>j%Z3FUeBbXVdP&8@sE5qg8at zVCnE>`1khy@Xw4tAUjo@EZZ@7oPPiNA)O$9!x6*taI%V-{{3V6^WlG^)anuAF^A}E z8|^sqENlZ#S&miK^GR@Gn>A33=*!Yii1qY#vJ8@TEo5dGLfMD}O9w8&q{2aZn!oZ^ zTa0wu%mkDDXPC+Sl0J*ApcMnBmDYLV7O9JouPFsYy@>>GX7n`90`Z!8hvc%2F#z#@ zisDNDw{1Mx!bXR-@6y~a)$1?SD!vO_Cvf!0?(D`H?v0~ZYdH(nP%RkN2y_TP-hLQi zlxW{70w32E5;36_A}z^33;xISL{QO$QJT}IEd^v0fgdG-zMGYRqKbI8m3yN=uU3v6 zdPy(6T;dIpGIN&FuUkQ~&ALN*BvR^spbSz^FX!CW<(QO?V@mx*=~vv0bL~te9end4 z(sL*iCe%Z~QR9O#b2m*z%Q(PFs^|$Fb?~yjvZD5{Awt*VouDHWCu1upHE!_sgjQmg z6V!7)hk3?A{oG^mwmhevQO+@f=hqjOZo*?n4(IvU%J4Yz5*s=?Y5KW&eM>KYES^Kr zDdWT14wB$Wc!--75Nw7id@&J?aQI?~D`j(6Y4RlEDxGtDw9UFJ3V!cw!Za6~F=Ue6&{QbVaH z(oXzj+iItG_)dW*xH@JNGkXSqL5Aw?MxpYpusclADN;PJ) z`ZA7Kdp}-{H@E)%a1_h2BSeUcOnF>J(DNFGl)FW5@}4SZ&^-eg5rg-?VbOsTHsTGshl;@s7WTb%n4E!q0CKj!KH1 zxZfmJ8YEET;OhrAOJwE;qx8MaQY(?+>Z6+lE2GI70_WeUR?D_Z9OU^t>$X7=tq~eo z_X&v(n32a7D!A=GTpvb%_Rrz!JB9`fsMyLkLc>l|K{3o2c$h86Svu7kZ1Akd=9#Zw z_W6UPFk)qKnPg!0$F8Be@}SyNLSC8YApPTdN|_|vvD7F;o}?4$x}c+S0{sws&*?NZljb3%J&P)s$CDSuv_#Ix*5 zomJS)Io#B*IjhUaLSp1F7e|SOd2cV!``pPNA<1UQCFWZ##Uuhecf|epS}8T0G_B?_ z^4ZjmfE2nF{-0`pnt+XqX1sl(`8iPvFs_!|#G58N;-wW>N1tYt!s@j(N_X2LCeeXW zrL)a?jEaI8rSx5cqJ9n>BoB|aDr$o-u&B>uDNZ1n&(_?zw=_ghNGrHE;?Hgtu&6w< zf^l89VMT}Retvc5v52y#4{3HnyTW;=zW@ZxWyUhNMGd-t(PnV@VaHO)m94nnVep*H zMr~>fN*;ps-reVy*>PsFz3a)qPRKiSSoVPpgJJ>bpQ}}igwED`T!EMfx?$pj&5HDZ z!gP`M8#F6S;1GtZW(BZT(SEvF0orhF(>9kbjkMfK-3}t>N}E#IFDKcnOlxH`XtdWo z=_~&e^rJq1wpdQW&Z1#Efyfi6VF{n>k2Dgr)M7^iVuPpXytw#ycckGonm#?Yb91ru zY3A5`r!dDY!(I9|!y!THmwOeYLXJcZk55Zxr5fmv2BJQ!@cq z3;GOavmCexwjeT4^{uh!28SCZTm%Q(zq3=@9bL13`xK7@*5AO*^?$r%CkR~pnQ;cm zoHndV_1-Y8{{Nne|WJEU0S4WTY+?*<~L+GYqv1s zk3^vxR4_fRf&qu`)DYk-h(O=zbrhqSx_ZBe>Zf4e!~Cf|6AuR=Y0pPIi;G^=!AJYANcGAqkuH7K;T0bHA zu^HW`GKbN}0#hOz`-cxXB4K9{@#8qZc-NxVC)!x`#hRr8*Q}NvEe)67$!0!22>JEoNo8+;&5mk~HT6#+1pk%1o*mpL~p zD3{OVJDdUYw`}D*iVOtvfqzk#5jZ>*m+@Bu6qlqTHYk@%@;jM-%jxg0e|_MI*bf(F z7bz8jS?(rnkP$sCrHU{qpqKwn5EW5?L^+<*xFM|QsYaE4rC*R{;xoOhUm0lFlaf}N z0aw@J7DjF3&NEtgF8!)H7>6)+FkM=qPN3%9#qK@#A z5ji2itekPY%7d5LQHcckdM3SpiwSIvQ`7S@y1`{En=Nv| zgs~$7Ya1(wT_}!4Hp-GV@1XjojXYv_=PatS(LDWnE?6<~U6tqxClI0Xmu!kHoMJjU z8T2{sL@#1oQQbs;hj1qGpLxi;fqK{_kL*I2xi~C&4}Z_tBLyB_aglLN(wa<1otyO}&Z{nh zzCTwyMXQp;(%RPXxuTs}>Uyq?2}^V+c?}jS4{Bf|xkmdEv>YfRCP)xXC!1DppELb- z#*uw$LXuh42IVx9qB=5nQuwqjhh)o}Zrk4Aw#_?#xNT{fGce=!Zf-mK?BKpv-S(z} z4d`m*%^hYP@4r5|OeigDGl#S2jZ5(P-A#;uIGG;$f&T=n0=M*L9V#ZC4fteFtMvAQ@u1vMx zOjC@1JFOIAGCA{UWn{Flv|mMjWuB^@CFt8iw4O)l4yI}RQekoW?=tbbOA)@X{iXgA> zGQ_8GVrlPE0HZ)$zs$RrL{S(fgn3tq24`HP8tb`RewQ}xr*ShX*b|S4}T8VK-I?lzO%#PVU3MP#i zF@d`CKp8A{u!|jWR=8^FKust$aVd04*4e z3?z-BJd!F!a!1ieANMv*qEvx_&)a+A?x;zEvNH?%{n!t=DLlPd`6zW{&dpRND4%l+ zUB;*^xr9znN82=U_Cl9YT5+t)xTNmrEYr5Mf02qy1+(1x*zQ0+q7W&R=)F+#e^{zI z$&50i%=Xe5x#Q|;i5h5!r~7vnDZ>!t9S6c!>PlaQ8m0d1EdGHyi%5~gQdHjR6#(3; zS0Kr6n-S-%R}gBsQtN`u@;TZki0ij=q73)S{(wa$ot$yd_6H*NrT##yQMdX7h4WbT zf6B2x5Px6l55&1eX5v79!0h!03Y4xt0CK560I<>@Sg8Du)IKOFghJIzk)WiqtSj4G zu6^!sG>YK6j_xYFdbjq`d&i=2#tk;M8kz)ocDSCcy(;-w9t1!Hnh|?#ad*NyFNh(J z3}>}z)tE);_N+EN9SuoZtz}XA=vnO!e=m#fmp&=RcSXfQ76m1Xl1G*Dz&Y*zS{7x1 zX*Y^wH;Fo+%KwEUT5?;CJla6~O3; zDao-(3M5xoCQ{A%&cM>K&FFDBzU9D0GA-wvGznFrVj-bQ7&j8C%0bWxK8r48e`Mz2 z7G!s8LX}_+302|(7kN8=;3Ab{g3FBqm(8>*Ly?jSLV3*jCWwwNLPVsU)g#1wU?1qZ zq(;pOme7fAW{lKLev>|MFA$gk+gOCG+?6NF|LDRQrER&zg3@ z`*vWCQ|drPGXvt#l!ayB^Yq})K|uPmr84@>k2;2yLQ1n(0+ZJGi5WpNlxgq~>uAFF ztsN{>6%>K!LWY0xP|{leNbB<||L9-sbDm18{y9B-nI1kRsVc3t@y^Q%f2rtG8;iIk zRbU84LMz!kB(#sFfLSWe_*3xZ(U#vjmC;rr6>O9S8%_o2RInAE^GL&Y9wJy7LLMrl z4dW|v7nA}Umf07+`Yh42XLicHE$ccPCR>nRZ76w67v}^mq7~@D4g0O}P zM_YujQtqYcd3F{;&JLQ~qPdrt{dw(DzBE4Cb~!bSSyjnnQax3oY|Ts3DDdV=RT>Mu z<36W3cX@pG6g*~%CMAB?%PuwTT50BrDuyOKb9;A;=0eJMqT*>;f5)(Clf1(2tQ5(C zEW+&WMQ!M2qXkR4S@kUH<}Xt}Eya(=CV(8cd`>AFtKEKSC>wWA>2?^DXa!5XD6!b- z>4RnI#N}lAxw*VN^vpuDy-h`4Vx^QrsW|uPUI@RgmP08yT|eWoB*=kb{=B`$caL#g z6dO(3*E^#23yDw7eZiHgZJ2nqG9d#nwTOC44>5T!Z9GDfc@< z1;N1B0o`7Oe0|DwDr&YZmfb^Gq?~kS7}h z&y;9#JN^ET>C3~X5p1H6LPv-n{!Q^H`EKN=^!JjG%yO;$e=$d6;Xs?CaH33xStutU zz9cG=O{J+ATVr7>=Ma%HBFc+Kh}kZou}g7SPf3kDKlv@N*^M+sq~Ja!(jx_eFBfWH zn1C6*+y#q&5jTU-(GKnQi3JL48LveJYV{|!)@7l4P8bsCB#v>C_)%xmgF)v z4%Cl{7VWa)e+d<7=|+MBSk^U*DNLbn}OP$hS4?je@F^5)*Ph=1?3|%>hIT}DEAM; z6|an`~1?3?H{q=i}> zrT6GPfByHUTR8@`ak?w#1BY+#PqS|fB5u<>cQ=KHnPTT(-Yr5eCFOhdG(hJFpq9P9 z9>iGkmcGem^#^Du_ze(mEdIbrCP559W7Ec8^poxX!G_}jFSp194F4*N>lSsVJ)Uyy z?b6&IkPh3Xlx&VPpg?YXXE`c4w|K)IH{q&Mf7Nx0;)t%ztf*({a3~%SJZf|~##bDd zIA=~px3SM19$t^qDlfxP%F?k2(bOKu?#eap(kR#1qgs<|X~2b}qNWAd^}CjPYTc^7 z6IcK3lw`X5*K9Ly1UCOiY%Xf+OIXc4%+Fwjv*r)OXEY8yAjKbpQPx>UCZ_jk7w5n_kg4v_nf2Nj-e1S41_p zkOEN^#%q_j1!~+S3z@{FoI+vk5`|j3Ugpp=cL}eljf!|>>Y4&A$@GL$C4*Rt&tMd& zq!zS)HkS$oFdE@LOLqcAUTaDXpl00+E`i;H_1f{qOC6ihKNz^vr#BXx^CrA zR#B=olx*6Klu+PuIM?u@xW|&m32q+8$`DJRS2323fl}zUF}l?t=Dsv6xR}Q`!MQd0 zA`@I!(`X^4s%eZFLQrXp8D^~1dZ1t&lBGKg@kM@h5zau6XBmU{wVu@Jj83TK$~3{fn9+eF3z@HO!rM2a10?m`!#t34m#qhKaof$*Bf z?V&w*-2JDX2`T6CbMc_o@$=%zlKSlKvZQ^x^c+d8YL{IzrS98qGUfc_%P)tY|NC|} z{B->5Z1{G5zMP#eFZ%v8K+Ch?+3aF|xj3C&toFBm_T%j3+3`2?_b*cLj6s-xjE^wF z0^jY4OkM5k^Yi&Q7Ir*7`0A@CFGhsIn-xN>q?{&+CW$90Pm;KFG+EuJ7@l9AEdAZ# z+4=8b_-4L%Ia_qw($Vnu;fLYd7c{9&tcF%pZ(xJU%Xl_-(LK67=ArlzPdb#r}H<%Z#H>#98%dsvLM(<4xm=6v0@jNnxdC!vKj&UH_AU?P(=>B(A8A70-a zc6}#-Bt`;x1LcSew}GQYGyCK_3yY1+>z##G00{OOH=`pM3 z+4)N#5XK%C1=K*anD$aREqX5kwu+_(@E4mmGYPx9)lW{cz~z|Mj)g7gF+Lx~BFRoj z=!3E;wo#KRYEs==JFlsYr3<}EOuMN{%ix!`i)t1WMAWf=9aNb>gv|cXwX>F+wX^13 zYG&*8yH@jmgM6C_zST8r$pqiF$Lt4wxja8zSHWDtT5{t(xRy{V05t5B1$e;Puwp_d znUK9VJqr?;8O2i*<(jO3#%}TK9c}RDLHtB_Wkf$Kuv={aw5H?~8DVD5$*euxhKycE zogAPd_yJ+g77dJ>sYKmUI-3^CQkuXIjSE%EdoaR((7$gO;ipevUAG$XNunW$hUT>q z-h7j`TaDN)9Cv8GRWZ*R$O!D3+h+u_nn2Is-VbO*m5+7b8yXXXXtIl15sH<07gaXK zrg=<8Fg)$2{Nn-b@YFj5e*`eT5r3oiA`Z$oiG!y55eKas#G%^5%R6($)}+9ofc~5% zrwojL0zM#13EBDKt{_n~&bhRL5+ufnHUOf>a&=JfF&cVJ?e-+vqE<-J1>{{+rL~x4 zr^)?nE*IKU!d=UxYdLmXD&9G*TE3Z9jqaCL%{J0XCw8e5yKHF>OtOJps6S&X5jGWM znm;hCg7%x}My6fNIspD9`qS8l(Htp2+zpz4gWr$Z?|(BpKYjJ)c=7wihPZ0wuAhJ2 z?^HKOB>K9rfM!^;Kg9Z^92}PRL4|4ju?n-Hu?7bPH`Sd~D^zVaRW8wY(hjN_d0JF< zQT0gBwa#~M#p@cd?5nrcbQ4Sb$?bix#2;I)vBajX)TXY~re~Zsb-p%rzBYBfHg&## zHg&!>VUt~9lRvJ$iA{HCFxel0ZakZ01X0=_V*4nzk3HbH6U)jCbk}cow1Pg`{B8%} zw%mPr$BXx8@8W#%>u`K>F>p%kr#qtiXx98h)^DTqe%Q%~#Fo5S!5mxqU{-6&_>TrQ zNmJ5&bZZ4rkjvT#I7-0#ZZkq_X_X~^feB&XTkglw5454csfu7-*-*^jn8)=4_7*@4 zM6ivI>=oT=zjcIkO|<1n3J}nMb|88M-O~2+p1V>7BtR~;$3Xp(kppX@ZWKvN)bh-M(JUqar#G*D`-KhUNgioqfNwM4cCrCLnNjtBZm~gB z3JdxKekp6BTW4&EAYMnb(?73gApV-wme>0Q)B^~M4);o;7_@<|JSDO1#AI-_yr(ad@Fm= zq15S{UvCj9Hxb|WU2X|JqsB-_qdinUKNP~|xiX^Sz4}euTZ|y!bIGVxDvA901Xi#I z5`cQ+55fu=tO$a@29-uiXWb$r)pZ!`+?mT-p3Oa@Z(Cs&+=1};MZEQL17iRyWPa8EN%sYSH%+eDM)HJ z;(q{(eBGB3I6M^rHJ6btJ`(~sG?!6~876<-TTgEsyA8klQ%rB~0ktCPzW`%VdmS6- zEkSM%Jru!9dPs`C*F(R4NlBDuG&8%i-f@t`zVrZr(g; zGk6g!cr|?ZGyr}f@jpmxbawCn!f6;jd>wwflTtZ+J>bhosWrYleh&C<54RcuQUHHa z0JZ`gZoL6)(b%GqMp=B9_)_@Um$s+U-(mmYf+P;d!r^%M$A`b)$Rh094>!GVHiD4e z4n3!@&dFCqt-9f8iff) zsZnPQLI+QTJV0xzG7!hw%Hw?*H?mZ1h%~1v20am%(w82wKlh?XdX1l%6np(^xcM~P zyenF@PI)2;GBb`2|CY20!hlB;8fliByb{`3YgjAMOKVqJ$Mda?O1R*R#u)$qLZo-TQ-G>d?WakAUCg71mR@SCo^hW;(t|4c)HHvSG6z}S9}8EtCRqKqNGLS840#UjVbKdqX4!gp{Tf zvQ3WVnU}&F8Ku_Hj9mSsrea)honMW1*8D&1f$LsfgQ3!K*3g zPy@VPLC{!C*zvYS`_XKL#fGz38CfpZrIkShjQXZiO*RT?U+jNwbfATF_EoITen*Pc z7+o6MPdCN)$#apEj1neA{I+07YcWN7!UBSbLPssJ@5LT^)cXWt7K#S>%uUvo3ZsQ~ z5(^~?NAm!=>@IS=!QMg^n__oY)DN(ltW5c=1XC?A%E8pXhbdXfcy3226g6C`Jo zS7j5e&H}To z-C%f+SyIPc-k<3eg$l0kMgFwNbKf8%w}w03d-W+)``ittCE5tg<5(?Wzz*RW zB8;$7&(!~PVqqPtwkqJ&k$(`}U;nociBI93x4ZG}cS?nX;`3x%_0{TFSyHpd$H?j$s!DRAPT^gwm=XJv4pr0@UXm-drq|M*~x8 zqg37rkFmsDCn+%Fe34SOw?z^c+2EATl1y5Xi(9roEtSyZF{Y~(%K)l{RS@a?casfj zt%MA{QBx)^5qBi7DmvfxFG)RV8R?IAiHW$n3g&i_S1rZpi+VaWC6a71tu0&n+6}6LTp4s;?f@HLRd{#-a5)s&*d^d1gS~(J_-h9%DOS1A8P%y%U^!I)DTy_3LB=en6UfmRqjXe&clIjbx6gUKB)_GnnHhl z28*xRP#C&_3#a9tZ+e!@&X%0N`JQ76Gzn$*3@IiI?Zf2}13|gzC0h#^tQQVfb4q+g zynt#>$1_ugD=rYcq3ilyiQ{`3)$piVttq*9L09>(he#HfXjX5-XV#IVW4p88xkC@;qht)0+%z9c#uH~N|-`8a6odeu9* z3&y8KhS~7u^zaBZ+Rv0JkGn*N+F_yrlN736W;{$ox1|N)t7GH%kaQfcWt)FHVWvxP z!I9vy7&SWFBFQ$iI>22ASj*uYtsY(5?5V0IzG5ZvPINsG&vr%synt?Aii*~`KoU> z1eMF%@f1ts))ue(hBq%fUIFBoMM?CYpoMD%BMEI;^_lGKWj@u8%Hl6yC;-6H|ZA2n?-y>iuA> z);@j%7*jzCZ(8JNe>xab4i`6=pA*OKn{iZLg`SHnORYn)rwx(cRT)6hxD6t-V~L+j z<4E)eJKkPW zlNG4)vSWU(B+JTl7ubLGO7$vPoW3M0iBzjt^3!XSWH}+DnW^f#t)SON3kWb%Kb7r- zTHF&RN}R1UdwMPSA6Vln{r3>eP`+z z{mKo|<_gF3iwh37F0DDkh#2$XzT^z39LL0OQgQ}#vj}^h+xHy5ebHGb!I`SFj(Uf( zvyS7Ly0d=#*DHTK+bCD5JX_GqE0&)1Yqn4AS;uvU;xjN-NNaw8;xqbf18BeJ&Yp67 z#p1JWq%*~59rX^yXC22g#b>>=`xl>Wl&2J*_44eNzoe@^xZ9_Y>Lr^G6q-jkSwQvT z$u8dCw_>Q5?D2Y?G`%9a`l=A9Gyvk(dY#kt4BwzmC!#GEa6epi5#91i*sSD|Oq$2( z`CjT1zmcL{z`#-cK=n|Ik!|;mk@NonEsEhtQykL#+liBc33lVjDxW^3%*(Tl#JBX_;O?+r+ zLbyzbO=VG!ai5udZo^HN;KF>`5@YCcuO$1>Dk10;u+q#{Q=zQI!d^J;6tp?iRHFcE zZXV6C&fO9N8(7#f%6@-g7!s|{_!dDyKz|S#rQUt_J~ovmyxc^{yKs@F$v@s7jp=NK zzj}8drguFafazV2S1`TTsBnF^cSAS@>DRzAu|mR~(j)nyR#zKKh9-ygup0||vr8!x zZ{lxCahH?E@d#t6UQ_bzVm5`lm%yB1WzaW}t1~^%U|{rg)N1a~ZZZcIO-8Al8h@{e zD?cfJ%H_V9yzZY8yk&dvA|N-iI)xK6DPt?Sj5a$0p(vzjx|Q=a{(1~d?!m|er7JM` z1_YE5B*fuJuxfie0<78|uYpykQ3qBvlwmSu_>Hq#vio%=>{JXbE8$js?c;E4%sPJq z9D|q$!vA3$qac$@{C^y~0mqgTZ-2txyfVRAT1vc;)oNT2+h{o76PJwFklW(zGv9Nf zjWXayrjHnu_k8Gx+qp&AEeUg(-vM}Pa)Wjui;U%#fSYa&Y_4U__a*7VHPlP(Nxt%^ zI|V4j+k}}u*X|Tx_U{>r<=jngM|op|BTf!4RA$IHgO606b&jet*@(dBtcD zNVn+OCSwy6mtU_B&Rs5yLDtBTW9>XpJ;s^Q1$p!0g%-Ofkv-1L@*E5r_}sq3_er>< z06omLF(@5EuiaJG-nmGRVX&Nvm_@?vVc?A@Fq@w0P%F2D%B0%3r4EOt6dGMpWWUCG z4ByjgZ3#M%oqR?Ub8?3S@i1 z;WFcVBke|Es$r(;afitmP*$FqNNY)EJJ8BroHx1?L*lzG?39h-)_IG$vQPZHV%39x{S%xaxgs5{_)7Uu8m`>sD;ZX zD0PR=^F#jW1;~DfO-6agCvc#gD~bF^ZMua7Qvw@%tWR_bAo8p;xXtu?3UV&_BnpS_j-=t8U zltbhBQEdysk(>o?uTvR1P}$V+lH_$oRKEN64tD+LhK9jv40ypWO^GBb5g__CnN>tvyDFa%t!XU`WqUtlP&w!u zH74=+wj@jSpggqaeJqIpRqN9ugnS|n0<5|V|v$46nxuh$xf8nSwVX}~Xh=|U>D&H6KXr7!$D{9YsR94n- zH6|{mI5P^W4K;{%4{XWl9*`|#0inJ>UHbwFU!^eQQkX%vwz=%{Zrc{B+r$0>V0l_~ z$9>lHmYD1A*{+1QZ|aNj{g^#Ra-lzq6E#pBk))J0-fd^ zxn!JBZG|jZ4us;c)M}gG-E7JGfBkMBfeBhs9H-fv&&32QUMhWvetuc$x8^&xt&_IM zP$?;4P}G(yt0XnS#@DT^6^Pb(ERCe=Yh7PaPu4OCWL!!Y>WZ=TN?lPIT}f9|UM9L? zX7Ab~N6OyK>xxqZ6ankg{_M~FEN8N{uhl`H6fzCNgogVL>LeA>LX*BWe-+0d+Ky&; z^vb~T3MyKGt4obKBbOkalo_NTx7;EP* zuWIKMZG5JpJ#p-^k0yA!P|XglSE|{O$!aw_vRbERYe(zUY-Po|O3jX}zMfFC(4riw zz#mbw^ODR`+gnsn?FnfLK}*EvY+0tg^?c@*;rwfVGdyFpuyZ`CG7El*bIfmHz>%yuI<45jZ>*m!Y^R6qhU_Ji!AO z+Q_%?B0M|+f4WXh@9%}X2p6%~${p4z8+>K`-RE~bhX{`)6NlYt8k64uzgS(E$T?+* zYO8a2^i6 zl{Dnw_ry$bo*6Q9Niiw?<$Z4R?xnKN{Up(>r#a*@g;e`CX|9<(Pa66(moM%I?$g_o z3C0=3yStoVE)Y=?Ol^$?uP%V#Q8=_Q>bF)obl8Q!=`6$*j5GZiIcxp20!sn*dD4 zNf6v6YVHv)KA9AlVA%({+yPx$D=QGn4PvKAfY&T2sk1 zRHdmcb5q4;mLiXJe(AEQ?(X{V~j?k!ixxJU6v`lHi z*+lk-QlEy$(tfYpG{HkynpcvWCT2}GxO&FxwWOYhJBC5n>Ip*A|-w-omJd#p3!&$jGSLw;*0#be?bW zdzhK<^v4QMgX-OrzfyQktv3qK%4D69_{U zy$N-84HgwfS`H&WaBuScx=@VhWU(vRi;{MB> zT-YI#9rO%sTk~?1wj~rB9@X{hXj_6_2PunrXA-;nSv^wRHlR1C+s5JmdD~)I)weC2 zV+HOuXoJFSvAwp$1)sr$!vb>Ce?eGd_}>UzfhOU2?T6JzAs)`=o86BQ$huP`18V+|$C=YuV@Aq-$N+ zAQxy}k@my{7i5dtwd zm!VAy69O?gm0=$zmvbmQodP2rml7#FyMK40ka=T57&Q9>pa9O86!v2p)(aH<2#SNk zH8|Q3m9_se94jM)W7Zz98zD`4nAR#Bt+NV^zYvb4w8ppvj+M}r;8Gl!-%<1G4qnq=e7Rtqw48lk<@sXi$n$0!H*~0OxD~VaN-F}-q=Oc$Bn_$`= zA2|>Ckv*HRz1ucoprC_|wvoVqAzj-hHrNTf()R@tO(Sz{sWXqEnF{ zRodE7bz<%*p+cuS^jocd_uHqucBk3WUy@t9yq~(Owf1<9A}_eTY`${FeqM)ml-7cf zM#-0j3?nP6tHG$ihS}AXAsaa^=*-mWnoGa>cH249`$-YYYYzvw5c!>_kfdf5S))v) z=kH}bPAhO`qz8IEc3R4*pnpf!p#)~iCPn!C#%Z+_`PhquMp6)kVlhU?SrEn5UO5>}M1Ov{Ey+6r!Jhg+ z3c+7W{Y-i*^>dNU)X#-BQoqu(k@}?+nr+n2r8ZK(@cSjy&vkC3{`P1M)ZZ1Yf%@CS zHBf(7xCZK%Qd_A%6|NQP=OP=apNnjyelF5epZ6O})CW)=sq(;9_EYol1P^ehcXpK1bxUK2@IF#b>4(@m97_xY|j|@*mHZD#Ft+3gQEMv!Ts?(M) z{cyN*T25A=BNH239uCzU|0pcdXF5qVCg~^m(m+u zTnSyt#g&$ki%;kJaNqiPPPYclTRyndt%dYfx0XWJa%-t&6Fj7)#NF5ztN ziq8uM%tRobYicA!w7aIZw;w+cX@F06BA!YdUY5T;Nmv45e;Y5CVs2(48)LGiR}HES&nra`1i zXr;s^9S$jB!rSGMIQ$I)5@aD8=d(H0VfLCo@;b6K- zJ68z}ip(Sw|wAlq7lvAgvZCmM# zOEZrGXRtHvGZ&Ne-xP$kap~2eQ5$Jq%i4?P@`}eiS6b%{1Qoype-IcybLc_T?Zpvq9Eo5>kRR<5(ME5&Dvl z6~_3Ta6$#~sP2FhDl2dXw=jn6;bC1N=LTpMZlo2)l!AF*EX2%_e?Y`Z%q~qUB%J`) zL@=A6-E2BR5;}x~BMH)H6GHbCO>n^sR?L4Z$L6TeZAC!wf0d0-$Mqeot`A%i_z)E9 z$2IfDRMHdR`YxC=xZrWq8(Aa1mr+T_p* zbBHO0Iffg?pu`}k(RI-(KR%Bxem}P6M$Wd-TNO=P!yV0~UM_`uom|P>%Ey(GRTpPu znqy`N+GjjH$xph5ACA)zT9ECe9oW8;w)} zv^DT(hG-*6W?dgQoXAjXq~wv~O@VpP!Rt>Ma0i6@?JCI~B1pH>5|oBJb2YnjbFv0= z@-Ck!f3+ise+q?h6D!&yh>r=IEt>Rr45PU3c5{!% zB2$}h-j|ZZ`%=qD%j+t8wVf&qofB;CH0)B1T~*FVWE0wU?vk4jg|M>Aj1)?DNYBz} zqsBTk$s&%|J&o$)G06S2&Vg~6K#Z;6+pOgDbUZ4>e`ji`({x3t!L+B(np_4VDLICR zKf)85Phkis8r^BzKAWl&)v74W3{(dCbUdHNpvT?W zG5C3w%ttrODiHu_zY!c&89KxmJ{GkDMn?D4_n72X1`6Aa|qAatxYg*kM-Q?+KD|~ z7~gFhF;LJzr)?Bq0D59uutCq*mHu8iMDxhpN>pSaX638FaJw@?(`t=gm+1uOS}o62 zW#j|q)4eT-nURV~(S58cQIzy&wSFUOiw*?IOS!IEx|8c_ zggPmRz+W|z9TbH0tx%kp#tL%@1L1h+pq=|hj+h5CyYW-=objixH>Dy;5eBB#Z7uER zYo1J{t|!<2JkXpb%%?uS0g%T9J=t}eT$Z>5DPVWVi9(Wic~2A9Wb?2ro79OjzZW8_F|>ooY9wwzWVJS}6Irc2wZ;%6nYr5K@=RRSLVdhdDYHQZCEBVEJZ#5%qG9@} z&&JkkqTDjKzTS9C)bj8dUWu;((MyY2E+%G=D?FcAt9M|Wq!P}l8H~3r1Ggmq0cJl; z$&*1R6_->~FZ*6$V z8g~P&)A)mS3c=M{$z_jh9$9N^K}7yzfm!c^CFL0#*-6F0<<<6@DuhoUfTYlWb0w`| zH|v2RP;6?U2mzUSz#S;-Y%M7inN{al=}-&lL*yk#`K2u zlM2R7I_`RFGXIFv4k#e+q0tIucuThVNA_eq`}OoLfz`r)KZ31`xENJthPN>qLcWg! zzD6EX=Ct3MmV^~;rh%|xh}SrO0s@o!$g|*E3`)z?Iu=+77YKM7eE&Y+ODGz zI|614+`1GeNg2KGSLdw(|6#CSySzNdJjbIv*DE}i>&OR1bn9GKX>GOjk(#~i{WzQJ z$dLl%3v*p5tsyMQb(PQ{*Ik2SU0$rTtmN3asO{mC__O-dQE?T2I;abOO;=1<+m1O4 z6PAD~4nS?tf+Gtg?F5miUCDZt9NChYwUYGYom^eekN}&!^L4=HE+PR{2wc4l0axhyJ{dsg^Jr^O9gn5ajKZ zgdg`(E}yG!pI$eAkM@qH6-pdnEj4a?&a>q~)7+g@NT)1Ojrpbtrv(-|t%&GAov8v(`4fcYS?6s)W4 z20cx36lj?mlpM)}cIAvW1v|qaZ@TKao>Ix%Q=ayzYrVH@6lh;N&{3>%7g$oK@U?pS zXiPB{#{qS$5ik!7mB4kxSUy48{GOfi~sS7H9Ex$g_7NQJ_V$v+!Do$F0 zyy47~N+n8T-&H6z^L7SO!h~rwrnP`P8e-rKMSgsI0)PiSiz9$;kLVRRwwxoL2rEBWaY{_+@OajHBI*rt4@t&4Fh;(vG#LO!(h2B=WDyW z_WTShjS+Nz-u*2A1S?g>9kH`AsCz*Gm%ShW7nGq}u(Q-OX6MCaTLN+d^JCezjL1?? zIzzRgONi`AI;Svl@p_#vAV#%s=zKwXX9B+G&Uf^VwFh835YCW&@PD)L#9XQz#ruK2^ zuCD5NQ@D+i=frMa(#;uSWjWl0h>H%=%Ao&EH)pIBMqSv<4TKl=azlw_t=v#zStnPx zG~LLZ>dI0hH&pra;}iR{t(jE@O(D0qGxG#1P>GFMJbb25nXiD2_KHRFy&5yY&chuA zY-!ISTmK6{jz=&zsCx@VckshbY0rw^bt*@ue^HZ)=Rao-Etf%ODH8-SF*h`qVQ(!X z1Tio88UxbU2j~s5q0&NAskmZf7M9~VX zYs2ZU?-_EJyYjA*)oP{6fF)jP?&Xj(bLI?5qU4=%hVYvV`BYop_}Kc`aN*h#6R2p5 zy@{drF`Jm{8!RSqeS?EZsr@yYO!1MvTTBl1-9V<4P+NZyKV5D5`m>FUUZyrQIz)VJ zW1Og6bTV>nYH^<2Eh2CgKv zsqR=;C&LwByZQyV4c3k7XvskRPY0DVA$zg(3>+!YwPHW3!V)q$}DC32NT@D=q0 zZQ^6OG+7LPgzwgc&~R~n{tf(e;+zhs(}AN@MOD(Z<;?2#F17D)4Zt=MYmcjr(;|x6 zLf0=)s4_tpnXC8Zy2{cPg0(+{@aWrbhc~}nOopfD=hJa`{psDPPcKf-e=)FoVv zcBn|>j)uPvKMda;QhRtcIT;U0ywz2Z=qwctHMXgLJ{Jq8JsO@GeE#+D{q)Urcy7MA z#7n2s^S@Y3C;#~g{@rSL?~{$Nolvwa8q>uVEGx`zi_qHe?1Rrasm)xLh^5$v63N+! zI1wjM0(19l3szbPzjIhqLOiiBmw>1MY{0Jm_DTRRtvVFPYy(^eFR7LafBpMEzzL%+ zb^ht>>}azDCSfxoC1#i%me@ix1aAfSxrL}m#_zO^C`+&&`E4m`hVQ0l)7k5bK`J2$>P{_V^7{p;~~oET~y2h;O^5rZ5k+`vuiCHs5NPCv~~CYSR> zt9?IC-k%;nn|`TQkHA0p=@Gs#!@CfRSP>Pg?s7S2233Vehm9NPTpBf4v{G;7MN4{r zpDg?8ERSyGk?f+?d>$oQO=SYhAah1IXt}9F?jDpLPKHc~UyN7;53z72WKjYztOq54 zUl|TWlHx)sN%nwFg{|hEg%VPVRj0a6iCh4RB_eV?;T_L;f9pWbvhpUzV_g?#olk2j zAkk^Ilc3~=JQ(CYP}*ToAd~t7$gz-r#YzAM;1(NJ;cooFyI@_(#yhsiz|cah5@=7} zmUK@_)C_^hphA|tIs`HV_?mYPN^DpPU%)PX$>3|TMDVDbu3~kd6(EcN!nhHzuZYc2 zIN>)a%NC*_Usjpa{|j1&1Eti`&k(W84jN6R&`7bPEWL)LXuPxA^w3 zN`O%Y(~O88bzF^P(qe$%Q)QiR38FY*2_-PbM+q7C5Jeyx0a3(&53LxO5=aN0S>bhE z2~rax(fABT>_XtO7v_nm0g!ljFscKTdcYNwP#(WQ?>EFU3L&_9U~#Bufxe~e0aznq zSjz|iiWX(y9yP;&@B`&GAZw0)s4GA}5u+hWSmnPp@aF#YJG5&>qO+c)DW+^C8X(Hs ziGs^V)K6Q8dL_B(PO#zTaPSqLApTGoHA;1$ny24XtpM091_#rMjyM~|*dV|dy>UkfVe^Uqg5=>Km%j^oAUUx(qt z>G<)}J9{$yb@=(yuNRNsPd*Pn9*-aYaWVb?gU)_}i`t*hhIePvcf)70Ks6dJXD7q6 z+3EWalS{Sx;9onygzIMURHy2Edc+p@m<@WQ_<43+n=?z99QKl?B0N80kBOZna z{B(AD@%Hlc!+AA*R@1u`)7MOy{Z_pEir9Q3MUwSCZ6m51Om0I)-yn*tYIQsEuG92Z zDfdd6zH$C78z_9)jl%2B{4)RMoAn#^ zrnZMUhaE`>yqI=>gq`gJ9%Z)GbDnv;OF(^5=pn{CaY4X`v`4J>QLG@GJZD?rQ$7ij z|9UkgdbpU910@TtAe<@g5$j8`CFi9QPD{IW!$VP&Qxu^`&~q9pw?q0AV1y;tLqTVg z;|FQ^49jC#zJmJlhjm*?8#cBv-4eDDB`xt>dVtUkG4&IF3iF4$yEZSxknp^xohqz6 z|KKXZ>nY(*2v21N;me|$(u2=MOL}Yh*VtRBw{mYS@`RpvE?Tt5s>_4w)pPb1i4nik z&Y`$#I*N$TxWuH8JVGY#h)LVyLEvKR`RE)EbkmsGKSVt6;(-Uz?J*NDcyFN8(=Stj z>BIf9eqRKCrih)1umb>*+%pr=jU^r3BO2fo#%JUw+Hjj{Lfje07xPy(Ur zHyrnW-Yts>NFrYG%2}tk_fXzS+!3~R$RT>wQ;Oyiy}W4k_%S%LvZ1)Ula$U(Hlr$; z>!8=9^k&9&I^0c0*BfD8LRX>y!@+T`Q)0V>euJ%rkgN~Oy+nx&PW3?c5-(4V&yKI; z5ZVKsRLXOjeHC`&Tw^@?7;Cmlp=y={$oqsH_eOh7a-M#Mqf(HJ-3P-3Z+6%OU>L-GEz zeb}>~v=ohE8#?Pq zi9N+q_JgT(q!Y@X~w7z zy}8+-X&<2><^0H?UKwu@KV-uwEAN*mxPGi~ zJuJ_Eu=0*NYfvF_p6yX{^|n^X-eac~$?%3v_d}kH?|%7w8c1SA-Zh$zu@U_bGr-Dv zDCF^!!SqAG6Oa>_^QRQDRyUz_0$|6=0=I@HrL(buo)yMeX_lBGOe?X|c!A2W^;WJn zXiPv(KKU|mQ;9

    |VUIXbpqrO(lB58*R^a&+F>;xPrs86y0LPlESyV_7%b1y!as(3z% z)mAOqTE++QA2t~6_AyO?%jtzF0{@g?N)TlC1{*Ptm(R_&PtTiwM!sYQ6%F|7`zAhr zAds+gp+i&wsQdAE_pWKKf|3iW8oeFou)_{-nVrS4-4_eeb2EOR!ABG3DfQ6^T)bbfBAmcyv)kY7FWD(RrWjGXOeY^L}SrI*5{hL|5Ky zG1c^idY?uQ?rxC%cL!Oidr<0LC^ci-&(d4q2T(L#JyRDcIOViCQ5PTfk}ZO`4J}R8 zx}o$h-`*t4Bn$r=_g&y0H#_=S_35 zKjB*B_jhxF1X4duXhE+E1mkv2DQd}{rq=l~i-#l%<^4+75l}hiHMk@AJ{hgUUAhRR z!y4G*W~2~S!JZQeIisZWKQtG+vLlC`<$SX&K@7f~NH*%M`k1E0(pKuJqz6~}c_fhgElg&@!yL2eeyFK`!_9YpenDzEj@J<86KC+skUh8ZTq7=T!3{`kAh!BOE%>V| zNMAYT>*%5uoCuX>Y7K?be$Sr?i6wW3WA{DTBg<*fk4}S&PJ(2-((ZoBZf#G$C46q; z&GGz{s_prDCn2JpKUweQ&vvzR-|D13?R@uj3cnOhspC2wP$w~xx&;=0TEmu{<>VCT zp#`Lz<<5nmoMM&sH=reqlcT1!_Y;kcK^M{zvPl&>x&bXwYr4anSZImH&=s^qyTt3! z5(Y`3Hy6+nMw4_7=KnxT90;nElm;Bt8`BasMsGz+pmhonZbVCks5=33R(g|8e_&+(h@`Ig|tK^vXqvngqG0~t)6AH zL?yM1mZ(IQ(GoT2ub?F=or`FRb+8v&Vg>GnmRN^-rX^OuUTBFmu;+vVQvRI10xi)@ zw2+o)r7ou>CNtq1(Gn;<+<4{ZXo(<4A2_%2E7B5@)TF;`^ez2=&)}j85>j!zl$MZ) zgi%B;q$NP=|A4N)HZ2izEKmC^y6OCajh>1pW zAu$13^cws2#Dw=s_VxWlV{Ol+zm^~+N8VffSYoK?iW%|Rq(p7!nx9J43$!(o`6}ns z{{X2TdLIg9Ze(+p*E&KD0Wp^!TqhNmfKNQae-8UUPrvMB7FG&!Ow&oB$vDHG#!JF5`v4&xGKtAsilC5%wwVMISz#0Q1`~z7!3>cN zf2JdkS<+w?7>?5U+HB1LTGd`LSllu->vhhwlc*nk#mM;L&APB0}165zs{ zfO+_MZN9yncK__oYzamfgWX?WcHspA31fYyl<<{&v{0A&8m!A_>+;F5iqSB|uhXM(_y_Lzk~j08XQf3&n$ zQD!$#1vSDcQ35xDqOt0X3xOu#EOum+uqLbYB&pi`c;rms*=mYocx)jgfzFPJfBO6( zL1^tH1#v-O>yIh^VA(U#3>!j$HJ5*vxfm(HV9Nyx7n&wAoC#~u)UsUG2nAG8{PtnV zgTRr{zCpXH3Z(W+ES2O)*A>UNe?=%bJqYKv;jMr-6Kw!oLC9Qg8{kTjkbVQ+A^y<& zEqIp{qMaZvIHi|3lo(7gr9O^geQ3NeD6gF{aua;<%W+ z`$RCA`}#8$6a1J{++i0LR~`hzc&3A2PLO#|~ zfn7tXmS5k}KIeYx>Y5R2#d76rQsy);h)PJpR?ys7Js!DzS@L5Q`e)UvH{BCIXpByh zm5SBvf_InmIlYWK<{w{bYk^`^xZJkuQUFVdy;$VXI$_wC=c?QcIJwHz)Um%wz1iiK zYYxEVP^rzD_o-QsxMG2Ue^#($h2@~O3<$Jb*MC*mxIRRdO!yrN%D?IskJcu|qVILyr*TQS=e}v1!2(N|b@Tzh8 zUc(5jIdH(=X&9k3zw~{tzy9)l3FTBZ=)y$8-)1tA2MvufOQQ+LCbe*;{>^3+0iJ!i z4F9m%gqFbS*}GZyLY4A@z_ddBKjsrF>ZRiQwuftn6l3a@Q;LdY?US~sU?`K%jM zR8;FG6&1<4QAG{v|!VPQYCKi3t>VRf)tF#iL@K_;(mguZn$zkIHr5-TpHcTZB8RIoY=jF8f4|eg6iIYJm z6_?RfD-!}SHQy|Ke;9k^T!QttmrtS;g z9)9!j19lh8!QBxnaj|pWD(qq0oxoCoby!XdthM-VLt#bjA177?n*5XYXW<*c{_J+x ztMKrhurD$B-KZfB^9N1IYlENqcbISeO>&{V%_1&O84WerXrD#wAU3K=bCdg%e+l*> zzZ;gEme6~zlZx$dB4P(W^h-VrC!OY(){Un1K3a+;jzM|jDqr0`q%$`@c?~9sO$Tt7 zjp?VLy%K~9N;&XFiKJe~i{f7$1HdN`zm&c@jNFiofH6Y~@AoX$S8uyXp*Uy)+u z<1UcNITeNLjTo$G-X9Eo@)5`BYl%f$-D;ayM`h#8xno3B_F#tcLNj|#x+Cjt6Q>AK zbE0hy;3Q^dTe3k8*p?L%!57k3Pj3b%dVf$v45n5hKg0YiwV+5+ESgg4pSB`r z6t+H7WZqm8(bacteIEEJf36h%)YcbB87FHu795a2uG$#F&odv`SXLy5r4Z3XwUp+j zd89?5G%BV3{M@vUOd2dh>gxNp8U|#AQsURP67~sA3W@fSl7&R=fZv)vBP4%oR{IQr z=k$`#7NErgp#xXfu&9fGTTQKzRWNbQRiucd=;F$VWzEW2UK6n?e>d`hJD;wi_eWxb zQMK48hl69Gcw+#y_?b6t22|hlBm<#@?3%lu60AFLC69PAC0ZR;c@mWmX*$!Bffc*M z7XW2pD-{FhT`W`ayyv)P+h-}0^O@hvs7F#g1;z9gX8OXezVZpVIpQ(>jtTyFiUpR! z%}W_}!9!z)-4{mPf7~?R2%*}oWCkqB^%zMAl&Mw>s~vTOVB$*2)GOcR zrmxYJrG}t&ta9HUUz(0tQ=c$7Y+>&?q%6{Luv3%U7gXD^iM=6ucRV;nD--I4j=J8X z_~u%wcmC8nT02&BeHEAM#IcaxRc%ww6 z4TiTP6L42oyi%6x(tKZBU5Upodf)&`}+SBNu}VZDF% zYkj-Nz#In}n;JLEXCh50jaK~>sHuc5gf*3xwO}(K$vPC#gj$YY07c4$j(RntNGVmK zNZCn_z2%OMf0{eJlZ;Nx~_d5&wIqp2JHAIC>Q~BspTq~p3B;r@% zTAA@YH{mS%cR1|}GOU6g!AfabA}6z{h16+m zYOUx9>FB(2wla?fuHxw^o2u)L>9(=}97d^Ch>W}qsz;}yMRenCE)<|e)m3Bw@Fo4XgiIcu6t;4w;CyZ#+ zZUI`_TnGscIk<~4t;7h(y*}hWPydxc&*WGMcf>n?CiPKDpUARSLKmVwDlIkjF+Z18 zG>3^+Y4XpfIjV(DBugu)S0_trtDi@f*1LIGvecxsWy9skQX{D=k6#Z`R0fSCDV;}> zWt!B5Q9KhVO6e0x(n{z;NKt8dX{1R1xD?_GAVs;*iG*k+_01BZwRcVu4wW$_jm7=#4iTU6AEUnHJ7pQ2PS{jSxt}JHVnPbukdjf#VR5x>H|p!m`ySTdTX$^B$pOV zF3q6<0`%vXvgKJz_Q=+3XOkYhp7GAJsK+OYq;&VW)7>w-`-k0&Bbm-A&)~3o_|$>? zL(5;#^3ZbU0F))@9=>$%Uulh2u6wzR)S}v5&E^Y-ru+J5_i6WA`POl);@%VGL5R}UGG|1gRm{G#mJ~TR5)~)S zGFu}PG%_J}19AL1J(qt8awLR@&&CeFF+wbZ+z$!s_mRWMUHo}`m2v6c@fB|eALz*A zA>D)4Ru9}MBUYaNeEr-NPu~4VGuwZn4ZL7i`o7F%vUN$h zNv8AlJT3}!vI_jO%CtB4T%bW?6dEcG>y6P9AoLJp16n)gVTHL zF$v)C=x}p5VR?_y_I`Q^CC~b|^cMK^7L&$#{V1n13j>Iicc!yi1c@Qd>0Wd8>la6h zT@d%7HJPgnE8~A%hQ9f9JCG>SS%NSqLj~l6n4eH*24YqOkfZ*o4`e~f)Mo?1I1n$R z#J8p}4{vL-04K4QZ9(A~ZSIYEbxxnXE|WxSGeeSKCOoxKD9V-Xv6$Ikw|5Y3UdmtV zZoXCdL{&j~teF@@^o*Q-O<;YNPVDuC|K8W9=&XM-j4g6Rj}k1Kx%3iHoo$gL z22jB@su6=1X@wG{>(-GL6hi6gnsu_a6cppUtPc`%6!1CZTXi-R13Pi+Y=~rIZHh4@ z3&fb#7(=o^2(iVfWP*}3a_-fSbt2d+gS;GMBp5G2BrbW% zSI-C7#ua3KynLWAtWS{qU_^i6@a7>8Slx-4;_BtIJMkHk(oUSC#r@S80HdVEC1^-I zQs##2J;sbuE>Dtl_nGGG>AQ+)78O}4M>*A3v4($wi+z`qvm#J1N=w)tEpU6lD8~M^ zJW2mul&PD^^i&wEN!5h7Km2$~&F$*PnWmIu+UPe4)j07h!i7T3(NYm^5o!Utl2D6L zN}&==iZn>n9g3_w!(X{Nl5I@n)JF64}ECPiXTL6WP$_DG*m^^OS!!)!RI!J=bmXY_u)4c}m-!yUjx}dt!G5 znO1j1S$p1>ga1ETIUDw7in*5d7q)Yz=u_c%re6}F=gQ%$9&WW^B$WbeOqgVj> zP!6=#H*%nyEzDc#8#$*8yV*c1eIqZaWeBZ21S3T>=csS>hKf{k9!d{qJLsvga;ATI zfpN=g;T~m2p+@GBw1Ps3Yb}x}Uh5l~M}sPcv4VK6TgN1|h+S6t8RDgAw_(Qnn4`No z=TeIY_D!TqEgrOQrQNgC;MhdFBqhe#R@#GC0KQT1u{CAMED8QGIGrg0#?U6|61s~+ z+XTI_Q=LIJcd9egwoY|95ZvCOb2ooKuS7WULyT}!@bC48wZy7GC6i4dM1qiMA`^9N zc{Os0AioaW!X<)JA#Ut5E~{cjiNjQa)?$bV5{zwO9*wMN@H6H&1`!SlJU7v9#YW;* z-fe7aHqq{ka@w@gE+LN0%(|5r662M(u*Cc37^0;_GMAoqP0?Fp$P}_YhD?7^8)HZ@ z(6-aA42473S(%terOS!wl@v*e)hPZc8KS6? zZHvzkom60rE<-X30+ueTogMTif4Y!U{p>(0D&>0OS!p&~&JJR93VQCVtqGEobdj3; zuWzZ|_$Xa(p>LMuj@t=;1zMe(As z3!D<2C$3+Rq%bgEN^6GRN^1_f7OnXxGg=Qx)uj@7GsS18IW9eIq(*u?IUQQ=HH~{M zNflk_iwwNc6*=Zgp2#f+`7e*RH)>o`GeUDAtr>VDtvTjOwC00UX&n<#`xx~%&^q4V zKJ5Ml%JC4ElR+mG0Xdh!!Uz+W?_@m50g|`5Wjx3T1hiAyS(8C06ahJxVfrf-m#=O- z$A5VG+w-3eJRzIE3x-lLYjDyA8R3yIeB!EsdULU2NFOSO)^yMuT!3EXiUMXt4}^rU z67gCF%37E>L;6^$cmMUad;0$Q@XJD;$^jz-ncjas_#aRxrj45bm=iet`qT8`@UB0#vr=BWn4sre zYo!`J2hEhSbem-e#l+nT4gKoppI=8#Y8b*OLCOd%%zrY-_!^}t;H#BujGZ)dMq1U!Z}1?Rp~46P+qY=9 zB<8QA_uJ%H&Pd5xsNY_1<}X$=PNvZEyoq%b*V3hSbSZF2`5^Jo^FNvBt3Pkz2^2mo zcVo7XSqLDQ@}wbs>#KMOV1F5r*Yl9`ZQLY5p&RpX1vkRUpuPz=v=qJNs(g(ZLMhS; z*Wt!D}#H?5Me!26oYwD+&_O5TnZBH3AS%mj46~vA%XhR7@Lw~OdD~e94YSDCz3lz>V zFJ<~6ZkZDIVzHL?WVXhA<7gRH+|2e6yHiRMBX2qFDW6v0pgt|c&AeAtMUu!EW}L36 zN@5igWJy_kue-<{v472{@V`tX>$g)7IBBhPwEXYMFAJ}tT5IELJQTut4L-d2=f@9! zeE%cG%IV|3JOot$q}9UN>2rK^9E=~H^7I+ZjXC&3&kD^6tL&XT|~Sbly#9q1N@ z5@6o+$uCM~EU{vS^d*Nykn`cyQo24ImlyM0pX$Yo(0oClrhnkzpZqBa);|(_hVqa8 zQ$Ode1oijn@L@W2fp*H@_T2#x$m`4f4B$-4H`_7dat%40MeS51AlTcl0(FF+%2kkSLi6%nwri4HS=#M zO(~hwP5ou(=27o9o8{Mbs<(r!r^y%VBEOeA~HaR@O1&bdU7C&B{53YL7F}6gE{Jh?}JCk$+e; zK%4N+-~}|Gx#{b7cyE`wQK8%0A$o7ATgAY4thU(!k4f2kqgL0ez#Ya~04duv=6@J# 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�kKH3H%* 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
    DenseAxisArray{T}(undef, axes...) where T

    Construct an uninitialized DenseAxisArray with element-type T indexed over the given axes.

    Example

    julia> array = Containers.DenseAxisArray{Float64}(undef, [:a, :b], 1:2);
    +4
    source
    DenseAxisArray{T}(undef, axes...) where T

    Construct an uninitialized DenseAxisArray with element-type T indexed over the given axes.

    Example

    julia> array = Containers.DenseAxisArray{Float64}(undef, [:a, :b], 1:2);
     
     julia> fill!(array, 1.0)
     2-dimensional DenseAxisArray{Float64,2,...} with index sets:
    @@ -34,7 +34,7 @@
         Dimension 2, 1:2
     And data, a 2×2 Matrix{Float64}:
      1.0  5.0
    - 1.0  1.0
    source

    SparseAxisArray

    SparseAxisArray

    JuMP.Containers.SparseAxisArrayType
    struct SparseAxisArray{T,N,K<:NTuple{N, Any}} <: AbstractArray{T,N}
         data::Dict{K,T}
     end

    N-dimensional array with elements of type T where only a subset of the entries are defined. The entries with indices idx = (i1, i2, ..., iN) in keys(data) has value data[idx]. Note that as opposed to SparseArrays.AbstractSparseArray, the missing entries are not assumed to be zero(T), they are simply not part of the array. This means that the result of map(f, sa::SparseAxisArray) or f.(sa::SparseAxisArray) has the same sparsity structure than sa even if f(zero(T)) is not zero.

    Example

    julia> dict = Dict((:a, 2) => 1.0, (:a, 3) => 2.0, (:b, 3) => 3.0)
     Dict{Tuple{Symbol, Int64}, Float64} with 3 entries:
    @@ -49,7 +49,7 @@
       [b, 3]  =  3.0
     
     julia> array[:b, 3]
    -3.0
    source

    Containers.@container

    JuMP.Containers.@containerMacro
    @container([i=..., j=..., ...], expr[, container = :Auto])

    Create a container with indices i, j, ... and values given by expr that may depend on the value of the indices.

    @container(ref[i=..., j=..., ...], expr[, container = :Auto])

    Same as above but the container is assigned to the variable of name ref.

    The type of container can be controlled by the container keyword.

    Note

    When the index set is explicitly given as 1:n for any expression n, it is transformed to Base.OneTo(n) before being given to container.

    Example

    julia> Containers.@container([i = 1:3, j = 1:3], i + j)
    +3.0
    source

    Containers.@container

    JuMP.Containers.@containerMacro
    @container([i=..., j=..., ...], expr[, container = :Auto])

    Create a container with indices i, j, ... and values given by expr that may depend on the value of the indices.

    @container(ref[i=..., j=..., ...], expr[, container = :Auto])

    Same as above but the container is assigned to the variable of name ref.

    The type of container can be controlled by the container keyword.

    Note

    When the index set is explicitly given as 1:n for any expression n, it is transformed to Base.OneTo(n) before being given to container.

    Example

    julia> Containers.@container([i = 1:3, j = 1:3], i + j)
     3×3 Matrix{Int64}:
      2  3  4
      3  4  5
    @@ -84,7 +84,7 @@
       [1, 3]  =  4
       [2, 2]  =  4
       [2, 3]  =  5
    -  [3, 3]  =  6
    source

    Containers.container

    JuMP.Containers.containerFunction
    container(f::Function, indices[[, ::Type{C} = AutoContainerType], names])

    Create a container of type C with index names names, indices indices and values at given indices given by f.

    If the method with names is not specialized on Type{C}, it falls back to calling container(f, indices, c) for backwards compatibility with containers not supporting index names.

    Example

    julia> Containers.container((i, j) -> i + j, Containers.vectorized_product(Base.OneTo(3), Base.OneTo(3)))
    +  [3, 3]  =  6
    source

    Containers.container

    JuMP.Containers.containerFunction
    container(f::Function, indices[[, ::Type{C} = AutoContainerType], names])

    Create a container of type C with index names names, indices indices and values at given indices given by f.

    If the method with names is not specialized on Type{C}, it falls back to calling container(f, indices, c) for backwards compatibility with containers not supporting index names.

    Example

    julia> Containers.container((i, j) -> i + j, Containers.vectorized_product(Base.OneTo(3), Base.OneTo(3)))
     3×3 Matrix{Int64}:
      2  3  4
      3  4  5
    @@ -113,7 +113,7 @@
       [1, 2]  =  3
       [1, 3]  =  4
       [2, 3]  =  5
    -  [3, 3]  =  6
    source

    Containers.rowtable

    JuMP.Containers.rowtableFunction
    rowtable([f::Function=identity,] x; [header::Vector{Symbol} = Symbol[]])

    Applies the function f to all elements of the variable container x, returning the result as a Vector of NamedTuples, where header is a vector containing the corresponding axis names.

    If x is an N-dimensional array, there must be N+1 names, so that the last name corresponds to the result of f(x[i]).

    If header is left empty, then the default header is [:x1, :x2, ..., :xN, :y].

    Info

    A Vector of NamedTuples implements the Tables.jl interface, and so the result can be used as input for any function that consumes a 'Tables.jl' compatible source.

    Example

    julia> model = Model();
    +  [3, 3]  =  6
    source

    Containers.rowtable

    JuMP.Containers.rowtableFunction
    rowtable([f::Function=identity,] x; [header::Vector{Symbol} = Symbol[]])

    Applies the function f to all elements of the variable container x, returning the result as a Vector of NamedTuples, where header is a vector containing the corresponding axis names.

    If x is an N-dimensional array, there must be N+1 names, so that the last name corresponds to the result of f(x[i]).

    If header is left empty, then the default header is [:x1, :x2, ..., :xN, :y].

    Info

    A Vector of NamedTuples implements the Tables.jl interface, and so the result can be used as input for any function that consumes a 'Tables.jl' compatible source.

    Example

    julia> model = Model();
     
     julia> @variable(model, x[i=1:2, j=i:2] >= 0, start = i+j);
     
    @@ -127,7 +127,7 @@
     3-element Vector{NamedTuple{(:x1, :x2, :y), Tuple{Int64, Int64, VariableRef}}}:
      (x1 = 1, x2 = 2, y = x[1,2])
      (x1 = 1, x2 = 1, y = x[1,1])
    - (x1 = 2, x2 = 2, y = x[2,2])
    source

    Containers.default_container

    Containers.nested

    Containers.default_container

    Containers.nested

    JuMP.Containers.nestedFunction
    nested(iterators...; condition = (args...) -> true)

    Create a NestedIterator.

    Example

    julia> iterator = Containers.nested(
                () -> 1:2,
                (i,) -> ["A", "B"];
                condition = (i, j) -> isodd(i) || j == "B",
    @@ -137,12 +137,12 @@
     3-element Vector{Tuple{Int64, String}}:
      (1, "A")
      (1, "B")
    - (2, "B")
    source

    Containers.vectorized_product

    Containers.vectorized_product

    Containers.build_ref_sets

    JuMP.Containers.build_ref_setsFunction
    build_ref_sets(_error::Function, expr)

    Helper function for macros to construct container objects.

    Warning

    This function is for advanced users implementing JuMP extensions. See container_code for more details.

    Arguments

    • _error: a function that takes a String and throws an error, potentially annotating the input string with extra information such as from which macro it was thrown from. Use error if you do not want a modified error message.
    • expr: an Expr that specifies the container, e.g., :(x[i = 1:3, [:red, :blue], k = S; i + k <= 6])

    Returns

    1. index_vars: a Vector{Any} of names for the index variables, e.g., [:i, gensym(), :k]. These may also be expressions, like :((i, j)) from a call like :(x[(i, j) in S]).
    2. indices: an iterator over the indices, for example, Containers.NestedIterator

    Example

    See container_code for a worked example.

    source

    Containers.container_code

    Containers.build_ref_sets

    JuMP.Containers.build_ref_setsFunction
    build_ref_sets(_error::Function, expr)

    Helper function for macros to construct container objects.

    Warning

    This function is for advanced users implementing JuMP extensions. See container_code for more details.

    Arguments

    • _error: a function that takes a String and throws an error, potentially annotating the input string with extra information such as from which macro it was thrown from. Use error if you do not want a modified error message.
    • expr: an Expr that specifies the container, e.g., :(x[i = 1:3, [:red, :blue], k = S; i + k <= 6])

    Returns

    1. index_vars: a Vector{Any} of names for the index variables, e.g., [:i, gensym(), :k]. These may also be expressions, like :((i, j)) from a call like :(x[(i, j) in S]).
    2. indices: an iterator over the indices, for example, Containers.NestedIterator

    Example

    See container_code for a worked example.

    source

    Containers.container_code

    JuMP.Containers.container_codeFunction
    container_code(
         index_vars::Vector{Any},
         indices::Expr,
         code,
    @@ -164,7 +164,7 @@
         Dimension 2, ["A", "B"]
     And data, a 2×2 Matrix{String}:
      "A"   "B"
    - "AA"  "BB"
    source

    Containers.AutoContainerType

    Containers.NestedIterator

    Containers.AutoContainerType

    Containers.NestedIterator

    JuMP.Containers.NestedIteratorType
    struct NestedIterator{T}
         iterators::T # Tuple of functions
         condition::Function
     end

    Iterators over the tuples that are produced by a nested for loop.

    Construct a NestedIterator using nested.

    Example

    julia> iterators = (() -> 1:2, (i,) -> ["A", "B"]);
    @@ -187,6 +187,6 @@
            end
     (1, "A")
     (1, "B")
    -(2, "B")
    source

    Containers.VectorizedProductIterator

    Containers.VectorizedProductIterator

    +end

    A wrapper type for Iterators.ProuctIterator that discards shape information and returns a Vector.

    Construct a VectorizedProductIterator using vectorized_product.

    source diff --git a/previews/PR3561/api/JuMP/index.html b/previews/PR3561/api/JuMP/index.html index b6d25ea0017..70a9bc43fb0 100644 --- a/previews/PR3561/api/JuMP/index.html +++ b/previews/PR3561/api/JuMP/index.html @@ -15,7 +15,7 @@ 3-element Vector{NonlinearConstraintRef{ScalarShape}}: (sin(1.0 * x) - 1.0 / 1.0) - 0.0 ≤ 0 (sin(2.0 * x) - 1.0 / 2.0) - 0.0 ≤ 0 - (sin(3.0 * x) - 1.0 / 3.0) - 0.0 ≤ 0source

    @NLconstraints

    JuMP.@NLconstraintsMacro
    @NLconstraints(model, args...)

    Adds multiple nonlinear constraints to model at once, in the same fashion as the @NLconstraint macro.

    The model must be the first argument, and multiple constraints can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the constraints that were defined.

    Example

    julia> model = Model();
    + (sin(3.0 * x) - 1.0 / 3.0) - 0.0 ≤ 0
    source

    @NLconstraints

    JuMP.@NLconstraintsMacro
    @NLconstraints(model, args...)

    Adds multiple nonlinear constraints to model at once, in the same fashion as the @NLconstraint macro.

    The model must be the first argument, and multiple constraints can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the constraints that were defined.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -31,7 +31,7 @@
                t >= sqrt(x^2 + y^2)
                [i = 1:2], z[i] <= log(a[i])
            end)
    -((t - sqrt(x ^ 2.0 + y ^ 2.0)) - 0.0 ≥ 0, NonlinearConstraintRef{ScalarShape}[(z[1] - log(4.0)) - 0.0 ≤ 0, (z[2] - log(5.0)) - 0.0 ≤ 0])
    source

    @NLexpression

    JuMP.@NLexpressionMacro
    @NLexpression(args...)

    Efficiently build a nonlinear expression which can then be inserted in other nonlinear constraints and the objective. See also [@expression]. For example:

    julia> model = Model();
    +((t - sqrt(x ^ 2.0 + y ^ 2.0)) - 0.0 ≥ 0, NonlinearConstraintRef{ScalarShape}[(z[1] - log(4.0)) - 0.0 ≤ 0, (z[2] - log(5.0)) - 0.0 ≤ 0])
    source

    @NLexpression

    JuMP.@NLexpressionMacro
    @NLexpression(args...)

    Efficiently build a nonlinear expression which can then be inserted in other nonlinear constraints and the objective. See also [@expression]. For example:

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -52,7 +52,7 @@
      subexpression[4]: sin(3.0 * x)
     
     julia> my_expr_2 = @NLexpression(model, log(1 + sum(exp(my_expr_1[i]) for i in 1:2)))
    -subexpression[5]: log(1.0 + (exp(subexpression[2]) + exp(subexpression[3])))
    source

    @NLexpressions

    JuMP.@NLexpressionsMacro
    @NLexpressions(model, args...)

    Adds multiple nonlinear expressions to model at once, in the same fashion as the @NLexpression macro.

    The model must be the first argument, and multiple expressions can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the expressions that were defined.

    Example

    julia> model = Model();
    +subexpression[5]: log(1.0 + (exp(subexpression[2]) + exp(subexpression[3])))
    source

    @NLexpressions

    JuMP.@NLexpressionsMacro
    @NLexpressions(model, args...)

    Adds multiple nonlinear expressions to model at once, in the same fashion as the @NLexpression macro.

    The model must be the first argument, and multiple expressions can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the expressions that were defined.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -66,7 +66,7 @@
                my_expr, sqrt(x^2 + y^2)
                my_expr_1[i = 1:2], log(a[i]) - z[i]
            end)
    -(subexpression[1]: sqrt(x ^ 2.0 + y ^ 2.0), NonlinearExpression[subexpression[2]: log(4.0) - z[1], subexpression[3]: log(5.0) - z[2]])
    source

    @NLobjective

    JuMP.@NLobjectiveMacro
    @NLobjective(model, sense, expression)

    Add a nonlinear objective to model with optimization sense sense. sense must be Max or Min.

    Example

    julia> model = Model();
    +(subexpression[1]: sqrt(x ^ 2.0 + y ^ 2.0), NonlinearExpression[subexpression[2]: log(4.0) - z[1], subexpression[3]: log(5.0) - z[2]])
    source

    @NLobjective

    JuMP.@NLobjectiveMacro
    @NLobjective(model, sense, expression)

    Add a nonlinear objective to model with optimization sense sense. sense must be Max or Min.

    Example

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -75,7 +75,7 @@
     
     julia> print(model)
     Max 2.0 * x + 1.0 + sin(x)
    -Subject to
    source

    @NLparameter

    JuMP.@NLparameterMacro
    @NLparameter(model, param == value)

    Create and return a nonlinear parameter param attached to the model model with initial value set to value. Nonlinear parameters may be used only in nonlinear expressions.

    Example

    julia> model = Model();
    +Subject to
    source

    @NLparameter

    JuMP.@NLparameterMacro
    @NLparameter(model, param == value)

    Create and return a nonlinear parameter param attached to the model model with initial value set to value. Nonlinear parameters may be used only in nonlinear expressions.

    Example

    julia> model = Model();
     
     julia> @NLparameter(model, x == 10)
     x == 10.0
    @@ -105,7 +105,7 @@
      parameter[3] == 6.0
     
     julia> value(y[2])
    -4.0
    source

    @NLparameters

    JuMP.@NLparametersMacro
     @NLparameters(model, args...)

    Create and return multiple nonlinear parameters attached to model model, in the same fashion as @NLparameter macro.

    The model must be the first argument, and multiple parameters can be added on multiple lines wrapped in a begin ... end block. Distinct parameters need to be placed on separate lines as in the following example.

    The macro returns a tuple containing the parameters that were defined.

    Example

    julia> model = Model();
    +4.0
    source

    @NLparameters

    JuMP.@NLparametersMacro
     @NLparameters(model, args...)

    Create and return multiple nonlinear parameters attached to model model, in the same fashion as @NLparameter macro.

    The model must be the first argument, and multiple parameters can be added on multiple lines wrapped in a begin ... end block. Distinct parameters need to be placed on separate lines as in the following example.

    The macro returns a tuple containing the parameters that were defined.

    Example

    julia> model = Model();
     
     julia> @NLparameters(model, begin
                x == 10
    @@ -113,12 +113,12 @@
            end);
     
     julia> value(x)
    -10.0
    source

    @build_constraint

    JuMP.@build_constraintMacro
    @build_constraint(constraint_expr)

    Constructs a ScalarConstraint or VectorConstraint using the same machinery as @constraint but without adding the constraint to a model.

    Constraints using broadcast operators like x .<= 1 are also supported and will create arrays of ScalarConstraint or VectorConstraint.

    Example

    julia> model = Model();
    +10.0
    source

    @build_constraint

    JuMP.@build_constraintMacro
    @build_constraint(constraint_expr)

    Constructs a ScalarConstraint or VectorConstraint using the same machinery as @constraint but without adding the constraint to a model.

    Constraints using broadcast operators like x .<= 1 are also supported and will create arrays of ScalarConstraint or VectorConstraint.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
     julia> @build_constraint(2x >= 1)
    -ScalarConstraint{AffExpr, MathOptInterface.GreaterThan{Float64}}(2 x, MathOptInterface.GreaterThan{Float64}(1.0))
    source

    @constraint

    JuMP.@constraintMacro
    @constraint(m::GenericModel, expr, kw_args...)

    Add a constraint described by the expression expr.

    @constraint(m::GenericModel, ref[i=..., j=..., ...], expr, kw_args...)

    Add a group of constraints described by the expression expr parametrized by i, j, ...

    The expression expr can either be

    • of the form func in set constraining the function func to belong to the set set which is either a MOI.AbstractSet or one of the JuMP shortcuts SecondOrderCone, RotatedSecondOrderCone and PSDCone, e.g. @constraint(model, [1, x-1, y-2] in SecondOrderCone()) constrains the norm of [x-1, y-2] be less than 1;
    • of the form a sign b, where sign is one of ==, , >=, and <= building the single constraint enforcing the comparison to hold for the expression a and b, e.g. @constraint(m, x^2 + y^2 == 1) constrains x and y to lie on the unit circle;
    • of the form a ≤ b ≤ c or a ≥ b ≥ c (where and <= (resp. and >=) can be used interchangeably) constraining the paired the expression b to lie between a and c;
    • of the forms @constraint(m, a .sign b) or @constraint(m, a .sign b .sign c) which broadcast the constraint creation to each element of the vectors.

    The recognized keyword arguments in kw_args are the following:

    • base_name: Sets the name prefix used to generate constraint names. It corresponds to the constraint name for scalar constraints, otherwise, the constraint names are set to base_name[...] for each index ... of the axes axes.
    • container: Specify the container type.
    • set_string_name::Bool = true: control whether to set the MOI.ConstraintName attribute. Passing set_string_name = false can improve performance.

    Note for extending the constraint macro

    Each constraint will be created using add_constraint(m, build_constraint(_error, func, set)) where

    • _error is an error function showing the constraint call in addition to the error message given as argument,
    • func is the expression that is constrained
    • and set is the set in which it is constrained to belong.

    For expr of the first type (i.e. @constraint(m, func in set)), func and set are passed unchanged to build_constraint but for the other types, they are determined from the expressions and signs. For instance, @constraint(m, x^2 + y^2 == 1) is transformed into add_constraint(m, build_constraint(_error, x^2 + y^2, MOI.EqualTo(1.0))).

    To extend JuMP to accept new constraints of this form, it is necessary to add the corresponding methods to build_constraint. Note that this will likely mean that either func or set will be some custom type, rather than e.g. a Symbol, since we will likely want to dispatch on the type of the function or set appearing in the constraint.

    For extensions that need to create constraints with more information than just func and set, an additional positional argument can be specified to @constraint that will then be passed on build_constraint. Hence, we can enable this syntax by defining extensions of build_constraint(_error, func, set, my_arg; kw_args...). This produces the user syntax: @constraint(model, ref[...], expr, my_arg, kw_args...).

    source

    @constraints

    JuMP.@constraintsMacro
    @constraints(model, args...)

    Adds groups of constraints at once, in the same fashion as the @constraint macro.

    The model must be the first argument, and multiple constraints can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the constraints that were defined.

    Example

    julia> model = Model();
    +ScalarConstraint{AffExpr, MathOptInterface.GreaterThan{Float64}}(2 x, MathOptInterface.GreaterThan{Float64}(1.0))
    source

    @constraint

    JuMP.@constraintMacro
    @constraint(m::GenericModel, expr, kw_args...)

    Add a constraint described by the expression expr.

    @constraint(m::GenericModel, ref[i=..., j=..., ...], expr, kw_args...)

    Add a group of constraints described by the expression expr parametrized by i, j, ...

    The expression expr can either be

    • of the form func in set constraining the function func to belong to the set set which is either a MOI.AbstractSet or one of the JuMP shortcuts SecondOrderCone, RotatedSecondOrderCone and PSDCone, e.g. @constraint(model, [1, x-1, y-2] in SecondOrderCone()) constrains the norm of [x-1, y-2] be less than 1;
    • of the form a sign b, where sign is one of ==, , >=, and <= building the single constraint enforcing the comparison to hold for the expression a and b, e.g. @constraint(m, x^2 + y^2 == 1) constrains x and y to lie on the unit circle;
    • of the form a ≤ b ≤ c or a ≥ b ≥ c (where and <= (resp. and >=) can be used interchangeably) constraining the paired the expression b to lie between a and c;
    • of the forms @constraint(m, a .sign b) or @constraint(m, a .sign b .sign c) which broadcast the constraint creation to each element of the vectors.

    The recognized keyword arguments in kw_args are the following:

    • base_name: Sets the name prefix used to generate constraint names. It corresponds to the constraint name for scalar constraints, otherwise, the constraint names are set to base_name[...] for each index ... of the axes axes.
    • container: Specify the container type.
    • set_string_name::Bool = true: control whether to set the MOI.ConstraintName attribute. Passing set_string_name = false can improve performance.

    Note for extending the constraint macro

    Each constraint will be created using add_constraint(m, build_constraint(_error, func, set)) where

    • _error is an error function showing the constraint call in addition to the error message given as argument,
    • func is the expression that is constrained
    • and set is the set in which it is constrained to belong.

    For expr of the first type (i.e. @constraint(m, func in set)), func and set are passed unchanged to build_constraint but for the other types, they are determined from the expressions and signs. For instance, @constraint(m, x^2 + y^2 == 1) is transformed into add_constraint(m, build_constraint(_error, x^2 + y^2, MOI.EqualTo(1.0))).

    To extend JuMP to accept new constraints of this form, it is necessary to add the corresponding methods to build_constraint. Note that this will likely mean that either func or set will be some custom type, rather than e.g. a Symbol, since we will likely want to dispatch on the type of the function or set appearing in the constraint.

    For extensions that need to create constraints with more information than just func and set, an additional positional argument can be specified to @constraint that will then be passed on build_constraint. Hence, we can enable this syntax by defining extensions of build_constraint(_error, func, set, my_arg; kw_args...). This produces the user syntax: @constraint(model, ref[...], expr, my_arg, kw_args...).

    source

    @constraints

    JuMP.@constraintsMacro
    @constraints(model, args...)

    Adds groups of constraints at once, in the same fashion as the @constraint macro.

    The model must be the first argument, and multiple constraints can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the constraints that were defined.

    Example

    julia> model = Model();
     
     julia> @variable(model, w);
     
    @@ -141,7 +141,7 @@
      sum_to_one[2] : y + z[2] = 1
      sum_to_one[3] : y + z[3] = 1
      x ≥ 1
    - -w + y ≤ 2
    source

    @expression

    JuMP.@expressionMacro
    @expression(args...)

    Efficiently builds a linear or quadratic expression but does not add to model immediately. Instead, returns the expression which can then be inserted in other constraints.

    Example

    julia> model = Model();
    + -w + y ≤ 2
    source

    @expression

    JuMP.@expressionMacro
    @expression(args...)

    Efficiently builds a linear or quadratic expression but does not add to model immediately. Instead, returns the expression which can then be inserted in other constraints.

    Example

    julia> model = Model();
     
     julia> @variable(model, x[1:5]);
     
    @@ -164,7 +164,7 @@
     3-element Vector{AffExpr}:
      x[1] + x[2] + x[3]
      2 x[1] + 2 x[2] + 2 x[3]
    - 3 x[1] + 3 x[2] + 3 x[3]
    source

    @expressions

    JuMP.@expressionsMacro
    @expressions(model, args...)

    Adds multiple expressions to model at once, in the same fashion as the @expression macro.

    The model must be the first argument, and multiple expressions can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the expressions that were defined.

    Example

    julia> model = Model();
    + 3 x[1] + 3 x[2] + 3 x[3]
    source

    @expressions

    JuMP.@expressionsMacro
    @expressions(model, args...)

    Adds multiple expressions to model at once, in the same fashion as the @expression macro.

    The model must be the first argument, and multiple expressions can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the expressions that were defined.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -178,7 +178,7 @@
                my_expr, x^2 + y^2
                my_expr_1[i = 1:2], a[i] - z[i]
            end)
    -(x² + y², AffExpr[-z[1] + 4, -z[2] + 5])
    source

    @objective

    JuMP.@objectiveMacro
    @objective(model::GenericModel, sense, func)

    Set the objective sense to sense and objective function to func. The objective sense can be either Min, Max, MOI.MIN_SENSE, MOI.MAX_SENSE or MOI.FEASIBILITY_SENSE; see MOI.ObjectiveSense.

    In order to set the sense programmatically, i.e., when sense is a Julia variable whose value is the sense, one of the three MOI.ObjectiveSense values should be used.

    Example

    To minimize the value of the variable x, do as follows:

    julia> model = Model();
    +(x² + y², AffExpr[-z[1] + 4, -z[2] + 5])
    source

    @objective

    JuMP.@objectiveMacro
    @objective(model::GenericModel, sense, func)

    Set the objective sense to sense and objective function to func. The objective sense can be either Min, Max, MOI.MIN_SENSE, MOI.MAX_SENSE or MOI.FEASIBILITY_SENSE; see MOI.ObjectiveSense.

    In order to set the sense programmatically, i.e., when sense is a Julia variable whose value is the sense, one of the three MOI.ObjectiveSense values should be used.

    Example

    To minimize the value of the variable x, do as follows:

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -189,7 +189,7 @@
     MIN_SENSE::OptimizationSense = 0
     
     julia> @objective(model, sense, x^2 - 2x + 1)
    -x² - 2 x + 1
    source

    @operator

    JuMP.@operatorMacro
    @operator(model, operator, dim, f[, ∇f[, ∇²f]])

    Add the nonlinear operator operator in model with dim arguments, and create a new NonlinearOperator object called operator in the current scope.

    The function f evaluates the operator and must return a scalar.

    The optional function ∇f evaluates the first derivative, and the optional function ∇²f evaluates the second derivative.

    ∇²f may be provided only if ∇f is also provided.

    Univariate syntax

    If dim == 1, then the method signatures of each function must be:

    • f(::T)::T where {T<:Real}
    • ∇f(::T)::T where {T<:Real}
    • ∇²f(::T)::T where {T<:Real}

    Multivariate syntax

    If dim > 1, then the method signatures of each function must be:

    • f(x::T...)::T where {T<:Real}
    • ∇f(g::AbstractVector{T}, x::T...)::Nothing where {T<:Real}
    • ∇²f(H::AbstractMatrix{T}, x::T...)::Nothing where {T<:Real}

    Where the gradient vector g and Hessian matrix H are filled in-place. For the Hessian, you must fill in the non-zero lower-triangular entries only. Setting an off-diagonal upper-triangular element may error.

    Example

    julia> model = Model();
    +x² - 2 x + 1
    source

    @operator

    JuMP.@operatorMacro
    @operator(model, operator, dim, f[, ∇f[, ∇²f]])

    Add the nonlinear operator operator in model with dim arguments, and create a new NonlinearOperator object called operator in the current scope.

    The function f evaluates the operator and must return a scalar.

    The optional function ∇f evaluates the first derivative, and the optional function ∇²f evaluates the second derivative.

    ∇²f may be provided only if ∇f is also provided.

    Univariate syntax

    If dim == 1, then the method signatures of each function must be:

    • f(::T)::T where {T<:Real}
    • ∇f(::T)::T where {T<:Real}
    • ∇²f(::T)::T where {T<:Real}

    Multivariate syntax

    If dim > 1, then the method signatures of each function must be:

    • f(x::T...)::T where {T<:Real}
    • ∇f(g::AbstractVector{T}, x::T...)::Nothing where {T<:Real}
    • ∇²f(H::AbstractMatrix{T}, x::T...)::Nothing where {T<:Real}

    Where the gradient vector g and Hessian matrix H are filled in-place. For the Hessian, you must fill in the non-zero lower-triangular entries only. Setting an off-diagonal upper-triangular element may error.

    Example

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -228,7 +228,7 @@
     f (generic function with 1 method)
     
     julia> op_f = model[:op_f] = add_nonlinear_operator(model, 1, f; name = :op_f)
    -NonlinearOperator(f, :op_f)
    source

    @variable

    JuMP.@variableMacro
    @variable(model, expr, args..., kw_args...)

    Add a variable to the model model described by the expression expr, the positional arguments args and the keyword arguments kw_args.

    Anonymous and named variables

    expr must be one of the forms:

    • Omitted, like @variable(model), which creates an anonymous variable
    • A single symbol like @variable(model, x)
    • A container expression like @variable(model, x[i=1:3])
    • An anoymous container expression like @variable(model, [i=1:3])

    Bounds

    In addition, the expression can have bounds, such as:

    • @variable(model, x >= 0)
    • @variable(model, x <= 0)
    • @variable(model, x == 0)
    • @variable(model, 0 <= x <= 1)

    and bounds can depend on the indices of the container expressions:

    • @variable(model, -i <= x[i=1:3] <= i)

    Sets

    You can explicitly specify the set to which the variable belongs:

    • @variable(model, x in MOI.Interval(0.0, 1.0))

    For more information on this syntax, read Variables constrained on creation.

    Positional arguments

    The recognized positional arguments in args are the following:

    • Bin: restricts the variable to the MOI.ZeroOne set, that is, {0, 1}. For example, @variable(model, x, Bin). Note: you cannot use @variable(model, Bin), use the binary keyword instead.
    • Int: restricts the variable to the set of integers, that is, ..., -2, -1, 0, 1, 2, ... For example, @variable(model, x, Int). Note: you cannot use @variable(model, Int), use the integer keyword instead.
    • Symmetric: Only available when creating a square matrix of variables, i.e., when expr is of the form varname[1:n,1:n] or varname[i=1:n,j=1:n], it creates a symmetric matrix of variables.
    • PSD: A restrictive extension to Symmetric which constraints a square matrix of variables to Symmetric and constrains to be positive semidefinite.

    Keyword arguments

    Four keyword arguments are useful in all cases:

    • base_name: Sets the name prefix used to generate variable names. It corresponds to the variable name for scalar variable, otherwise, the variable names are set to base_name[...] for each index ... of the axes axes.
    • start::Float64: specify the value passed to set_start_value for each variable
    • container: specify the container type. See Forcing the container type for more information.
    • set_string_name::Bool = true: control whether to set the MOI.VariableName attribute. Passing set_string_name = false can improve performance.

    Other keyword arguments are needed to disambiguate sitations with anonymous variables:

    • lower_bound::Float64: an alternative to x >= lb, sets the value of the variable lower bound.
    • upper_bound::Float64: an alternative to x <= ub, sets the value of the variable upper bound.
    • binary::Bool: an alternative to passing Bin, sets whether the variable is binary or not.
    • integer::Bool: an alternative to passing Int, sets whether the variable is integer or not.
    • set::MOI.AbstractSet: an alternative to using x in set
    • variable_type: used by JuMP extensions. See Extend @variable for more information.

    Example

    The following are equivalent ways of creating a variable x of name x with lower bound 0:

    julia> model = Model();
    +NonlinearOperator(f, :op_f)
    source

    @variable

    JuMP.@variableMacro
    @variable(model, expr, args..., kw_args...)

    Add a variable to the model model described by the expression expr, the positional arguments args and the keyword arguments kw_args.

    Anonymous and named variables

    expr must be one of the forms:

    • Omitted, like @variable(model), which creates an anonymous variable
    • A single symbol like @variable(model, x)
    • A container expression like @variable(model, x[i=1:3])
    • An anoymous container expression like @variable(model, [i=1:3])

    Bounds

    In addition, the expression can have bounds, such as:

    • @variable(model, x >= 0)
    • @variable(model, x <= 0)
    • @variable(model, x == 0)
    • @variable(model, 0 <= x <= 1)

    and bounds can depend on the indices of the container expressions:

    • @variable(model, -i <= x[i=1:3] <= i)

    Sets

    You can explicitly specify the set to which the variable belongs:

    • @variable(model, x in MOI.Interval(0.0, 1.0))

    For more information on this syntax, read Variables constrained on creation.

    Positional arguments

    The recognized positional arguments in args are the following:

    • Bin: restricts the variable to the MOI.ZeroOne set, that is, {0, 1}. For example, @variable(model, x, Bin). Note: you cannot use @variable(model, Bin), use the binary keyword instead.
    • Int: restricts the variable to the set of integers, that is, ..., -2, -1, 0, 1, 2, ... For example, @variable(model, x, Int). Note: you cannot use @variable(model, Int), use the integer keyword instead.
    • Symmetric: Only available when creating a square matrix of variables, i.e., when expr is of the form varname[1:n,1:n] or varname[i=1:n,j=1:n], it creates a symmetric matrix of variables.
    • PSD: A restrictive extension to Symmetric which constraints a square matrix of variables to Symmetric and constrains to be positive semidefinite.

    Keyword arguments

    Four keyword arguments are useful in all cases:

    • base_name: Sets the name prefix used to generate variable names. It corresponds to the variable name for scalar variable, otherwise, the variable names are set to base_name[...] for each index ... of the axes axes.
    • start::Float64: specify the value passed to set_start_value for each variable
    • container: specify the container type. See Forcing the container type for more information.
    • set_string_name::Bool = true: control whether to set the MOI.VariableName attribute. Passing set_string_name = false can improve performance.

    Other keyword arguments are needed to disambiguate sitations with anonymous variables:

    • lower_bound::Float64: an alternative to x >= lb, sets the value of the variable lower bound.
    • upper_bound::Float64: an alternative to x <= ub, sets the value of the variable upper bound.
    • binary::Bool: an alternative to passing Bin, sets whether the variable is binary or not.
    • integer::Bool: an alternative to passing Int, sets whether the variable is integer or not.
    • set::MOI.AbstractSet: an alternative to using x in set
    • variable_type: used by JuMP extensions. See Extend @variable for more information.

    Example

    The following are equivalent ways of creating a variable x of name x with lower bound 0:

    julia> model = Model();
     
     julia> @variable(model, x >= 0)
     x
    julia> model = Model();
    @@ -257,14 +257,14 @@
     3-element Vector{VariableRef}:
      _[7]
      _[8]
    - _[9]
    source

    @variables

    JuMP.@variablesMacro
    @variables(model, args...)

    Adds multiple variables to model at once, in the same fashion as the @variable macro.

    The model must be the first argument, and multiple variables can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the variables that were defined.

    Example

    julia> model = Model();
    + _[9]
    source

    @variables

    JuMP.@variablesMacro
    @variables(model, args...)

    Adds multiple variables to model at once, in the same fashion as the @variable macro.

    The model must be the first argument, and multiple variables can be added on multiple lines wrapped in a begin ... end block.

    The macro returns a tuple containing the variables that were defined.

    Example

    julia> model = Model();
     
     julia> @variables(model, begin
                x
                y[i = 1:2] >= 0, (start = i)
                z, Bin, (start = 0, base_name = "Z")
            end)
    -(x, VariableRef[y[1], y[2]], Z)
    Note

    Keyword arguments must be contained within parentheses (refer to the example above).

    source

    add_bridge

    JuMP.add_bridgeFunction
    add_bridge(
    +(x, VariableRef[y[1], y[2]], Z)
    Note

    Keyword arguments must be contained within parentheses (refer to the example above).

    source

    add_bridge

    JuMP.add_bridgeFunction
    add_bridge(
         model::GenericModel{T},
         BT::Type{<:MOI.Bridges.AbstractBridge};
         coefficient_type::Type{S} = T,
    @@ -276,17 +276,17 @@
                model,
                MOI.Bridges.Constraint.NumberConversionBridge;
                coefficient_type = Complex{Float64}
    -       )
    source

    add_constraint

    JuMP.add_constraintFunction
    add_constraint(model::GenericModel, con::AbstractConstraint, name::String="")

    Add a constraint con to Model model and sets its name.

    source

    add_nonlinear_constraint

    JuMP.add_nonlinear_constraintFunction
    add_nonlinear_constraint(model::Model, expr::Expr)

    Add a nonlinear constraint described by the Julia expression ex to model.

    This function is most useful if the expression ex is generated programmatically, and you cannot use @NLconstraint.

    Notes

    • You must interpolate the variables directly into the expression expr.

    Example

    julia> model = Model();
    +       )
    source

    add_constraint

    JuMP.add_constraintFunction
    add_constraint(model::GenericModel, con::AbstractConstraint, name::String="")

    Add a constraint con to Model model and sets its name.

    source

    add_nonlinear_constraint

    JuMP.add_nonlinear_constraintFunction
    add_nonlinear_constraint(model::Model, expr::Expr)

    Add a nonlinear constraint described by the Julia expression ex to model.

    This function is most useful if the expression ex is generated programmatically, and you cannot use @NLconstraint.

    Notes

    • You must interpolate the variables directly into the expression expr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
     julia> add_nonlinear_constraint(model, :($(x) + $(x)^2 <= 1))
    -(x + x ^ 2.0) - 1.0 ≤ 0
    source

    add_nonlinear_expression

    JuMP.add_nonlinear_expressionFunction
    add_nonlinear_expression(model::Model, expr::Expr)

    Add a nonlinear expression expr to model.

    This function is most useful if the expression expr is generated programmatically, and you cannot use @NLexpression.

    Notes

    • You must interpolate the variables directly into the expression expr.

    Example

    julia> model = Model();
    +(x + x ^ 2.0) - 1.0 ≤ 0
    source

    add_nonlinear_expression

    JuMP.add_nonlinear_expressionFunction
    add_nonlinear_expression(model::Model, expr::Expr)

    Add a nonlinear expression expr to model.

    This function is most useful if the expression expr is generated programmatically, and you cannot use @NLexpression.

    Notes

    • You must interpolate the variables directly into the expression expr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
     julia> add_nonlinear_expression(model, :($(x) + $(x)^2))
    -subexpression[1]: x + x ^ 2.0
    source

    add_nonlinear_operator

    add_nonlinear_operator

    add_nonlinear_parameter

    add_to_expression!

    JuMP.add_to_expression!Function
    add_to_expression!(expression, terms...)

    Updates expression in place to expression + (*)(terms...). This is typically much more efficient than expression += (*)(terms...). For example, add_to_expression!(expression, a, b) produces the same result as expression += a*b, and add_to_expression!(expression, a) produces the same result as expression += a.

    Only a few methods are defined, mostly for internal use, and only for the cases when (1) they can be implemented efficiently and (2) expression is capable of storing the result. For example, add_to_expression!(::AffExpr, ::GenericVariableRef, ::GenericVariableRef) is not defined because a GenericAffExpr cannot store the product of two variables.

    source

    add_to_function_constant

    JuMP.add_to_function_constantFunction
    add_to_function_constant(constraint::ConstraintRef, value)

    Add value to the function constant term.

    Note that for scalar constraints, JuMP will aggregate all constant terms onto the right-hand side of the constraint so instead of modifying the function, the set will be translated by -value. For example, given a constraint 2x <= 3, add_to_function_constant(c, 4) will modify it to 2x <= -1.

    Example

    For scalar constraints, the set is translated by -value:

    julia> model = Model();
    +4.0
    source

    add_nonlinear_parameter

    add_to_expression!

    JuMP.add_to_expression!Function
    add_to_expression!(expression, terms...)

    Updates expression in place to expression + (*)(terms...). This is typically much more efficient than expression += (*)(terms...). For example, add_to_expression!(expression, a, b) produces the same result as expression += a*b, and add_to_expression!(expression, a) produces the same result as expression += a.

    Only a few methods are defined, mostly for internal use, and only for the cases when (1) they can be implemented efficiently and (2) expression is capable of storing the result. For example, add_to_expression!(::AffExpr, ::GenericVariableRef, ::GenericVariableRef) is not defined because a GenericAffExpr cannot store the product of two variables.

    source

    add_to_function_constant

    JuMP.add_to_function_constantFunction
    add_to_function_constant(constraint::ConstraintRef, value)

    Add value to the function constant term.

    Note that for scalar constraints, JuMP will aggregate all constant terms onto the right-hand side of the constraint so instead of modifying the function, the set will be translated by -value. For example, given a constraint 2x <= 3, add_to_function_constant(c, 4) will modify it to 2x <= -1.

    Example

    For scalar constraints, the set is translated by -value:

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -336,7 +336,7 @@
     julia> add_to_function_constant(con, [1, 2, 2])
     
     julia> con
    -con : [x + y + 1, x + 2, y + 2] ∈ MathOptInterface.SecondOrderCone(3)
    source

    add_variable

    JuMP.add_variableFunction
    add_variable(m::GenericModel, v::AbstractVariable, name::String="")

    Add a variable v to Model m and sets its name.

    source

    all_constraints

    JuMP.all_constraintsFunction
    all_constraints(model::GenericModel, function_type, set_type)::Vector{<:ConstraintRef}

    Return a list of all constraints currently in the model where the function has type function_type and the set has type set_type. The constraints are ordered by creation time.

    See also list_of_constraint_types and num_constraints.

    Example

    julia> model = Model();
    +con : [x + y + 1, x + 2, y + 2] ∈ MathOptInterface.SecondOrderCone(3)
    source

    add_variable

    JuMP.add_variableFunction
    add_variable(m::GenericModel, v::AbstractVariable, name::String="")

    Add a variable v to Model m and sets its name.

    source

    all_constraints

    JuMP.all_constraintsFunction
    all_constraints(model::GenericModel, function_type, set_type)::Vector{<:ConstraintRef}

    Return a list of all constraints currently in the model where the function has type function_type and the set has type set_type. The constraints are ordered by creation time.

    See also list_of_constraint_types and num_constraints.

    Example

    julia> model = Model();
     
     julia> @variable(model, x >= 0, Bin);
     
    @@ -352,7 +352,7 @@
     
     julia> all_constraints(model, AffExpr, MOI.LessThan{Float64})
     1-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:
    - 2 x ≤ 1
    source
    all_constraints(
    + 2 x ≤ 1
    source
    all_constraints(
         model::GenericModel;
         include_variable_in_set_constraints::Bool,
     )::Vector{ConstraintRef}

    Return a list of all constraints in model.

    If include_variable_in_set_constraints == true, then VariableRef constraints such as VariableRef-in-Integer are included. To return only the structural constraints (e.g., the rows in the constraint matrix of a linear program), pass include_variable_in_set_constraints = false.

    Example

    julia> model = Model();
    @@ -373,7 +373,7 @@
     julia> all_constraints(model; include_variable_in_set_constraints = false)
     2-element Vector{ConstraintRef}:
      2 x ≤ 1
    - x ^ 2.0 - 1.0 ≤ 0

    Performance considerations

    Note that this function is type-unstable because it returns an abstractly typed vector. If performance is a problem, consider using list_of_constraint_types and a function barrier. See the Performance tips for extensions section of the documentation for more details.

    source

    all_nonlinear_constraints

    JuMP.all_nonlinear_constraintsFunction
    all_nonlinear_constraints(model::GenericModel)

    Return a vector of all nonlinear constraint references in the model in the order they were added to the model.

    source

    all_variables

    JuMP.all_variablesFunction
    all_variables(model::GenericModel{T})::Vector{GenericVariableRef{T}} where {T}

    Returns a list of all variables currently in the model. The variables are ordered by creation time.

    Example

    julia> model = Model();
    + x ^ 2.0 - 1.0 ≤ 0

    Performance considerations

    Note that this function is type-unstable because it returns an abstractly typed vector. If performance is a problem, consider using list_of_constraint_types and a function barrier. See the Performance tips for extensions section of the documentation for more details.

    source

    all_nonlinear_constraints

    JuMP.all_nonlinear_constraintsFunction
    all_nonlinear_constraints(model::GenericModel)

    Return a vector of all nonlinear constraint references in the model in the order they were added to the model.

    source

    all_variables

    JuMP.all_variablesFunction
    all_variables(model::GenericModel{T})::Vector{GenericVariableRef{T}} where {T}

    Returns a list of all variables currently in the model. The variables are ordered by creation time.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -382,7 +382,7 @@
     julia> all_variables(model)
     2-element Vector{VariableRef}:
      x
    - y
    source

    anonymous_name

    JuMP.anonymous_nameFunction
    anonymous_name(::MIME, x::AbstractVariableRef)

    The name to use for an anonymous variable x when printing.

    source

    backend

    JuMP.backendFunction
    backend(model::GenericModel)

    Return the lower-level MathOptInterface model that sits underneath JuMP. This model depends on which operating mode JuMP is in (see mode).

    • If JuMP is in DIRECT mode (i.e., the model was created using direct_model), the backend will be the optimizer passed to direct_model.
    • If JuMP is in MANUAL or AUTOMATIC mode, the backend is a MOI.Utilities.CachingOptimizer.

    This function should only be used by advanced users looking to access low-level MathOptInterface or solver-specific functionality.

    Notes

    If JuMP is not in DIRECT mode, the type returned by backend may change between any JuMP releases. Therefore, only use the public API exposed by MathOptInterface, and do not access internal fields. If you require access to the innermost optimizer, see unsafe_backend. Alternatively, use direct_model to create a JuMP model in DIRECT mode.

    See also: unsafe_backend.

    source

    barrier_iterations

    JuMP.barrier_iterationsFunction
    barrier_iterations(model::GenericModel)

    Gets the cumulative number of barrier iterations during the most recent optimization.

    Solvers must implement MOI.BarrierIterations() to use this function.

    source

    bridge_constraints

    JuMP.bridge_constraintsFunction
    bridge_constraints(model::GenericModel)

    When in direct mode, return false.

    When in manual or automatic mode, return a Bool indicating whether the optimizer is set and unsupported constraints are automatically bridged to equivalent supported constraints when an appropriate transformation is available.

    source

    build_constraint

    anonymous_name

    JuMP.anonymous_nameFunction
    anonymous_name(::MIME, x::AbstractVariableRef)

    The name to use for an anonymous variable x when printing.

    source

    backend

    JuMP.backendFunction
    backend(model::GenericModel)

    Return the lower-level MathOptInterface model that sits underneath JuMP. This model depends on which operating mode JuMP is in (see mode).

    • If JuMP is in DIRECT mode (i.e., the model was created using direct_model), the backend will be the optimizer passed to direct_model.
    • If JuMP is in MANUAL or AUTOMATIC mode, the backend is a MOI.Utilities.CachingOptimizer.

    This function should only be used by advanced users looking to access low-level MathOptInterface or solver-specific functionality.

    Notes

    If JuMP is not in DIRECT mode, the type returned by backend may change between any JuMP releases. Therefore, only use the public API exposed by MathOptInterface, and do not access internal fields. If you require access to the innermost optimizer, see unsafe_backend. Alternatively, use direct_model to create a JuMP model in DIRECT mode.

    See also: unsafe_backend.

    source

    barrier_iterations

    JuMP.barrier_iterationsFunction
    barrier_iterations(model::GenericModel)

    Gets the cumulative number of barrier iterations during the most recent optimization.

    Solvers must implement MOI.BarrierIterations() to use this function.

    source

    bridge_constraints

    JuMP.bridge_constraintsFunction
    bridge_constraints(model::GenericModel)

    When in direct mode, return false.

    When in manual or automatic mode, return a Bool indicating whether the optimizer is set and unsupported constraints are automatically bridged to equivalent supported constraints when an appropriate transformation is available.

    source

    build_constraint

    JuMP.build_constraintFunction
    build_constraint(
         _error::Function,
         Q::LinearAlgebra.Symmetric{V, M},
         ::PSDCone,
    @@ -403,7 +403,7 @@
     
     julia> @constraint(model, Q in PSDCone())
     [Q[1,1]  Q[1,2];
    - Q[1,2]  Q[2,2]] ∈ PSDCone()
    source
    build_constraint(
    + Q[1,2]  Q[2,2]] ∈ PSDCone()
    source
    build_constraint(
         _error::Function,
         Q::AbstractMatrix{<:AbstractJuMPScalar},
         ::PSDCone,
    @@ -413,7 +413,7 @@
     
     julia> @constraint(model, Q in PSDCone())
     [Q[1,1]  Q[1,2];
    - Q[2,1]  Q[2,2]] ∈ PSDCone()
    source
    build_constraint(
    + Q[2,1]  Q[2,2]] ∈ PSDCone()
    source
    build_constraint(
         _error::Function,
         Q::LinearAlgebra.Hermitian{V,M},
         ::HermitianPSDCone,
    @@ -425,44 +425,44 @@
     
     julia> @constraint(model, LinearAlgebra.Hermitian(Q) in HermitianPSDCone())
     [Q[1,1]  Q[1,2];
    - Q[1,2]  Q[2,2]] ∈ HermitianPSDCone()
    source
    build_constraint(
    + Q[1,2]  Q[2,2]] ∈ HermitianPSDCone()
    source
    build_constraint(
         _error::Function,
         f::AbstractVector{<:AbstractJuMPScalar},
         ::Nonnegatives,
         extra::Union{MOI.AbstractVectorSet,AbstractVectorSet},
    -)

    A helper method that re-writes

    @constraint(model, X >= Y, extra)

    into

    @constraint(model, X - Y in extra)
    source
    build_constraint(
    +)

    A helper method that re-writes

    @constraint(model, X >= Y, extra)

    into

    @constraint(model, X - Y in extra)
    source
    build_constraint(
         _error::Function,
         f::AbstractVector{<:AbstractJuMPScalar},
         ::Nonpositives,
         extra::Union{MOI.AbstractVectorSet,AbstractVectorSet},
    -)

    A helper method that re-writes

    @constraint(model, Y <= X, extra)

    into

    @constraint(model, X - Y in extra)
    source

    build_variable

    JuMP.build_variableFunction
    build_variable(
    +)

    A helper method that re-writes

    @constraint(model, Y <= X, extra)

    into

    @constraint(model, X - Y in extra)
    source

    build_variable

    JuMP.build_variableFunction
    build_variable(
         _error::Function,
         info::VariableInfo,
         args...;
         kwargs...,
     )

    Return a new AbstractVariable object.

    This method should only be implemented by developers creating JuMP extensions. It should never be called by users of JuMP.

    Arguments

    • _error: a function to call instead of error. _error annotates the error message with additional information for the user.
    • info: an instance of VariableInfo. This has a variety of fields relating to the variable such as info.lower_bound and info.binary.
    • args: optional additional positional arguments for extending the @variable macro.
    • kwargs: optional keyword arguments for extending the @variable macro.

    See also: @variable

    Warning

    Extensions should define a method with ONE positional argument to dispatch the call to a different method. Creating an extension that relies on multiple positional arguments leads to MethodErrors if the user passes the arguments in the wrong order.

    Example

    @variable(model, x, Foo)

    will call

    build_variable(_error::Function, info::VariableInfo, ::Type{Foo})

    Passing special-case positional arguments such as Bin, Int, and PSD is okay, along with keyword arguments:

    @variable(model, x, Int, Foo(), mykwarg = true)
     # or
    -@variable(model, x, Foo(), Int, mykwarg = true)

    will call

    build_variable(_error::Function, info::VariableInfo, ::Foo; mykwarg)

    and info.integer will be true.

    Note that the order of the positional arguments does not matter.

    source
    build_variable(_error::Function, variables, ::SymmetricMatrixSpace)

    Return a VariablesConstrainedOnCreation of shape SymmetricMatrixShape creating variables in MOI.Reals, i.e. "free" variables unless they are constrained after their creation.

    This function is used by the @variable macro as follows:

    julia> model = Model();
    +@variable(model, x, Foo(), Int, mykwarg = true)

    will call

    build_variable(_error::Function, info::VariableInfo, ::Foo; mykwarg)

    and info.integer will be true.

    Note that the order of the positional arguments does not matter.

    source
    build_variable(_error::Function, variables, ::SymmetricMatrixSpace)

    Return a VariablesConstrainedOnCreation of shape SymmetricMatrixShape creating variables in MOI.Reals, i.e. "free" variables unless they are constrained after their creation.

    This function is used by the @variable macro as follows:

    julia> model = Model();
     
     julia> @variable(model, Q[1:2, 1:2], Symmetric)
     2×2 LinearAlgebra.Symmetric{VariableRef, Matrix{VariableRef}}:
      Q[1,1]  Q[1,2]
    - Q[1,2]  Q[2,2]
    source
    build_variable(_error::Function, variables, ::SkewSymmetricMatrixSpace)

    Return a VariablesConstrainedOnCreation of shape SkewSymmetricMatrixShape creating variables in MOI.Reals, i.e. "free" variables unless they are constrained after their creation.

    This function is used by the @variable macro as follows:

    julia> model = Model();
    + Q[1,2]  Q[2,2]
    source
    build_variable(_error::Function, variables, ::SkewSymmetricMatrixSpace)

    Return a VariablesConstrainedOnCreation of shape SkewSymmetricMatrixShape creating variables in MOI.Reals, i.e. "free" variables unless they are constrained after their creation.

    This function is used by the @variable macro as follows:

    julia> model = Model();
     
     julia> @variable(model, Q[1:2, 1:2] in SkewSymmetricMatrixSpace())
     2×2 Matrix{AffExpr}:
      0        Q[1,2]
    - -Q[1,2]  0
    source
    build_variable(_error::Function, variables, ::HermitianMatrixSpace)

    Return a VariablesConstrainedOnCreation of shape HermitianMatrixShape creating variables in MOI.Reals, i.e. "free" variables unless they are constrained after their creation.

    This function is used by the @variable macro as follows:

    julia> model = Model();
    + -Q[1,2]  0
    source
    build_variable(_error::Function, variables, ::HermitianMatrixSpace)

    Return a VariablesConstrainedOnCreation of shape HermitianMatrixShape creating variables in MOI.Reals, i.e. "free" variables unless they are constrained after their creation.

    This function is used by the @variable macro as follows:

    julia> model = Model();
     
     julia> @variable(model, Q[1:2, 1:2] in HermitianMatrixSpace())
     2×2 LinearAlgebra.Hermitian{GenericAffExpr{ComplexF64, VariableRef}, Matrix{GenericAffExpr{ComplexF64, VariableRef}}}:
      real(Q[1,1])                    real(Q[1,2]) + imag(Q[1,2]) im
    - real(Q[1,2]) - imag(Q[1,2]) im  real(Q[2,2])
    source
    build_variable(_error::Function, variables, ::PSDCone)

    Return a VariablesConstrainedOnCreation of shape SymmetricMatrixShape constraining the variables to be positive semidefinite.

    This function is used by the @variable macro as follows:

    julia> model = Model();
    + real(Q[1,2]) - imag(Q[1,2]) im  real(Q[2,2])
    source
    build_variable(_error::Function, variables, ::PSDCone)

    Return a VariablesConstrainedOnCreation of shape SymmetricMatrixShape constraining the variables to be positive semidefinite.

    This function is used by the @variable macro as follows:

    julia> model = Model();
     
     julia> @variable(model, Q[1:2, 1:2], PSD)
     2×2 LinearAlgebra.Symmetric{VariableRef, Matrix{VariableRef}}:
      Q[1,1]  Q[1,2]
    - Q[1,2]  Q[2,2]
    source

    callback_node_status

    callback_value

    JuMP.callback_valueFunction
    callback_value(cb_data, x::GenericVariableRef)

    Return the primal solution of a variable inside a callback.

    cb_data is the argument to the callback function, and the type is dependent on the solver.

    source
    callback_value(cb_data, expr::Union{GenericAffExpr, GenericQuadExpr})

    Return the primal solution of an affine or quadratic expression inside a callback by getting the value for each variable appearing in the expression.

    cb_data is the argument to the callback function, and the type is dependent on the solver.

    source

    check_belongs_to_model

    coefficient

    JuMP.coefficientFunction
    coefficient(v1::GenericVariableRef{T}, v2::GenericVariableRef{T}) where {T}

    Return one(T) if v1 == v2, and zero(T) otherwise.

    This is a fallback for other coefficient methods to simplify code in which the expression may be a single variable.

    source
    coefficient(a::GenericAffExpr{C,V}, v::V) where {C,V}

    Return the coefficient associated with variable v in the affine expression a.

    source
    coefficient(a::GenericAffExpr{C,V}, v1::V, v2::V) where {C,V}

    Return the coefficient associated with the term v1 * v2 in the quadratic expression a.

    Note that coefficient(a, v1, v2) is the same as coefficient(a, v2, v1).

    source
    coefficient(a::GenericQuadExpr{C,V}, v::V) where {C,V}

    Return the coefficient associated with variable v in the affine component of a.

    source

    compute_conflict!

    JuMP.compute_conflict!Function
    compute_conflict!(model::GenericModel)

    Compute a conflict if the model is infeasible. If an optimizer has not been set yet (see set_optimizer), a NoOptimizer error is thrown.

    The status of the conflict can be checked with the MOI.ConflictStatus model attribute. Then, the status for each constraint can be queried with the MOI.ConstraintConflictStatus attribute.

    source

    constant

    JuMP.constantFunction
    constant(aff::GenericAffExpr{C, V})::C

    Return the constant of the affine expression.

    source
    constant(aff::GenericQuadExpr{C, V})::C

    Return the constant of the quadratic expression.

    source

    constraint_by_name

    callback_node_status

    callback_value

    JuMP.callback_valueFunction
    callback_value(cb_data, x::GenericVariableRef)

    Return the primal solution of a variable inside a callback.

    cb_data is the argument to the callback function, and the type is dependent on the solver.

    source
    callback_value(cb_data, expr::Union{GenericAffExpr, GenericQuadExpr})

    Return the primal solution of an affine or quadratic expression inside a callback by getting the value for each variable appearing in the expression.

    cb_data is the argument to the callback function, and the type is dependent on the solver.

    source

    check_belongs_to_model

    coefficient

    JuMP.coefficientFunction
    coefficient(v1::GenericVariableRef{T}, v2::GenericVariableRef{T}) where {T}

    Return one(T) if v1 == v2, and zero(T) otherwise.

    This is a fallback for other coefficient methods to simplify code in which the expression may be a single variable.

    source
    coefficient(a::GenericAffExpr{C,V}, v::V) where {C,V}

    Return the coefficient associated with variable v in the affine expression a.

    source
    coefficient(a::GenericAffExpr{C,V}, v1::V, v2::V) where {C,V}

    Return the coefficient associated with the term v1 * v2 in the quadratic expression a.

    Note that coefficient(a, v1, v2) is the same as coefficient(a, v2, v1).

    source
    coefficient(a::GenericQuadExpr{C,V}, v::V) where {C,V}

    Return the coefficient associated with variable v in the affine component of a.

    source

    compute_conflict!

    JuMP.compute_conflict!Function
    compute_conflict!(model::GenericModel)

    Compute a conflict if the model is infeasible. If an optimizer has not been set yet (see set_optimizer), a NoOptimizer error is thrown.

    The status of the conflict can be checked with the MOI.ConflictStatus model attribute. Then, the status for each constraint can be queried with the MOI.ConstraintConflictStatus attribute.

    source

    constant

    JuMP.constantFunction
    constant(aff::GenericAffExpr{C, V})::C

    Return the constant of the affine expression.

    source
    constant(aff::GenericQuadExpr{C, V})::C

    Return the constant of the quadratic expression.

    source

    constraint_by_name

    JuMP.constraint_by_nameFunction
    constraint_by_name(model::AbstractModel,
                        name::String)::Union{ConstraintRef, Nothing}

    Return the reference of the constraint with name attribute name or Nothing if no constraint has this name attribute. Throws an error if several constraints have name as their name attribute.

    constraint_by_name(model::AbstractModel,
                        name::String,
                        F::Type{<:Union{AbstractJuMPScalar,
    @@ -484,10 +484,10 @@
     julia> constraint_by_name(model, "con", AffExpr, MOI.EqualTo{Float64})
     
     julia> constraint_by_name(model, "con", QuadExpr, MOI.EqualTo{Float64})
    -con : x² = 1
    source

    constraint_object

    JuMP.constraint_objectFunction
    constraint_object(con_ref::ConstraintRef)

    Return the underlying constraint data for the constraint referenced by ref.

    source

    constraint_ref_with_index

    constraint_string

    constraint_object

    JuMP.constraint_objectFunction
    constraint_object(con_ref::ConstraintRef)

    Return the underlying constraint data for the constraint referenced by ref.

    source

    constraint_ref_with_index

    constraint_string

    JuMP.constraint_stringFunction
    constraint_string(
         mode::MIME,
         ref::ConstraintRef;
    -    in_math_mode::Bool = false)

    Return a string representation of the constraint ref, given the mode.

    source

    constraints_string

    JuMP.constraints_stringFunction
    constraints_string(mode, model::AbstractModel)::Vector{String}

    Return a list of Strings describing each constraint of the model.

    source

    copy_conflict

    JuMP.copy_conflictFunction
    copy_conflict(model::GenericModel)

    Return a copy of the current conflict for the model model and a GenericReferenceMap that can be used to obtain the variable and constraint reference of the new model corresponding to a given model's reference.

    This is a convenience function that provides a filtering function for copy_model.

    Note

    Model copy is not supported in DIRECT mode, i.e. when a model is constructed using the direct_model constructor instead of the Model constructor. Moreover, independently on whether an optimizer was provided at model construction, the new model will have no optimizer, i.e., an optimizer will have to be provided to the new model in the optimize! call.

    Example

    In the following example, a model model is constructed with a variable x and two constraints c1 and c2. This model has no solution, as the two constraints are mutually exclusive. The solver is asked to compute a conflict with compute_conflict!. The parts of model participating in the conflict are then copied into a model iis_model.

    julia> using JuMP
    +    in_math_mode::Bool = false)

    Return a string representation of the constraint ref, given the mode.

    source

    constraints_string

    JuMP.constraints_stringFunction
    constraints_string(mode, model::AbstractModel)::Vector{String}

    Return a list of Strings describing each constraint of the model.

    source

    copy_conflict

    JuMP.copy_conflictFunction
    copy_conflict(model::GenericModel)

    Return a copy of the current conflict for the model model and a GenericReferenceMap that can be used to obtain the variable and constraint reference of the new model corresponding to a given model's reference.

    This is a convenience function that provides a filtering function for copy_model.

    Note

    Model copy is not supported in DIRECT mode, i.e. when a model is constructed using the direct_model constructor instead of the Model constructor. Moreover, independently on whether an optimizer was provided at model construction, the new model will have no optimizer, i.e., an optimizer will have to be provided to the new model in the optimize! call.

    Example

    In the following example, a model model is constructed with a variable x and two constraints c1 and c2. This model has no solution, as the two constraints are mutually exclusive. The solver is asked to compute a conflict with compute_conflict!. The parts of model participating in the conflict are then copied into a model iis_model.

    julia> using JuMP
     
     julia> import Gurobi
     
    @@ -515,7 +515,7 @@
     Feasibility
     Subject to
      c1 : x ≥ 2
    - c2 : x ≤ 1
    source

    copy_extension_data

    JuMP.copy_extension_dataFunction
    copy_extension_data(data, new_model::AbstractModel, model::AbstractModel)

    Return a copy of the extension data data of the model model to the extension data of the new model new_model.

    A method should be added for any JuMP extension storing data in the ext field.

    Warning

    Do not engage in type piracy by implementing this method for types of data that you did not define! JuMP extensions should store types that they define in model.ext, rather than regular Julia types.

    source

    copy_model

    JuMP.copy_modelFunction
    copy_model(model::GenericModel; filter_constraints::Union{Nothing, Function}=nothing)

    Return a copy of the model model and a GenericReferenceMap that can be used to obtain the variable and constraint reference of the new model corresponding to a given model's reference. A Base.copy(::AbstractModel) method has also been implemented, it is similar to copy_model but does not return the reference map.

    If the filter_constraints argument is given, only the constraints for which this function returns true will be copied. This function is given a constraint reference as argument.

    Note

    Model copy is not supported in DIRECT mode, i.e. when a model is constructed using the direct_model constructor instead of the Model constructor. Moreover, independently on whether an optimizer was provided at model construction, the new model will have no optimizer, i.e., an optimizer will have to be provided to the new model in the optimize! call.

    Example

    In the following example, a model model is constructed with a variable x and a constraint cref. It is then copied into a model new_model with the new references assigned to x_new and cref_new.

    julia> model = Model();
    + c2 : x ≤ 1
    source

    copy_extension_data

    JuMP.copy_extension_dataFunction
    copy_extension_data(data, new_model::AbstractModel, model::AbstractModel)

    Return a copy of the extension data data of the model model to the extension data of the new model new_model.

    A method should be added for any JuMP extension storing data in the ext field.

    Warning

    Do not engage in type piracy by implementing this method for types of data that you did not define! JuMP extensions should store types that they define in model.ext, rather than regular Julia types.

    source

    copy_model

    JuMP.copy_modelFunction
    copy_model(model::GenericModel; filter_constraints::Union{Nothing, Function}=nothing)

    Return a copy of the model model and a GenericReferenceMap that can be used to obtain the variable and constraint reference of the new model corresponding to a given model's reference. A Base.copy(::AbstractModel) method has also been implemented, it is similar to copy_model but does not return the reference map.

    If the filter_constraints argument is given, only the constraints for which this function returns true will be copied. This function is given a constraint reference as argument.

    Note

    Model copy is not supported in DIRECT mode, i.e. when a model is constructed using the direct_model constructor instead of the Model constructor. Moreover, independently on whether an optimizer was provided at model construction, the new model will have no optimizer, i.e., an optimizer will have to be provided to the new model in the optimize! call.

    Example

    In the following example, a model model is constructed with a variable x and a constraint cref. It is then copied into a model new_model with the new references assigned to x_new and cref_new.

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -529,7 +529,7 @@
     x
     
     julia> cref_new = reference_map[cref]
    -cref : x = 2
    source

    delete

    JuMP.deleteFunction
    delete(model::GenericModel, con_ref::ConstraintRef)

    Delete the constraint associated with constraint_ref from the model model.

    Note that delete does not unregister the name from the model, so adding a new constraint of the same name will throw an error. Use unregister to unregister the name after deletion.

    Example

    julia> model = Model();
    +cref : x = 2
    source

    delete

    JuMP.deleteFunction
    delete(model::GenericModel, con_ref::ConstraintRef)

    Delete the constraint associated with constraint_ref from the model model.

    Note that delete does not unregister the name from the model, so adding a new constraint of the same name will throw an error. Use unregister to unregister the name after deletion.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -547,7 +547,7 @@
     julia> model[:c]
     ERROR: KeyError: key :c not found
     Stacktrace:
    -[...]
    source
    delete(model::GenericModel, con_refs::Vector{<:ConstraintRef})

    Delete the constraints associated with con_refs from the model model. Solvers may implement specialized methods for deleting multiple constraints of the same concrete type, i.e., when isconcretetype(eltype(con_refs)). These may be more efficient than repeatedly calling the single constraint delete method.

    See also: unregister

    source
    delete(model::GenericModel, variable_ref::GenericVariableRef)

    Delete the variable associated with variable_ref from the model model.

    Note that delete does not unregister the name from the model, so adding a new variable of the same name will throw an error. Use unregister to unregister the name after deletion.

    Example

    julia> model = Model();
    +[...]
    source
    delete(model::GenericModel, con_refs::Vector{<:ConstraintRef})

    Delete the constraints associated with con_refs from the model model. Solvers may implement specialized methods for deleting multiple constraints of the same concrete type, i.e., when isconcretetype(eltype(con_refs)). These may be more efficient than repeatedly calling the single constraint delete method.

    See also: unregister

    source
    delete(model::GenericModel, variable_ref::GenericVariableRef)

    Delete the variable associated with variable_ref from the model model.

    Note that delete does not unregister the name from the model, so adding a new variable of the same name will throw an error. Use unregister to unregister the name after deletion.

    Example

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -563,7 +563,7 @@
     julia> model[:x]
     ERROR: KeyError: key :x not found
     Stacktrace:
    -[...]
    source
    delete(model::GenericModel, variable_refs::Vector{<:GenericVariableRef})

    Delete the variables associated with variable_refs from the model model. Solvers may implement methods for deleting multiple variables that are more efficient than repeatedly calling the single variable delete method.

    See also: unregister

    source
    delete(model::Model, c::NonlinearConstraintRef)

    Delete the nonlinear constraint c from model.

    source

    delete_lower_bound

    JuMP.delete_lower_boundFunction
    delete_lower_bound(v::GenericVariableRef)

    Delete the lower bound constraint of a variable.

    See also LowerBoundRef, has_lower_bound, lower_bound, set_lower_bound.

    Examples

    julia> model = Model();
    +[...]
    source
    delete(model::GenericModel, variable_refs::Vector{<:GenericVariableRef})

    Delete the variables associated with variable_refs from the model model. Solvers may implement methods for deleting multiple variables that are more efficient than repeatedly calling the single variable delete method.

    See also: unregister

    source
    delete(model::Model, c::NonlinearConstraintRef)

    Delete the nonlinear constraint c from model.

    source

    delete_lower_bound

    delete_upper_bound

    delete_upper_bound

    direct_generic_model

    direct_generic_model

    JuMP.direct_generic_modelFunction
    direct_generic_model(
         value_type::Type{T},
         backend::MOI.ModelLike;
    -) where {T<:Real}

    Return a new JuMP model using backend to store the model and solve it.

    As opposed to the Model constructor, no cache of the model is stored outside of backend and no bridges are automatically applied to backend.

    Notes

    The absence of a cache reduces the memory footprint but, it is important to bear in mind the following implications of creating models using this direct mode:

    • When backend does not support an operation, such as modifying constraints or adding variables/constraints after solving, an error is thrown. For models created using the Model constructor, such situations can be dealt with by storing the modifications in a cache and loading them into the optimizer when optimize! is called.
    • No constraint bridging is supported by default.
    • The optimizer used cannot be changed the model is constructed.
    • The model created cannot be copied.
    source
    direct_generic_model(::Type{T}, factory::MOI.OptimizerWithAttributes)

    Create a direct_generic_model using factory, a MOI.OptimizerWithAttributes object created by optimizer_with_attributes.

    Example

    julia> import HiGHS
    +) where {T<:Real}

    Return a new JuMP model using backend to store the model and solve it.

    As opposed to the Model constructor, no cache of the model is stored outside of backend and no bridges are automatically applied to backend.

    Notes

    The absence of a cache reduces the memory footprint but, it is important to bear in mind the following implications of creating models using this direct mode:

    • When backend does not support an operation, such as modifying constraints or adding variables/constraints after solving, an error is thrown. For models created using the Model constructor, such situations can be dealt with by storing the modifications in a cache and loading them into the optimizer when optimize! is called.
    • No constraint bridging is supported by default.
    • The optimizer used cannot be changed the model is constructed.
    • The model created cannot be copied.
    source
    direct_generic_model(::Type{T}, factory::MOI.OptimizerWithAttributes)

    Create a direct_generic_model using factory, a MOI.OptimizerWithAttributes object created by optimizer_with_attributes.

    Example

    julia> import HiGHS
     
     julia> optimizer = optimizer_with_attributes(
                HiGHS.Optimizer,
    @@ -610,7 +610,7 @@
     
     julia> set_attribute(model, "presolve", "off")
     
    -julia> set_attribute(model, MOI.Silent(), true)
    source

    direct_model

    JuMP.direct_modelFunction
    direct_model(backend::MOI.ModelLike)

    Return a new JuMP model using backend to store the model and solve it.

    As opposed to the Model constructor, no cache of the model is stored outside of backend and no bridges are automatically applied to backend.

    Notes

    The absence of a cache reduces the memory footprint but, it is important to bear in mind the following implications of creating models using this direct mode:

    • When backend does not support an operation, such as modifying constraints or adding variables/constraints after solving, an error is thrown. For models created using the Model constructor, such situations can be dealt with by storing the modifications in a cache and loading them into the optimizer when optimize! is called.
    • No constraint bridging is supported by default.
    • The optimizer used cannot be changed the model is constructed.
    • The model created cannot be copied.
    source
    direct_model(factory::MOI.OptimizerWithAttributes)

    Create a direct_model using factory, a MOI.OptimizerWithAttributes object created by optimizer_with_attributes.

    Example

    julia> import HiGHS
    +julia> set_attribute(model, MOI.Silent(), true)
    source

    direct_model

    JuMP.direct_modelFunction
    direct_model(backend::MOI.ModelLike)

    Return a new JuMP model using backend to store the model and solve it.

    As opposed to the Model constructor, no cache of the model is stored outside of backend and no bridges are automatically applied to backend.

    Notes

    The absence of a cache reduces the memory footprint but, it is important to bear in mind the following implications of creating models using this direct mode:

    • When backend does not support an operation, such as modifying constraints or adding variables/constraints after solving, an error is thrown. For models created using the Model constructor, such situations can be dealt with by storing the modifications in a cache and loading them into the optimizer when optimize! is called.
    • No constraint bridging is supported by default.
    • The optimizer used cannot be changed the model is constructed.
    • The model created cannot be copied.
    source
    direct_model(factory::MOI.OptimizerWithAttributes)

    Create a direct_model using factory, a MOI.OptimizerWithAttributes object created by optimizer_with_attributes.

    Example

    julia> import HiGHS
     
     julia> optimizer = optimizer_with_attributes(
                HiGHS.Optimizer,
    @@ -634,7 +634,7 @@
     
     julia> set_attribute(model, "presolve", "off")
     
    -julia> set_attribute(model, MOI.Silent(), true)
    source

    drop_zeros!

    JuMP.drop_zeros!Function
    drop_zeros!(expr::GenericAffExpr)

    Remove terms in the affine expression with 0 coefficients.

    source
    drop_zeros!(expr::GenericQuadExpr)

    Remove terms in the quadratic expression with 0 coefficients.

    source

    dual

    JuMP.dualFunction
    dual(con_ref::ConstraintRef; result::Int = 1)

    Return the dual value of constraint con_ref associated with result index result of the most-recent solution returned by the solver.

    Use has_dual to check if a result exists before asking for values.

    See also: result_count, shadow_price.

    source
    dual(c::NonlinearConstraintRef)

    Return the dual of the nonlinear constraint c.

    source

    dual_objective_value

    JuMP.dual_objective_valueFunction
    dual_objective_value(model::GenericModel; result::Int = 1)

    Return the value of the objective of the dual problem associated with result index result of the most-recent solution returned by the solver.

    Throws MOI.UnsupportedAttribute{MOI.DualObjectiveValue} if the solver does not support this attribute.

    See also: result_count.

    source

    dual_shape

    JuMP.dual_shapeFunction
    dual_shape(shape::AbstractShape)::AbstractShape

    Returns the shape of the dual space of the space of objects of shape shape. By default, the dual_shape of a shape is itself. See the examples section below for an example for which this is not the case.

    Example

    Consider polynomial constraints for which the dual is moment constraints and moment constraints for which the dual is polynomial constraints. Shapes for polynomials can be defined as follows:

    struct Polynomial
    +julia> set_attribute(model, MOI.Silent(), true)
    source

    drop_zeros!

    JuMP.drop_zeros!Function
    drop_zeros!(expr::GenericAffExpr)

    Remove terms in the affine expression with 0 coefficients.

    source
    drop_zeros!(expr::GenericQuadExpr)

    Remove terms in the quadratic expression with 0 coefficients.

    source

    dual

    JuMP.dualFunction
    dual(con_ref::ConstraintRef; result::Int = 1)

    Return the dual value of constraint con_ref associated with result index result of the most-recent solution returned by the solver.

    Use has_dual to check if a result exists before asking for values.

    See also: result_count, shadow_price.

    source
    dual(c::NonlinearConstraintRef)

    Return the dual of the nonlinear constraint c.

    source

    dual_objective_value

    JuMP.dual_objective_valueFunction
    dual_objective_value(model::GenericModel; result::Int = 1)

    Return the value of the objective of the dual problem associated with result index result of the most-recent solution returned by the solver.

    Throws MOI.UnsupportedAttribute{MOI.DualObjectiveValue} if the solver does not support this attribute.

    See also: result_count.

    source

    dual_shape

    JuMP.dual_shapeFunction
    dual_shape(shape::AbstractShape)::AbstractShape

    Returns the shape of the dual space of the space of objects of shape shape. By default, the dual_shape of a shape is itself. See the examples section below for an example for which this is not the case.

    Example

    Consider polynomial constraints for which the dual is moment constraints and moment constraints for which the dual is polynomial constraints. Shapes for polynomials can be defined as follows:

    struct Polynomial
         coefficients::Vector{Float64}
         monomials::Vector{Monomial}
     end
    @@ -649,7 +649,7 @@
         monomials::Vector{Monomial}
     end
     JuMP.reshape_vector(x::Vector, shape::MomentsShape) = Moments(x, shape.monomials)

    Then dual_shape allows the definition of the shape of the dual of polynomial and moment constraints:

    dual_shape(shape::PolynomialShape) = MomentsShape(shape.monomials)
    -dual_shape(shape::MomentsShape) = PolynomialShape(shape.monomials)
    source

    dual_start_value

    JuMP.dual_start_valueFunction
    dual_start_value(con_ref::ConstraintRef)

    Return the dual start value (MOI attribute ConstraintDualStart) of the constraint con_ref.

    Note: If no dual start value has been set, dual_start_value will return nothing.

    See also set_dual_start_value.

    source

    dual_status

    error_if_direct_mode

    JuMP.error_if_direct_modeFunction
    error_if_direct_mode(model::GenericModel, func::Symbol)

    Errors if model is in direct mode during a call from the function named func.

    Used internally within JuMP, or by JuMP extensions who do not want to support models in direct mode.

    source

    fix

    JuMP.fixFunction
    fix(v::GenericVariableRef, value::Number; force::Bool = false)

    Fix a variable to a value. Update the fixing constraint if one exists, otherwise create a new one.

    If the variable already has variable bounds and force=false, calling fix will throw an error. If force=true, existing variable bounds will be deleted, and the fixing constraint will be added. Note a variable will have no bounds after a call to unfix.

    See also FixRef, is_fixed, fix_value, unfix.

    Examples

    julia> model = Model();
    +dual_shape(shape::MomentsShape) = PolynomialShape(shape.monomials)
    source

    dual_start_value

    JuMP.dual_start_valueFunction
    dual_start_value(con_ref::ConstraintRef)

    Return the dual start value (MOI attribute ConstraintDualStart) of the constraint con_ref.

    Note: If no dual start value has been set, dual_start_value will return nothing.

    See also set_dual_start_value.

    source

    dual_status

    error_if_direct_mode

    JuMP.error_if_direct_modeFunction
    error_if_direct_mode(model::GenericModel, func::Symbol)

    Errors if model is in direct mode during a call from the function named func.

    Used internally within JuMP, or by JuMP extensions who do not want to support models in direct mode.

    source

    fix

    JuMP.fixFunction
    fix(v::GenericVariableRef, value::Number; force::Bool = false)

    Fix a variable to a value. Update the fixing constraint if one exists, otherwise create a new one.

    If the variable already has variable bounds and force=false, calling fix will throw an error. If force=true, existing variable bounds will be deleted, and the fixing constraint will be added. Note a variable will have no bounds after a call to unfix.

    See also FixRef, is_fixed, fix_value, unfix.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -669,7 +669,7 @@
     julia> fix(x, 1.0; force = true)
     
     julia> is_fixed(x)
    -true
    source

    fix_discrete_variables

    JuMP.fix_discrete_variablesFunction
    fix_discrete_variables([var_value::Function = value,] model::GenericModel)

    Modifies model to convert all binary and integer variables to continuous variables with fixed bounds of var_value(x).

    Return

    Returns a function that can be called without any arguments to restore the original model. The behavior of this function is undefined if additional changes are made to the affected variables in the meantime.

    Notes

    • An error is thrown if semi-continuous or semi-integer constraints are present (support may be added for these in the future).
    • All other constraints are ignored (left in place). This includes discrete constraints like SOS and indicator constraints.

    Example

    julia> model = Model();
    +true
    source

    fix_discrete_variables

    JuMP.fix_discrete_variablesFunction
    fix_discrete_variables([var_value::Function = value,] model::GenericModel)

    Modifies model to convert all binary and integer variables to continuous variables with fixed bounds of var_value(x).

    Return

    Returns a function that can be called without any arguments to restore the original model. The behavior of this function is undefined if additional changes are made to the affected variables in the meantime.

    Notes

    • An error is thrown if semi-continuous or semi-integer constraints are present (support may be added for these in the future).
    • All other constraints are ignored (left in place). This includes discrete constraints like SOS and indicator constraints.

    Example

    julia> model = Model();
     
     julia> @variable(model, x, Bin, start = 1);
     
    @@ -693,12 +693,12 @@
      y ≥ 1
      y ≤ 10
      y integer
    - x binary
    source

    fix_value

    JuMP.fix_valueFunction
    fix_value(v::GenericVariableRef)

    Return the value to which a variable is fixed.

    Error if one does not exist.

    See also FixRef, is_fixed, fix, unfix.

    Examples

    julia> model = Model();
    + x binary
    source

    fix_value

    JuMP.fix_valueFunction
    fix_value(v::GenericVariableRef)

    Return the value to which a variable is fixed.

    Error if one does not exist.

    See also FixRef, is_fixed, fix, unfix.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x == 1);
     
     julia> fix_value(x)
    -1.0
    source

    flatten!

    JuMP.flatten!Function
    flatten!(expr::GenericNonlinearExpr)

    Flatten a nonlinear expression in-place by lifting nested + and * nodes into a single n-ary operation.

    Motivation

    Nonlinear expressions created using operator overloading can be deeply nested and unbalanced. For example, prod(x for i in 1:4) creates *(x, *(x, *(x, x))) instead of the more preferable *(x, x, x, x).

    Example

    julia> model = Model();
    +1.0
    source

    flatten!

    JuMP.flatten!Function
    flatten!(expr::GenericNonlinearExpr)

    Flatten a nonlinear expression in-place by lifting nested + and * nodes into a single n-ary operation.

    Motivation

    Nonlinear expressions created using operator overloading can be deeply nested and unbalanced. For example, prod(x for i in 1:4) creates *(x, *(x, *(x, x))) instead of the more preferable *(x, x, x, x).

    Example

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -710,10 +710,10 @@
     (x²) * x * x
     
     julia> flatten!(sin(prod(x for i in 1:4)))
    -sin((x²) * x * x)
    source

    function_string

    function_string

    JuMP.function_stringFunction
    function_string(
         mode::MIME,
         func::Union{JuMP.AbstractJuMPScalar,Vector{<:JuMP.AbstractJuMPScalar}},
    -)

    Return a String representing the function func using print mode mode.

    source

    get_attribute

    JuMP.get_attributeFunction
    get_attribute(model::GenericModel, attr::MOI.AbstractModelAttribute)
    +)

    Return a String representing the function func using print mode mode.

    source

    get_attribute

    JuMP.get_attributeFunction
    get_attribute(model::GenericModel, attr::MOI.AbstractModelAttribute)
     get_attribute(x::GenericVariableRef, attr::MOI.AbstractVariableAttribute)
     get_attribute(cr::ConstraintRef, attr::MOI.AbstractConstraintAttribute)

    Get the value of a solver-specifc attribute attr.

    This is equivalent to calling MOI.get with the associated MOI model and, for variables and constraints, with the associated MOI.VariableIndex or MOI.ConstraintIndex.

    Example

    julia> model = Model();
     
    @@ -730,7 +730,7 @@
     "x"
     
     julia> get_attribute(c, MOI.ConstraintName())
    -"c"
    source
    get_attribute(
    +"c"
    source
    get_attribute(
         model::Union{GenericModel,MOI.OptimizerWithAttributes},
         attr::Union{AbstractString,MOI.AbstractOptimizerAttribute},
     )

    Get the value of a solver-specifc attribute attr.

    This is equivalent to calling MOI.get with the associated MOI model.

    If attr is an AbstractString, it is converted to MOI.RawOptimizerAttribute.

    Example

    julia> import HiGHS
    @@ -749,7 +749,7 @@
     true
     
     julia> get_attribute(opt, MOI.RawOptimizerAttribute("output_flag"))
    -true
    source

    get_optimizer_attribute

    get_optimizer_attribute

    JuMP.get_optimizer_attributeFunction
    get_optimizer_attribute(
         model::Union{GenericModel,MOI.OptimizerWithAttributes},
         attr::Union{AbstractString,MOI.AbstractOptimizerAttribute},
     )

    Return the value associated with the solver-specific attribute attr.

    If attr is an AbstractString, this is equivalent to get_optimizer_attribute(model, MOI.RawOptimizerAttribute(name)).

    Compat

    This method will remain in all v1.X releases of JuMP, but it may be removed in a future v2.0 release. We recommend using get_attribute instead.

    See also: set_optimizer_attribute, set_optimizer_attributes.

    Example

    julia> import Ipopt
    @@ -757,22 +757,22 @@
     julia> model = Model(Ipopt.Optimizer);
     
     julia> get_optimizer_attribute(model, MOI.Silent())
    -false
    source

    has_duals

    has_lower_bound

    has_duals

    has_lower_bound

    has_start_value

    has_upper_bound

    has_start_value

    has_upper_bound

    has_values

    JuMP.has_valuesFunction
    has_values(model::GenericModel; result::Int = 1)

    Return true if the solver has a primal solution in result index result available to query, otherwise return false.

    See also value and result_count.

    source

    in_set_string

    JuMP.in_set_stringFunction
    in_set_string(mode::MIME, set)

    Return a String representing the membership to the set set using print mode mode.

    source

    index

    JuMP.indexFunction
    index(cr::ConstraintRef)::MOI.ConstraintIndex

    Return the index of the constraint that corresponds to cr in the MOI backend.

    source
    index(v::GenericVariableRef)::MOI.VariableIndex

    Return the index of the variable that corresponds to v in the MOI backend.

    source
    index(p::NonlinearParameter)::MOI.Nonlinear.ParameterIndex

    Return the index of the nonlinear parameter associated with p.

    source
    index(ex::NonlinearExpression)::MOI.Nonlinear.ExpressionIndex

    Return the index of the nonlinear expression associated with ex.

    source

    is_binary

    has_values

    JuMP.has_valuesFunction
    has_values(model::GenericModel; result::Int = 1)

    Return true if the solver has a primal solution in result index result available to query, otherwise return false.

    See also value and result_count.

    source

    in_set_string

    JuMP.in_set_stringFunction
    in_set_string(mode::MIME, set)

    Return a String representing the membership to the set set using print mode mode.

    source

    index

    JuMP.indexFunction
    index(cr::ConstraintRef)::MOI.ConstraintIndex

    Return the index of the constraint that corresponds to cr in the MOI backend.

    source
    index(v::GenericVariableRef)::MOI.VariableIndex

    Return the index of the variable that corresponds to v in the MOI backend.

    source
    index(p::NonlinearParameter)::MOI.Nonlinear.ParameterIndex

    Return the index of the nonlinear parameter associated with p.

    source
    index(ex::NonlinearExpression)::MOI.Nonlinear.ExpressionIndex

    Return the index of the nonlinear expression associated with ex.

    source

    is_binary

    is_fixed

    is_fixed

    JuMP.is_fixedFunction
    is_fixed(v::GenericVariableRef)

    Return true if v is a fixed variable. If true, the fixed value can be queried with fix_value.

    See also FixRef, fix_value, fix, unfix.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -782,7 +782,7 @@
     julia> fix(x, 1.0)
     
     julia> is_fixed(x)
    -true
    source

    is_integer

    is_integer

    JuMP.is_integerFunction
    is_integer(v::GenericVariableRef)

    Return true if v is constrained to be integer.

    See also IntegerRef, set_integer, unset_integer.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -792,7 +792,7 @@
     julia> set_integer(x)
     
     julia> is_integer(x)
    -true
    source

    is_parameter

    is_parameter

    is_valid

    JuMP.is_validFunction
    is_valid(model::GenericModel, con_ref::ConstraintRef{<:AbstractModel})

    Return true if constraint_ref refers to a valid constraint in model.

    source
    is_valid(model::GenericModel, variable_ref::GenericVariableRef)

    Return true if variable refers to a valid variable in model.

    source
    is_valid(model::Model, c::NonlinearConstraintRef)

    Return true if c refers to a valid nonlinear constraint in model.

    source

    isequal_canonical

    is_valid

    JuMP.is_validFunction
    is_valid(model::GenericModel, con_ref::ConstraintRef{<:AbstractModel})

    Return true if constraint_ref refers to a valid constraint in model.

    source
    is_valid(model::GenericModel, variable_ref::GenericVariableRef)

    Return true if variable refers to a valid variable in model.

    source
    is_valid(model::Model, c::NonlinearConstraintRef)

    Return true if c refers to a valid nonlinear constraint in model.

    source

    isequal_canonical

    JuMP.isequal_canonicalFunction
    isequal_canonical(
         aff::GenericAffExpr{C,V},
         other::GenericAffExpr{C,V}
    -) where {C,V}

    Return true if aff is equal to other after dropping zeros and disregarding the order. Mainly useful for testing.

    source

    jump_function

    jump_function_type

    latex_formulation

    JuMP.latex_formulationFunction
    latex_formulation(model::AbstractModel)

    Wrap model in a type so that it can be pretty-printed as text/latex in a notebook like IJulia, or in Documenter.

    To render the model, end the cell with latex_formulation(model), or call display(latex_formulation(model)) in to force the display of the model from inside a function.

    source

    linear_terms

    JuMP.linear_termsFunction
    linear_terms(aff::GenericAffExpr{C, V})

    Provides an iterator over coefficient-variable tuples (a_i::C, x_i::V) in the linear part of the affine expression.

    source
    linear_terms(quad::GenericQuadExpr{C, V})

    Provides an iterator over tuples (coefficient::C, variable::V) in the linear part of the quadratic expression.

    source

    list_of_constraint_types

    JuMP.list_of_constraint_typesFunction
    list_of_constraint_types(model::GenericModel)::Vector{Tuple{Type,Type}}

    Return a list of tuples of the form (F, S) where F is a JuMP function type and S is an MOI set type such that all_constraints(model, F, S) returns a nonempty list.

    Example

    julia> model = Model();
    +) where {C,V}

    Return true if aff is equal to other after dropping zeros and disregarding the order. Mainly useful for testing.

    source

    jump_function

    jump_function_type

    latex_formulation

    JuMP.latex_formulationFunction
    latex_formulation(model::AbstractModel)

    Wrap model in a type so that it can be pretty-printed as text/latex in a notebook like IJulia, or in Documenter.

    To render the model, end the cell with latex_formulation(model), or call display(latex_formulation(model)) in to force the display of the model from inside a function.

    source

    linear_terms

    JuMP.linear_termsFunction
    linear_terms(aff::GenericAffExpr{C, V})

    Provides an iterator over coefficient-variable tuples (a_i::C, x_i::V) in the linear part of the affine expression.

    source
    linear_terms(quad::GenericQuadExpr{C, V})

    Provides an iterator over tuples (coefficient::C, variable::V) in the linear part of the quadratic expression.

    source

    list_of_constraint_types

    JuMP.list_of_constraint_typesFunction
    list_of_constraint_types(model::GenericModel)::Vector{Tuple{Type,Type}}

    Return a list of tuples of the form (F, S) where F is a JuMP function type and S is an MOI set type such that all_constraints(model, F, S) returns a nonempty list.

    Example

    julia> model = Model();
     
     julia> @variable(model, x >= 0, Bin);
     
    @@ -817,12 +817,12 @@
     3-element Vector{Tuple{Type, Type}}:
      (AffExpr, MathOptInterface.LessThan{Float64})
      (VariableRef, MathOptInterface.GreaterThan{Float64})
    - (VariableRef, MathOptInterface.ZeroOne)

    Performance considerations

    Iterating over the list of function and set types is a type-unstable operation. Consider using a function barrier. See the Performance tips for extensions section of the documentation for more details.

    source

    lower_bound

    JuMP.lower_boundFunction
    lower_bound(v::GenericVariableRef)

    Return the lower bound of a variable. Error if one does not exist.

    See also LowerBoundRef, has_lower_bound, set_lower_bound, delete_lower_bound.

    Examples

    julia> model = Model();
    + (VariableRef, MathOptInterface.ZeroOne)

    Performance considerations

    Iterating over the list of function and set types is a type-unstable operation. Consider using a function barrier. See the Performance tips for extensions section of the documentation for more details.

    source

    lower_bound

    lp_sensitivity_report

    JuMP.lp_sensitivity_reportFunction
    lp_sensitivity_report(model::GenericModel{T}; atol::T = Base.rtoldefault(T))::SensitivityReport{T} where {T}

    Given a linear program model with a current optimal basis, return a SensitivityReport object, which maps:

    • Every variable reference to a tuple (d_lo, d_hi)::Tuple{T,T}, explaining how much the objective coefficient of the corresponding variable can change by, such that the original basis remains optimal.
    • Every constraint reference to a tuple (d_lo, d_hi)::Tuple{T,T}, explaining how much the right-hand side of the corresponding constraint can change by, such that the basis remains optimal.

    Both tuples are relative, rather than absolute. So given a objective coefficient of 1.0 and a tuple (-0.5, 0.5), the objective coefficient can range between 1.0 - 0.5 an 1.0 + 0.5.

    atol is the primal/dual optimality tolerance, and should match the tolerance of the solver used to compute the basis.

    Note: interval constraints are NOT supported.

    Example

    julia> import HiGHS
    +1.0
    source

    lp_sensitivity_report

    JuMP.lp_sensitivity_reportFunction
    lp_sensitivity_report(model::GenericModel{T}; atol::T = Base.rtoldefault(T))::SensitivityReport{T} where {T}

    Given a linear program model with a current optimal basis, return a SensitivityReport object, which maps:

    • Every variable reference to a tuple (d_lo, d_hi)::Tuple{T,T}, explaining how much the objective coefficient of the corresponding variable can change by, such that the original basis remains optimal.
    • Every constraint reference to a tuple (d_lo, d_hi)::Tuple{T,T}, explaining how much the right-hand side of the corresponding constraint can change by, such that the basis remains optimal.

    Both tuples are relative, rather than absolute. So given a objective coefficient of 1.0 and a tuple (-0.5, 0.5), the objective coefficient can range between 1.0 - 0.5 an 1.0 + 0.5.

    atol is the primal/dual optimality tolerance, and should match the tolerance of the solver used to compute the basis.

    Note: interval constraints are NOT supported.

    Example

    julia> import HiGHS
     
     julia> model = Model(HiGHS.Optimizer);
     
    @@ -854,7 +854,7 @@
                "The lower bound of `x` can decrease by $dRHS_lo or increase " *
                "by $dRHS_hi."
            )
    -The lower bound of `x` can decrease by -Inf or increase by 3.0.
    source

    map_coefficients

    map_coefficients

    JuMP.map_coefficientsFunction
    map_coefficients(f::Function, a::GenericAffExpr)

    Apply f to the coefficients and constant term of an GenericAffExpr a and return a new expression.

    See also: map_coefficients_inplace!

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -865,7 +865,7 @@
     2 x + 2
     
     julia> a
    -x + 1
    source
    map_coefficients(f::Function, a::GenericQuadExpr)

    Apply f to the coefficients and constant term of an GenericQuadExpr a and return a new expression.

    See also: map_coefficients_inplace!

    Example

    julia> model = Model();
    +x + 1
    source
    map_coefficients(f::Function, a::GenericQuadExpr)

    Apply f to the coefficients and constant term of an GenericQuadExpr a and return a new expression.

    See also: map_coefficients_inplace!

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -876,7 +876,7 @@
     2 x² + 2 x + 2
     
     julia> a
    -x² + x + 1
    source

    map_coefficients_inplace!

    map_coefficients_inplace!

    JuMP.map_coefficients_inplace!Function
    map_coefficients_inplace!(f::Function, a::GenericAffExpr)

    Apply f to the coefficients and constant term of an GenericAffExpr a and update them in-place.

    See also: map_coefficients

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -887,7 +887,7 @@
     2 x + 2
     
     julia> a
    -2 x + 2
    source
    map_coefficients_inplace!(f::Function, a::GenericQuadExpr)

    Apply f to the coefficients and constant term of an GenericQuadExpr a and update them in-place.

    See also: map_coefficients

    Example

    julia> model = Model();
    +2 x + 2
    source
    map_coefficients_inplace!(f::Function, a::GenericQuadExpr)

    Apply f to the coefficients and constant term of an GenericQuadExpr a and update them in-place.

    See also: map_coefficients

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -898,7 +898,7 @@
     2 x² + 2 x + 2
     
     julia> a
    -2 x² + 2 x + 2
    source

    mode

    model_convert

    mode

    model_convert

    JuMP.model_convertFunction
    model_convert(
         model::AbstractModel,
         rhs::Union{
             AbstractConstraint,
    @@ -906,18 +906,18 @@
             AbstractJuMPScalar,
             MOI.AbstractSet,
         },
    -)

    Convert the coefficients and constants of functions and sets in the rhs to the coefficient type value_type(typeof(model)).

    Purpose

    Creating and adding a constraint is a two-step process. The first step calls build_constraint, and the result of that is passed to add_constraint.

    However, because build_constraint does not take the model as an argument, the coefficients and constants of the function or set might be different than value_type(typeof(model)).

    Therefore, the result of build_constraint is converted in a call to model_convert before the result is passed to add_constraint.

    source

    model_string

    JuMP.model_stringFunction
    model_string(mode::MIME, model::AbstractModel)

    Return a String representation of model given the mode.

    source

    moi_function

    moi_function_type

    moi_set

    JuMP.moi_setFunction
    moi_set(constraint::AbstractConstraint)

    Return the set of the constraint constraint in the function-in-set form as a MathOptInterface.AbstractSet.

    moi_set(s::AbstractVectorSet, dim::Int)

    Returns the MOI set of dimension dim corresponding to the JuMP set s.

    moi_set(s::AbstractScalarSet)

    Returns the MOI set corresponding to the JuMP set s.

    source

    name

    JuMP.nameFunction
    name(con_ref::ConstraintRef)

    Get a constraint's name attribute.

    source
    name(v::GenericVariableRef)::String

    Get a variable's name attribute.

    source
    name(model::AbstractModel)

    Return the MOI.Name attribute of model's backend, or a default if empty.

    source

    node_count

    JuMP.node_countFunction
    node_count(model::GenericModel)

    Gets the total number of branch-and-bound nodes explored during the most recent optimization in a Mixed Integer Program.

    Solvers must implement MOI.NodeCount() to use this function.

    source

    nonlinear_constraint_string

    JuMP.nonlinear_constraint_stringFunction
    nonlinear_constraint_string(
    +)

    Convert the coefficients and constants of functions and sets in the rhs to the coefficient type value_type(typeof(model)).

    Purpose

    Creating and adding a constraint is a two-step process. The first step calls build_constraint, and the result of that is passed to add_constraint.

    However, because build_constraint does not take the model as an argument, the coefficients and constants of the function or set might be different than value_type(typeof(model)).

    Therefore, the result of build_constraint is converted in a call to model_convert before the result is passed to add_constraint.

    source

    model_string

    JuMP.model_stringFunction
    model_string(mode::MIME, model::AbstractModel)

    Return a String representation of model given the mode.

    source

    moi_function

    moi_function_type

    moi_set

    JuMP.moi_setFunction
    moi_set(constraint::AbstractConstraint)

    Return the set of the constraint constraint in the function-in-set form as a MathOptInterface.AbstractSet.

    moi_set(s::AbstractVectorSet, dim::Int)

    Returns the MOI set of dimension dim corresponding to the JuMP set s.

    moi_set(s::AbstractScalarSet)

    Returns the MOI set corresponding to the JuMP set s.

    source

    name

    JuMP.nameFunction
    name(con_ref::ConstraintRef)

    Get a constraint's name attribute.

    source
    name(v::GenericVariableRef)::String

    Get a variable's name attribute.

    source
    name(model::AbstractModel)

    Return the MOI.Name attribute of model's backend, or a default if empty.

    source

    node_count

    JuMP.node_countFunction
    node_count(model::GenericModel)

    Gets the total number of branch-and-bound nodes explored during the most recent optimization in a Mixed Integer Program.

    Solvers must implement MOI.NodeCount() to use this function.

    source

    nonlinear_constraint_string

    JuMP.nonlinear_constraint_stringFunction
    nonlinear_constraint_string(
         model::GenericModel,
         mode::MIME,
         c::_NonlinearConstraint,
    -)

    Return a string representation of the nonlinear constraint c belonging to model, given the mode.

    source

    nonlinear_dual_start_value

    nonlinear_expr_string

    JuMP.nonlinear_expr_stringFunction
    nonlinear_expr_string(
    +)

    Return a string representation of the nonlinear constraint c belonging to model, given the mode.

    source

    nonlinear_dual_start_value

    nonlinear_expr_string

    JuMP.nonlinear_expr_stringFunction
    nonlinear_expr_string(
         model::GenericModel,
         mode::MIME,
         c::MOI.Nonlinear.Expression,
    -)

    Return a string representation of the nonlinear expression c belonging to model, given the mode.

    source

    nonlinear_model

    JuMP.nonlinear_modelFunction
    nonlinear_model(
    +)

    Return a string representation of the nonlinear expression c belonging to model, given the mode.

    source

    nonlinear_model

    JuMP.nonlinear_modelFunction
    nonlinear_model(
         model::GenericModel;
         force::Bool = false,
    -)::Union{MOI.Nonlinear.Model,Nothing}

    If model has nonlinear components, return a MOI.Nonlinear.Model, otherwise return nothing.

    If force, always return a MOI.Nonlinear.Model, and if one does not exist for the model, create an empty one.

    source

    normalized_coefficient

    normalized_rhs

    num_constraints

    JuMP.num_constraintsFunction
    num_constraints(model::GenericModel, function_type, set_type)::Int64

    Return the number of constraints currently in the model where the function has type function_type and the set has type set_type.

    See also list_of_constraint_types and all_constraints.

    Example

    julia> model = Model();
    +)::Union{MOI.Nonlinear.Model,Nothing}

    If model has nonlinear components, return a MOI.Nonlinear.Model, otherwise return nothing.

    If force, always return a MOI.Nonlinear.Model, and if one does not exist for the model, create an empty one.

    source

    normalized_coefficient

    normalized_rhs

    num_constraints

    JuMP.num_constraintsFunction
    num_constraints(model::GenericModel, function_type, set_type)::Int64

    Return the number of constraints currently in the model where the function has type function_type and the set has type set_type.

    See also list_of_constraint_types and all_constraints.

    Example

    julia> model = Model();
     
     julia> @variable(model, x >= 0, Bin);
     
    @@ -936,7 +936,7 @@
     1
     
     julia> num_constraints(model, AffExpr, MOI.LessThan{Float64})
    -2
    source
    num_constraints(model::GenericModel; count_variable_in_set_constraints::Bool)

    Return the number of constraints in model.

    If count_variable_in_set_constraints == true, then VariableRef constraints such as VariableRef-in-Integer are included. To count only the number of structural constraints (e.g., the rows in the constraint matrix of a linear program), pass count_variable_in_set_constraints = false.

    Example

    julia> model = Model();
    +2
    source
    num_constraints(model::GenericModel; count_variable_in_set_constraints::Bool)

    Return the number of constraints in model.

    If count_variable_in_set_constraints == true, then VariableRef constraints such as VariableRef-in-Integer are included. To count only the number of structural constraints (e.g., the rows in the constraint matrix of a linear program), pass count_variable_in_set_constraints = false.

    Example

    julia> model = Model();
     
     julia> @variable(model, x >= 0, Int);
     
    @@ -946,7 +946,7 @@
     3
     
     julia> num_constraints(model; count_variable_in_set_constraints = false)
    -1
    source

    num_nonlinear_constraints

    num_variables

    object_dictionary

    JuMP.object_dictionaryFunction
    object_dictionary(model::GenericModel)

    Return the dictionary that maps the symbol name of a variable, constraint, or expression to the corresponding object.

    Objects are registered to a specific symbol in the macros. For example, @variable(model, x[1:2, 1:2]) registers the array of variables x to the symbol :x.

    This method should be defined for any subtype of AbstractModel.

    source

    objective_bound

    JuMP.objective_boundFunction
    objective_bound(model::GenericModel)

    Return the best known bound on the optimal objective value after a call to optimize!(model).

    For scalar-valued objectives, this function returns a Float64. For vector-valued objectives, it returns a Vector{Float64}.

    In the case of a vector-valued objective, this returns the ideal point, that is, the point obtained if each objective was optimized independently.

    source

    objective_function

    num_nonlinear_constraints

    num_variables

    object_dictionary

    JuMP.object_dictionaryFunction
    object_dictionary(model::GenericModel)

    Return the dictionary that maps the symbol name of a variable, constraint, or expression to the corresponding object.

    Objects are registered to a specific symbol in the macros. For example, @variable(model, x[1:2, 1:2]) registers the array of variables x to the symbol :x.

    This method should be defined for any subtype of AbstractModel.

    source

    objective_bound

    JuMP.objective_boundFunction
    objective_bound(model::GenericModel)

    Return the best known bound on the optimal objective value after a call to optimize!(model).

    For scalar-valued objectives, this function returns a Float64. For vector-valued objectives, it returns a Vector{Float64}.

    In the case of a vector-valued objective, this returns the ideal point, that is, the point obtained if each objective was optimized independently.

    source

    objective_function

    JuMP.objective_functionFunction
    objective_function(
         model::GenericModel,
         T::Type = objective_function_type(model),
     )

    Return an object of type T representing the objective function.

    Error if the objective is not convertible to type T.

    Example

    julia> model = Model();
    @@ -966,7 +966,7 @@
     julia> typeof(objective_function(model, QuadExpr))
     QuadExpr (alias for GenericQuadExpr{Float64, GenericVariableRef{Float64}})

    We see with the last two commands that even if the objective function is affine, as it is convertible to a quadratic function, it can be queried as a quadratic function and the result is quadratic.

    However, it is not convertible to a variable.

    julia> objective_function(model, VariableRef)
     ERROR: InexactError: convert(MathOptInterface.VariableIndex, 1.0 + 2.0 MOI.VariableIndex(1))
    -[...]
    source

    objective_function_string

    objective_function_type

    objective_sense

    objective_value

    JuMP.objective_valueFunction
    objective_value(model::GenericModel; result::Int = 1)

    Return the objective value associated with result index result of the most-recent solution returned by the solver.

    For scalar-valued objectives, this function returns a Float64. For vector-valued objectives, it returns a Vector{Float64}.

    See also: result_count.

    source

    op_ifelse

    JuMP.op_ifelseFunction
    op_ifelse(a, x, y)

    A function that falls back to ifelse(a, x, y), but when called with a JuMP variables or expression in the first argument, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
    +[...]
    source

    objective_function_string

    objective_function_type

    objective_sense

    objective_value

    JuMP.objective_valueFunction
    objective_value(model::GenericModel; result::Int = 1)

    Return the objective value associated with result index result of the most-recent solution returned by the solver.

    For scalar-valued objectives, this function returns a Float64. For vector-valued objectives, it returns a Vector{Float64}.

    See also: result_count.

    source

    op_ifelse

    JuMP.op_ifelseFunction
    op_ifelse(a, x, y)

    A function that falls back to ifelse(a, x, y), but when called with a JuMP variables or expression in the first argument, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -977,7 +977,7 @@
     ifelse(x, 1.0, 2.0)
     
     julia> op_ifelse(true, x, 2.0)
    -x
    source

    operator_to_set

    JuMP.operator_to_setFunction
    operator_to_set(_error::Function, ::Val{sense_symbol})

    Converts a sense symbol to a set set such that @constraint(model, func sense_symbol 0) is equivalent to @constraint(model, func in set) for any func::AbstractJuMPScalar.

    Example

    Once a custom set is defined you can directly create a JuMP constraint with it:

    julia> struct CustomSet{T} <: MOI.AbstractScalarSet
    +x
    source

    operator_to_set

    JuMP.operator_to_setFunction
    operator_to_set(_error::Function, ::Val{sense_symbol})

    Converts a sense symbol to a set set such that @constraint(model, func sense_symbol 0) is equivalent to @constraint(model, func in set) for any func::AbstractJuMPScalar.

    Example

    Once a custom set is defined you can directly create a JuMP constraint with it:

    julia> struct CustomSet{T} <: MOI.AbstractScalarSet
                value::T
            end
     
    @@ -996,15 +996,15 @@
     julia> MOIU.shift_constant(set::CustomSet, value) = CustomSet(set.value + value)
     
     julia> cref = @constraint(model, x ⊰ 1)
    -x ∈ CustomSet{Float64}(1.0)

    Note that the whole function is first moved to the right-hand side, then the sign is transformed into a set with zero constant and finally the constant is moved to the set with MOIU.shift_constant.

    source

    operator_warn

    JuMP.operator_warnFunction
    operator_warn(model::AbstractModel)
    -operator_warn(model::GenericModel)

    This function is called on the model whenever two affine expressions are added together without using destructive_add!, and at least one of the two expressions has more than 50 terms.

    For the case of Model, if this function is called more than 20,000 times then a warning is generated once.

    source

    optimize!

    JuMP.optimize!Function
    optimize!(
    +x ∈ CustomSet{Float64}(1.0)

    Note that the whole function is first moved to the right-hand side, then the sign is transformed into a set with zero constant and finally the constant is moved to the set with MOIU.shift_constant.

    source

    operator_warn

    JuMP.operator_warnFunction
    operator_warn(model::AbstractModel)
    +operator_warn(model::GenericModel)

    This function is called on the model whenever two affine expressions are added together without using destructive_add!, and at least one of the two expressions has more than 50 terms.

    For the case of Model, if this function is called more than 20,000 times then a warning is generated once.

    source

    optimize!

    JuMP.optimize!Function
    optimize!(
         model::GenericModel;
         ignore_optimize_hook = (model.optimize_hook === nothing),
         _differentiation_backend::MOI.Nonlinear.AbstractAutomaticDifferentiation =
             MOI.Nonlinear.SparseReverseMode(),
         kwargs...,
    -)

    Optimize the model.

    If an optimizer has not been set yet (see set_optimizer), a NoOptimizer error is thrown.

    If ignore_optimize_hook == true, the optimize hook is ignored and the model is solved as if the hook was not set. Keyword arguments kwargs are passed to the optimize_hook. An error is thrown if optimize_hook is nothing and keyword arguments are provided.

    Experimental features

    These features may change or be removed in any future version of JuMP.

    Pass _differentiation_backend to set the MOI.Nonlinear.AbstractAutomaticDifferentiation backend used to compute derivatives of nonlinear programs.

    If you require only :ExprGraph, it is more efficient to pass _differentiation_backend = MOI.Nonlinear.ExprGraphOnly().

    source

    optimizer_index

    JuMP.optimizer_indexFunction
    optimizer_index(x::GenericVariableRef)::MOI.VariableIndex
    -optimizer_index(x::ConstraintRef{<:GenericModel})::MOI.ConstraintIndex

    Return the index that corresponds to x in the optimizer model.

    Throws NoOptimizer if no optimizer is set, and throws an ErrorException if the optimizer is set but is not attached.

    source

    optimizer_with_attributes

    JuMP.optimizer_with_attributesFunction
    optimizer_with_attributes(optimizer_constructor, attrs::Pair...)

    Groups an optimizer constructor with the list of attributes attrs. Note that it is equivalent to MOI.OptimizerWithAttributes.

    When provided to the Model constructor or to set_optimizer, it creates an optimizer by calling optimizer_constructor(), and then sets the attributes using set_attribute.

    See also: set_attribute, get_attribute.

    Note

    The string names of the attributes are specific to each solver. One should consult the solver's documentation to find the attributes of interest.

    Example

    julia> import HiGHS
    +)

    Optimize the model.

    If an optimizer has not been set yet (see set_optimizer), a NoOptimizer error is thrown.

    If ignore_optimize_hook == true, the optimize hook is ignored and the model is solved as if the hook was not set. Keyword arguments kwargs are passed to the optimize_hook. An error is thrown if optimize_hook is nothing and keyword arguments are provided.

    Experimental features

    These features may change or be removed in any future version of JuMP.

    Pass _differentiation_backend to set the MOI.Nonlinear.AbstractAutomaticDifferentiation backend used to compute derivatives of nonlinear programs.

    If you require only :ExprGraph, it is more efficient to pass _differentiation_backend = MOI.Nonlinear.ExprGraphOnly().

    source

    optimizer_index

    JuMP.optimizer_indexFunction
    optimizer_index(x::GenericVariableRef)::MOI.VariableIndex
    +optimizer_index(x::ConstraintRef{<:GenericModel})::MOI.ConstraintIndex

    Return the index that corresponds to x in the optimizer model.

    Throws NoOptimizer if no optimizer is set, and throws an ErrorException if the optimizer is set but is not attached.

    source

    optimizer_with_attributes

    JuMP.optimizer_with_attributesFunction
    optimizer_with_attributes(optimizer_constructor, attrs::Pair...)

    Groups an optimizer constructor with the list of attributes attrs. Note that it is equivalent to MOI.OptimizerWithAttributes.

    When provided to the Model constructor or to set_optimizer, it creates an optimizer by calling optimizer_constructor(), and then sets the attributes using set_attribute.

    See also: set_attribute, get_attribute.

    Note

    The string names of the attributes are specific to each solver. One should consult the solver's documentation to find the attributes of interest.

    Example

    julia> import HiGHS
     
     julia> optimizer = optimizer_with_attributes(
                HiGHS.Optimizer, "presolve" => "off", MOI.Silent() => true,
    @@ -1016,7 +1016,7 @@
     
     julia> set_attribute(model, "presolve", "off")
     
    -julia> set_attribute(model, MOI.Silent(), true)
    source

    owner_model

    parameter_value

    owner_model

    parameter_value

    JuMP.parameter_valueFunction
    parameter_value(x::GenericVariableRef)

    Return the value of the parameter x.

    Errors if x is not a parameter.

    See also ParameterRef, is_parameter, set_parameter_value.

    Examples

    julia> model = Model();
     
     julia> @variable(model, p in Parameter(2))
     p
    @@ -1027,18 +1027,18 @@
     julia> set_parameter_value(p, 2.5)
     
     julia> parameter_value(p)
    -2.5
    source

    parse_constraint

    JuMP.parse_constraintFunction
    parse_constraint(_error::Function, expr::Expr)

    The entry-point for all constraint-related parsing.

    Arguments

    • The _error function is passed everywhere to provide better error messages
    • expr comes from the @constraint macro. There are two possibilities:
      • @constraint(model, expr)
      • @constraint(model, name[args], expr)
      In both cases, expr is the main component of the constraint.

    Supported syntax

    JuMP currently supports the following expr objects:

    • lhs <= rhs
    • lhs == rhs
    • lhs >= rhs
    • l <= body <= u
    • u >= body >= l
    • lhs ⟂ rhs
    • lhs in rhs
    • lhs ∈ rhs
    • z => {constraint}
    • !z => {constraint}

    as well as all broadcasted variants.

    Extensions

    The infrastructure behind parse_constraint is extendable. See parse_constraint_head and parse_constraint_call for details.

    source

    parse_constraint_call

    parse_constraint

    JuMP.parse_constraintFunction
    parse_constraint(_error::Function, expr::Expr)

    The entry-point for all constraint-related parsing.

    Arguments

    • The _error function is passed everywhere to provide better error messages
    • expr comes from the @constraint macro. There are two possibilities:
      • @constraint(model, expr)
      • @constraint(model, name[args], expr)
      In both cases, expr is the main component of the constraint.

    Supported syntax

    JuMP currently supports the following expr objects:

    • lhs <= rhs
    • lhs == rhs
    • lhs >= rhs
    • l <= body <= u
    • u >= body >= l
    • lhs ⟂ rhs
    • lhs in rhs
    • lhs ∈ rhs
    • z => {constraint}
    • !z => {constraint}

    as well as all broadcasted variants.

    Extensions

    The infrastructure behind parse_constraint is extendable. See parse_constraint_head and parse_constraint_call for details.

    source

    parse_constraint_call

    JuMP.parse_constraint_callFunction
    parse_constraint_call(
         _error::Function,
         is_vectorized::Bool,
         ::Val{op},
         args...,
    -)

    Implement this method to intercept the parsing of a :call expression with operator op.

    Warning

    Extending the constraint macro at parse time is an advanced operation and has the potential to interfere with existing JuMP syntax. Please discuss with the developer chatroom before publishing any code that implements these methods.

    Arguments

    • _error: a function that accepts a String and throws the string as an error, along with some descriptive information of the macro from which it was thrown.
    • is_vectorized: a boolean to indicate if op should be broadcast or not
    • op: the first element of the .args field of the Expr to intercept
    • args...: the .args field of the Expr.

    Returns

    This function must return:

    • parse_code::Expr: an expression containing any setup or rewriting code that needs to be called before build_constraint
    • build_code::Expr: an expression that calls build_constraint( or build_constraint.( depending on is_vectorized.

    See also: parse_constraint_head, build_constraint

    source
    parse_constraint_call(
    +)

    Implement this method to intercept the parsing of a :call expression with operator op.

    Warning

    Extending the constraint macro at parse time is an advanced operation and has the potential to interfere with existing JuMP syntax. Please discuss with the developer chatroom before publishing any code that implements these methods.

    Arguments

    • _error: a function that accepts a String and throws the string as an error, along with some descriptive information of the macro from which it was thrown.
    • is_vectorized: a boolean to indicate if op should be broadcast or not
    • op: the first element of the .args field of the Expr to intercept
    • args...: the .args field of the Expr.

    Returns

    This function must return:

    • parse_code::Expr: an expression containing any setup or rewriting code that needs to be called before build_constraint
    • build_code::Expr: an expression that calls build_constraint( or build_constraint.( depending on is_vectorized.

    See also: parse_constraint_head, build_constraint

    source
    parse_constraint_call(
         _error::Function,
         vectorized::Bool,
         ::Val{op},
         lhs,
         rhs,
    -) where {op}

    Fallback handler for binary operators. These might be infix operators like @constraint(model, lhs op rhs), or normal operators like @constraint(model, op(lhs, rhs)).

    In both cases, we rewrite as lhs - rhs in operator_to_set(_error, op).

    See operator_to_set for details.

    source

    parse_constraint_head

    JuMP.parse_constraint_headFunction
    parse_constraint_head(_error::Function, ::Val{head}, args...)

    Implement this method to intercept the parsing of an expression with head head.

    Warning

    Extending the constraint macro at parse time is an advanced operation and has the potential to interfere with existing JuMP syntax. Please discuss with the developer chatroom before publishing any code that implements these methods.

    Arguments

    • _error: a function that accepts a String and throws the string as an error, along with some descriptive information of the macro from which it was thrown.
    • head: the .head field of the Expr to intercept
    • args...: the .args field of the Expr.

    Returns

    This function must return:

    • is_vectorized::Bool: whether the expression represents a broadcasted expression like x .<= 1
    • parse_code::Expr: an expression containing any setup or rewriting code that needs to be called before build_constraint
    • build_code::Expr: an expression that calls build_constraint( or build_constraint.( depending on is_vectorized.

    Existing implementations

    JuMP currently implements:

    • ::Val{:call}, which forwards calls to parse_constraint_call
    • ::Val{:comparison}, which handles the special case of l <= body <= u.

    See also: parse_constraint_call, build_constraint

    source

    parse_one_operator_variable

    JuMP.parse_one_operator_variableFunction
    parse_one_operator_variable(_error::Function, infoexpr::_VariableInfoExpr, sense::Val{S}, value) where S

    Update infoexr for a variable expression in the @variable macro of the form variable name S value.

    source

    parse_ternary_variable

    JuMP.parse_ternary_variableFunction
    parse_ternary_variable(_error, variable_info, lhs_sense, lhs, rhs_sense, rhs)

    A hook for JuMP extensiosn to intercept the parsing of a :comparison expression, which has the form lhs lhs_sense variable rhs_sense rhs.

    source

    parse_variable

    JuMP.parse_variableFunction
    parse_variable(_error::Function, ::_VariableInfoExpr, args...)

    A hook for extensions to intercept the parsing of inequality constraints in the @variable macro.

    source

    primal_feasibility_report

    JuMP.primal_feasibility_reportFunction
    primal_feasibility_report(
    +) where {op}

    Fallback handler for binary operators. These might be infix operators like @constraint(model, lhs op rhs), or normal operators like @constraint(model, op(lhs, rhs)).

    In both cases, we rewrite as lhs - rhs in operator_to_set(_error, op).

    See operator_to_set for details.

    source

    parse_constraint_head

    JuMP.parse_constraint_headFunction
    parse_constraint_head(_error::Function, ::Val{head}, args...)

    Implement this method to intercept the parsing of an expression with head head.

    Warning

    Extending the constraint macro at parse time is an advanced operation and has the potential to interfere with existing JuMP syntax. Please discuss with the developer chatroom before publishing any code that implements these methods.

    Arguments

    • _error: a function that accepts a String and throws the string as an error, along with some descriptive information of the macro from which it was thrown.
    • head: the .head field of the Expr to intercept
    • args...: the .args field of the Expr.

    Returns

    This function must return:

    • is_vectorized::Bool: whether the expression represents a broadcasted expression like x .<= 1
    • parse_code::Expr: an expression containing any setup or rewriting code that needs to be called before build_constraint
    • build_code::Expr: an expression that calls build_constraint( or build_constraint.( depending on is_vectorized.

    Existing implementations

    JuMP currently implements:

    • ::Val{:call}, which forwards calls to parse_constraint_call
    • ::Val{:comparison}, which handles the special case of l <= body <= u.

    See also: parse_constraint_call, build_constraint

    source

    parse_one_operator_variable

    JuMP.parse_one_operator_variableFunction
    parse_one_operator_variable(_error::Function, infoexpr::_VariableInfoExpr, sense::Val{S}, value) where S

    Update infoexr for a variable expression in the @variable macro of the form variable name S value.

    source

    parse_ternary_variable

    JuMP.parse_ternary_variableFunction
    parse_ternary_variable(_error, variable_info, lhs_sense, lhs, rhs_sense, rhs)

    A hook for JuMP extensiosn to intercept the parsing of a :comparison expression, which has the form lhs lhs_sense variable rhs_sense rhs.

    source

    parse_variable

    JuMP.parse_variableFunction
    parse_variable(_error::Function, ::_VariableInfoExpr, args...)

    A hook for extensions to intercept the parsing of inequality constraints in the @variable macro.

    source

    primal_feasibility_report

    JuMP.primal_feasibility_reportFunction
    primal_feasibility_report(
         model::GenericModel{T},
         point::AbstractDict{GenericVariableRef{T},T} = _last_primal_solution(model),
         atol::T = zero(T),
    @@ -1049,7 +1049,7 @@
     
     julia> primal_feasibility_report(model, Dict(x => 0.2))
     Dict{Any, Float64} with 1 entry:
    -  x ≥ 0.5 => 0.3
    source
    primal_feasibility_report(
    +  x ≥ 0.5 => 0.3
    source
    primal_feasibility_report(
         point::Function,
         model::GenericModel{T};
         atol::T = zero(T),
    @@ -1062,20 +1062,20 @@
                return start_value(v)
            end
     Dict{Any, Float64} with 1 entry:
    -  x ≤ 1 => 0.3
    source

    primal_status

    JuMP.print_active_bridgesFunction
    print_active_bridges([io::IO = stdout,] model::GenericModel)

    Print a list of the variable, constraint, and objective bridges that are currently used in the model.

    source
    print_active_bridges([io::IO = stdout,] model::GenericModel, ::Type{F}) where {F}

    Print a list of bridges required for an objective function of type F.

    source
    print_active_bridges(
    +  x ≤ 1 => 0.3
    source

    primal_status

    JuMP.print_active_bridgesFunction
    print_active_bridges([io::IO = stdout,] model::GenericModel)

    Print a list of the variable, constraint, and objective bridges that are currently used in the model.

    source
    print_active_bridges([io::IO = stdout,] model::GenericModel, ::Type{F}) where {F}

    Print a list of bridges required for an objective function of type F.

    source
    print_active_bridges(
         [io::IO = stdout,]
         model::GenericModel,
         F::Type,
         S::Type{<:MOI.AbstractSet},
    -)

    Print a list of bridges required for a constraint of type F-in-S.

    source
    print_active_bridges(
    +)

    Print a list of bridges required for a constraint of type F-in-S.

    source
    print_active_bridges(
         [io::IO = stdout,]
         model::GenericModel,
         S::Type{<:MOI.AbstractSet},
    -)

    Print a list of bridges required to add a variable constrained to the set S.

    source
    JuMP.print_bridge_graphFunction
     print_bridge_graph([io::IO,] model::GenericModel)

    Print the hyper-graph containing all variable, constraint, and objective types that could be obtained by bridging the variables, constraints, and objectives that are present in the model.

    Warning

    This function is intended for advanced users. If you want to see only the bridges that are currently used, use print_active_bridges instead.

    Explanation of output

    Each node in the hyper-graph corresponds to a variable, constraint, or objective type.

    • Variable nodes are indicated by [ ]
    • Constraint nodes are indicated by ( )
    • Objective nodes are indicated by | |

    The number inside each pair of brackets is an index of the node in the hyper-graph.

    Note that this hyper-graph is the full list of possible transformations. When the bridged model is created, we select the shortest hyper-path(s) from this graph, so many nodes may be un-used.

    For more information, see Legat, B., Dowson, O., Garcia, J., and Lubin, M. (2020). "MathOptInterface: a data structure for mathematical optimization problems." URL: https://arxiv.org/abs/2002.03447

    source

    quad_terms

    JuMP.quad_termsFunction
    quad_terms(quad::GenericQuadExpr{C, V})

    Provides an iterator over tuples (coefficient::C, var_1::V, var_2::V) in the quadratic part of the quadratic expression.

    source

    raw_status

    JuMP.raw_statusFunction
    raw_status(model::GenericModel)

    Return the reason why the solver stopped in its own words (i.e., the MathOptInterface model attribute RawStatusString).

    source

    read_from_file

    JuMP.read_from_fileFunction
    read_from_file(
    +)

    Print a list of bridges required to add a variable constrained to the set S.

    source
    JuMP.print_bridge_graphFunction
     print_bridge_graph([io::IO,] model::GenericModel)

    Print the hyper-graph containing all variable, constraint, and objective types that could be obtained by bridging the variables, constraints, and objectives that are present in the model.

    Warning

    This function is intended for advanced users. If you want to see only the bridges that are currently used, use print_active_bridges instead.

    Explanation of output

    Each node in the hyper-graph corresponds to a variable, constraint, or objective type.

    • Variable nodes are indicated by [ ]
    • Constraint nodes are indicated by ( )
    • Objective nodes are indicated by | |

    The number inside each pair of brackets is an index of the node in the hyper-graph.

    Note that this hyper-graph is the full list of possible transformations. When the bridged model is created, we select the shortest hyper-path(s) from this graph, so many nodes may be un-used.

    For more information, see Legat, B., Dowson, O., Garcia, J., and Lubin, M. (2020). "MathOptInterface: a data structure for mathematical optimization problems." URL: https://arxiv.org/abs/2002.03447

    source

    quad_terms

    JuMP.quad_termsFunction
    quad_terms(quad::GenericQuadExpr{C, V})

    Provides an iterator over tuples (coefficient::C, var_1::V, var_2::V) in the quadratic part of the quadratic expression.

    source

    raw_status

    JuMP.raw_statusFunction
    raw_status(model::GenericModel)

    Return the reason why the solver stopped in its own words (i.e., the MathOptInterface model attribute RawStatusString).

    source

    read_from_file

    JuMP.read_from_fileFunction
    read_from_file(
         filename::String;
         format::MOI.FileFormats.FileFormat = MOI.FileFormats.FORMAT_AUTOMATIC,
         kwargs...,
    -)

    Return a JuMP model read from filename in the format format.

    If the filename ends in .gz, it will be uncompressed using Gzip. If the filename ends in .bz2, it will be uncompressed using BZip2.

    Other kwargs are passed to the Model constructor of the chosen format.

    source

    reduced_cost

    JuMP.reduced_costFunction
    reduced_cost(x::GenericVariableRef{T})::T where {T}

    Return the reduced cost associated with variable x.

    Equivalent to querying the shadow price of the active variable bound (if one exists and is active).

    See also: shadow_price.

    source

    register

    JuMP.registerFunction
    register(
    +)

    Return a JuMP model read from filename in the format format.

    If the filename ends in .gz, it will be uncompressed using Gzip. If the filename ends in .bz2, it will be uncompressed using BZip2.

    Other kwargs are passed to the Model constructor of the chosen format.

    source

    reduced_cost

    JuMP.reduced_costFunction
    reduced_cost(x::GenericVariableRef{T})::T where {T}

    Return the reduced cost associated with variable x.

    Equivalent to querying the shadow price of the active variable bound (if one exists and is active).

    See also: shadow_price.

    source

    register

    JuMP.registerFunction
    register(
         model::Model,
         op::Symbol,
         dimension::Integer,
    @@ -1103,7 +1103,7 @@
     
     julia> register(model, :g, 2, g; autodiff = true)
     
    -julia> @NLobjective(model, Min, g(x[1], x[2]))
    source
    register(
    +julia> @NLobjective(model, Min, g(x[1], x[2]))
    source
    register(
         model::Model,
         s::Symbol,
         dimension::Integer,
    @@ -1142,7 +1142,7 @@
     
     julia> register(model, :g, 2, g, ∇g)
     
    -julia> @NLobjective(model, Min, g(x[1], x[2]))
    source
    register(
    +julia> @NLobjective(model, Min, g(x[1], x[2]))
    source
    register(
         model::Model,
         s::Symbol,
         dimension::Integer,
    @@ -1166,7 +1166,7 @@
     julia> register(model, :foo, 1, f, ∇f, ∇²f)
     
     julia> @NLobjective(model, Min, foo(x))
    -
    source

    relative_gap

    JuMP.relative_gapFunction
    relative_gap(model::GenericModel)

    Return the final relative optimality gap after a call to optimize!(model). Exact value depends upon implementation of MathOptInterface.RelativeGap() by the particular solver used for optimization.

    source

    relax_integrality

    JuMP.relax_integralityFunction
    relax_integrality(model::GenericModel)

    Modifies model to "relax" all binary and integrality constraints on variables. Specifically,

    • Binary constraints are deleted, and variable bounds are tightened if necessary to ensure the variable is constrained to the interval $[0, 1]$.
    • Integrality constraints are deleted without modifying variable bounds.
    • An error is thrown if semi-continuous or semi-integer constraints are present (support may be added for these in the future).
    • All other constraints are ignored (left in place). This includes discrete constraints like SOS and indicator constraints.

    Returns a function that can be called without any arguments to restore the original model. The behavior of this function is undefined if additional changes are made to the affected variables in the meantime.

    Example

    julia> model = Model();
    +
    source

    relative_gap

    JuMP.relative_gapFunction
    relative_gap(model::GenericModel)

    Return the final relative optimality gap after a call to optimize!(model). Exact value depends upon implementation of MathOptInterface.RelativeGap() by the particular solver used for optimization.

    source

    relax_integrality

    JuMP.relax_integralityFunction
    relax_integrality(model::GenericModel)

    Modifies model to "relax" all binary and integrality constraints on variables. Specifically,

    • Binary constraints are deleted, and variable bounds are tightened if necessary to ensure the variable is constrained to the interval $[0, 1]$.
    • Integrality constraints are deleted without modifying variable bounds.
    • An error is thrown if semi-continuous or semi-integer constraints are present (support may be added for these in the future).
    • All other constraints are ignored (left in place). This includes discrete constraints like SOS and indicator constraints.

    Returns a function that can be called without any arguments to restore the original model. The behavior of this function is undefined if additional changes are made to the affected variables in the meantime.

    Example

    julia> model = Model();
     
     julia> @variable(model, x, Bin);
     
    @@ -1192,7 +1192,7 @@
      y ≥ 1
      y ≤ 10
      y integer
    - x binary
    source

    relax_with_penalty!

    relax_with_penalty!

    JuMP.relax_with_penalty!Function
    relax_with_penalty!(
         model::GenericModel{T},
         [penalties::Dict{ConstraintRef,T}];
         [default::Union{Nothing,Real} = nothing,]
    @@ -1235,7 +1235,7 @@
     Subject to
      c2 : 3 x + _[2] ≥ 0
      c1 : 2 x ≤ -1
    - _[2] ≥ 0
    source

    remove_bridge

    remove_bridge

    JuMP.remove_bridgeFunction
    remove_bridge(
         model::GenericModel{S},
         BT::Type{<:MOI.Bridges.AbstractBridge};
         coefficient_type::Type{T} = S,
    @@ -1255,11 +1255,11 @@
                model,
                MOI.Bridges.Constraint.NumberConversionBridge;
                coefficient_type = Complex{Float64},
    -       )
    source

    reshape_set

    JuMP.reshape_setFunction
    reshape_set(vectorized_set::MOI.AbstractSet, shape::AbstractShape)

    Return a set in its original shape shape given its vectorized form vectorized_form.

    Example

    Given a SymmetricMatrixShape of vectorized form [1, 2, 3] in MOI.PositiveSemidefinieConeTriangle(2), the following code returns the set of the original constraint Symmetric(Matrix[1 2; 2 3]) in PSDCone():

    julia> reshape_set(MOI.PositiveSemidefiniteConeTriangle(2), SymmetricMatrixShape(2))
    -PSDCone()
    source

    reshape_vector

    JuMP.reshape_vectorFunction
    reshape_vector(vectorized_form::Vector, shape::AbstractShape)

    Return an object in its original shape shape given its vectorized form vectorized_form.

    Example

    Given a SymmetricMatrixShape of vectorized form [1, 2, 3], the following code returns the matrix Symmetric(Matrix[1 2; 2 3]):

    julia> reshape_vector([1, 2, 3], SymmetricMatrixShape(2))
    +       )
    source

    reshape_set

    JuMP.reshape_setFunction
    reshape_set(vectorized_set::MOI.AbstractSet, shape::AbstractShape)

    Return a set in its original shape shape given its vectorized form vectorized_form.

    Example

    Given a SymmetricMatrixShape of vectorized form [1, 2, 3] in MOI.PositiveSemidefinieConeTriangle(2), the following code returns the set of the original constraint Symmetric(Matrix[1 2; 2 3]) in PSDCone():

    julia> reshape_set(MOI.PositiveSemidefiniteConeTriangle(2), SymmetricMatrixShape(2))
    +PSDCone()
    source

    reshape_vector

    JuMP.reshape_vectorFunction
    reshape_vector(vectorized_form::Vector, shape::AbstractShape)

    Return an object in its original shape shape given its vectorized form vectorized_form.

    Example

    Given a SymmetricMatrixShape of vectorized form [1, 2, 3], the following code returns the matrix Symmetric(Matrix[1 2; 2 3]):

    julia> reshape_vector([1, 2, 3], SymmetricMatrixShape(2))
     2×2 LinearAlgebra.Symmetric{Int64, Matrix{Int64}}:
      1  2
    - 2  3
    source

    result_count

    reverse_sense

    JuMP.reverse_senseFunction
    reverse_sense(::Val{T}) where {T}

    Given an (in)equality symbol T, return a new Val object with the opposite (in)equality symbol.

    source

    set_attribute

    result_count

    reverse_sense

    JuMP.reverse_senseFunction
    reverse_sense(::Val{T}) where {T}

    Given an (in)equality symbol T, return a new Val object with the opposite (in)equality symbol.

    source

    set_attribute

    JuMP.set_attributeFunction
    set_attribute(model::GenericModel, attr::MOI.AbstractModelAttribute, value)
     set_attribute(x::GenericVariableRef, attr::MOI.AbstractVariableAttribute, value)
     set_attribute(cr::ConstraintRef, attr::MOI.AbstractConstraintAttribute, value)

    Set the value of a solver-specifc attribute attr to value.

    This is equivalent to calling MOI.set with the associated MOI model and, for variables and constraints, with the associated MOI.VariableIndex or MOI.ConstraintIndex.

    Example

    julia> model = Model();
     
    @@ -1273,7 +1273,7 @@
     
     julia> set_attribute(x, MOI.VariableName(), "x_new")
     
    -julia> set_attribute(c, MOI.ConstraintName(), "c_new")
    source
    set_attribute(
    +julia> set_attribute(c, MOI.ConstraintName(), "c_new")
    source
    set_attribute(
         model::Union{GenericModel,MOI.OptimizerWithAttributes},
         attr::Union{AbstractString,MOI.AbstractOptimizerAttribute},
         value,
    @@ -1289,7 +1289,7 @@
     
     julia> set_attribute(opt, "output_flag", true)
     
    -julia> set_attribute(opt, MOI.RawOptimizerAttribute("output_flag"), false)
    source

    set_attributes

    JuMP.set_attributesFunction
    set_attributes(
    +julia> set_attribute(opt, MOI.RawOptimizerAttribute("output_flag"), false)
    source

    set_attributes

    JuMP.set_attributesFunction
    set_attributes(
         destination::Union{
             GenericModel,
             MOI.OptimizerWithAttributes,
    @@ -1307,7 +1307,7 @@
     
     julia> set_attribute(model, "tol", 1e-4)
     
    -julia> set_attribute(model, "max_iter", 100)
    source

    set_binary

    JuMP.set_binaryFunction
    set_binary(v::GenericVariableRef)

    Add a constraint on the variable v that it must take values in the set $\{0,1\}$.

    See also BinaryRef, is_binary, unset_binary.

    Examples

    julia> model = Model();
    +julia> set_attribute(model, "max_iter", 100)
    source

    set_binary

    JuMP.set_binaryFunction
    set_binary(v::GenericVariableRef)

    Add a constraint on the variable v that it must take values in the set $\{0,1\}$.

    See also BinaryRef, is_binary, unset_binary.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -1317,7 +1317,7 @@
     julia> set_binary(x)
     
     julia> is_binary(x)
    -true
    source

    set_dual_start_value

    JuMP.set_dual_start_valueFunction
    set_dual_start_value(con_ref::ConstraintRef, value)

    Set the dual start value (MOI attribute ConstraintDualStart) of the constraint con_ref to value. To remove a dual start value set it to nothing.

    See also dual_start_value.

    source

    set_integer

    set_dual_start_value

    JuMP.set_dual_start_valueFunction
    set_dual_start_value(con_ref::ConstraintRef, value)

    Set the dual start value (MOI attribute ConstraintDualStart) of the constraint con_ref to value. To remove a dual start value set it to nothing.

    See also dual_start_value.

    source

    set_integer

    JuMP.set_integerFunction
    set_integer(variable_ref::GenericVariableRef)

    Add an integrality constraint on the variable variable_ref.

    See also IntegerRef, is_integer, unset_integer.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -1327,7 +1327,7 @@
     julia> set_integer(x)
     
     julia> is_integer(x)
    -true
    source

    set_lower_bound

    set_lower_bound

    set_name

    JuMP.set_nameFunction
    set_name(con_ref::ConstraintRef, s::AbstractString)

    Set a constraint's name attribute.

    source
    set_name(v::GenericVariableRef, s::AbstractString)

    Set a variable's name attribute.

    source

    set_nonlinear_dual_start_value

    set_name

    JuMP.set_nameFunction
    set_name(con_ref::ConstraintRef, s::AbstractString)

    Set a constraint's name attribute.

    source
    set_name(v::GenericVariableRef, s::AbstractString)

    Set a variable's name attribute.

    source

    set_nonlinear_dual_start_value

    JuMP.set_nonlinear_dual_start_valueFunction
    set_nonlinear_dual_start_value(
         model::Model,
         start::Union{Nothing,Vector{Float64}},
     )

    Set the value of the MOI attribute MOI.NLPBlockDualStart.

    The start vector corresponds to the Lagrangian duals of the nonlinear constraints, in the order given by all_nonlinear_constraints. That is, you must pass a single start vector corresponding to all of the nonlinear constraints in a single function call; you cannot set the dual start value of nonlinear constraints one-by-one. The example below demonstrates how to use all_nonlinear_constraints to create a mapping between the nonlinear constraint references and the start vector.

    Pass nothing to unset a previous start.

    Example

    julia> model = Model();
    @@ -1360,7 +1360,7 @@
     julia> nonlinear_dual_start_value(model)
     2-element Vector{Float64}:
      -1.0
    -  1.0
    source

    set_nonlinear_objective

    set_nonlinear_objective

    JuMP.set_nonlinear_objectiveFunction
    set_nonlinear_objective(
         model::Model,
         sense::MOI.OptimizationSense,
         expr::Expr,
    @@ -1368,7 +1368,7 @@
     
     julia> @variable(model, x);
     
    -julia> set_nonlinear_objective(model, MIN_SENSE, :($(x) + $(x)^2))
    source

    set_normalized_coefficient

    JuMP.set_normalized_coefficientFunction
    set_normalized_coefficient(con_ref::ConstraintRef, variable::GenericVariableRef, value)

    Set the coefficient of variable in the constraint constraint to value.

    Note that prior to this step, JuMP will aggregate multiple terms containing the same variable. For example, given a constraint 2x + 3x <= 2, set_normalized_coefficient(con, x, 4) will create the constraint 4x <= 2.

    julia> model = Model();
    +julia> set_nonlinear_objective(model, MIN_SENSE, :($(x) + $(x)^2))
    source

    set_normalized_coefficient

    JuMP.set_normalized_coefficientFunction
    set_normalized_coefficient(con_ref::ConstraintRef, variable::GenericVariableRef, value)

    Set the coefficient of variable in the constraint constraint to value.

    Note that prior to this step, JuMP will aggregate multiple terms containing the same variable. For example, given a constraint 2x + 3x <= 2, set_normalized_coefficient(con, x, 4) will create the constraint 4x <= 2.

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -1379,7 +1379,7 @@
     julia> set_normalized_coefficient(con, x, 4)
     
     julia> con
    -con : 4 x ≤ 2
    source

    set_normalized_coefficients

    set_normalized_coefficients

    JuMP.set_normalized_coefficientsFunction
    set_normalized_coefficients(
         con_ref::ConstraintRef,
         variable,
         new_coefficients::Vector{Tuple{Int64,T}},
    @@ -1394,7 +1394,7 @@
     julia> set_normalized_coefficients(con, x, [(1, 2.0), (2, 5.0)])
     
     julia> con
    -con : [2 x, 5 x] ∈ MathOptInterface.Nonnegatives(2)
    source

    set_normalized_rhs

    JuMP.set_normalized_rhsFunction
    set_normalized_rhs(con_ref::ConstraintRef, value)

    Set the right-hand side term of constraint to value.

    Note that prior to this step, JuMP will aggregate all constant terms onto the right-hand side of the constraint. For example, given a constraint 2x + 1 <= 2, set_normalized_rhs(con, 4) will create the constraint 2x <= 4, not 2x + 1 <= 4.

    julia> model = Model();
    +con : [2 x, 5 x] ∈ MathOptInterface.Nonnegatives(2)
    source

    set_normalized_rhs

    JuMP.set_normalized_rhsFunction
    set_normalized_rhs(con_ref::ConstraintRef, value)

    Set the right-hand side term of constraint to value.

    Note that prior to this step, JuMP will aggregate all constant terms onto the right-hand side of the constraint. For example, given a constraint 2x + 1 <= 2, set_normalized_rhs(con, 4) will create the constraint 2x <= 4, not 2x + 1 <= 4.

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -1404,15 +1404,15 @@
     julia> set_normalized_rhs(con, 4)
     
     julia> con
    -con : 2 x ≤ 4
    source

    set_objective

    set_objective

    JuMP.set_objectiveFunction
    set_objective(model::AbstractModel, sense::MOI.OptimizationSense, func)

    The functional equivalent of the @objective macro.

    Sets the objective sense and objective function simultaneously, and is equivalent to calling set_objective_sense and set_objective_function separately.

    Example

    julia> model = Model();
     
     julia> @variable(model, x)
     x
     
    -julia> set_objective(model, MIN_SENSE, x)
    source

    set_objective_coefficient

    JuMP.set_objective_coefficientFunction
    set_objective_coefficient(model::GenericModel, variable::GenericVariableRef, coefficient::Real)

    Set the linear objective coefficient associated with Variable to coefficient.

    Note: this function will throw an error if a nonlinear objective is set.

    source

    set_objective_function

    set_objective_coefficient

    JuMP.set_objective_coefficientFunction
    set_objective_coefficient(model::GenericModel, variable::GenericVariableRef, coefficient::Real)

    Set the linear objective coefficient associated with Variable to coefficient.

    Note: this function will throw an error if a nonlinear objective is set.

    source

    set_objective_function

    JuMP.set_objective_functionFunction
    set_objective_function(model::GenericModel, func::MOI.AbstractFunction)
     set_objective_function(model::GenericModel, func::AbstractJuMPScalar)
     set_objective_function(model::GenericModel, func::Real)
    -set_objective_function(model::GenericModel, func::Vector{<:AbstractJuMPScalar})

    Sets the objective function of the model to the given function. See set_objective_sense to set the objective sense. These are low-level functions; the recommended way to set the objective is with the @objective macro.

    source

    set_objective_sense

    JuMP.set_objective_senseFunction
    set_objective_sense(model::GenericModel, sense::MOI.OptimizationSense)

    Sets the objective sense of the model to the given sense. See set_objective_function to set the objective function. These are low-level functions; the recommended way to set the objective is with the @objective macro.

    source

    set_optimize_hook

    JuMP.set_optimize_hookFunction
    set_optimize_hook(model::GenericModel, f::Union{Function,Nothing})

    Set the function f as the optimize hook for model.

    f should have a signature f(model::GenericModel; kwargs...), where the kwargs are those passed to optimize!.

    Notes

    • The optimize hook should generally modify the model, or some external state in some way, and then call optimize!(model; ignore_optimize_hook = true) to optimize the problem, bypassing the hook.
    • Use set_optimize_hook(model, nothing) to unset an optimize hook.

    Example

    julia> model = Model();
    +set_objective_function(model::GenericModel, func::Vector{<:AbstractJuMPScalar})

    Sets the objective function of the model to the given function. See set_objective_sense to set the objective sense. These are low-level functions; the recommended way to set the objective is with the @objective macro.

    source

    set_objective_sense

    JuMP.set_objective_senseFunction
    set_objective_sense(model::GenericModel, sense::MOI.OptimizationSense)

    Sets the objective sense of the model to the given sense. See set_objective_function to set the objective function. These are low-level functions; the recommended way to set the objective is with the @objective macro.

    source

    set_optimize_hook

    JuMP.set_optimize_hookFunction
    set_optimize_hook(model::GenericModel, f::Union{Function,Nothing})

    Set the function f as the optimize hook for model.

    f should have a signature f(model::GenericModel; kwargs...), where the kwargs are those passed to optimize!.

    Notes

    • The optimize hook should generally modify the model, or some external state in some way, and then call optimize!(model; ignore_optimize_hook = true) to optimize the problem, bypassing the hook.
    • Use set_optimize_hook(model, nothing) to unset an optimize hook.

    Example

    julia> model = Model();
     
     julia> function my_hook(model::Model; kwargs...)
                println(kwargs)
    @@ -1429,7 +1429,7 @@
     Base.Pairs{Symbol, Bool, Tuple{Symbol}, NamedTuple{(:test_arg,), Tuple{Bool}}}(:test_arg => 1)
     Calling with `ignore_optimize_hook = true`
     ERROR: NoOptimizer()
    -[...]
    source

    set_optimizer

    set_optimizer

    JuMP.set_optimizerFunction
    set_optimizer(
         model::GenericModel,
         optimizer_factory;
         add_bridges::Bool = true,
    @@ -1439,13 +1439,13 @@
     
     julia> set_optimizer(model, () -> HiGHS.Optimizer())
     
    -julia> set_optimizer(model, HiGHS.Optimizer; add_bridges = false)
    source

    set_optimizer_attribute

    set_optimizer_attribute

    JuMP.set_optimizer_attributeFunction
    set_optimizer_attribute(
         model::Union{GenericModel,MOI.OptimizerWithAttributes},
         attr::Union{AbstractString,MOI.AbstractOptimizerAttribute},
         value,
     )

    Set the solver-specific attribute attr in model to value.

    If attr is an AbstractString, this is equivalent to set_optimizer_attribute(model, MOI.RawOptimizerAttribute(name), value).

    Compat

    This method will remain in all v1.X releases of JuMP, but it may be removed in a future v2.0 release. We recommend using set_attribute instead.

    See also: set_optimizer_attributes, get_optimizer_attribute.

    Example

    julia> model = Model();
     
    -julia> set_optimizer_attribute(model, MOI.Silent(), true)
    source

    set_optimizer_attributes

    set_optimizer_attributes

    JuMP.set_optimizer_attributesFunction
    set_optimizer_attributes(
         model::Union{GenericModel,MOI.OptimizerWithAttributes},
         pairs::Pair...,
     )

    Given a list of attribute => value pairs, calls set_optimizer_attribute(model, attribute, value) for each pair.

    Compat

    This method will remain in all v1.X releases of JuMP, but it may be removed in a future v2.0 release. We recommend using set_attributes instead.

    See also: set_optimizer_attribute, get_optimizer_attribute.

    Example

    julia> import Ipopt
    @@ -1458,7 +1458,7 @@
     
     julia> set_optimizer_attribute(model, "tol", 1e-4)
     
    -julia> set_optimizer_attribute(model, "max_iter", 100)
    source

    set_parameter_value

    set_parameter_value

    JuMP.set_parameter_valueFunction
    set_parameter_value(x::GenericVariableRef, value)

    Update the parameter constraint on the variable x to value.

    Errors if x is not a parameter.

    See also ParameterRef, is_parameter, parameter_value.

    Examples

    julia> model = Model();
     
     julia> @variable(model, p in Parameter(2))
     p
    @@ -1469,13 +1469,13 @@
     julia> set_parameter_value(p, 2.5)
     
     julia> parameter_value(p)
    -2.5
    source

    set_silent

    JuMP.set_silentFunction
    set_silent(model::GenericModel)

    Takes precedence over any other attribute controlling verbosity and requires the solver to produce no output.

    See also: unset_silent.

    source

    set_start_value

    JuMP.set_start_valueFunction
    set_start_value(con_ref::ConstraintRef, value)

    Set the primal start value (MOI.ConstraintPrimalStart) of the constraint con_ref to value. To remove a primal start value set it to nothing.

    See also start_value.

    source
    set_start_value(variable::GenericVariableRef, value::Union{Real,Nothing})

    Set the start value (MOI attribute VariablePrimalStart) of the variable to value.

    Pass nothing to unset the start value.

    Note: VariablePrimalStarts are sometimes called "MIP-starts" or "warmstarts".

    See also start_value.

    source

    set_start_values

    set_silent

    JuMP.set_silentFunction
    set_silent(model::GenericModel)

    Takes precedence over any other attribute controlling verbosity and requires the solver to produce no output.

    See also: unset_silent.

    source

    set_start_value

    JuMP.set_start_valueFunction
    set_start_value(con_ref::ConstraintRef, value)

    Set the primal start value (MOI.ConstraintPrimalStart) of the constraint con_ref to value. To remove a primal start value set it to nothing.

    See also start_value.

    source
    set_start_value(variable::GenericVariableRef, value::Union{Real,Nothing})

    Set the start value (MOI attribute VariablePrimalStart) of the variable to value.

    Pass nothing to unset the start value.

    Note: VariablePrimalStarts are sometimes called "MIP-starts" or "warmstarts".

    See also start_value.

    source

    set_start_values

    JuMP.set_start_valuesFunction
    set_start_values(
         model::GenericModel;
         variable_primal_start::Union{Nothing,Function} = value,
         constraint_primal_start::Union{Nothing,Function} = value,
         constraint_dual_start::Union{Nothing,Function} = dual,
         nonlinear_dual_start::Union{Nothing,Function} = nonlinear_dual_start_value,
    -)

    Set the primal and dual starting values in model using the functions provided.

    If any keyword argument is nothing, the corresponding start value is skipped.

    If the optimizer does not support setting the starting value, the value will be skipped.

    variable_primal_start

    This function controls the primal starting solution for the variables. It is equivalent to calling set_start_value for each variable, or setting the MOI.VariablePrimalStart attribute.

    If it is a function, it must have the form variable_primal_start(x::VariableRef) that maps each variable x to the starting primal value.

    The default is value.

    constraint_primal_start

    This function controls the primal starting solution for the constraints. It is equivalent to calling set_start_value for each constraint, or setting the MOI.ConstraintPrimalStart attribute.

    If it is a function, it must have the form constraint_primal_start(ci::ConstraintRef) that maps each constraint ci to the starting primal value.

    The default is value.

    constraint_dual_start

    This function controls the dual starting solution for the constraints. It is equivalent to calling set_dual_start_value for each constraint, or setting the MOI.ConstraintDualStart attribute.

    If it is a function, it must have the form constraint_dual_start(ci::ConstraintRef) that maps each constraint ci to the starting dual value.

    The default is dual.

    nonlinear_dual_start

    This function controls the dual starting solution for the nonlinear constraints It is equivalent to calling set_nonlinear_dual_start_value.

    If it is a function, it must have the form nonlinear_dual_start(model::GenericModel) that returns a vector corresponding to the dual start of the constraints.

    The default is nonlinear_dual_start_value.

    source

    set_string_names_on_creation

    JuMP.set_string_names_on_creationFunction
    set_string_names_on_creation(model::GenericModel, value::Bool)

    Set the default argument of the set_string_name keyword in the @variable and @constraint macros to value. This is used to determine whether to assign String names to all variables and constraints in model.

    By default, value is true. However, for larger models calling set_string_names_on_creation(model, false) can improve performance at the cost of reducing the readability of printing and solver log messages.

    source

    set_time_limit_sec

    set_upper_bound

    JuMP.set_upper_boundFunction
    set_upper_bound(v::GenericVariableRef, upper::Number)

    Set the upper bound of a variable. If one does not exist, create an upper bound constraint.

    See also UpperBoundRef, has_upper_bound, upper_bound, delete_upper_bound.

    Examples

    julia> model = Model();
    +)

    Set the primal and dual starting values in model using the functions provided.

    If any keyword argument is nothing, the corresponding start value is skipped.

    If the optimizer does not support setting the starting value, the value will be skipped.

    variable_primal_start

    This function controls the primal starting solution for the variables. It is equivalent to calling set_start_value for each variable, or setting the MOI.VariablePrimalStart attribute.

    If it is a function, it must have the form variable_primal_start(x::VariableRef) that maps each variable x to the starting primal value.

    The default is value.

    constraint_primal_start

    This function controls the primal starting solution for the constraints. It is equivalent to calling set_start_value for each constraint, or setting the MOI.ConstraintPrimalStart attribute.

    If it is a function, it must have the form constraint_primal_start(ci::ConstraintRef) that maps each constraint ci to the starting primal value.

    The default is value.

    constraint_dual_start

    This function controls the dual starting solution for the constraints. It is equivalent to calling set_dual_start_value for each constraint, or setting the MOI.ConstraintDualStart attribute.

    If it is a function, it must have the form constraint_dual_start(ci::ConstraintRef) that maps each constraint ci to the starting dual value.

    The default is dual.

    nonlinear_dual_start

    This function controls the dual starting solution for the nonlinear constraints It is equivalent to calling set_nonlinear_dual_start_value.

    If it is a function, it must have the form nonlinear_dual_start(model::GenericModel) that returns a vector corresponding to the dual start of the constraints.

    The default is nonlinear_dual_start_value.

    source

    set_string_names_on_creation

    JuMP.set_string_names_on_creationFunction
    set_string_names_on_creation(model::GenericModel, value::Bool)

    Set the default argument of the set_string_name keyword in the @variable and @constraint macros to value. This is used to determine whether to assign String names to all variables and constraints in model.

    By default, value is true. However, for larger models calling set_string_names_on_creation(model, false) can improve performance at the cost of reducing the readability of printing and solver log messages.

    source

    set_time_limit_sec

    set_upper_bound

    set_value

    JuMP.set_valueFunction
    set_value(p::NonlinearParameter, v::Number)

    Store the value v in the nonlinear parameter p.

    Example

    julia> model = Model();
    +2.0
    source

    set_value

    JuMP.set_valueFunction
    set_value(p::NonlinearParameter, v::Number)

    Store the value v in the nonlinear parameter p.

    Example

    julia> model = Model();
     
     julia> @NLparameter(model, p == 0)
     p == 0.0
    @@ -1494,7 +1494,7 @@
     5
     
     julia> value(p)
    -5.0
    source

    shadow_price

    JuMP.shadow_priceFunction
    shadow_price(con_ref::ConstraintRef)

    Return the change in the objective from an infinitesimal relaxation of the constraint.

    This value is computed from dual and can be queried only when has_duals is true and the objective sense is MIN_SENSE or MAX_SENSE (not FEASIBILITY_SENSE). For linear constraints, the shadow prices differ at most in sign from the dual value depending on the objective sense.

    See also reduced_cost.

    Notes

    • The function simply translates signs from dual and does not validate the conditions needed to guarantee the sensitivity interpretation of the shadow price. The caller is responsible, e.g., for checking whether the solver converged to an optimal primal-dual pair or a proof of infeasibility.
    • The computation is based on the current objective sense of the model. If this has changed since the last solve, the results will be incorrect.
    • Relaxation of equality constraints (and hence the shadow price) is defined based on which sense of the equality constraint is active.
    source

    shape

    JuMP.shapeFunction
    shape(c::AbstractConstraint)::AbstractShape

    Return the shape of the constraint c.

    source

    show_backend_summary

    JuMP.show_backend_summaryFunction
    show_backend_summary(io::IO, model::GenericModel)

    Print a summary of the optimizer backing model.

    AbstractModels should implement this method.

    source

    show_constraints_summary

    show_objective_function_summary

    simplex_iterations

    JuMP.simplex_iterationsFunction
    simplex_iterations(model::GenericModel)

    Gets the cumulative number of simplex iterations during the most-recent optimization.

    Solvers must implement MOI.SimplexIterations() to use this function.

    source

    solution_summary

    JuMP.solution_summaryFunction
    solution_summary(model::GenericModel; result::Int = 1, verbose::Bool = false)

    Return a struct that can be used print a summary of the solution in result result.

    If verbose=true, write out the primal solution for every variable and the dual solution for every constraint, excluding those with empty names.

    Example

    When called at the REPL, the summary is automatically printed:

    julia> model = Model();
    +5.0
    source

    shadow_price

    JuMP.shadow_priceFunction
    shadow_price(con_ref::ConstraintRef)

    Return the change in the objective from an infinitesimal relaxation of the constraint.

    This value is computed from dual and can be queried only when has_duals is true and the objective sense is MIN_SENSE or MAX_SENSE (not FEASIBILITY_SENSE). For linear constraints, the shadow prices differ at most in sign from the dual value depending on the objective sense.

    See also reduced_cost.

    Notes

    • The function simply translates signs from dual and does not validate the conditions needed to guarantee the sensitivity interpretation of the shadow price. The caller is responsible, e.g., for checking whether the solver converged to an optimal primal-dual pair or a proof of infeasibility.
    • The computation is based on the current objective sense of the model. If this has changed since the last solve, the results will be incorrect.
    • Relaxation of equality constraints (and hence the shadow price) is defined based on which sense of the equality constraint is active.
    source

    shape

    JuMP.shapeFunction
    shape(c::AbstractConstraint)::AbstractShape

    Return the shape of the constraint c.

    source

    show_backend_summary

    JuMP.show_backend_summaryFunction
    show_backend_summary(io::IO, model::GenericModel)

    Print a summary of the optimizer backing model.

    AbstractModels should implement this method.

    source

    show_constraints_summary

    show_objective_function_summary

    simplex_iterations

    JuMP.simplex_iterationsFunction
    simplex_iterations(model::GenericModel)

    Gets the cumulative number of simplex iterations during the most-recent optimization.

    Solvers must implement MOI.SimplexIterations() to use this function.

    source

    solution_summary

    JuMP.solution_summaryFunction
    solution_summary(model::GenericModel; result::Int = 1, verbose::Bool = false)

    Return a struct that can be used print a summary of the solution in result result.

    If verbose=true, write out the primal solution for every variable and the dual solution for every constraint, excluding those with empty names.

    Example

    When called at the REPL, the summary is automatically printed:

    julia> model = Model();
     
     julia> solution_summary(model)
     * Solver : No optimizer attached.
    @@ -1530,7 +1530,7 @@
       Primal status      : NO_SOLUTION
       Dual status        : NO_SOLUTION
     
    -* Work counters
    source

    solve_time

    JuMP.solve_timeFunction
    solve_time(model::GenericModel)

    If available, returns the solve time reported by the solver. Returns "ArgumentError: ModelLike of type Solver.Optimizer does not support accessing the attribute MathOptInterface.SolveTimeSec()" if the attribute is not implemented.

    source

    solver_name

    JuMP.solver_nameFunction
    solver_name(model::GenericModel)

    If available, returns the SolverName property of the underlying optimizer.

    Returns "No optimizer attached" in AUTOMATIC or MANUAL modes when no optimizer is attached.

    Returns "SolverName() attribute not implemented by the optimizer." if the attribute is not implemented.

    source

    start_value

    JuMP.start_valueFunction
    start_value(con_ref::ConstraintRef)

    Return the primal start value (MOI.ConstraintPrimalStart) of the constraint con_ref.

    Note: If no primal start value has been set, start_value will return nothing.

    See also set_start_value.

    source
    start_value(v::GenericVariableRef)

    Return the start value (MOI attribute VariablePrimalStart) of the variable v.

    Note: VariablePrimalStarts are sometimes called "MIP-starts" or "warmstarts".

    See also set_start_value.

    source

    termination_status

    time_limit_sec

    triangle_vec

    JuMP.triangle_vecFunction
    triangle_vec(matrix::Matrix)

    Return the upper triangle of a matrix concatenated into a vector in the order required by JuMP and MathOptInterface for Triangle sets.

    Example

    julia> model = Model();
    +* Work counters
    source

    solve_time

    JuMP.solve_timeFunction
    solve_time(model::GenericModel)

    If available, returns the solve time reported by the solver. Returns "ArgumentError: ModelLike of type Solver.Optimizer does not support accessing the attribute MathOptInterface.SolveTimeSec()" if the attribute is not implemented.

    source

    solver_name

    JuMP.solver_nameFunction
    solver_name(model::GenericModel)

    If available, returns the SolverName property of the underlying optimizer.

    Returns "No optimizer attached" in AUTOMATIC or MANUAL modes when no optimizer is attached.

    Returns "SolverName() attribute not implemented by the optimizer." if the attribute is not implemented.

    source

    start_value

    JuMP.start_valueFunction
    start_value(con_ref::ConstraintRef)

    Return the primal start value (MOI.ConstraintPrimalStart) of the constraint con_ref.

    Note: If no primal start value has been set, start_value will return nothing.

    See also set_start_value.

    source
    start_value(v::GenericVariableRef)

    Return the start value (MOI attribute VariablePrimalStart) of the variable v.

    Note: VariablePrimalStarts are sometimes called "MIP-starts" or "warmstarts".

    See also set_start_value.

    source

    termination_status

    time_limit_sec

    triangle_vec

    JuMP.triangle_vecFunction
    triangle_vec(matrix::Matrix)

    Return the upper triangle of a matrix concatenated into a vector in the order required by JuMP and MathOptInterface for Triangle sets.

    Example

    julia> model = Model();
     
     julia> @variable(model, X[1:3, 1:3], Symmetric);
     
    @@ -1538,7 +1538,7 @@
     t
     
     julia> @constraint(model, [t; triangle_vec(X)] in MOI.RootDetConeTriangle(3))
    -[t, X[1,1], X[1,2], X[2,2], X[1,3], X[2,3], X[3,3]] ∈ MathOptInterface.RootDetConeTriangle(3)
    source

    unfix

    JuMP.unfixFunction
    unfix(v::GenericVariableRef)

    Delete the fixing constraint of a variable.

    Error if one does not exist.

    See also FixRef, is_fixed, fix_value, fix.

    Examples

    julia> model = Model();
    +[t, X[1,1], X[1,2], X[2,2], X[1,3], X[2,3], X[3,3]] ∈ MathOptInterface.RootDetConeTriangle(3)
    source

    unfix

    JuMP.unfixFunction
    unfix(v::GenericVariableRef)

    Delete the fixing constraint of a variable.

    Error if one does not exist.

    See also FixRef, is_fixed, fix_value, fix.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x == 1);
     
    @@ -1548,7 +1548,7 @@
     julia> unfix(x)
     
     julia> is_fixed(x)
    -false
    source

    unregister

    JuMP.unregisterFunction
    unregister(model::GenericModel, key::Symbol)

    Unregister the name key from model so that a new variable, constraint, or expression can be created with the same key.

    Note that this will not delete the object model[key]; it will just remove the reference at model[key]. To delete the object, use delete as well.

    See also: delete, object_dictionary.

    Example

    julia> model = Model();
    +false
    source

    unregister

    JuMP.unregisterFunction
    unregister(model::GenericModel, key::Symbol)

    Unregister the name key from model so that a new variable, constraint, or expression can be created with the same key.

    Note that this will not delete the object model[key]; it will just remove the reference at model[key]. To delete the object, use delete as well.

    See also: delete, object_dictionary.

    Example

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -1575,7 +1575,7 @@
     x
     
     julia> num_variables(model)
    -2
    source

    unsafe_backend

    JuMP.unsafe_backendFunction
    unsafe_backend(model::GenericModel)

    Return the innermost optimizer associated with the JuMP model model.

    This function should only be used by advanced users looking to access low-level solver-specific functionality. It has a high-risk of incorrect usage. We strongly suggest you use the alternative suggested below.

    See also: backend.

    Unsafe behavior

    This function is unsafe for two main reasons.

    First, the formulation and order of variables and constraints in the unsafe backend may be different to the variables and constraints in model. This can happen because of bridges, or because the solver requires the variables or constraints in a specific order. In addition, the variable or constraint index returned by index at the JuMP level may be different to the index of the corresponding variable or constraint in the unsafe_backend. There is no solution to this. Use the alternative suggested below instead.

    Second, the unsafe_backend may be empty, or lack some modifications made to the JuMP model. Thus, before calling unsafe_backend you should first call MOI.Utilities.attach_optimizer to ensure that the backend is synchronized with the JuMP model.

    julia> import HiGHS
    +2
    source

    unsafe_backend

    JuMP.unsafe_backendFunction
    unsafe_backend(model::GenericModel)

    Return the innermost optimizer associated with the JuMP model model.

    This function should only be used by advanced users looking to access low-level solver-specific functionality. It has a high-risk of incorrect usage. We strongly suggest you use the alternative suggested below.

    See also: backend.

    Unsafe behavior

    This function is unsafe for two main reasons.

    First, the formulation and order of variables and constraints in the unsafe backend may be different to the variables and constraints in model. This can happen because of bridges, or because the solver requires the variables or constraints in a specific order. In addition, the variable or constraint index returned by index at the JuMP level may be different to the index of the corresponding variable or constraint in the unsafe_backend. There is no solution to this. Use the alternative suggested below instead.

    Second, the unsafe_backend may be empty, or lack some modifications made to the JuMP model. Thus, before calling unsafe_backend you should first call MOI.Utilities.attach_optimizer to ensure that the backend is synchronized with the JuMP model.

    julia> import HiGHS
     
     julia> model = Model(HiGHS.Optimizer)
     A JuMP Model
    @@ -1610,7 +1610,7 @@
     x
     
     julia> highs = backend(model)  # No need to call `attach_optimizer`.
    -A HiGHS model with 1 columns and 0 rows.
    source

    unset_binary

    JuMP.unset_binaryFunction
    unset_binary(variable_ref::GenericVariableRef)

    Remove the binary constraint on the variable variable_ref.

    See also BinaryRef, is_binary, set_binary.

    Examples

    julia> model = Model();
    +A HiGHS model with 1 columns and 0 rows.
    source

    unset_binary

    JuMP.unset_binaryFunction
    unset_binary(variable_ref::GenericVariableRef)

    Remove the binary constraint on the variable variable_ref.

    See also BinaryRef, is_binary, set_binary.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x, Bin);
     
    @@ -1620,7 +1620,7 @@
     julia> unset_binary(x)
     
     julia> is_binary(x)
    -false
    source

    unset_integer

    unset_integer

    JuMP.unset_integerFunction
    unset_integer(variable_ref::GenericVariableRef)

    Remove the integrality constraint on the variable variable_ref.

    Errors if one does not exist.

    See also IntegerRef, is_integer, set_integer.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x, Int);
     
    @@ -1630,18 +1630,18 @@
     julia> unset_integer(x)
     
     julia> is_integer(x)
    -false
    source

    unset_silent

    JuMP.unset_silentFunction
    unset_silent(model::GenericModel)

    Neutralize the effect of the set_silent function and let the solver attributes control the verbosity.

    See also: set_silent.

    source

    unset_time_limit_sec

    upper_bound

    unset_silent

    JuMP.unset_silentFunction
    unset_silent(model::GenericModel)

    Neutralize the effect of the set_silent function and let the solver attributes control the verbosity.

    See also: set_silent.

    source

    unset_time_limit_sec

    upper_bound

    value

    JuMP.valueFunction
    value(con_ref::ConstraintRef; result::Int = 1)

    Return the primal value of constraint con_ref associated with result index result of the most-recent solution returned by the solver.

    That is, if con_ref is the reference of a constraint func-in-set, it returns the value of func evaluated at the value of the variables (given by value(::GenericVariableRef)).

    Use has_values to check if a result exists before asking for values.

    See also: result_count.

    Note

    For scalar constraints, the constant is moved to the set so it is not taken into account in the primal value of the constraint. For instance, the constraint @constraint(model, 2x + 3y + 1 == 5) is transformed into 2x + 3y-in-MOI.EqualTo(4) so the value returned by this function is the evaluation of 2x + 3y.

    source
    value(var_value::Function, con_ref::ConstraintRef)

    Evaluate the primal value of the constraint con_ref using var_value(v) as the value for each variable v.

    source
    value(v::GenericVariableRef; result = 1)

    Return the value of variable v associated with result index result of the most-recent returned by the solver.

    Use has_values to check if a result exists before asking for values.

    See also: result_count.

    source
    value(var_value::Function, v::GenericVariableRef)

    Evaluate the value of the variable v as var_value(v).

    source
    value(var_value::Function, ex::GenericAffExpr)

    Evaluate ex using var_value(v) as the value for each variable v.

    source
    value(v::GenericAffExpr; result::Int = 1)

    Return the value of the GenericAffExpr v associated with result index result of the most-recent solution returned by the solver.

    See also: result_count.

    source
    value(var_value::Function, ex::GenericQuadExpr)

    Evaluate ex using var_value(v) as the value for each variable v.

    source
    value(v::GenericQuadExpr; result::Int = 1)

    Return the value of the GenericQuadExpr v associated with result index result of the most-recent solution returned by the solver.

    Replaces getvalue for most use cases.

    See also: result_count.

    source
    value(p::NonlinearParameter)

    Return the current value stored in the nonlinear parameter p.

    Example

    julia> model = Model();
    +1.0
    source

    value

    JuMP.valueFunction
    value(con_ref::ConstraintRef; result::Int = 1)

    Return the primal value of constraint con_ref associated with result index result of the most-recent solution returned by the solver.

    That is, if con_ref is the reference of a constraint func-in-set, it returns the value of func evaluated at the value of the variables (given by value(::GenericVariableRef)).

    Use has_values to check if a result exists before asking for values.

    See also: result_count.

    Note

    For scalar constraints, the constant is moved to the set so it is not taken into account in the primal value of the constraint. For instance, the constraint @constraint(model, 2x + 3y + 1 == 5) is transformed into 2x + 3y-in-MOI.EqualTo(4) so the value returned by this function is the evaluation of 2x + 3y.

    source
    value(var_value::Function, con_ref::ConstraintRef)

    Evaluate the primal value of the constraint con_ref using var_value(v) as the value for each variable v.

    source
    value(v::GenericVariableRef; result = 1)

    Return the value of variable v associated with result index result of the most-recent returned by the solver.

    Use has_values to check if a result exists before asking for values.

    See also: result_count.

    source
    value(var_value::Function, v::GenericVariableRef)

    Evaluate the value of the variable v as var_value(v).

    source
    value(var_value::Function, ex::GenericAffExpr)

    Evaluate ex using var_value(v) as the value for each variable v.

    source
    value(v::GenericAffExpr; result::Int = 1)

    Return the value of the GenericAffExpr v associated with result index result of the most-recent solution returned by the solver.

    See also: result_count.

    source
    value(var_value::Function, ex::GenericQuadExpr)

    Evaluate ex using var_value(v) as the value for each variable v.

    source
    value(v::GenericQuadExpr; result::Int = 1)

    Return the value of the GenericQuadExpr v associated with result index result of the most-recent solution returned by the solver.

    Replaces getvalue for most use cases.

    See also: result_count.

    source
    value(p::NonlinearParameter)

    Return the current value stored in the nonlinear parameter p.

    Example

    julia> model = Model();
     
     julia> @NLparameter(model, p == 10)
     p == 10.0
     
     julia> value(p)
    -10.0
    source
    value(ex::NonlinearExpression; result::Int = 1)

    Return the value of the NonlinearExpression ex associated with result index result of the most-recent solution returned by the solver.

    Replaces getvalue for most use cases.

    See also: result_count.

    source
    value(var_value::Function, ex::NonlinearExpression)

    Evaluate ex using var_value(v) as the value for each variable v.

    source
    value(c::NonlinearConstraintRef; result::Int = 1)

    Return the value of the NonlinearConstraintRef c associated with result index result of the most-recent solution returned by the solver.

    See also: result_count.

    source
    value(var_value::Function, c::NonlinearConstraintRef)

    Evaluate c using var_value(v) as the value for each variable v.

    source

    value_type

    JuMP.value_typeFunction
    value_type(::Type{<:Union{AbstractModel,AbstractVariableRef}})

    Return the return type of value for variables of that model. It defaults to Float64 if it is not implemented.

    source

    variable_by_name

    JuMP.variable_by_nameFunction
    variable_by_name(
    +10.0
    source
    value(ex::NonlinearExpression; result::Int = 1)

    Return the value of the NonlinearExpression ex associated with result index result of the most-recent solution returned by the solver.

    Replaces getvalue for most use cases.

    See also: result_count.

    source
    value(var_value::Function, ex::NonlinearExpression)

    Evaluate ex using var_value(v) as the value for each variable v.

    source
    value(c::NonlinearConstraintRef; result::Int = 1)

    Return the value of the NonlinearConstraintRef c associated with result index result of the most-recent solution returned by the solver.

    See also: result_count.

    source
    value(var_value::Function, c::NonlinearConstraintRef)

    Evaluate c using var_value(v) as the value for each variable v.

    source

    value_type

    JuMP.value_typeFunction
    value_type(::Type{<:Union{AbstractModel,AbstractVariableRef}})

    Return the return type of value for variables of that model. It defaults to Float64 if it is not implemented.

    source

    variable_by_name

    JuMP.variable_by_nameFunction
    variable_by_name(
         model::AbstractModel,
         name::String,
     )::Union{AbstractVariableRef,Nothing}

    Returns the reference of the variable with name attribute name or Nothing if no variable has this name attribute. Throws an error if several variables have name as their name attribute.

    Examples

    julia> model = Model();
    @@ -1684,17 +1684,17 @@
      u[2]
     
     julia> variable_by_name(model, "u[2]")
    -u[2]
    source

    variable_ref_type

    JuMP.variable_ref_typeFunction
    variable_ref_type(::Union{F,Type{F}}) where {F}

    A helper function used internally by JuMP and some JuMP extensions. Returns the variable type associated with the model or expression type F.

    source

    vectorize

    JuMP.vectorizeFunction
    vectorize(matrix::AbstractMatrix, ::Shape)

    Convert the matrix into a vector according to Shape.

    source

    write_to_file

    variable_ref_type

    JuMP.variable_ref_typeFunction
    variable_ref_type(::Union{F,Type{F}}) where {F}

    A helper function used internally by JuMP and some JuMP extensions. Returns the variable type associated with the model or expression type F.

    source

    vectorize

    JuMP.vectorizeFunction
    vectorize(matrix::AbstractMatrix, ::Shape)

    Convert the matrix into a vector according to Shape.

    source

    write_to_file

    JuMP.write_to_fileFunction
    write_to_file(
         model::GenericModel,
         filename::String;
         format::MOI.FileFormats.FileFormat = MOI.FileFormats.FORMAT_AUTOMATIC,
         kwargs...,
    -)

    Write the JuMP model model to filename in the format format.

    If the filename ends in .gz, it will be compressed using Gzip. If the filename ends in .bz2, it will be compressed using BZip2.

    Other kwargs are passed to the Model constructor of the chosen format.

    source

    AbstractConstraint

    JuMP.AbstractConstraintType
    abstract type AbstractConstraint

    An abstract base type for all constraint types. AbstractConstraints store the function and set directly, unlike ConstraintRefs that are merely references to constraints stored in a model. AbstractConstraints do not need to be attached to a model.

    source

    AbstractJuMPScalar

    JuMP.AbstractJuMPScalarType
    AbstractJuMPScalar <: MutableArithmetics.AbstractMutable

    Abstract base type for all scalar types

    The subtyping of AbstractMutable will allow calls of some Base functions to be redirected to a method in MA that handles type promotion more carefully (e.g. the promotion in sparse matrix products in SparseArrays usually does not work for JuMP types) and exploits the mutability of AffExpr and QuadExpr.

    source

    AbstractModel

    JuMP.AbstractModelType
    AbstractModel

    An abstract type that should be subtyped for users creating JuMP extensions.

    source

    AbstractScalarSet

    JuMP.AbstractScalarSetType
    AbstractScalarSet

    An abstract type for defining new scalar sets in JuMP.

    Implement moi_set(::AbstractScalarSet) to convert the type into an MOI set.

    See also: moi_set.

    source

    AbstractShape

    AbstractVariable

    AbstractVariableRef

    JuMP.AbstractVariableRefType
    AbstractVariableRef

    Variable returned by add_variable. Affine (resp. quadratic) operations with variables of type V<:AbstractVariableRef and coefficients of type T create a GenericAffExpr{T,V} (resp. GenericQuadExpr{T,V}).

    source

    AbstractVectorSet

    JuMP.AbstractVectorSetType
    AbstractVectorSet

    An abstract type for defining new sets in JuMP.

    Implement moi_set(::AbstractVectorSet, dim::Int) to convert the type into an MOI set.

    See also: moi_set.

    source

    AffExpr

    BinaryRef

    JuMP.BinaryRefFunction
    BinaryRef(v::GenericVariableRef)

    Return a constraint reference to the constraint constraining v to be binary. Errors if one does not exist.

    See also is_binary, set_binary, unset_binary.

    Examples

    julia> model = Model();
    +)

    Write the JuMP model model to filename in the format format.

    If the filename ends in .gz, it will be compressed using Gzip. If the filename ends in .bz2, it will be compressed using BZip2.

    Other kwargs are passed to the Model constructor of the chosen format.

    source

    AbstractConstraint

    JuMP.AbstractConstraintType
    abstract type AbstractConstraint

    An abstract base type for all constraint types. AbstractConstraints store the function and set directly, unlike ConstraintRefs that are merely references to constraints stored in a model. AbstractConstraints do not need to be attached to a model.

    source

    AbstractJuMPScalar

    JuMP.AbstractJuMPScalarType
    AbstractJuMPScalar <: MutableArithmetics.AbstractMutable

    Abstract base type for all scalar types

    The subtyping of AbstractMutable will allow calls of some Base functions to be redirected to a method in MA that handles type promotion more carefully (e.g. the promotion in sparse matrix products in SparseArrays usually does not work for JuMP types) and exploits the mutability of AffExpr and QuadExpr.

    source

    AbstractModel

    JuMP.AbstractModelType
    AbstractModel

    An abstract type that should be subtyped for users creating JuMP extensions.

    source

    AbstractScalarSet

    JuMP.AbstractScalarSetType
    AbstractScalarSet

    An abstract type for defining new scalar sets in JuMP.

    Implement moi_set(::AbstractScalarSet) to convert the type into an MOI set.

    See also: moi_set.

    source

    AbstractShape

    AbstractVariable

    AbstractVariableRef

    JuMP.AbstractVariableRefType
    AbstractVariableRef

    Variable returned by add_variable. Affine (resp. quadratic) operations with variables of type V<:AbstractVariableRef and coefficients of type T create a GenericAffExpr{T,V} (resp. GenericQuadExpr{T,V}).

    source

    AbstractVectorSet

    JuMP.AbstractVectorSetType
    AbstractVectorSet

    An abstract type for defining new sets in JuMP.

    Implement moi_set(::AbstractVectorSet, dim::Int) to convert the type into an MOI set.

    See also: moi_set.

    source

    AffExpr

    BinaryRef

    JuMP.BinaryRefFunction
    BinaryRef(v::GenericVariableRef)

    Return a constraint reference to the constraint constraining v to be binary. Errors if one does not exist.

    See also is_binary, set_binary, unset_binary.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x, Bin);
     
     julia> BinaryRef(x)
    -x binary
    source

    BridgeableConstraint

    BridgeableConstraint

    JuMP.BridgeableConstraintType
    BridgeableConstraint(
         constraint::C,
         bridge_type::B;
         coefficient_type::Type{T} = Float64,
    @@ -1709,7 +1709,7 @@
     )
         constraint = ScalarConstraint(func, set)
         return BridgeableConstraint(constraint, CustomBridge)
    -end

    Note

    JuMP extensions should extend JuMP.build_constraint only if they also defined CustomSet, for three reasons:

    1. It is problematic if multiple extensions overload the same JuMP method.
    2. A missing method will not inform the users that they forgot to load the extension module defining the build_constraint method.
    3. Defining a method where neither the function nor any of the argument types are defined in the package is called type piracy and is discouraged in the Julia style guide.
    source

    ComplexPlane

    JuMP.ComplexPlaneType
    ComplexPlane

    Complex plane object that can be used to create a complex variable in the @variable macro.

    Example

    Consider the following example:

    julia> model = Model();
    +end

    Note

    JuMP extensions should extend JuMP.build_constraint only if they also defined CustomSet, for three reasons:

    1. It is problematic if multiple extensions overload the same JuMP method.
    2. A missing method will not inform the users that they forgot to load the extension module defining the build_constraint method.
    3. Defining a method where neither the function nor any of the argument types are defined in the package is called type piracy and is discouraged in the Julia style guide.
    source

    ComplexPlane

    JuMP.ComplexPlaneType
    ComplexPlane

    Complex plane object that can be used to create a complex variable in the @variable macro.

    Example

    Consider the following example:

    julia> model = Model();
     
     julia> @variable(model, x in ComplexPlane())
     real(x) + imag(x) im
    @@ -1717,23 +1717,23 @@
     julia> all_variables(model)
     2-element Vector{VariableRef}:
      real(x)
    - imag(x)

    We see in the output of the last command that two real variables were created. The Julia variable x binds to an affine expression in terms of these two variables that parametrize the complex plane.

    source

    ComplexVariable

    ConstraintNotOwned

    JuMP.ConstraintNotOwnedType
    struct ConstraintNotOwned{C <: ConstraintRef} <: Exception
    + imag(x)

    We see in the output of the last command that two real variables were created. The Julia variable x binds to an affine expression in terms of these two variables that parametrize the complex plane.

    source

    ComplexVariable

    ConstraintNotOwned

    JuMP.ConstraintNotOwnedType
    struct ConstraintNotOwned{C <: ConstraintRef} <: Exception
         constraint_ref::C
    -end

    The constraint constraint_ref was used in a model different to owner_model(constraint_ref).

    source

    ConstraintRef

    FixRef

    JuMP.FixRefFunction
    FixRef(v::GenericVariableRef)

    Return a constraint reference to the constraint fixing the value of v.

    Errors if one does not exist.

    See also is_fixed, fix_value, fix, unfix.

    Examples

    julia> model = Model();
    +end

    The constraint constraint_ref was used in a model different to owner_model(constraint_ref).

    source

    ConstraintRef

    FixRef

    JuMP.FixRefFunction
    FixRef(v::GenericVariableRef)

    Return a constraint reference to the constraint fixing the value of v.

    Errors if one does not exist.

    See also is_fixed, fix_value, fix, unfix.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x == 1);
     
     julia> FixRef(x)
    -x = 1
    source

    GenericAffExpr

    GenericAffExpr

    JuMP.GenericAffExprType
    mutable struct GenericAffExpr{CoefType,VarType} <: AbstractJuMPScalar
         constant::CoefType
         terms::OrderedDict{VarType,CoefType}
    -end

    An expression type representing an affine expression of the form: $\sum a_i x_i + c$.

    Fields

    • .constant: the constant c in the expression.
    • .terms: an OrderedDict, with keys of VarType and values of CoefType describing the sparse vector a.
    source

    GenericModel

    JuMP.GenericModelType
    GenericModel{T}(
    +end

    An expression type representing an affine expression of the form: $\sum a_i x_i + c$.

    Fields

    • .constant: the constant c in the expression.
    • .terms: an OrderedDict, with keys of VarType and values of CoefType describing the sparse vector a.
    source

    GenericModel

    JuMP.GenericModelType
    GenericModel{T}(
         [optimizer_factory;]
         add_bridges::Bool = true,
     ) where {T<:Real}

    Create a new instance of a JuMP model.

    If optimizer_factory is provided, the model is initialized with the optimizer returned by MOI.instantiate(optimizer_factory).

    If optimizer_factory is not provided, use set_optimizer to set the optimizer before calling optimize!.

    If add_bridges, JuMP adds a MOI.Bridges.LazyBridgeOptimizer to automatically reformulate the problem into a form supported by the optimizer.

    Value type T

    Passing a type other than Float64 as the value type T is an advanced operation. The value type must match that expected by the chosen optimizer. Consult the optimizers documentation for details.

    If not documented, assume that the optimizer supports only Float64.

    Choosing an unsupported value type will throw an MOI.UnsupportedConstraint or an MOI.UnsupportedAttribute error, the timing of which (during the model construction or during a call to optimize!) depends on how the solver is interfaced to JuMP.

    Example

    julia> model = GenericModel{BigFloat}();
     
     julia> typeof(model)
    -GenericModel{BigFloat}
    source

    GenericNonlinearExpr

    GenericNonlinearExpr

    JuMP.GenericNonlinearExprType
    GenericNonlinearExpr{V}(head::Symbol, args::Vector{Any})
     GenericNonlinearExpr{V}(head::Symbol, args::Any...)

    The scalar-valued nonlinear function head(args...), represented as a symbolic expression tree, with the call operator head and ordered arguments in args.

    V is the type of AbstractVariableRef present in the expression, and is used to help dispatch JuMP extensions.

    head

    The head::Symbol must be an operator supported by the model.

    The default list of supported univariate operators is given by:

    and the default list of supported multivariate operators is given by:

    Additional operators can be add using @operator.

    See the full list of operators supported by a MOI.ModelLike by querying the MOI.ListOfSupportedNonlinearOperators attribute.

    args

    The vector args contains the arguments to the nonlinear function. If the operator is univariate, it must contain one element. Otherwise, it may contain multiple elements.

    Given a subtype of AbstractVariableRef, V, for GenericNonlinearExpr{V}, each element must be one of the following:

    where T<:Real and T == value_type(V).

    Unsupported operators

    If the optimizer does not support head, an MOI.UnsupportedNonlinearOperator error will be thrown.

    There is no guarantee about when this error will be thrown; it may be thrown when the function is first added to the model, or it may be thrown when optimize! is called.

    Example

    To represent the function $f(x) = sin(x)^2$, do:

    julia> model = Model();
     
     julia> @variable(model, x)
    @@ -1747,15 +1747,15 @@
                GenericNonlinearExpr{VariableRef}(:sin, x),
                2.0,
            )
    -sin(x) ^ 2.0
    source

    GenericQuadExpr

    GenericQuadExpr

    JuMP.GenericQuadExprType
    mutable struct GenericQuadExpr{CoefType,VarType} <: AbstractJuMPScalar
         aff::GenericAffExpr{CoefType,VarType}
         terms::OrderedDict{UnorderedPair{VarType}, CoefType}
    -end

    An expression type representing an quadratic expression of the form: $\sum q_{i,j} x_i x_j + \sum a_i x_i + c$.

    Fields

    • .aff: an GenericAffExpr representing the affine portion of the expression.
    • .terms: an OrderedDict, with keys of UnorderedPair{VarType} and values of CoefType, describing the sparse list of terms q.
    source

    GenericReferenceMap

    JuMP.GenericReferenceMapType
    GenericReferenceMap{T}

    Mapping between variable and constraint reference of a model and its copy. The reference of the copied model can be obtained by indexing the map with the reference of the corresponding reference of the original model.

    source

    GenericVariableRef

    JuMP.GenericVariableRefType
    GenericVariableRef{T} <: AbstractVariableRef

    Holds a reference to the model and the corresponding MOI.VariableIndex.

    source

    HermitianMatrixShape

    HermitianMatrixSpace

    JuMP.HermitianMatrixSpaceType
    HermitianMatrixSpace()

    Use in the @variable macro to constrain a matrix of variables to be hermitian.

    Example

    julia> model = Model();
    +end

    An expression type representing an quadratic expression of the form: $\sum q_{i,j} x_i x_j + \sum a_i x_i + c$.

    Fields

    • .aff: an GenericAffExpr representing the affine portion of the expression.
    • .terms: an OrderedDict, with keys of UnorderedPair{VarType} and values of CoefType, describing the sparse list of terms q.
    source

    GenericReferenceMap

    JuMP.GenericReferenceMapType
    GenericReferenceMap{T}

    Mapping between variable and constraint reference of a model and its copy. The reference of the copied model can be obtained by indexing the map with the reference of the corresponding reference of the original model.

    source

    GenericVariableRef

    JuMP.GenericVariableRefType
    GenericVariableRef{T} <: AbstractVariableRef

    Holds a reference to the model and the corresponding MOI.VariableIndex.

    source

    HermitianMatrixShape

    HermitianMatrixSpace

    JuMP.HermitianMatrixSpaceType
    HermitianMatrixSpace()

    Use in the @variable macro to constrain a matrix of variables to be hermitian.

    Example

    julia> model = Model();
     
     julia> @variable(model, Q[1:2, 1:2] in HermitianMatrixSpace())
     2×2 LinearAlgebra.Hermitian{GenericAffExpr{ComplexF64, VariableRef}, Matrix{GenericAffExpr{ComplexF64, VariableRef}}}:
      real(Q[1,1])                    real(Q[1,2]) + imag(Q[1,2]) im
    - real(Q[1,2]) - imag(Q[1,2]) im  real(Q[2,2])
    source

    HermitianPSDCone

    JuMP.HermitianPSDConeType
    HermitianPSDCone

    Hermitian positive semidefinite cone object that can be used to create a Hermitian positive semidefinite square matrix in the @variable and @constraint macros.

    Example

    Consider the following example:

    julia> model = Model();
    + real(Q[1,2]) - imag(Q[1,2]) im  real(Q[2,2])
    source

    HermitianPSDCone

    JuMP.HermitianPSDConeType
    HermitianPSDCone

    Hermitian positive semidefinite cone object that can be used to create a Hermitian positive semidefinite square matrix in the @variable and @constraint macros.

    Example

    Consider the following example:

    julia> model = Model();
     
     julia> @variable(model, H[1:3, 1:3] in HermitianPSDCone())
     3×3 LinearAlgebra.Hermitian{GenericAffExpr{ComplexF64, VariableRef}, Matrix{GenericAffExpr{ComplexF64, VariableRef}}}:
    @@ -1777,17 +1777,17 @@
     
     julia> all_constraints(model, Vector{VariableRef}, MOI.HermitianPositiveSemidefiniteConeTriangle)
     1-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.VectorOfVariables, MathOptInterface.HermitianPositiveSemidefiniteConeTriangle}}}:
    - [real(H[1,1]), real(H[1,2]), real(H[2,2]), real(H[1,3]), real(H[2,3]), real(H[3,3]), imag(H[1,2]), imag(H[1,3]), imag(H[2,3])] ∈ MathOptInterface.HermitianPositiveSemidefiniteConeTriangle(3)

    We see in the output of the last commands that 9 real variables were created. The matrix H contrains affine expressions in terms of these 9 variables that parametrize a Hermitian matrix.

    source

    IntegerRef

    JuMP.IntegerRefFunction
    IntegerRef(v::GenericVariableRef)

    Return a constraint reference to the constraint constraining v to be integer.

    Errors if one does not exist.

    See also is_integer, set_integer, unset_integer.

    Examples

    julia> model = Model();
    + [real(H[1,1]), real(H[1,2]), real(H[2,2]), real(H[1,3]), real(H[2,3]), real(H[3,3]), imag(H[1,2]), imag(H[1,3]), imag(H[2,3])] ∈ MathOptInterface.HermitianPositiveSemidefiniteConeTriangle(3)

    We see in the output of the last commands that 9 real variables were created. The matrix H contrains affine expressions in terms of these 9 variables that parametrize a Hermitian matrix.

    source

    IntegerRef

    JuMP.IntegerRefFunction
    IntegerRef(v::GenericVariableRef)

    Return a constraint reference to the constraint constraining v to be integer.

    Errors if one does not exist.

    See also is_integer, set_integer, unset_integer.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x, Int);
     
     julia> IntegerRef(x)
    -x integer
    source

    LinearTermIterator

    JuMP.LinearTermIteratorType
    LinearTermIterator{GAE<:GenericAffExpr}

    A struct that implements the iterate protocol in order to iterate over tuples of (coefficient, variable) in the GenericAffExpr.

    source

    LowerBoundRef

    LinearTermIterator

    JuMP.LinearTermIteratorType
    LinearTermIterator{GAE<:GenericAffExpr}

    A struct that implements the iterate protocol in order to iterate over tuples of (coefficient, variable) in the GenericAffExpr.

    source

    LowerBoundRef

    Model

    JuMP.ModelType
    Model([optimizer_factory;] add_bridges::Bool = true)

    Create a new instance of a JuMP model.

    If optimizer_factory is provided, the model is initialized with thhe optimizer returned by MOI.instantiate(optimizer_factory).

    If optimizer_factory is not provided, use set_optimizer to set the optimizer before calling optimize!.

    If add_bridges, JuMP adds a MOI.Bridges.LazyBridgeOptimizer to automatically reformulate the problem into a form supported by the optimizer.

    Example

    julia> import Ipopt
    +x ≥ 1
    source

    Model

    JuMP.ModelType
    Model([optimizer_factory;] add_bridges::Bool = true)

    Create a new instance of a JuMP model.

    If optimizer_factory is provided, the model is initialized with thhe optimizer returned by MOI.instantiate(optimizer_factory).

    If optimizer_factory is not provided, use set_optimizer to set the optimizer before calling optimize!.

    If add_bridges, JuMP adds a MOI.Bridges.LazyBridgeOptimizer to automatically reformulate the problem into a form supported by the optimizer.

    Example

    julia> import Ipopt
     
     julia> model = Model(Ipopt.Optimizer);
     
    @@ -1798,11 +1798,11 @@
     
     julia> import MultiObjectiveAlgorithms as MOA
     
    -julia> model = Model(() -> MOA.Optimizer(HiGHS.Optimizer); add_bridges = false);
    source

    ModelMode

    JuMP.ModelModeType
    ModelMode

    An enum to describe the state of the CachingOptimizer inside a JuMP model.

    source

    NLPEvaluator

    JuMP.NLPEvaluatorFunction
    NLPEvaluator(
    +julia> model = Model(() -> MOA.Optimizer(HiGHS.Optimizer); add_bridges = false);
    source

    ModelMode

    JuMP.ModelModeType
    ModelMode

    An enum to describe the state of the CachingOptimizer inside a JuMP model.

    source

    NLPEvaluator

    JuMP.NLPEvaluatorFunction
    NLPEvaluator(
         model::Model,
         _differentiation_backend::MOI.Nonlinear.AbstractAutomaticDifferentiation =
             MOI.Nonlinear.SparseReverseMode(),
    -)

    Return an MOI.AbstractNLPEvaluator constructed from model

    Warning

    Before using, you must initialize the evaluator using MOI.initialize.

    Experimental

    These features may change or be removed in any future version of JuMP.

    Pass _differentiation_backend to specify the differentiation backend used to compute derivatives.

    source

    NoOptimizer

    NonlinearConstraintIndex

    NonlinearConstraintRef

    NonlinearExpr

    NonlinearExpression

    NonlinearOperator

    JuMP.NonlinearOperatorType
    NonlinearOperator(func::Function, head::Symbol)

    A callable struct (functor) representing a function named head.

    When called with AbstractJuMPScalars, the struct returns a GenericNonlinearExpr.

    When called with non-JuMP types, the struct returns the evaluation of func(args...).

    Unless head is special-cased by the optimizer, the operator must have already been added to the model using add_nonlinear_operator or @operator.

    Example

    julia> model = Model();
    +)

    Return an MOI.AbstractNLPEvaluator constructed from model

    Warning

    Before using, you must initialize the evaluator using MOI.initialize.

    Experimental

    These features may change or be removed in any future version of JuMP.

    Pass _differentiation_backend to specify the differentiation backend used to compute derivatives.

    source

    NoOptimizer

    NonlinearConstraintIndex

    NonlinearConstraintRef

    NonlinearExpr

    NonlinearExpression

    NonlinearOperator

    JuMP.NonlinearOperatorType
    NonlinearOperator(func::Function, head::Symbol)

    A callable struct (functor) representing a function named head.

    When called with AbstractJuMPScalars, the struct returns a GenericNonlinearExpr.

    When called with non-JuMP types, the struct returns the evaluation of func(args...).

    Unless head is special-cased by the optimizer, the operator must have already been added to the model using add_nonlinear_operator or @operator.

    Example

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -1826,7 +1826,7 @@
     op_f(x)
     
     julia> bar(2.0)
    -4.0
    source

    NonlinearParameter

    Nonnegatives

    JuMP.NonnegativesType
    Nonnegatives()

    The JuMP equivalent of the MOI.Nonnegatives set, in which the dimension is inferred from the corresponding function.

    Example

    julia> model = Model();
    +4.0
    source

    NonlinearParameter

    Nonnegatives

    JuMP.NonnegativesType
    Nonnegatives()

    The JuMP equivalent of the MOI.Nonnegatives set, in which the dimension is inferred from the corresponding function.

    Example

    julia> model = Model();
     
     julia> @variable(model, x[1:2])
     2-element Vector{VariableRef}:
    @@ -1841,7 +1841,7 @@
     julia> b = [5, 6];
     
     julia> @constraint(model, A * x >= b)
    -[x[1] + 2 x[2] - 5, 3 x[1] + 4 x[2] - 6] ∈ MathOptInterface.Nonnegatives(2)
    source

    Nonpositives

    JuMP.NonpositivesType
    Nonpositives()

    The JuMP equivalent of the MOI.Nonpositives set, in which the dimension is inferred from the corresponding function.

    Example

    julia> model = Model();
    +[x[1] + 2 x[2] - 5, 3 x[1] + 4 x[2] - 6] ∈ MathOptInterface.Nonnegatives(2)
    source

    Nonpositives

    JuMP.NonpositivesType
    Nonpositives()

    The JuMP equivalent of the MOI.Nonpositives set, in which the dimension is inferred from the corresponding function.

    Example

    julia> model = Model();
     
     julia> @variable(model, x[1:2])
     2-element Vector{VariableRef}:
    @@ -1856,7 +1856,7 @@
     julia> b = [5, 6];
     
     julia> @constraint(model, A * x <= b)
    -[x[1] + 2 x[2] - 5, 3 x[1] + 4 x[2] - 6] ∈ MathOptInterface.Nonpositives(2)
    source

    OptimizationSense

    OptimizeNotCalled

    PSDCone

    JuMP.PSDConeType
    PSDCone

    Positive semidefinite cone object that can be used to constrain a square matrix to be positive semidefinite in the @constraint macro. If the matrix has type Symmetric then the columns vectorization (the vector obtained by concatenating the columns) of its upper triangular part is constrained to belong to the MOI.PositiveSemidefiniteConeTriangle set, otherwise its column vectorization is constrained to belong to the MOI.PositiveSemidefiniteConeSquare set.

    Example

    Consider the following example:

    julia> model = Model();
    +[x[1] + 2 x[2] - 5, 3 x[1] + 4 x[2] - 6] ∈ MathOptInterface.Nonpositives(2)
    source

    OptimizationSense

    OptimizeNotCalled

    PSDCone

    JuMP.PSDConeType
    PSDCone

    Positive semidefinite cone object that can be used to constrain a square matrix to be positive semidefinite in the @constraint macro. If the matrix has type Symmetric then the columns vectorization (the vector obtained by concatenating the columns) of its upper triangular part is constrained to belong to the MOI.PositiveSemidefiniteConeTriangle set, otherwise its column vectorization is constrained to belong to the MOI.PositiveSemidefiniteConeSquare set.

    Example

    Consider the following example:

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -1892,7 +1892,7 @@
      x - 4
     
     julia> moi_set(constraint_object(cref))
    -MathOptInterface.PositiveSemidefiniteConeTriangle(2)

    As we see in the output of the last command, the vectorization of only the upper triangular part of the matrix is constrained to belong to the PositiveSemidefiniteConeSquare.

    source

    Parameter

    JuMP.ParameterType
    Parameter(value)

    A short-cut for the MOI.Parameter set.

    Example

    julia> model = Model();
    +MathOptInterface.PositiveSemidefiniteConeTriangle(2)

    As we see in the output of the last command, the vectorization of only the upper triangular part of the matrix is constrained to belong to the PositiveSemidefiniteConeSquare.

    source

    Parameter

    JuMP.ParameterType
    Parameter(value)

    A short-cut for the MOI.Parameter set.

    Example

    julia> model = Model();
     
     julia> @variable(model, x in Parameter(2))
     x
    @@ -1900,7 +1900,7 @@
     julia> print(model)
     Feasibility
     Subject to
    - x ∈ MathOptInterface.Parameter{Float64}(2.0)
    source

    ParameterRef

    ParameterRef

    JuMP.ParameterRefFunction
    ParameterRef(x::GenericVariableRef)

    Return a constraint reference to the constraint constraining x to be a parameter.

    Errors if one does not exist.

    See also is_parameter, set_parameter_value, parameter_value.

    Examples

    julia> model = Model();
     
     julia> @variable(model, p in Parameter(2))
     p
    @@ -1913,7 +1913,7 @@
     julia> ParameterRef(x)
     ERROR: Variable x is not a parameter.
     Stacktrace:
    -[...]
    source

    QuadExpr

    QuadTermIterator

    JuMP.QuadTermIteratorType
    QuadTermIterator{GQE<:GenericQuadExpr}

    A struct that implements the iterate protocol in order to iterate over tuples of (coefficient, variable, variable) in the GenericQuadExpr.

    source

    ReferenceMap

    JuMP.ReferenceMapType
    GenericReferenceMap{T}

    Mapping between variable and constraint reference of a model and its copy. The reference of the copied model can be obtained by indexing the map with the reference of the corresponding reference of the original model.

    source

    ResultStatusCode

    JuMP.ResultStatusCodeType
    ResultStatusCode

    An Enum of possible values for the PrimalStatus and DualStatus attributes.

    The values indicate how to interpret the result vector.

    Values

    Possible values are:

    • NO_SOLUTION: the result vector is empty.
    • FEASIBLE_POINT: the result vector is a feasible point.
    • NEARLY_FEASIBLE_POINT: the result vector is feasible if some constraint tolerances are relaxed.
    • INFEASIBLE_POINT: the result vector is an infeasible point.
    • INFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.
    • NEARLY_INFEASIBILITY_CERTIFICATE: the result satisfies a relaxed criterion for a certificate of infeasibility.
    • REDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.
    • NEARLY_REDUCTION_CERTIFICATE: the result satisfies a relaxed criterion for an ill-posed certificate.
    • UNKNOWN_RESULT_STATUS: the result vector contains a solution with an unknown interpretation.
    • OTHER_RESULT_STATUS: the result vector contains a solution with an interpretation not covered by one of the statuses defined above
    source

    RotatedSecondOrderCone

    JuMP.RotatedSecondOrderConeType
    RotatedSecondOrderCone

    Rotated second order cone object that can be used to constrain the square of the euclidean norm of a vector x to be less than or equal to $2tu$ where t and u are nonnegative scalars. This is a shortcut for the MOI.RotatedSecondOrderCone.

    Example

    The following constrains $\|(x-1, x-2)\|^2_2 \le 2tx$ and $t, x \ge 0$:

    julia> model = Model();
    +[...]
    source

    QuadExpr

    QuadTermIterator

    JuMP.QuadTermIteratorType
    QuadTermIterator{GQE<:GenericQuadExpr}

    A struct that implements the iterate protocol in order to iterate over tuples of (coefficient, variable, variable) in the GenericQuadExpr.

    source

    ReferenceMap

    JuMP.ReferenceMapType
    GenericReferenceMap{T}

    Mapping between variable and constraint reference of a model and its copy. The reference of the copied model can be obtained by indexing the map with the reference of the corresponding reference of the original model.

    source

    ResultStatusCode

    JuMP.ResultStatusCodeType
    ResultStatusCode

    An Enum of possible values for the PrimalStatus and DualStatus attributes.

    The values indicate how to interpret the result vector.

    Values

    Possible values are:

    • NO_SOLUTION: the result vector is empty.
    • FEASIBLE_POINT: the result vector is a feasible point.
    • NEARLY_FEASIBLE_POINT: the result vector is feasible if some constraint tolerances are relaxed.
    • INFEASIBLE_POINT: the result vector is an infeasible point.
    • INFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.
    • NEARLY_INFEASIBILITY_CERTIFICATE: the result satisfies a relaxed criterion for a certificate of infeasibility.
    • REDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.
    • NEARLY_REDUCTION_CERTIFICATE: the result satisfies a relaxed criterion for an ill-posed certificate.
    • UNKNOWN_RESULT_STATUS: the result vector contains a solution with an unknown interpretation.
    • OTHER_RESULT_STATUS: the result vector contains a solution with an interpretation not covered by one of the statuses defined above
    source

    RotatedSecondOrderCone

    JuMP.RotatedSecondOrderConeType
    RotatedSecondOrderCone

    Rotated second order cone object that can be used to constrain the square of the euclidean norm of a vector x to be less than or equal to $2tu$ where t and u are nonnegative scalars. This is a shortcut for the MOI.RotatedSecondOrderCone.

    Example

    The following constrains $\|(x-1, x-2)\|^2_2 \le 2tx$ and $t, x \ge 0$:

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -1922,7 +1922,7 @@
     t
     
     julia> @constraint(model, [t, x, x-1, x-2] in RotatedSecondOrderCone())
    -[t, x, x - 1, x - 2] ∈ MathOptInterface.RotatedSecondOrderCone(4)
    source

    SOS1

    JuMP.SOS1Type
    SOS1

    SOS1 (Special Ordered Sets type 1) object than can be used to constrain a vector x to a set where at most 1 variable can take a non-zero value, all others being at 0. The weights, when specified, induce an ordering of the variables; as such, they should be unique values. The kth element in the set corresponds to the kth weight in weights. See here for a description of SOS constraints and their potential uses. This is a shortcut for the MathOptInterface.SOS1 set.

    source

    SOS2

    JuMP.SOS2Type
    SOS2

    SOS1 (Special Ordered Sets type 2) object than can be used to constrain a vector x to a set where at most 2 variables can take a non-zero value, all others being at 0. In addition, if two are non-zero these must be consecutive in their ordering. The weights induce an ordering of the variables; as such, they should be unique values. The kth element in the set corresponds to the kth weight in weights. See here for a description of SOS constraints and their potential uses. This is a shortcut for the MathOptInterface.SOS2 set.

    source

    ScalarConstraint

    JuMP.ScalarConstraintType
    struct ScalarConstraint

    The data for a scalar constraint. The func field contains a JuMP object representing the function and the set field contains the MOI set. See also the documentation on JuMP's representation of constraints for more background.

    source

    ScalarShape

    ScalarVariable

    SecondOrderCone

    JuMP.SecondOrderConeType
    SecondOrderCone

    Second order cone object that can be used to constrain the euclidean norm of a vector x to be less than or equal to a nonnegative scalar t. This is a shortcut for the MOI.SecondOrderCone.

    Example

    The following constrains $\|(x-1, x-2)\|_2 \le t$ and $t \ge 0$:

    julia> model = Model();
    +[t, x, x - 1, x - 2] ∈ MathOptInterface.RotatedSecondOrderCone(4)
    source

    SOS1

    JuMP.SOS1Type
    SOS1(weights = Real[])

    The SOS1 (Special Ordered Set of Type 1) set constrains a vector x to the set where at most one variable can take a non-zero value, and all other elements are zero.

    The weights vector, if specified, induces an ordering of the variables; as such, it should contain unique values. The weights vector must have the same number of elements as the vector x, and the element weights[i] corresponds to element x[i]. If not provided, the weights vector defaults to weights[i] = i.

    This is a shortcut for the MOI.SOS1 set.

    source

    SOS2

    JuMP.SOS2Type
    SOS2(weights = Real[])

    The SOS2 (Special Ordered Set of Type 2) set constrains a vector x to the set where at most two variables can take a non-zero value, and all other elements are zero. In addition, the two non-zero values must be consecutive given the ordering of the x vector induced by weights.

    The weights vector, if specified, induces an ordering of the variables; as such, it must contain unique values. The weights vector must have the same number of elements as the vector x, and the element weights[i] corresponds to element x[i]. If not provided, the weights vector defaults to weights[i] = i.

    This is a shortcut for the MOI.SOS2 set.

    source

    ScalarConstraint

    JuMP.ScalarConstraintType
    struct ScalarConstraint

    The data for a scalar constraint. The func field contains a JuMP object representing the function and the set field contains the MOI set. See also the documentation on JuMP's representation of constraints for more background.

    source

    ScalarShape

    ScalarVariable

    SecondOrderCone

    JuMP.SecondOrderConeType
    SecondOrderCone

    Second order cone object that can be used to constrain the euclidean norm of a vector x to be less than or equal to a nonnegative scalar t. This is a shortcut for the MOI.SecondOrderCone.

    Example

    The following constrains $\|(x-1, x-2)\|_2 \le t$ and $t \ge 0$:

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -1931,7 +1931,7 @@
     t
     
     julia> @constraint(model, [t, x-1, x-2] in SecondOrderCone())
    -[t, x - 1, x - 2] ∈ MathOptInterface.SecondOrderCone(3)
    source

    Semicontinuous

    JuMP.SemicontinuousType
    Semicontinuous(lower, upper)

    A short-cut for the MOI.Semicontinuous set.

    This short-cut is useful because it automatically promotes lower and upper to the same type, and converts them into the element type supported by the JuMP model.

    Example

    julia> model = Model();
    +[t, x - 1, x - 2] ∈ MathOptInterface.SecondOrderCone(3)
    source

    Semicontinuous

    JuMP.SemicontinuousType
    Semicontinuous(lower, upper)

    A short-cut for the MOI.Semicontinuous set.

    This short-cut is useful because it automatically promotes lower and upper to the same type, and converts them into the element type supported by the JuMP model.

    Example

    julia> model = Model();
     
     julia> @variable(model, x in Semicontinuous(1, 2))
     x
    @@ -1939,7 +1939,7 @@
     julia> print(model)
     Feasibility
     Subject to
    - x ∈ MathOptInterface.Semicontinuous{Int64}(1, 2)
    source

    Semiinteger

    JuMP.SemiintegerType
    Semiinteger(lower, upper)

    A short-cut for the MOI.Semiinteger set.

    This short-cut is useful because it automatically promotes lower and upper to the same type, and converts them into the element type supported by the JuMP model.

    Example

    julia> model = Model();
    + x ∈ MathOptInterface.Semicontinuous{Int64}(1, 2)
    source

    Semiinteger

    JuMP.SemiintegerType
    Semiinteger(lower, upper)

    A short-cut for the MOI.Semiinteger set.

    This short-cut is useful because it automatically promotes lower and upper to the same type, and converts them into the element type supported by the JuMP model.

    Example

    julia> model = Model();
     
     julia> @variable(model, x in Semiinteger(3, 5))
     x
    @@ -1947,12 +1947,12 @@
     julia> print(model)
     Feasibility
     Subject to
    - x ∈ MathOptInterface.Semiinteger{Int64}(3, 5)
    source

    SensitivityReport

    SkewSymmetricMatrixShape

    JuMP.SkewSymmetricMatrixShapeType
    SkewSymmetricMatrixShape

    Shape object for a skew symmetric square matrix of side_dimension rows and columns. The vectorized form contains the entries of the upper-right triangular part of the matrix (without the diagonal) given column by column (or equivalently, the entries of the lower-left triangular part given row by row). The diagonal is zero.

    source

    SkewSymmetricMatrixSpace

    JuMP.SkewSymmetricMatrixSpaceType
    SkewSymmetricMatrixSpace()

    Use in the @variable macro to constrain a matrix of variables to be skew-symmetric.

    Example

    julia> model = Model();
    + x ∈ MathOptInterface.Semiinteger{Int64}(3, 5)
    source

    SensitivityReport

    SkewSymmetricMatrixShape

    JuMP.SkewSymmetricMatrixShapeType
    SkewSymmetricMatrixShape

    Shape object for a skew symmetric square matrix of side_dimension rows and columns. The vectorized form contains the entries of the upper-right triangular part of the matrix (without the diagonal) given column by column (or equivalently, the entries of the lower-left triangular part given row by row). The diagonal is zero.

    source

    SkewSymmetricMatrixSpace

    JuMP.SkewSymmetricMatrixSpaceType
    SkewSymmetricMatrixSpace()

    Use in the @variable macro to constrain a matrix of variables to be skew-symmetric.

    Example

    julia> model = Model();
     
     julia> @variable(model, Q[1:2, 1:2] in SkewSymmetricMatrixSpace())
     2×2 Matrix{AffExpr}:
      0        Q[1,2]
    - -Q[1,2]  0
    source

    SkipModelConvertScalarSetWrapper

    SkipModelConvertScalarSetWrapper

    JuMP.SkipModelConvertScalarSetWrapperType
    SkipModelConvertScalarSetWrapper(set::MOI.AbstractScalarSet)

    JuMP uses model_convert to automatically promote MOI.AbstractScalarSet sets to the same value_type as the model.

    In cases there this is undesirable, wrap the set in SkipModelConvertScalarSetWrapper to pass the set un-changed to the solver.

    Examples

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -1960,17 +1960,17 @@
     x = 0.5
     
     julia> @constraint(model, x in SkipModelConvertScalarSetWrapper(MOI.EqualTo(1 // 2)))
    -x = 1//2
    source

    SquareMatrixShape

    JuMP.SquareMatrixShapeType
    SquareMatrixShape

    Shape object for a square matrix of side_dimension rows and columns. The vectorized form contains the entries of the the matrix given column by column (or equivalently, the entries of the lower-left triangular part given row by row).

    source

    SymmetricMatrixShape

    JuMP.SymmetricMatrixShapeType
    SymmetricMatrixShape

    Shape object for a symmetric square matrix of side_dimension rows and columns. The vectorized form contains the entries of the upper-right triangular part of the matrix given column by column (or equivalently, the entries of the lower-left triangular part given row by row).

    source

    SymmetricMatrixSpace

    SquareMatrixShape

    JuMP.SquareMatrixShapeType
    SquareMatrixShape

    Shape object for a square matrix of side_dimension rows and columns. The vectorized form contains the entries of the the matrix given column by column (or equivalently, the entries of the lower-left triangular part given row by row).

    source

    SymmetricMatrixShape

    JuMP.SymmetricMatrixShapeType
    SymmetricMatrixShape

    Shape object for a symmetric square matrix of side_dimension rows and columns. The vectorized form contains the entries of the upper-right triangular part of the matrix given column by column (or equivalently, the entries of the lower-left triangular part given row by row).

    source

    SymmetricMatrixSpace

    JuMP.SymmetricMatrixSpaceType
    SymmetricMatrixSpace()

    Use in the @variable macro to constrain a matrix of variables to be symmetric.

    Example

    julia> model = Model();
     
     julia> @variable(model, Q[1:2, 1:2] in SymmetricMatrixSpace())
     2×2 LinearAlgebra.Symmetric{VariableRef, Matrix{VariableRef}}:
      Q[1,1]  Q[1,2]
    - Q[1,2]  Q[2,2]
    source

    TerminationStatusCode

    JuMP.TerminationStatusCodeType
    TerminationStatusCode

    An Enum of possible values for the TerminationStatus attribute. This attribute is meant to explain the reason why the optimizer stopped executing in the most recent call to optimize!.

    Values

    Possible values are:

    • OPTIMIZE_NOT_CALLED: The algorithm has not started.
    • OPTIMAL: The algorithm found a globally optimal solution.
    • INFEASIBLE: The algorithm concluded that no feasible solution exists.
    • DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.
    • LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.
    • LOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.
    • INFEASIBLE_OR_UNBOUNDED: The algorithm stopped because it decided that the problem is infeasible or unbounded; this occasionally happens during MIP presolve.
    • ALMOST_OPTIMAL: The algorithm found a globally optimal solution to relaxed tolerances.
    • ALMOST_INFEASIBLE: The algorithm concluded that no feasible solution exists within relaxed tolerances.
    • ALMOST_DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem within relaxed tolerances.
    • ALMOST_LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, or could not find directions for improvement within relaxed tolerances.
    • ITERATION_LIMIT: An iterative algorithm stopped after conducting the maximum number of iterations.
    • TIME_LIMIT: The algorithm stopped after a user-specified computation time.
    • NODE_LIMIT: A branch-and-bound algorithm stopped because it explored a maximum number of nodes in the branch-and-bound tree.
    • SOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.
    • MEMORY_LIMIT: The algorithm stopped because it ran out of memory.
    • OBJECTIVE_LIMIT: The algorithm stopped because it found a solution better than a minimum limit set by the user.
    • NORM_LIMIT: The algorithm stopped because the norm of an iterate became too large.
    • OTHER_LIMIT: The algorithm stopped due to a limit not covered by one of the _LIMIT_ statuses above.
    • SLOW_PROGRESS: The algorithm stopped because it was unable to continue making progress towards the solution.
    • NUMERICAL_ERROR: The algorithm stopped because it encountered unrecoverable numerical error.
    • INVALID_MODEL: The algorithm stopped because the model is invalid.
    • INVALID_OPTION: The algorithm stopped because it was provided an invalid option.
    • INTERRUPTED: The algorithm stopped because of an interrupt signal.
    • OTHER_ERROR: The algorithm stopped because of an error not covered by one of the statuses defined above.
    source

    UnorderedPair

    UpperBoundRef

    TerminationStatusCode

    JuMP.TerminationStatusCodeType
    TerminationStatusCode

    An Enum of possible values for the TerminationStatus attribute. This attribute is meant to explain the reason why the optimizer stopped executing in the most recent call to optimize!.

    Values

    Possible values are:

    • OPTIMIZE_NOT_CALLED: The algorithm has not started.
    • OPTIMAL: The algorithm found a globally optimal solution.
    • INFEASIBLE: The algorithm concluded that no feasible solution exists.
    • DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.
    • LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.
    • LOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.
    • INFEASIBLE_OR_UNBOUNDED: The algorithm stopped because it decided that the problem is infeasible or unbounded; this occasionally happens during MIP presolve.
    • ALMOST_OPTIMAL: The algorithm found a globally optimal solution to relaxed tolerances.
    • ALMOST_INFEASIBLE: The algorithm concluded that no feasible solution exists within relaxed tolerances.
    • ALMOST_DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem within relaxed tolerances.
    • ALMOST_LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, or could not find directions for improvement within relaxed tolerances.
    • ITERATION_LIMIT: An iterative algorithm stopped after conducting the maximum number of iterations.
    • TIME_LIMIT: The algorithm stopped after a user-specified computation time.
    • NODE_LIMIT: A branch-and-bound algorithm stopped because it explored a maximum number of nodes in the branch-and-bound tree.
    • SOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.
    • MEMORY_LIMIT: The algorithm stopped because it ran out of memory.
    • OBJECTIVE_LIMIT: The algorithm stopped because it found a solution better than a minimum limit set by the user.
    • NORM_LIMIT: The algorithm stopped because the norm of an iterate became too large.
    • OTHER_LIMIT: The algorithm stopped due to a limit not covered by one of the _LIMIT_ statuses above.
    • SLOW_PROGRESS: The algorithm stopped because it was unable to continue making progress towards the solution.
    • NUMERICAL_ERROR: The algorithm stopped because it encountered unrecoverable numerical error.
    • INVALID_MODEL: The algorithm stopped because the model is invalid.
    • INVALID_OPTION: The algorithm stopped because it was provided an invalid option.
    • INTERRUPTED: The algorithm stopped because of an interrupt signal.
    • OTHER_ERROR: The algorithm stopped because of an error not covered by one of the statuses defined above.
    source

    UnorderedPair

    UpperBoundRef

    VariableConstrainedOnCreation

    JuMP.VariableConstrainedOnCreationType
    VariableConstrainedOnCreation <: AbstractVariable

    Variable scalar_variables constrained to belong to set.

    Adding this variable can be understood as doing:

    function JuMP.add_variable(
    +x ≤ 1
    source

    VariableConstrainedOnCreation

    JuMP.VariableConstrainedOnCreationType
    VariableConstrainedOnCreation <: AbstractVariable

    Variable scalar_variables constrained to belong to set.

    Adding this variable can be understood as doing:

    function JuMP.add_variable(
         model::GenericModel,
         variable::VariableConstrainedOnCreation,
         names,
    @@ -1978,9 +1978,9 @@
         var_ref = add_variable(model, variable.scalar_variable, name)
         add_constraint(model, VectorConstraint(var_ref, variable.set))
         return var_ref
    -end

    but adds the variables with MOI.add_constrained_variable(model, variable.set) instead. See the MOI documentation for the difference between adding the variables with MOI.add_constrained_variable and adding them with MOI.add_variable and adding the constraint separately.

    source

    VariableInfo

    JuMP.VariableInfoType
    VariableInfo{S,T,U,V}

    A struct by JuMP internally when creating variables. This may also be used by JuMP extensions to create new types of variables.

    See also: ScalarVariable.

    source

    VariableNotOwned

    JuMP.VariableNotOwnedType
    struct VariableNotOwned{V<:AbstractVariableRef} <: Exception
    +end

    but adds the variables with MOI.add_constrained_variable(model, variable.set) instead. See the MOI documentation for the difference between adding the variables with MOI.add_constrained_variable and adding them with MOI.add_variable and adding the constraint separately.

    source

    VariableInfo

    JuMP.VariableInfoType
    VariableInfo{S,T,U,V}

    A struct by JuMP internally when creating variables. This may also be used by JuMP extensions to create new types of variables.

    See also: ScalarVariable.

    source

    VariableNotOwned

    JuMP.VariableNotOwnedType
    struct VariableNotOwned{V<:AbstractVariableRef} <: Exception
         variable::V
    -end

    The variable variable was used in a model different to owner_model(variable).

    source

    VariableRef

    JuMP.VariableRefType
    GenericVariableRef{T} <: AbstractVariableRef

    Holds a reference to the model and the corresponding MOI.VariableIndex.

    source

    VariablesConstrainedOnCreation

    JuMP.VariablesConstrainedOnCreationType
    VariablesConstrainedOnCreation <: AbstractVariable

    Vector of variables scalar_variables constrained to belong to set. Adding this variable can be thought as doing:

    function JuMP.add_variable(
    +end

    The variable variable was used in a model different to owner_model(variable).

    source

    VariableRef

    JuMP.VariableRefType
    GenericVariableRef{T} <: AbstractVariableRef

    Holds a reference to the model and the corresponding MOI.VariableIndex.

    source

    VariablesConstrainedOnCreation

    JuMP.VariablesConstrainedOnCreationType
    VariablesConstrainedOnCreation <: AbstractVariable

    Vector of variables scalar_variables constrained to belong to set. Adding this variable can be thought as doing:

    function JuMP.add_variable(
         model::GenericModel,
         variable::VariablesConstrainedOnCreation,
         names,
    @@ -1989,7 +1989,7 @@
         var_refs = add_variable.(model, variable.scalar_variables, v_names)
         add_constraint(model, VectorConstraint(var_refs, variable.set))
         return reshape_vector(var_refs, variable.shape)
    -end

    but adds the variables with MOI.add_constrained_variables(model, variable.set) instead. See the MOI documentation for the difference between adding the variables with MOI.add_constrained_variables and adding them with MOI.add_variables and adding the constraint separately.

    source

    VectorConstraint

    JuMP.VectorConstraintType
    struct VectorConstraint

    The data for a vector constraint. The func field contains a JuMP object representing the function and the set field contains the MOI set. The shape field contains an AbstractShape matching the form in which the constraint was constructed (e.g., by using matrices or flat vectors). See also the documentation on JuMP's representation of constraints.

    source

    VectorShape

    JuMP.VectorShapeType
    VectorShape

    Vector for which the vectorized form corresponds exactly to the vector given.

    source

    Zeros

    JuMP.ZerosType
    Zeros()

    The JuMP equivalent of the MOI.Zeros set, in which the dimension is inferred from the corresponding function.

    Example

    julia> model = Model();
    +end

    but adds the variables with MOI.add_constrained_variables(model, variable.set) instead. See the MOI documentation for the difference between adding the variables with MOI.add_constrained_variables and adding them with MOI.add_variables and adding the constraint separately.

    source

    VectorConstraint

    JuMP.VectorConstraintType
    struct VectorConstraint

    The data for a vector constraint. The func field contains a JuMP object representing the function and the set field contains the MOI set. The shape field contains an AbstractShape matching the form in which the constraint was constructed (e.g., by using matrices or flat vectors). See also the documentation on JuMP's representation of constraints.

    source

    VectorShape

    JuMP.VectorShapeType
    VectorShape

    Vector for which the vectorized form corresponds exactly to the vector given.

    source

    Zeros

    JuMP.ZerosType
    Zeros()

    The JuMP equivalent of the MOI.Zeros set, in which the dimension is inferred from the corresponding function.

    Example

    julia> model = Model();
     
     julia> @variable(model, x[1:2])
     2-element Vector{VariableRef}:
    @@ -2004,7 +2004,7 @@
     julia> b = [5, 6];
     
     julia> @constraint(model, A * x == b)
    -[x[1] + 2 x[2] - 5, 3 x[1] + 4 x[2] - 6] ∈ MathOptInterface.Zeros(2)
    source

    ALMOST_DUAL_INFEASIBLE

    ALMOST_INFEASIBLE

    ALMOST_LOCALLY_SOLVED

    JuMP.ALMOST_LOCALLY_SOLVEDConstant
    ALMOST_LOCALLY_SOLVED::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    ALMOST_LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, or could not find directions for improvement within relaxed tolerances.

    source

    ALMOST_OPTIMAL

    AUTOMATIC

    DIRECT

    JuMP.DIRECTConstant

    moi_backend field holds an AbstractOptimizer. No extra copy of the model is stored. The moi_backend must support add_constraint etc.

    source

    DUAL_INFEASIBLE

    JuMP.DUAL_INFEASIBLEConstant
    DUAL_INFEASIBLE::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.

    source

    FEASIBILITY_SENSE

    FEASIBLE_POINT

    INFEASIBILITY_CERTIFICATE

    JuMP.INFEASIBILITY_CERTIFICATEConstant
    INFEASIBILITY_CERTIFICATE::ResultStatusCode

    An instance of the ResultStatusCode enum.

    INFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.

    source

    INFEASIBLE

    INFEASIBLE_OR_UNBOUNDED

    JuMP.INFEASIBLE_OR_UNBOUNDEDConstant
    INFEASIBLE_OR_UNBOUNDED::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    INFEASIBLE_OR_UNBOUNDED: The algorithm stopped because it decided that the problem is infeasible or unbounded; this occasionally happens during MIP presolve.

    source

    INFEASIBLE_POINT

    INTERRUPTED

    INVALID_MODEL

    INVALID_OPTION

    ITERATION_LIMIT

    LOCALLY_INFEASIBLE

    JuMP.LOCALLY_INFEASIBLEConstant
    LOCALLY_INFEASIBLE::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    LOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.

    source

    LOCALLY_SOLVED

    JuMP.LOCALLY_SOLVEDConstant
    LOCALLY_SOLVED::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.

    source

    MANUAL

    JuMP.MANUALConstant

    moi_backend field holds a CachingOptimizer in MANUAL mode.

    source

    MAX_SENSE

    MEMORY_LIMIT

    MIN_SENSE

    NEARLY_FEASIBLE_POINT

    NEARLY_INFEASIBILITY_CERTIFICATE

    NEARLY_REDUCTION_CERTIFICATE

    NODE_LIMIT

    JuMP.NODE_LIMITConstant
    NODE_LIMIT::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    NODE_LIMIT: A branch-and-bound algorithm stopped because it explored a maximum number of nodes in the branch-and-bound tree.

    source

    NORM_LIMIT

    NO_SOLUTION

    NUMERICAL_ERROR

    OBJECTIVE_LIMIT

    OPTIMAL

    OPTIMIZE_NOT_CALLED

    OTHER_ERROR

    JuMP.OTHER_ERRORConstant
    OTHER_ERROR::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    OTHER_ERROR: The algorithm stopped because of an error not covered by one of the statuses defined above.

    source

    OTHER_LIMIT

    OTHER_RESULT_STATUS

    JuMP.OTHER_RESULT_STATUSConstant
    OTHER_RESULT_STATUS::ResultStatusCode

    An instance of the ResultStatusCode enum.

    OTHER_RESULT_STATUS: the result vector contains a solution with an interpretation not covered by one of the statuses defined above

    source

    REDUCTION_CERTIFICATE

    JuMP.REDUCTION_CERTIFICATEConstant
    REDUCTION_CERTIFICATE::ResultStatusCode

    An instance of the ResultStatusCode enum.

    REDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.

    source

    SLOW_PROGRESS

    JuMP.SLOW_PROGRESSConstant
    SLOW_PROGRESS::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    SLOW_PROGRESS: The algorithm stopped because it was unable to continue making progress towards the solution.

    source

    SOLUTION_LIMIT

    JuMP.SOLUTION_LIMITConstant
    SOLUTION_LIMIT::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    SOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.

    source

    TIME_LIMIT

    UNKNOWN_RESULT_STATUS

    op_and

    JuMP.op_andConstant
    op_and(x, y)

    A function that falls back to x & y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
    +[x[1] + 2 x[2] - 5, 3 x[1] + 4 x[2] - 6] ∈ MathOptInterface.Zeros(2)
    source

    ALMOST_DUAL_INFEASIBLE

    ALMOST_INFEASIBLE

    ALMOST_LOCALLY_SOLVED

    JuMP.ALMOST_LOCALLY_SOLVEDConstant
    ALMOST_LOCALLY_SOLVED::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    ALMOST_LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, or could not find directions for improvement within relaxed tolerances.

    source

    ALMOST_OPTIMAL

    AUTOMATIC

    DIRECT

    JuMP.DIRECTConstant

    moi_backend field holds an AbstractOptimizer. No extra copy of the model is stored. The moi_backend must support add_constraint etc.

    source

    DUAL_INFEASIBLE

    JuMP.DUAL_INFEASIBLEConstant
    DUAL_INFEASIBLE::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.

    source

    FEASIBILITY_SENSE

    FEASIBLE_POINT

    INFEASIBILITY_CERTIFICATE

    JuMP.INFEASIBILITY_CERTIFICATEConstant
    INFEASIBILITY_CERTIFICATE::ResultStatusCode

    An instance of the ResultStatusCode enum.

    INFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.

    source

    INFEASIBLE

    INFEASIBLE_OR_UNBOUNDED

    JuMP.INFEASIBLE_OR_UNBOUNDEDConstant
    INFEASIBLE_OR_UNBOUNDED::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    INFEASIBLE_OR_UNBOUNDED: The algorithm stopped because it decided that the problem is infeasible or unbounded; this occasionally happens during MIP presolve.

    source

    INFEASIBLE_POINT

    INTERRUPTED

    INVALID_MODEL

    INVALID_OPTION

    ITERATION_LIMIT

    LOCALLY_INFEASIBLE

    JuMP.LOCALLY_INFEASIBLEConstant
    LOCALLY_INFEASIBLE::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    LOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.

    source

    LOCALLY_SOLVED

    JuMP.LOCALLY_SOLVEDConstant
    LOCALLY_SOLVED::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.

    source

    MANUAL

    JuMP.MANUALConstant

    moi_backend field holds a CachingOptimizer in MANUAL mode.

    source

    MAX_SENSE

    MEMORY_LIMIT

    MIN_SENSE

    NEARLY_FEASIBLE_POINT

    NEARLY_INFEASIBILITY_CERTIFICATE

    NEARLY_REDUCTION_CERTIFICATE

    NODE_LIMIT

    JuMP.NODE_LIMITConstant
    NODE_LIMIT::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    NODE_LIMIT: A branch-and-bound algorithm stopped because it explored a maximum number of nodes in the branch-and-bound tree.

    source

    NORM_LIMIT

    NO_SOLUTION

    NUMERICAL_ERROR

    OBJECTIVE_LIMIT

    OPTIMAL

    OPTIMIZE_NOT_CALLED

    OTHER_ERROR

    JuMP.OTHER_ERRORConstant
    OTHER_ERROR::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    OTHER_ERROR: The algorithm stopped because of an error not covered by one of the statuses defined above.

    source

    OTHER_LIMIT

    OTHER_RESULT_STATUS

    JuMP.OTHER_RESULT_STATUSConstant
    OTHER_RESULT_STATUS::ResultStatusCode

    An instance of the ResultStatusCode enum.

    OTHER_RESULT_STATUS: the result vector contains a solution with an interpretation not covered by one of the statuses defined above

    source

    REDUCTION_CERTIFICATE

    JuMP.REDUCTION_CERTIFICATEConstant
    REDUCTION_CERTIFICATE::ResultStatusCode

    An instance of the ResultStatusCode enum.

    REDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.

    source

    SLOW_PROGRESS

    JuMP.SLOW_PROGRESSConstant
    SLOW_PROGRESS::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    SLOW_PROGRESS: The algorithm stopped because it was unable to continue making progress towards the solution.

    source

    SOLUTION_LIMIT

    JuMP.SOLUTION_LIMITConstant
    SOLUTION_LIMIT::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    SOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.

    source

    TIME_LIMIT

    UNKNOWN_RESULT_STATUS

    op_and

    JuMP.op_andConstant
    op_and(x, y)

    A function that falls back to x & y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -2012,7 +2012,7 @@
     false
     
     julia> op_and(true, x)
    -true && x
    source

    op_equal_to

    JuMP.op_equal_toConstant
    op_equal_to(x, y)

    A function that falls back to x == y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
    +true && x
    source

    op_equal_to

    JuMP.op_equal_toConstant
    op_equal_to(x, y)

    A function that falls back to x == y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -2020,7 +2020,7 @@
     true
     
     julia> op_equal_to(x, 2)
    -x == 2
    source

    op_greater_than_or_equal_to

    op_greater_than_or_equal_to

    JuMP.op_greater_than_or_equal_toConstant
    op_greater_than_or_equal_to(x, y)

    A function that falls back to x >= y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -2028,7 +2028,7 @@
     true
     
     julia> op_greater_than_or_equal_to(x, 2)
    -x >= 2
    source

    op_less_than_or_equal_to

    op_less_than_or_equal_to

    JuMP.op_less_than_or_equal_toConstant
    op_less_than_or_equal_to(x, y)

    A function that falls back to x <= y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -2036,7 +2036,7 @@
     true
     
     julia> op_less_than_or_equal_to(x, 2)
    -x <= 2
    source

    op_or

    JuMP.op_orConstant
    op_or(x, y)

    A function that falls back to x | y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
    +x <= 2
    source

    op_or

    JuMP.op_orConstant
    op_or(x, y)

    A function that falls back to x | y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -2044,7 +2044,7 @@
     true
     
     julia> op_or(true, x)
    -true || x
    source

    op_strictly_greater_than

    op_strictly_greater_than

    JuMP.op_strictly_greater_thanConstant
    op_strictly_greater_than(x, y)

    A function that falls back to x > y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -2052,7 +2052,7 @@
     false
     
     julia> op_strictly_greater_than(x, 2)
    -x > 2
    source

    op_strictly_less_than

    op_strictly_less_than

    JuMP.op_strictly_less_thanConstant
    op_strictly_less_than(x, y)

    A function that falls back to x < y, but when called with JuMP variables or expressions, returns a GenericNonlinearExpr.

    Example

    julia> model = Model();
     
     julia> @variable(model, x);
     
    @@ -2060,7 +2060,7 @@
     true
     
     julia> op_strictly_less_than(x, 2)
    -x < 2
    source

    Base.empty!(::GenericModel)

    Base.empty!Method
    empty!(model::GenericModel)::GenericModel

    Empty the model, that is, remove all variables, constraints and model attributes but not optimizer attributes. Always return the argument.

    Note: removes extensions data.

    source

    Base.isempty(::GenericModel)

    Base.isemptyMethod
    isempty(model::GenericModel)

    Verifies whether the model is empty, that is, whether the MOI backend is empty and whether the model is in the same state as at its creation apart from optimizer attributes.

    source

    Base.copy(::AbstractModel)

    Base.copyMethod
    copy(model::AbstractModel)

    Return a copy of the model model. It is similar to copy_model except that it does not return the mapping between the references of model and its copy.

    Note

    Model copy is not supported in DIRECT mode, i.e. when a model is constructed using the direct_model constructor instead of the Model constructor. Moreover, independently on whether an optimizer was provided at model construction, the new model will have no optimizer, i.e., an optimizer will have to be provided to the new model in the optimize! call.

    Example

    In the following example, a model model is constructed with a variable x and a constraint cref. It is then copied into a model new_model with the new references assigned to x_new and cref_new.

    julia> model = Model();
    +x < 2
    source

    Base.empty!(::GenericModel)

    Base.empty!Method
    empty!(model::GenericModel)::GenericModel

    Empty the model, that is, remove all variables, constraints and model attributes but not optimizer attributes. Always return the argument.

    Note: removes extensions data.

    source

    Base.isempty(::GenericModel)

    Base.isemptyMethod
    isempty(model::GenericModel)

    Verifies whether the model is empty, that is, whether the MOI backend is empty and whether the model is in the same state as at its creation apart from optimizer attributes.

    source

    Base.copy(::AbstractModel)

    Base.copyMethod
    copy(model::AbstractModel)

    Return a copy of the model model. It is similar to copy_model except that it does not return the mapping between the references of model and its copy.

    Note

    Model copy is not supported in DIRECT mode, i.e. when a model is constructed using the direct_model constructor instead of the Model constructor. Moreover, independently on whether an optimizer was provided at model construction, the new model will have no optimizer, i.e., an optimizer will have to be provided to the new model in the optimize! call.

    Example

    In the following example, a model model is constructed with a variable x and a constraint cref. It is then copied into a model new_model with the new references assigned to x_new and cref_new.

    julia> model = Model();
     
     julia> @variable(model, x)
     x
    @@ -2074,9 +2074,9 @@
     x
     
     julia> cref_new = model[:cref]
    -cref : x = 2
    source

    Base.write(::IO, ::GenericModel; ::MOI.FileFormats.FileFormat)

    Base.write(::IO, ::GenericModel; ::MOI.FileFormats.FileFormat)

    Base.writeMethod
    Base.write(
         io::IO,
         model::GenericModel;
         format::MOI.FileFormats.FileFormat = MOI.FileFormats.FORMAT_MOF,
         kwargs...,
    -)

    Write the JuMP model model to io in the format format.

    Other kwargs are passed to the Model constructor of the chosen format.

    source

    MOI.Utilities.reset_optimizer(::GenericModel)

    MOI.Utilities.drop_optimizer(::GenericModel)

    MOI.Utilities.attach_optimizer(::GenericModel)

    +)

    Write the JuMP model model to io in the format format.

    Other kwargs are passed to the Model constructor of the chosen format.

    source

    MOI.Utilities.reset_optimizer(::GenericModel)

    MOI.Utilities.drop_optimizer(::GenericModel)

    MOI.Utilities.attach_optimizer(::GenericModel)

    diff --git a/previews/PR3561/background/algebraic_modeling_languages/index.html b/previews/PR3561/background/algebraic_modeling_languages/index.html index 7cafa9ab86e..7ea255bec6e 100644 --- a/previews/PR3561/background/algebraic_modeling_languages/index.html +++ b/previews/PR3561/background/algebraic_modeling_languages/index.html @@ -126,4 +126,4 @@ julia> highs_knapsack([1.0, 2.0], [0.5, 0.5], 1.25) 2-element Vector{Float64}: 0.0 - 2.0

    We've now gone from a algebraic model that looked identical to the mathematical model we started with, to a verbose function that uses HiGHS-specific functionality.

    The difference between algebraic_knapsack and highs_knapsack highlights the benefit that algebraic modeling languages provide to users. Moreover, if we used a different solver, the solver-specific function would be entirely different. A key benefit of an algebraic modeling language is that you can change the solver without needing to rewrite the model.

    + 2.0

    We've now gone from a algebraic model that looked identical to the mathematical model we started with, to a verbose function that uses HiGHS-specific functionality.

    The difference between algebraic_knapsack and highs_knapsack highlights the benefit that algebraic modeling languages provide to users. Moreover, if we used a different solver, the solver-specific function would be entirely different. A key benefit of an algebraic modeling language is that you can change the solver without needing to rewrite the model.

    diff --git a/previews/PR3561/changelog/index.html b/previews/PR3561/changelog/index.html index c76ab94942a..83328241d60 100644 --- a/previews/PR3561/changelog/index.html +++ b/previews/PR3561/changelog/index.html @@ -12,4 +12,4 @@ new_b = backend(model)

    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%0A_zizeWn++ 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�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%0Ak5e5p{ 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 z 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

  • All usages of @SDconstraint are deprecated. The new syntax is @constraint(model, X >= Y, PSDCone()).
  • Creating a DenseAxisArray with a Number as an axis will now display a warning. This catches a common error in which users write @variable(model, x[length(S)]) instead of @variable(model, x[1:length(S)]).
  • The caching_mode argument to Model, for example, Model(caching_mode = MOIU.MANUAL) mode has been removed. For more control over the optimizer, use direct_model instead.
  • The previously deprecated lp_objective_perturbation_range and lp_rhs_perturbation_range functions have been removed. Use lp_sensitivity_report instead.
  • The .m fields of NonlinearExpression and NonlinearParameter have been renamed to .model.
  • Infinite variable bounds are now ignored. Thus, @variable(model, x <= Inf) will show has_upper_bound(x) == false. Previously, these bounds were passed through to the solvers which caused numerical issues for solvers expecting finite bounds.
  • The variable_type and constraint_type functions were removed. This should only affect users who previously wrote JuMP extensions. The functions can be deleted without consequence.
  • The internal functions moi_mode, moi_bridge_constraints, moi_add_constraint, and moi_add_to_function_constant are no longer exported.
  • The un-used method Containers.generate_container has been deleted.
  • The Containers API has been refactored, and _build_ref_sets is now public as Containers.build_ref_sets.
  • The parse_constraint_ methods for extending @constraint at parse time have been refactored in a breaking way. Consult the Extensions documentation for more details and examples.
  • Added

    • The TerminationStatusCode and ResultStatusCode enums are now exported by JuMP. Prefer termination_status(model) == OPTIMAL instead of == MOI.OPTIMAL, although the MOI. prefix way still works.
    • Copy a x::DenseAxisArray to an Array by calling Array(x).
    • NonlinearExpression is now a subtype of AbstractJuMPScalar
    • Constraints such as @constraint(model, x + 1 in MOI.Integer()) are now supported.
    • primal_feasibility_report now accepts a function as the first argument.
    • Scalar variables @variable(model, x[1:2] in MOI.Integer()) creates two variables, both of which are constrained to be in the set MOI.Integer.
    • Conic constraints can now be specified as inequalities under a different partial ordering. So @constraint(model, x - y in MOI.Nonnegatives()) can now be written as @constraint(model, x >= y, MOI.Nonnegatives()).
    • Names are now set for vectorized constraints.

    Fixed

    • Fixed a performance issue when show was called on a SparseAxisArray with a large number of elements.
    • Fixed a bug displaying barrier and simplex iterations in solution_summary.
    • Fixed a bug by implementing hash for DenseAxisArray and SparseAxisArray.
    • Names are now only set if the solver supports them. Previously, this prevented solvers such as Ipopt from being used with direct_model.
    • MutableArithmetics.Zero is converted into a 0.0 before being returned to the user. Previously, some calls to @expression would return the undocumented MutableArithmetics.Zero() object. One example is summing over an empty set @expression(model, sum(x[i] for i in 1:0)). You will now get 0.0 instead.
    • AffExpr and QuadExpr can now be used with == 0 instead of iszero. This fixes a number of issues relating to Julia standard libraries such as LinearAlgebra and SparseArrays.
    • Fixed a bug when registering a user-defined function with splatting.

    Other

    • The documentation is now available as a PDF.
    • The documentation now includes a full copy of the MathOptInterface documentation to make it easy to link concepts between the docs. (The MathOptInterface documentation has also been significantly improved.)
    • The documentation contains a large number of improvements and clarifications on a range of topics. Thanks to @sshin23, @DilumAluthge, and @jlwether.
    • The documentation is now built with Julia 1.6 instead of 1.0.
    • Various error messages have been improved to be more readable.

    Version 0.21.10 (September 4, 2021)

    Added

    • Added add_NL_expression
    • add_NL_xxx functions now support AffExpr and QuadExpr as terms

    Fixed

    • Fixed a bug in solution_summary
    • Fixed a bug in relax_integrality

    Other

    • Improved error message in lp_sensitivity_report

    Version 0.21.9 (August 1, 2021)

    Added

    • Containers now support arbitrary container types by passing the type to the container keyword and overloading Containers.container.
    • is_valid now supports nonlinear constraints
    • Added unsafe_backend for querying the inner-most optimizer of a JuMP model.
    • Nonlinear parameters now support the plural @NLparameters macro.
    • Containers (for example, DenseAxisArray) can now be used in vector-valued constraints.

    Other

    • Various improvements to the documentation.

    Version 0.21.8 (May 8, 2021)

    Added

    • The @constraint macro is now extendable in the same way as @variable.
    • AffExpr and QuadExpr can now be used in nonlinear macros.

    Fixed

    • Fixed a bug in lp_sensitivity_report.
    • Fixed an inference issue when creating empty SparseAxisArrays.

    Version 0.21.7 (April 12, 2021)

    Added

    • Added primal_feasibility_report, which can be used to check whether a primal point satisfies primal feasibility.
    • Added coefficient, which returns the coefficient associated with a variable in affine and quadratic expressions.
    • Added copy_conflict, which returns the IIS of an infeasible model.
    • Added solution_summary, which returns (and prints) a struct containing a summary of the solution.
    • Allow AbstractVector in vector constraints instead of just Vector.
    • Added latex_formulation(model) which returns an object representing the latex formulation of a model. Use print(latex_formulation(model)) to print the formulation as a string.
    • User-defined functions in nonlinear expressions are now automatically registered to aid quick model prototyping. However, a warning is printed to encourage the manual registration.
    • DenseAxisArray's now support broadcasting over multiple arrays.
    • Container indices can now be iterators of Base.SizeUnknown.

    Fixed

    • Fixed bug in rad2deg and deg2rad in nonlinear expressions.
    • Fixed a MethodError bug in Containers when forcing container type.
    • Allow partial slicing of a DenseAxisArray, resolving an issue from 2014.
    • Fixed a bug printing variable names in IJulia.
    • Ending an IJulia cell with model now prints a summary of the model (like in the REPL) not the latex formulation. Use print(model) to print the latex formulation.
    • Fixed a bug when copying models containing nested arrays.

    Other

    • Tutorials are now part of the documentation, and more refactoring has taken place.
    • Added JuliaFormatter added as a code formatter.
    • Added some precompilation statements to reduce initial latency.
    • Various improvements to error messages to make them more helpful.
    • Improved performance of value(::NonlinearExpression).
    • Improved performance of fix(::VariableRef).

    Version 0.21.6 (January 29, 2021)

    Added

    • Added support for skew symmetric variables via @variable(model, X[1:2, 1:2] in SkewSymmetricMatrixSpace()).
    • lp_sensitivity_report has been added which significantly improves the performance of querying the sensitivity summary of an LP. lp_objective_perturbation_range and lp_rhs_perturbation_range are deprecated.
    • Dual warm-starts are now supported with set_dual_start_value and dual_start_value.
    • (\in<tab>) can now be used in macros instead of = or in.
    • Use haskey(model::Model, key::Symbol) to check if a name key is registered in a model.
    • Added unregister(model::Model, key::Symbol) to unregister a name key from model.
    • Added callback_node_status for use in callbacks.
    • Added print_bridge_graph to visualize the bridging graph generated by MathOptInterface.
    • Improved error message for containers with duplicate indices.

    Fixed

    • Various fixes to pass tests on Julia 1.6.
    • Fixed a bug in the printing of nonlinear expressions in IJulia.
    • Fixed a bug when nonlinear expressions are passed to user-defined functions.
    • Some internal functions that were previously exported are now no longer exported.
    • Fixed a bug when relaxing a fixed binary variable.
    • Fixed a StackOverflowError that occurred when SparseAxisArrays had a large number of elements.
    • Removed an unnecessary type assertion in list_of_constraint_types.
    • Fixed a bug when copying models with registered expressions.

    Other

    • The documentation has been significantly overhauled. It now has distinct sections for the manual, API reference, and examples. The existing examples in /examples have now been moved to /docs/src/examples and rewritten using Literate.jl, and they are now included in the documentation.
    • JuliaFormatter has been applied to most of the codebase. This will continue to roll out over time, as we fix upstream issues in the formatter, and will eventually become compulsory.
    • The root cause of a large number of method invalidations has been resolved.
    • We switched continuous integration from Travis and Appveyor to GitHub Actions.

    Version 0.21.5 (September 18, 2020)

    Fixed

    • Fixed deprecation warnings
    • Throw DimensionMismatch for incompatibly sized functions and sets
    • Unify treatment of keys(x) on JuMP containers

    Version 0.21.4 (September 14, 2020)

    Added

    • Add debug info when adding unsupported constraints
    • Add relax_integrality for solving continuous relaxation
    • Allow querying constraint conflicts

    Fixed

    • Dispatch on Real for MOI.submit
    • Implement copy for CustomSet in tests
    • Don't export private macros
    • Fix invalid assertion in nonlinear
    • Error if constraint has NaN right-hand side
    • Improve speed of tests
    • Lots of work modularizing files in /test
    • Improve line numbers in macro error messages
    • Print nonlinear subexpressions
    • Various documentation updates
    • Dependency updates:
      • Datastructures 0.18
      • MathOptFormat v0.5
      • Prep for MathOptInterface 0.9.15

    Version 0.21.3 (June 18, 2020)

    • Added Special Order Sets (SOS1 and SOS2) to JuMP with default weights to ease the creation of such constraints (#2212).
    • Added functions simplex_iterations, barrier_iterations and node_count (#2201).
    • Added function reduced_cost (#2205).
    • Implemented callback_value for affine and quadratic expressions (#2231).
    • Support MutableArithmetics.Zero in objective and constraints (#2219).
    • Documentation improvements:
      • Mention tutorials in the docs (#2223).
      • Update COIN-OR links (#2242).
      • Explicit link to the documentation of MOI.FileFormats (#2253).
      • Typo fixes (#2261).
    • Containers improvements:
      • Fix Base.map for DenseAxisArray (#2235).
      • Throw BoundsError if number of indices is incorrect for DenseAxisArray and SparseAxisArray (#2240).
    • Extensibility improvements:
      • Implement a set_objective method fallback that redirects to set_objective_sense and set_objective_function (#2247).
      • Add parse_constraint method with arbitrary number of arguments (#2051).
      • Add parse_constraint_expr and parse_constraint_head (#2228).

    Version 0.21.2 (April 2, 2020)

    • Added relative_gap() to access MOI.RelativeGap() attribute (#2199).
    • Documentation fixes:
      • Added link to source for docstrings in the documentation (#2207).
      • Added docstring for @variables macro (#2216).
      • Typo fixes (#2177, #2184, #2182).
    • Implementation of methods for Base functions:
      • Implemented Base.empty! for JuMP.Model (#2198).
      • Implemented Base.conj for JuMP scalar types (#2209).

    Fixed

    • Fixed sum of expression with scalar product in macro (#2178).
    • Fixed writing of nonlinear models to MathOptFormat (#2181).
    • Fixed construction of empty SparseAxisArray (#2179).
    • Fixed constraint with zero function (#2188).

    Version 0.21.1 (Feb 18, 2020)

    • Improved the clarity of the with_optimizer deprecation warning.

    Version 0.21.0 (Feb 16, 2020)

    Breaking

    • Deprecated with_optimizer (#2090, #2084, #2141). You can replace with_optimizer by either nothing, optimizer_with_attributes or a closure:

      • replace with_optimizer(Ipopt.Optimizer) by Ipopt.Optimizer.
      • replace with_optimizer(Ipopt.Optimizer, max_cpu_time=60.0) by optimizer_with_attributes(Ipopt.Optimizer, "max_cpu_time" => 60.0).
      • replace with_optimizer(Gurobi.Optimizer, env) by () -> Gurobi.Optimizer(env).
      • replace with_optimizer(Gurobi.Optimizer, env, Presolve=0) by optimizer_with_attributes(() -> Gurobi.Optimizer(env), "Presolve" => 0).

      alternatively to optimizer_with_attributes, you can also set the attributes separately with set_optimizer_attribute.

    • Renamed set_parameter and set_parameters to set_optimizer_attribute and set_optimizer_attributes (#2150).

    • Broadcast should now be explicit inside macros. @SDconstraint(model, x >= 1) and @constraint(model, x + 1 in SecondOrderCone()) now throw an error instead of broadcasting 1 along the dimension of x (#2107).

    • @SDconstraint(model, x >= 0) is now equivalent to @constraint(model, x in PSDCone()) instead of @constraint(model, (x .- 0) in PSDCone()) (#2107).

    • The macros now create the containers with map instead of for loops, as a consequence, containers created by @expression can now have any element type and containers of constraint references now have concrete element types when possible. This fixes a long-standing issue where @expression could only be used to generate a collection of linear expressions. Now it works for quadratic expressions as well (#2070).

    • Calling deepcopy(::AbstractModel) now throws an error.

    • The constraint name is now printed in the model string (#2108).

    Added

    • Added support for solver-independent and solver-specific callbacks (#2101).
    • Added write_to_file and read_from_file, supported formats are CBF, LP, MathOptFormat, MPS and SDPA (#2114).
    • Added support for complementarity constraints (#2132).
    • Added support for indicator constraints (#2092).
    • Added support for querying multiple solutions with the result keyword (#2100).
    • Added support for constraining variables on creation (#2128).
    • Added method delete that deletes a vector of variables at once if it is supported by the underlying solver (#2135).
    • The arithmetic between JuMP expression has be refactored into the MutableArithmetics package (#2107).
    • Improved error on complex values in NLP (#1978).
    • Added an example of column generation (#2010).

    Fixed

    • Incorrect coefficients generated when using Symmetric variables (#2102)

    Version 0.20.1 (Oct 18, 2019)

    • Add sections on @variables and @constraints in the documentation (#2062).
    • Fixed product of sparse matrices for Julia v1.3 (#2063).
    • Added set_objective_coefficient to modify the coefficient of a linear term of the objective function (#2008).
    • Added set_time_limit_sec, unset_time_limit_sec and time_limit_sec to set and query the time limit for the solver in seconds (#2053).

    Version 0.20.0 (Aug 24, 2019)

    • Documentation updates.
    • Numerous bug fixes.
    • Better error messages (#1977, #1978, #1997, #2017).
    • Performance improvements (#1947, #2032).
    • Added LP sensitivity summary functions lp_objective_perturbation_range and lp_rhs_perturbation_range (#1917).
    • Added functions dual_objective_value, raw_status and set_parameter.
    • Added function set_objective_coefficient to modify the coefficient of a linear term of the objective (#2008).
    • Added functions set_normalized_rhs, normalized_rhs, and add_to_function_constant to modify and get the constant part of a constraint (#1935, #1960).
    • Added functions set_normalized_coefficient and normalized_coefficient to modify and get the coefficient of a linear term of a constraint (#1935, #1960).
    • Numerous other improvements in MOI 0.9, see the NEWS.md file of MOI for more details.

    Version 0.19.2 (June 8, 2019)

    • Fix a bug in derivatives that could arise in models with nested nonlinear subexpressions.

    Version 0.19.1 (May 12, 2019)

    • Usability and performance improvements.
    • Bug fixes.

    Version 0.19.0 (February 15, 2019)

    JuMP 0.19 contains significant breaking changes.

    Breaking

    • JuMP's abstraction layer for communicating with solvers changed from MathProgBase (MPB) to MathOptInterface (MOI). MOI addresses many longstanding design issues. (See @mlubin's slides from JuMP-dev 2018.) JuMP 0.19 is compatible only with solvers that have been updated for MOI. See the installation guide for a list of solvers that have and have not yet been updated.

    • Most solvers have been renamed to PackageName.Optimizer. For example, GurobiSolver() is now Gurobi.Optimizer.

    • Solvers are no longer added to a model via Model(solver = XXX(kwargs...)). Instead use Model(with_optimizer(XXX, kwargs...)). For example, Model(with_optimizer(Gurobi.Optimizer, OutputFlag=0)).

    • JuMP containers (for example, the objects returned by @variable) have been redesigned. Containers.SparseAxisArray replaces JuMPDict, JuMPArray was rewritten (inspired by AxisArrays) and renamed Containers.DenseAxisArray, and you can now request a container type with the container= keyword to the macros. See the corresponding documentation for more details.

    • The statuses returned by solvers have changed. See the possible status values here. The MOI statuses are much richer than the MPB statuses and can be used to distinguish between previously indistinguishable cases (for example, did the solver have a feasible solution when it stopped because of the time limit?).

    • Starting values are separate from result values. Use value to query the value of a variable in a solution. Use start_value and set_start_value to get and set an initial starting point provided to the solver. The solutions from previous solves are no longer automatically set as the starting points for the next solve.

    • The data structures for affine and quadratic expressions AffExpr and QuadExpr have changed. Internally, terms are stored in dictionaries instead of lists. Duplicate coefficients can no longer exist. Accessors and iteration methods have changed.

    • JuMPNLPEvaluator no longer includes the linear and quadratic parts of the model in the evaluation calls. These are now handled separately to allow NLP solvers that support various types of constraints.

    • JuMP solver-independent callbacks have been replaced by solver-specific callbacks. See your favorite solver for more details. (See the note below: No solver-specific callbacks are implemented yet.)

    • The norm() syntax is no longer recognized inside macros. Use the SecondOrderCone() set instead.

    • JuMP no longer performs automatic transformation between special quadratic forms and second-order cone constraints. Support for these constraint classes depends on the solver.

    • The symbols :Min and :Max are no longer used as optimization senses. Instead, JuMP uses the OptimizationSense enum from MathOptInterface. @objective(model, Max, ...), @objective(model, Min, ...), @NLobjective(model, Max, ...), and @objective(model, Min, ...) remain valid, but @objective(m, :Max, ...) is no longer accepted.

    • The sign conventions for duals has changed in some cases for consistency with conic duality (see the documentation). The shadow_price helper method returns duals with signs that match conventional LP interpretations of dual values as sensitivities of the objective value to relaxations of constraints.

    • @constraintref is no longer defined. Instead, create the appropriate container to hold constraint references manually. For example,

      constraints = Dict() # Optionally, specify types for improved performance.
       for i in 1:N
         constraints[i] = @constraint(model, ...)
      -end
    • The lowerbound, upperbound, and basename keyword arguments to the @variable macro have been renamed to lower_bound, upper_bound, and base_name, for consistency with JuMP's new style recommendations.

    • We rely on broadcasting syntax to apply accessors to collections of variables, for example, value.(x) instead of getvalue(x) for collections. (Use value(x) when x is a scalar object.)

    Added

    • Splatting (like f(x...)) is recognized in restricted settings in nonlinear expressions.

    • Support for deleting constraints and variables.

    • The documentation has been completely rewritten using docstrings and Documenter.

    • Support for modeling mixed conic and quadratic models (for example, conic models with quadratic objectives and bi-linear matrix inequalities).

    • Significantly improved support for modeling new types of constraints and for extending JuMP's macros.

    • Support for providing dual warm starts.

    • Improved support for accessing solver-specific attributes (for example, the irreducible inconsistent subsystem).

    • Explicit control of whether symmetry-enforcing constraints are added to PSD constraints.

    • Support for modeling exponential cones.

    • Significant improvements in internal code quality and testing.

    • Style and naming guidelines.

    • Direct mode and manual mode provide explicit control over when copies of a model are stored or regenerated. See the corresponding documentation.

    Regressions

    There are known regressions from JuMP 0.18 that will be addressed in a future release (0.19.x or later):

    • Performance regressions in model generation (issue). Please file an issue anyway if you notice a significant performance regression. We have plans to address a number of performance issues, but we might not be aware of all of them.

    • Fast incremental NLP solves are not yet reimplemented (issue).

    • We do not yet have an implementation of solver-specific callbacks.

    • The column generation syntax in @variable has been removed (that is, the objective, coefficients, and inconstraints keyword arguments). Support for column generation will be re-introduced in a future release.

    • The ability to solve the continuous relaxation (that is, via solve(model; relaxation = true)) is not yet reimplemented (issue).

    Version 0.18.5 (December 1, 2018)

    • Support views in some derivative evaluation functions.
    • Improved compatibility with PackageCompiler.

    Version 0.18.4 (October 8, 2018)

    • Fix a bug in model printing on Julia 0.7 and 1.0.

    Version 0.18.3 (October 1, 2018)

    • Add support for Julia v1.0 (Thanks @ExpandingMan)
    • Fix matrix expressions with quadratic functions (#1508)

    Version 0.18.2 (June 10, 2018)

    • Fix a bug in second-order derivatives when expressions are present (#1319)
    • Fix a bug in @constraintref (#1330)

    Version 0.18.1 (April 9, 2018)

    • Fix for nested tuple destructuring (#1193)
    • Preserve internal model when relaxation=true (#1209)
    • Minor bug fixes and updates for example

    Version 0.18.0 (July 27, 2017)

    • Drop support for Julia 0.5.
    • Update for ForwardDiff 0.5.
    • Minor bug fixes.

    Version 0.17.1 (June 9, 2017)

    • Use of constructconstraint! in @SDconstraint.
    • Minor bug fixes.

    Version 0.17.0 (May 27, 2017)

    • Breaking change: Mixing quadratic and conic constraints is no longer supported.
    • Breaking change: The getvariable and getconstraint functions are replaced by indexing on the corresponding symbol. For instance, to access the variable with name x, one should now write m[:x] instead of getvariable(m, :x). As a consequence, creating a variable and constraint with the same name now triggers a warning, and accessing one of them afterwards throws an error. This change is breaking only in the latter case.
    • Addition of the getobjectivebound function that mirrors the functionality of the MathProgBase getobjbound function except that it takes into account transformations performed by JuMP.
    • Minor bug fixes.

    The following changes are primarily of interest to developers of JuMP extensions:

    • The new syntax @constraint(model, expr in Cone) creates the constraint ensuring that expr is inside Cone. The Cone argument is passed to constructconstraint! which enables the call to the dispatched to an extension.
    • The @variable macro now calls constructvariable! instead of directly calling the Variable constructor. Extra arguments and keyword arguments passed to @variable are passed to constructvariable! which enables the call to be dispatched to an extension.
    • Refactor the internal function conicdata (used build the MathProgBase conic model) into smaller sub-functions to make these parts reusable by extensions.

    Version 0.16.2 (March 28, 2017)

    • Minor bug fixes and printing tweaks
    • Address deprecation warnings for Julia 0.6

    Version 0.16.1 (March 7, 2017)

    • Better support for AbstractArray in JuMP (Thanks @tkoolen)
    • Minor bug fixes

    Version 0.16.0 (February 23, 2017)

    • Breaking change: JuMP no longer has a mechanism for selecting solvers by default (the previous mechanism was flawed and incompatible with Julia 0.6). Not specifying a solver before calling solve() will result in an error.
    • Breaking change: User-defined functions are no longer global. The first argument to JuMP.register is now a JuMP Model object within whose scope the function will be registered. Calling JuMP.register without a Model now produces an error.
    • Breaking change: Use the new JuMP.fix method to fix a variable to a value or to update the value to which a variable is fixed. Calling setvalue on a fixed variable now results in an error in order to avoid silent behavior changes. (Thanks @joaquimg)
    • Nonlinear expressions now print out similarly to linear/quadratic expressions (useful for debugging!)
    • New category keyword to @variable. Used for specifying categories of anonymous variables.
    • Compatibility with Julia 0.6-dev.
    • Minor fixes and improvements (Thanks @cossio, @ccoffrin, @blegat)

    Version 0.15.1 (January 31, 2017)

    • Bugfix for @LinearConstraints and friends

    Version 0.15.0 (December 22, 2016)

    • Julia 0.5.0 is the minimum required version for this release.
    • Document support for BARON solver
    • Enable info callbacks in more states than before, for example, for recording solutions. New when argument to addinfocallback (#814, thanks @yeesian)
    • Improved support for anonymous variables. This includes new warnings for potentially confusing use of the traditional non-anonymous syntax:
      • When multiple variables in a model are given the same name
      • When non-symbols are used as names, for example, @variable(m, x[1][1:N])
    • Improvements in iterating over JuMP containers (#836, thanks @IssamT)
    • Support for writing variable names in .lp file output (Thanks @leethargo)
    • Support for querying duals to SDP problems (Thanks @blegat)
    • The comprehension syntax with curly braces sum{}, prod{}, and norm2{} has been deprecated in favor of Julia's native comprehension syntax sum(), prod() and norm() as previously announced. (For early adopters of the new syntax, norm2() was renamed to norm() without deprecation.)
    • Unit tests rewritten to use Base.Test instead of FactCheck
    • Improved support for operations with matrices of JuMP types (Thanks @ExpandingMan)
    • The syntax to halt a solver from inside a callback has changed from throw(CallbackAbort()) to return JuMP.StopTheSolver
    • Minor bug fixes

    Version 0.14.2 (December 12, 2016)

    • Allow singleton anonymous variables (includes bugfix)

    Version 0.14.1 (September 12, 2016)

    • More consistent handling of states in informational callbacks, includes a new when parameter to addinfocallback for specifying in which state an informational callback should be called.

    Version 0.14.0 (August 7, 2016)

    • Compatibility with Julia 0.5 and ForwardDiff 0.2
    • Support for "anonymous" variables, constraints, expressions, and parameters, for example, x = @variable(m, [1:N]) instead of @variable(m, x[1:N])
    • Support for retrieving constraints from a model by name via getconstraint
    • @NLconstraint now returns constraint references (as expected).
    • Support for vectorized expressions within lazy constraints
    • On Julia 0.5, parse new comprehension syntax sum(x[i] for i in 1:N if isodd(i)) instead of sum{ x[i], i in 1:N; isodd(i) }. The old syntax with curly braces will be deprecated in JuMP 0.15.
    • Now possible to provide nonlinear expressions as "raw" Julia Expr objects instead of using JuMP's nonlinear macros. This input format is useful for programmatically generated expressions.
    • s/Mathematical Programming/Mathematical Optimization/
    • Support for local cuts (Thanks to @madanim, Mehdi Madani)
    • Document Xpress interface developed by @joaquimg, Joaquim Dias Garcia
    • Minor bug and deprecation fixes (Thanks @odow, @jrevels)

    Version 0.13.2 (May 16, 2016)

    • Compatibility update for MathProgBase

    Version 0.13.1 (May 3, 2016)

    • Fix broken deprecation for registerNLfunction.

    Version 0.13.0 (April 29, 2016)

    • Most exported methods and macros have been renamed to avoid camelCase. See the list of changes here. There is a 1-1 mapping from the old names to the new, and it is safe to simply replace the names to update existing models.
    • Specify variable lower/upper bounds in @variable using the lowerbound and upperbound keyword arguments.
    • Change name printed for variable using the basename keyword argument to @variable.
    • New @variables macro allows multi-line declaration of groups of variables.
    • A number of solver methods previously available only through MathProgBase are now exposed directly in JuMP. The fix was recorded live.
    • Compatibility fixes with Julia 0.5.
    • The "end" indexing syntax is no longer supported within JuMPArrays which do not use 1-based indexing until upstream issues are resolved, see here.

    Version 0.12.2 (March 9, 2016)

    • Small fixes for nonlinear optimization

    Version 0.12.1 (March 1, 2016)

    • Fix a regression in slicing for JuMPArrays (when not using 1-based indexing)

    Version 0.12.0 (February 27, 2016)

    • The automatic differentiation functionality has been completely rewritten with a number of user-facing changes:
      • @defExpr and @defNLExpr now take the model as the first argument. The previous one-argument version of @defExpr is deprecated; all expressions should be named. For example, replace @defExpr(2x+y) with @defExpr(jump_model, my_expr, 2x+y).
      • JuMP no longer uses Julia's variable binding rules for efficiently re-solving a sequence of nonlinear models. Instead, we have introduced nonlinear parameters. This is a breaking change, so we have added a warning message when we detect models that may depend on the old behavior.
      • Support for user-defined functions integrated within nonlinear JuMP expressions.
    • Replaced iteration over AffExpr with Number-like scalar iteration; previous iteration behavior is now available via linearterms(::AffExpr).
    • Stopping the solver via throw(CallbackAbort()) from a callback no longer triggers an exception. Instead, solve() returns UserLimit status.
    • getDual() now works for conic problems (Thanks @emreyamangil.)

    Version 0.11.3 (February 4, 2016)

    • Bug-fix for problems with quadratic objectives and semidefinite constraints

    Version 0.11.2 (January 14, 2016)

    • Compatibility update for Mosek

    Version 0.11.1 (December 1, 2015)

    • Remove usage of @compat in tests.
    • Fix updating quadratic objectives for nonlinear models.

    Version 0.11.0 (November 30, 2015)

    • Julia 0.4.0 is the minimum required version for this release.
    • Fix for scoping semantics of index variables in sum{}. Index variables no longer leak into the surrounding scope.
    • Addition of the solve(m::Model, relaxation=true) keyword argument to solve the standard continuous relaxation of model m
    • The getConstraintBounds() method allows access to the lower and upper bounds of all constraints in a (nonlinear) model.
    • Update for breaking changes in MathProgBase

    Version 0.10.3 (November 20, 2015)

    • Fix a rare error when parsing quadratic expressions
    • Fix Variable() constructor with default arguments
    • Detect unrecognized keywords in solve()

    Version 0.10.2 (September 28, 2015)

    • Fix for deprecation warnings

    Version 0.10.1 (September 3, 2015)

    • Fixes for ambiguity warnings.
    • Fix for breaking change in precompilation syntax in Julia 0.4-pre

    Version 0.10.0 (August 31, 2015)

    • Support (on Julia 0.4 and later) for conditions in indexing @defVar and @addConstraint constructs, for example, @defVar(m, x[i=1:5,j=1:5; i+j >= 3])
    • Support for vectorized operations on Variables and expressions. See the documentation for details.
    • New getVar() method to access variables in a model by name
    • Support for semidefinite programming.
    • Dual solutions are now available for general nonlinear problems. You may call getDual on a reference object for a nonlinear constraint, and getDual on a variable object for Lagrange multipliers from active bounds.
    • Introduce warnings for two common performance traps: too many calls to getValue() on a collection of variables and use of the + operator in a loop to sum expressions.
    • Second-order cone constraints can be written directly with the norm() and norm2{} syntax.
    • Implement MathProgBase interface for querying Hessian-vector products.
    • Iteration over JuMPContainers is deprecated; instead, use the keys and values functions, and zip(keys(d),values(d)) for the old behavior.
    • @defVar returns Array{Variable,N} when each of N index sets are of the form 1:nᵢ.
    • Module precompilation: on Julia 0.4 and later, using JuMP is now much faster.

    Version 0.9.3 (August 11, 2015)

    • Fixes for FactCheck testing on julia v0.4.

    Version 0.9.2 (June 27, 2015)

    • Fix bug in @addConstraints.

    Version 0.9.1 (April 25, 2015)

    • Fix for Julia 0.4-dev.
    • Small infrastructure improvements for extensions.

    Version 0.9.0 (April 18, 2015)

    • Comparison operators for constructing constraints (for example, 2x >= 1) have been deprecated. Instead, construct the constraints explicitly in the @addConstraint macro to add them to the model, or in the @LinearConstraint macro to create a stand-alone linear constraint instance.
    • getValue() method implemented to compute the value of a nonlinear subexpression
    • JuMP is now released under the Mozilla Public License version 2.0 (was previously LGPL). MPL is a copyleft license which is less restrictive than LGPL, especially for embedding JuMP within other applications.
    • A number of performance improvements in ReverseDiffSparse for computing derivatives.
    • MathProgBase.getsolvetime(m) now returns the solution time reported by the solver, if available. (Thanks @odow, Oscar Dowson)
    • Formatting fix for LP format output. (Thanks @sbebo, Leonardo Taccari).

    Version 0.8.0 (February 17, 2015)

    • Nonlinear subexpressions now supported with the @defNLExpr macro.
    • SCS supported for solving second-order conic problems.
    • setXXXCallback family deprecated in favor of addXXXCallback.
    • Multiple callbacks of the same type can be registered.
    • Added support for informational callbacks via addInfoCallback.
    • A CallbackAbort exception can be thrown from callback to safely exit optimization.

    Version 0.7.4 (February 4, 2015)

    • Reduced costs and linear constraint duals are now accessible when quadratic constraints are present.
    • Two-sided nonlinear constraints are supported.
    • Methods for accessing the number of variables and constraints in a model are renamed.
    • New default procedure for setting initial values in nonlinear optimization: project zero onto the variable bounds.
    • Small bug fixes.

    Version 0.7.3 (January 14, 2015)

    • Fix a method ambiguity conflict with Compose.jl (cosmetic fix)

    Version 0.7.2 (January 9, 2015)

    • Fix a bug in sum(::JuMPDict)
    • Added the setCategory function to change a variables category (for example, continuous or binary)

    after construction, and getCategory to retrieve the variable category.

    Version 0.7.1 (January 2, 2015)

    • Fix a bug in parsing linear expressions in macros. Affects only Julia 0.4 and later.

    Version 0.7.0 (December 29, 2014)

    Linear/quadratic/conic programming

    • Breaking change: The syntax for column-wise model generation has been changed to use keyword arguments in @defVar.
    • On Julia 0.4 and later, variables and coefficients may be multiplied in any order within macros. That is, variable*coefficient is now valid syntax.
    • ECOS supported for solving second-order conic problems.

    Nonlinear programming

    • Support for skipping model generation when solving a sequence of nonlinear models with changing data.
    • Fix a memory leak when solving a sequence of nonlinear models.
    • The @addNLConstraint macro now supports the three-argument version to define sets of nonlinear constraints.
    • KNITRO supported as a nonlinear solver.
    • Speed improvements for model generation.
    • The @addNLConstraints macro supports adding multiple (groups of) constraints at once. Syntax is similar to @addConstraints.
    • Discrete variables allowed in nonlinear problems for solvers which support them (currently only KNITRO).

    General

    • Starting values for variables may now be specified with @defVar(m, x, start=value).
    • The setSolver function allows users to change the solver subsequent to model creation.
    • Support for "fixed" variables via the @defVar(m, x == 1) syntax.
    • Unit tests rewritten to use FactCheck.jl, improved testing across solvers.

    Version 0.6.3 (October 19, 2014)

    • Fix a bug in multiplying two AffExpr objects.

    Version 0.6.2 (October 11, 2014)

    • Further improvements and bug fixes for printing.
    • Fixed a bug in @defExpr.
    • Support for accessing expression graphs through the MathProgBase NLP interface.

    Version 0.6.1 (September 19, 2014)

    • Improvements and bug fixes for printing.

    Version 0.6.0 (September 9, 2014)

    • Julia 0.3.0 is the minimum required version for this release.
    • buildInternalModel(m::Model) added to build solver-level model in memory without optimizing.
    • Deprecate load_model_only keyword argument to solve.
    • Add groups of constraints with @addConstraints macro.
    • Unicode operators now supported, including for sum, for prod, and /
    • Quadratic constraints supported in @addConstraint macro.
    • Quadratic objectives supported in @setObjective macro.
    • MathProgBase solver-independent interface replaces Ipopt-specific interface for nonlinear problems
      • Breaking change: IpoptOptions no longer supported to specify solver options, use m = Model(solver=IpoptSolver(options...)) instead.
    • New solver interfaces: ECOS, NLopt, and nonlinear support for MOSEK
    • New option to control whether the lazy constraint callback is executed at each node in the B&B tree or just when feasible solutions are found
    • Add support for semicontinuous and semi-integer variables for those solvers that support them.
    • Add support for index dependencies (for example, triangular indexing) in @defVar, @addConstraint, and @defExpr (for example, @defVar(m, x[i=1:10,j=i:10])).
      • This required some changes to the internal structure of JuMP containers, which may break code that explicitly stored JuMPDict objects.

    Version 0.5.8 (September 24, 2014)

    • Fix a bug with specifying solvers (affects Julia 0.2 only)

    Version 0.5.7 (September 5, 2014)

    • Fix a bug in printing models

    Version 0.5.6 (September 2, 2014)

    • Add support for semicontinuous and semi-integer variables for those solvers that support them.
      • Breaking change: Syntax for Variable() constructor has changed (use of this interface remains discouraged)
    • Update for breaking changes in MathProgBase

    Version 0.5.5 (July 6, 2014)

    • Fix bug with problem modification: adding variables that did not appear in existing constraints or objective.

    Version 0.5.4 (June 19, 2014)

    • Update for breaking change in MathProgBase which reduces loading times for using JuMP
    • Fix error when MIPs not solved to optimality

    Version 0.5.3 (May 21, 2014)

    • Update for breaking change in ReverseDiffSparse

    Version 0.5.2 (May 9, 2014)

    • Fix compatibility with Julia 0.3 prerelease

    Version 0.5.1 (May 5, 2014)

    • Fix a bug in coefficient handling inside lazy constraints and user cuts

    Version 0.5.0 (May 2, 2014)

    • Support for nonlinear optimization with exact, sparse second-order derivatives automatically computed. Ipopt is currently the only solver supported.
    • getValue for AffExpr and QuadExpr
    • Breaking change: getSolverModel replaced by getInternalModel, which returns the internal MathProgBase-level model
    • Groups of constraints can be specified with @addConstraint (see documentation for details). This is not a breaking change.
    • dot(::JuMPDict{Variable},::JuMPDict{Variable}) now returns the corresponding quadratic expression.

    Version 0.4.1 (March 24, 2014)

    • Fix bug where change in objective sense was ignored when re-solving a model.
    • Fix issue with handling zero coefficients in AffExpr.

    Version 0.4.0 (March 10, 2014)

    • Support for SOS1 and SOS2 constraints.
    • Solver-independent callback for user heuristics.
    • dot and sum implemented for JuMPDict objects. Now you can say @addConstraint(m, dot(a,x) <= b).
    • Developers: support for extensions to JuMP. See definition of Model in src/JuMP.jl for more details.
    • Option to construct the low-level model before optimizing.

    Version 0.3.2 (February 17, 2014)

    • Improved model printing
      • Preliminary support for IJulia output

    Version 0.3.1 (January 30, 2014)

    • Documentation updates
    • Support for MOSEK
    • CPLEXLink renamed to CPLEX

    Version 0.3.0 (January 21, 2014)

    • Unbounded/infeasibility rays: getValue() will return the corresponding components of an unbounded ray when a model is unbounded, if supported by the selected solver. getDual() will return an infeasibility ray (Farkas proof) if a model is infeasible and the selected solver supports this feature.
    • Solver-independent callbacks for user generated cuts.
    • Use new interface for solver-independent QCQP.
    • setlazycallback renamed to setLazyCallback for consistency.

    Version 0.2.0 (December 15, 2013)

    Breaking

    • Objective sense is specified in setObjective instead of in the Model constructor.
    • lpsolver and mipsolver merged into single solver option.

    Added

    • Problem modification with efficient LP restarts and MIP warm-starts.
    • Relatedly, column-wise modeling now supported.
    • Solver-independent callbacks supported. Currently we support only a "lazy constraint" callback, which works with Gurobi, CPLEX, and GLPK. More callbacks coming soon.

    Version 0.1.2 (November 16, 2013)

    • Bug fixes for printing, improved error messages.
    • Allow AffExpr to be used in macros; for example, ex = y + z; @addConstraint(m, x + 2*ex <= 3)

    Version 0.1.1 (October 23, 2013)

    • Update for solver specification API changes in MathProgBase.

    Version 0.1.0 (October 3, 2013)

    • Initial public release.
    +end
  • The lowerbound, upperbound, and basename keyword arguments to the @variable macro have been renamed to lower_bound, upper_bound, and base_name, for consistency with JuMP's new style recommendations.

  • We rely on broadcasting syntax to apply accessors to collections of variables, for example, value.(x) instead of getvalue(x) for collections. (Use value(x) when x is a scalar object.)

  • Added

    • Splatting (like f(x...)) is recognized in restricted settings in nonlinear expressions.

    • Support for deleting constraints and variables.

    • The documentation has been completely rewritten using docstrings and Documenter.

    • Support for modeling mixed conic and quadratic models (for example, conic models with quadratic objectives and bi-linear matrix inequalities).

    • Significantly improved support for modeling new types of constraints and for extending JuMP's macros.

    • Support for providing dual warm starts.

    • Improved support for accessing solver-specific attributes (for example, the irreducible inconsistent subsystem).

    • Explicit control of whether symmetry-enforcing constraints are added to PSD constraints.

    • Support for modeling exponential cones.

    • Significant improvements in internal code quality and testing.

    • Style and naming guidelines.

    • Direct mode and manual mode provide explicit control over when copies of a model are stored or regenerated. See the corresponding documentation.

    Regressions

    There are known regressions from JuMP 0.18 that will be addressed in a future release (0.19.x or later):

    • Performance regressions in model generation (issue). Please file an issue anyway if you notice a significant performance regression. We have plans to address a number of performance issues, but we might not be aware of all of them.

    • Fast incremental NLP solves are not yet reimplemented (issue).

    • We do not yet have an implementation of solver-specific callbacks.

    • The column generation syntax in @variable has been removed (that is, the objective, coefficients, and inconstraints keyword arguments). Support for column generation will be re-introduced in a future release.

    • The ability to solve the continuous relaxation (that is, via solve(model; relaxation = true)) is not yet reimplemented (issue).

    Version 0.18.5 (December 1, 2018)

    • Support views in some derivative evaluation functions.
    • Improved compatibility with PackageCompiler.

    Version 0.18.4 (October 8, 2018)

    • Fix a bug in model printing on Julia 0.7 and 1.0.

    Version 0.18.3 (October 1, 2018)

    • Add support for Julia v1.0 (Thanks @ExpandingMan)
    • Fix matrix expressions with quadratic functions (#1508)

    Version 0.18.2 (June 10, 2018)

    • Fix a bug in second-order derivatives when expressions are present (#1319)
    • Fix a bug in @constraintref (#1330)

    Version 0.18.1 (April 9, 2018)

    • Fix for nested tuple destructuring (#1193)
    • Preserve internal model when relaxation=true (#1209)
    • Minor bug fixes and updates for example

    Version 0.18.0 (July 27, 2017)

    • Drop support for Julia 0.5.
    • Update for ForwardDiff 0.5.
    • Minor bug fixes.

    Version 0.17.1 (June 9, 2017)

    • Use of constructconstraint! in @SDconstraint.
    • Minor bug fixes.

    Version 0.17.0 (May 27, 2017)

    • Breaking change: Mixing quadratic and conic constraints is no longer supported.
    • Breaking change: The getvariable and getconstraint functions are replaced by indexing on the corresponding symbol. For instance, to access the variable with name x, one should now write m[:x] instead of getvariable(m, :x). As a consequence, creating a variable and constraint with the same name now triggers a warning, and accessing one of them afterwards throws an error. This change is breaking only in the latter case.
    • Addition of the getobjectivebound function that mirrors the functionality of the MathProgBase getobjbound function except that it takes into account transformations performed by JuMP.
    • Minor bug fixes.

    The following changes are primarily of interest to developers of JuMP extensions:

    • The new syntax @constraint(model, expr in Cone) creates the constraint ensuring that expr is inside Cone. The Cone argument is passed to constructconstraint! which enables the call to the dispatched to an extension.
    • The @variable macro now calls constructvariable! instead of directly calling the Variable constructor. Extra arguments and keyword arguments passed to @variable are passed to constructvariable! which enables the call to be dispatched to an extension.
    • Refactor the internal function conicdata (used build the MathProgBase conic model) into smaller sub-functions to make these parts reusable by extensions.

    Version 0.16.2 (March 28, 2017)

    • Minor bug fixes and printing tweaks
    • Address deprecation warnings for Julia 0.6

    Version 0.16.1 (March 7, 2017)

    • Better support for AbstractArray in JuMP (Thanks @tkoolen)
    • Minor bug fixes

    Version 0.16.0 (February 23, 2017)

    • Breaking change: JuMP no longer has a mechanism for selecting solvers by default (the previous mechanism was flawed and incompatible with Julia 0.6). Not specifying a solver before calling solve() will result in an error.
    • Breaking change: User-defined functions are no longer global. The first argument to JuMP.register is now a JuMP Model object within whose scope the function will be registered. Calling JuMP.register without a Model now produces an error.
    • Breaking change: Use the new JuMP.fix method to fix a variable to a value or to update the value to which a variable is fixed. Calling setvalue on a fixed variable now results in an error in order to avoid silent behavior changes. (Thanks @joaquimg)
    • Nonlinear expressions now print out similarly to linear/quadratic expressions (useful for debugging!)
    • New category keyword to @variable. Used for specifying categories of anonymous variables.
    • Compatibility with Julia 0.6-dev.
    • Minor fixes and improvements (Thanks @cossio, @ccoffrin, @blegat)

    Version 0.15.1 (January 31, 2017)

    • Bugfix for @LinearConstraints and friends

    Version 0.15.0 (December 22, 2016)

    • Julia 0.5.0 is the minimum required version for this release.
    • Document support for BARON solver
    • Enable info callbacks in more states than before, for example, for recording solutions. New when argument to addinfocallback (#814, thanks @yeesian)
    • Improved support for anonymous variables. This includes new warnings for potentially confusing use of the traditional non-anonymous syntax:
      • When multiple variables in a model are given the same name
      • When non-symbols are used as names, for example, @variable(m, x[1][1:N])
    • Improvements in iterating over JuMP containers (#836, thanks @IssamT)
    • Support for writing variable names in .lp file output (Thanks @leethargo)
    • Support for querying duals to SDP problems (Thanks @blegat)
    • The comprehension syntax with curly braces sum{}, prod{}, and norm2{} has been deprecated in favor of Julia's native comprehension syntax sum(), prod() and norm() as previously announced. (For early adopters of the new syntax, norm2() was renamed to norm() without deprecation.)
    • Unit tests rewritten to use Base.Test instead of FactCheck
    • Improved support for operations with matrices of JuMP types (Thanks @ExpandingMan)
    • The syntax to halt a solver from inside a callback has changed from throw(CallbackAbort()) to return JuMP.StopTheSolver
    • Minor bug fixes

    Version 0.14.2 (December 12, 2016)

    • Allow singleton anonymous variables (includes bugfix)

    Version 0.14.1 (September 12, 2016)

    • More consistent handling of states in informational callbacks, includes a new when parameter to addinfocallback for specifying in which state an informational callback should be called.

    Version 0.14.0 (August 7, 2016)

    • Compatibility with Julia 0.5 and ForwardDiff 0.2
    • Support for "anonymous" variables, constraints, expressions, and parameters, for example, x = @variable(m, [1:N]) instead of @variable(m, x[1:N])
    • Support for retrieving constraints from a model by name via getconstraint
    • @NLconstraint now returns constraint references (as expected).
    • Support for vectorized expressions within lazy constraints
    • On Julia 0.5, parse new comprehension syntax sum(x[i] for i in 1:N if isodd(i)) instead of sum{ x[i], i in 1:N; isodd(i) }. The old syntax with curly braces will be deprecated in JuMP 0.15.
    • Now possible to provide nonlinear expressions as "raw" Julia Expr objects instead of using JuMP's nonlinear macros. This input format is useful for programmatically generated expressions.
    • s/Mathematical Programming/Mathematical Optimization/
    • Support for local cuts (Thanks to @madanim, Mehdi Madani)
    • Document Xpress interface developed by @joaquimg, Joaquim Dias Garcia
    • Minor bug and deprecation fixes (Thanks @odow, @jrevels)

    Version 0.13.2 (May 16, 2016)

    • Compatibility update for MathProgBase

    Version 0.13.1 (May 3, 2016)

    • Fix broken deprecation for registerNLfunction.

    Version 0.13.0 (April 29, 2016)

    • Most exported methods and macros have been renamed to avoid camelCase. See the list of changes here. There is a 1-1 mapping from the old names to the new, and it is safe to simply replace the names to update existing models.
    • Specify variable lower/upper bounds in @variable using the lowerbound and upperbound keyword arguments.
    • Change name printed for variable using the basename keyword argument to @variable.
    • New @variables macro allows multi-line declaration of groups of variables.
    • A number of solver methods previously available only through MathProgBase are now exposed directly in JuMP. The fix was recorded live.
    • Compatibility fixes with Julia 0.5.
    • The "end" indexing syntax is no longer supported within JuMPArrays which do not use 1-based indexing until upstream issues are resolved, see here.

    Version 0.12.2 (March 9, 2016)

    • Small fixes for nonlinear optimization

    Version 0.12.1 (March 1, 2016)

    • Fix a regression in slicing for JuMPArrays (when not using 1-based indexing)

    Version 0.12.0 (February 27, 2016)

    • The automatic differentiation functionality has been completely rewritten with a number of user-facing changes:
      • @defExpr and @defNLExpr now take the model as the first argument. The previous one-argument version of @defExpr is deprecated; all expressions should be named. For example, replace @defExpr(2x+y) with @defExpr(jump_model, my_expr, 2x+y).
      • JuMP no longer uses Julia's variable binding rules for efficiently re-solving a sequence of nonlinear models. Instead, we have introduced nonlinear parameters. This is a breaking change, so we have added a warning message when we detect models that may depend on the old behavior.
      • Support for user-defined functions integrated within nonlinear JuMP expressions.
    • Replaced iteration over AffExpr with Number-like scalar iteration; previous iteration behavior is now available via linearterms(::AffExpr).
    • Stopping the solver via throw(CallbackAbort()) from a callback no longer triggers an exception. Instead, solve() returns UserLimit status.
    • getDual() now works for conic problems (Thanks @emreyamangil.)

    Version 0.11.3 (February 4, 2016)

    • Bug-fix for problems with quadratic objectives and semidefinite constraints

    Version 0.11.2 (January 14, 2016)

    • Compatibility update for Mosek

    Version 0.11.1 (December 1, 2015)

    • Remove usage of @compat in tests.
    • Fix updating quadratic objectives for nonlinear models.

    Version 0.11.0 (November 30, 2015)

    • Julia 0.4.0 is the minimum required version for this release.
    • Fix for scoping semantics of index variables in sum{}. Index variables no longer leak into the surrounding scope.
    • Addition of the solve(m::Model, relaxation=true) keyword argument to solve the standard continuous relaxation of model m
    • The getConstraintBounds() method allows access to the lower and upper bounds of all constraints in a (nonlinear) model.
    • Update for breaking changes in MathProgBase

    Version 0.10.3 (November 20, 2015)

    • Fix a rare error when parsing quadratic expressions
    • Fix Variable() constructor with default arguments
    • Detect unrecognized keywords in solve()

    Version 0.10.2 (September 28, 2015)

    • Fix for deprecation warnings

    Version 0.10.1 (September 3, 2015)

    • Fixes for ambiguity warnings.
    • Fix for breaking change in precompilation syntax in Julia 0.4-pre

    Version 0.10.0 (August 31, 2015)

    • Support (on Julia 0.4 and later) for conditions in indexing @defVar and @addConstraint constructs, for example, @defVar(m, x[i=1:5,j=1:5; i+j >= 3])
    • Support for vectorized operations on Variables and expressions. See the documentation for details.
    • New getVar() method to access variables in a model by name
    • Support for semidefinite programming.
    • Dual solutions are now available for general nonlinear problems. You may call getDual on a reference object for a nonlinear constraint, and getDual on a variable object for Lagrange multipliers from active bounds.
    • Introduce warnings for two common performance traps: too many calls to getValue() on a collection of variables and use of the + operator in a loop to sum expressions.
    • Second-order cone constraints can be written directly with the norm() and norm2{} syntax.
    • Implement MathProgBase interface for querying Hessian-vector products.
    • Iteration over JuMPContainers is deprecated; instead, use the keys and values functions, and zip(keys(d),values(d)) for the old behavior.
    • @defVar returns Array{Variable,N} when each of N index sets are of the form 1:nᵢ.
    • Module precompilation: on Julia 0.4 and later, using JuMP is now much faster.

    Version 0.9.3 (August 11, 2015)

    • Fixes for FactCheck testing on julia v0.4.

    Version 0.9.2 (June 27, 2015)

    • Fix bug in @addConstraints.

    Version 0.9.1 (April 25, 2015)

    • Fix for Julia 0.4-dev.
    • Small infrastructure improvements for extensions.

    Version 0.9.0 (April 18, 2015)

    • Comparison operators for constructing constraints (for example, 2x >= 1) have been deprecated. Instead, construct the constraints explicitly in the @addConstraint macro to add them to the model, or in the @LinearConstraint macro to create a stand-alone linear constraint instance.
    • getValue() method implemented to compute the value of a nonlinear subexpression
    • JuMP is now released under the Mozilla Public License version 2.0 (was previously LGPL). MPL is a copyleft license which is less restrictive than LGPL, especially for embedding JuMP within other applications.
    • A number of performance improvements in ReverseDiffSparse for computing derivatives.
    • MathProgBase.getsolvetime(m) now returns the solution time reported by the solver, if available. (Thanks @odow, Oscar Dowson)
    • Formatting fix for LP format output. (Thanks @sbebo, Leonardo Taccari).

    Version 0.8.0 (February 17, 2015)

    • Nonlinear subexpressions now supported with the @defNLExpr macro.
    • SCS supported for solving second-order conic problems.
    • setXXXCallback family deprecated in favor of addXXXCallback.
    • Multiple callbacks of the same type can be registered.
    • Added support for informational callbacks via addInfoCallback.
    • A CallbackAbort exception can be thrown from callback to safely exit optimization.

    Version 0.7.4 (February 4, 2015)

    • Reduced costs and linear constraint duals are now accessible when quadratic constraints are present.
    • Two-sided nonlinear constraints are supported.
    • Methods for accessing the number of variables and constraints in a model are renamed.
    • New default procedure for setting initial values in nonlinear optimization: project zero onto the variable bounds.
    • Small bug fixes.

    Version 0.7.3 (January 14, 2015)

    • Fix a method ambiguity conflict with Compose.jl (cosmetic fix)

    Version 0.7.2 (January 9, 2015)

    • Fix a bug in sum(::JuMPDict)
    • Added the setCategory function to change a variables category (for example, continuous or binary)

    after construction, and getCategory to retrieve the variable category.

    Version 0.7.1 (January 2, 2015)

    • Fix a bug in parsing linear expressions in macros. Affects only Julia 0.4 and later.

    Version 0.7.0 (December 29, 2014)

    Linear/quadratic/conic programming

    • Breaking change: The syntax for column-wise model generation has been changed to use keyword arguments in @defVar.
    • On Julia 0.4 and later, variables and coefficients may be multiplied in any order within macros. That is, variable*coefficient is now valid syntax.
    • ECOS supported for solving second-order conic problems.

    Nonlinear programming

    • Support for skipping model generation when solving a sequence of nonlinear models with changing data.
    • Fix a memory leak when solving a sequence of nonlinear models.
    • The @addNLConstraint macro now supports the three-argument version to define sets of nonlinear constraints.
    • KNITRO supported as a nonlinear solver.
    • Speed improvements for model generation.
    • The @addNLConstraints macro supports adding multiple (groups of) constraints at once. Syntax is similar to @addConstraints.
    • Discrete variables allowed in nonlinear problems for solvers which support them (currently only KNITRO).

    General

    • Starting values for variables may now be specified with @defVar(m, x, start=value).
    • The setSolver function allows users to change the solver subsequent to model creation.
    • Support for "fixed" variables via the @defVar(m, x == 1) syntax.
    • Unit tests rewritten to use FactCheck.jl, improved testing across solvers.

    Version 0.6.3 (October 19, 2014)

    • Fix a bug in multiplying two AffExpr objects.

    Version 0.6.2 (October 11, 2014)

    • Further improvements and bug fixes for printing.
    • Fixed a bug in @defExpr.
    • Support for accessing expression graphs through the MathProgBase NLP interface.

    Version 0.6.1 (September 19, 2014)

    • Improvements and bug fixes for printing.

    Version 0.6.0 (September 9, 2014)

    • Julia 0.3.0 is the minimum required version for this release.
    • buildInternalModel(m::Model) added to build solver-level model in memory without optimizing.
    • Deprecate load_model_only keyword argument to solve.
    • Add groups of constraints with @addConstraints macro.
    • Unicode operators now supported, including for sum, for prod, and /
    • Quadratic constraints supported in @addConstraint macro.
    • Quadratic objectives supported in @setObjective macro.
    • MathProgBase solver-independent interface replaces Ipopt-specific interface for nonlinear problems
      • Breaking change: IpoptOptions no longer supported to specify solver options, use m = Model(solver=IpoptSolver(options...)) instead.
    • New solver interfaces: ECOS, NLopt, and nonlinear support for MOSEK
    • New option to control whether the lazy constraint callback is executed at each node in the B&B tree or just when feasible solutions are found
    • Add support for semicontinuous and semi-integer variables for those solvers that support them.
    • Add support for index dependencies (for example, triangular indexing) in @defVar, @addConstraint, and @defExpr (for example, @defVar(m, x[i=1:10,j=i:10])).
      • This required some changes to the internal structure of JuMP containers, which may break code that explicitly stored JuMPDict objects.

    Version 0.5.8 (September 24, 2014)

    • Fix a bug with specifying solvers (affects Julia 0.2 only)

    Version 0.5.7 (September 5, 2014)

    • Fix a bug in printing models

    Version 0.5.6 (September 2, 2014)

    • Add support for semicontinuous and semi-integer variables for those solvers that support them.
      • Breaking change: Syntax for Variable() constructor has changed (use of this interface remains discouraged)
    • Update for breaking changes in MathProgBase

    Version 0.5.5 (July 6, 2014)

    • Fix bug with problem modification: adding variables that did not appear in existing constraints or objective.

    Version 0.5.4 (June 19, 2014)

    • Update for breaking change in MathProgBase which reduces loading times for using JuMP
    • Fix error when MIPs not solved to optimality

    Version 0.5.3 (May 21, 2014)

    • Update for breaking change in ReverseDiffSparse

    Version 0.5.2 (May 9, 2014)

    • Fix compatibility with Julia 0.3 prerelease

    Version 0.5.1 (May 5, 2014)

    • Fix a bug in coefficient handling inside lazy constraints and user cuts

    Version 0.5.0 (May 2, 2014)

    • Support for nonlinear optimization with exact, sparse second-order derivatives automatically computed. Ipopt is currently the only solver supported.
    • getValue for AffExpr and QuadExpr
    • Breaking change: getSolverModel replaced by getInternalModel, which returns the internal MathProgBase-level model
    • Groups of constraints can be specified with @addConstraint (see documentation for details). This is not a breaking change.
    • dot(::JuMPDict{Variable},::JuMPDict{Variable}) now returns the corresponding quadratic expression.

    Version 0.4.1 (March 24, 2014)

    • Fix bug where change in objective sense was ignored when re-solving a model.
    • Fix issue with handling zero coefficients in AffExpr.

    Version 0.4.0 (March 10, 2014)

    • Support for SOS1 and SOS2 constraints.
    • Solver-independent callback for user heuristics.
    • dot and sum implemented for JuMPDict objects. Now you can say @addConstraint(m, dot(a,x) <= b).
    • Developers: support for extensions to JuMP. See definition of Model in src/JuMP.jl for more details.
    • Option to construct the low-level model before optimizing.

    Version 0.3.2 (February 17, 2014)

    • Improved model printing
      • Preliminary support for IJulia output

    Version 0.3.1 (January 30, 2014)

    • Documentation updates
    • Support for MOSEK
    • CPLEXLink renamed to CPLEX

    Version 0.3.0 (January 21, 2014)

    • Unbounded/infeasibility rays: getValue() will return the corresponding components of an unbounded ray when a model is unbounded, if supported by the selected solver. getDual() will return an infeasibility ray (Farkas proof) if a model is infeasible and the selected solver supports this feature.
    • Solver-independent callbacks for user generated cuts.
    • Use new interface for solver-independent QCQP.
    • setlazycallback renamed to setLazyCallback for consistency.

    Version 0.2.0 (December 15, 2013)

    Breaking

    • Objective sense is specified in setObjective instead of in the Model constructor.
    • lpsolver and mipsolver merged into single solver option.

    Added

    • Problem modification with efficient LP restarts and MIP warm-starts.
    • Relatedly, column-wise modeling now supported.
    • Solver-independent callbacks supported. Currently we support only a "lazy constraint" callback, which works with Gurobi, CPLEX, and GLPK. More callbacks coming soon.

    Version 0.1.2 (November 16, 2013)

    • Bug fixes for printing, improved error messages.
    • Allow AffExpr to be used in macros; for example, ex = y + z; @addConstraint(m, x + 2*ex <= 3)

    Version 0.1.1 (October 23, 2013)

    • Update for solver specification API changes in MathProgBase.

    Version 0.1.0 (October 3, 2013)

    • Initial public release.
    diff --git a/previews/PR3561/developers/checklists/index.html b/previews/PR3561/developers/checklists/index.html index b697999ded7..5509c16dc25 100644 --- a/previews/PR3561/developers/checklists/index.html +++ b/previews/PR3561/developers/checklists/index.html @@ -62,4 +62,4 @@ ## Optional - - [ ] Add package metadata to `docs/packages.toml` + - [ ] Add package metadata to `docs/packages.toml` diff --git a/previews/PR3561/developers/contributing/index.html b/previews/PR3561/developers/contributing/index.html index c4bda612eeb..002ab88fd56 100644 --- a/previews/PR3561/developers/contributing/index.html +++ b/previews/PR3561/developers/contributing/index.html @@ -25,4 +25,4 @@ $ git checkout master -$ git pull
    Note

    If you have suggestions to improve this guide, please make a pull request. It's particularly helpful if you do this after your first pull request because you'll know all the parts that could be explained better.

    +$ git pull
    Note

    If you have suggestions to improve this guide, please make a pull request. It's particularly helpful if you do this after your first pull request because you'll know all the parts that could be explained better.

    diff --git a/previews/PR3561/developers/custom_solver_binaries/index.html b/previews/PR3561/developers/custom_solver_binaries/index.html index 078e67050c4..2ee5b72e45c 100644 --- a/previews/PR3561/developers/custom_solver_binaries/index.html +++ b/previews/PR3561/developers/custom_solver_binaries/index.html @@ -90,4 +90,4 @@ libCbc_path = "/usr/local/Cellar/cbc/2.10.5/lib/libCbc.3.10.5" libOsiCbc_path = "/usr/local/Cellar/cbc/2.10.5/lib/libOsiCbc.3.10.5" libcbcsolver_path = "/usr/local/Cellar/cbc/2.10.5/lib/libCbcSolver.3.10.5"
    Info

    Note that capitalization matters, so libcbcsolver_path corresponds to libCbcSolver.3.10.5.

    Override entire artifact

    To use the homebrew install as our custom binary we add the following to ~/.julia/artifacts/Overrides.toml:

    # Override for Cbc_jll
    -e481bc81db5e229ba1f52b2b4bd57484204b1b06 = "/usr/local/Cellar/cbc/2.10.5"
    +e481bc81db5e229ba1f52b2b4bd57484204b1b06 = "/usr/local/Cellar/cbc/2.10.5" diff --git a/previews/PR3561/developers/extensions/index.html b/previews/PR3561/developers/extensions/index.html index 0b2e349f979..3b2ac973ecc 100644 --- a/previews/PR3561/developers/extensions/index.html +++ b/previews/PR3561/developers/extensions/index.html @@ -301,4 +301,4 @@ _function_barrier(names, model, F, S) end return names -end
    Note

    It is important to explicitly type the F and S arguments. If you leave them untyped, for example, function _function_barrier(names, model, F, S), Julia will not specialize the function calls and performance will not be improved.

    +end
    Note

    It is important to explicitly type the F and S arguments. If you leave them untyped, for example, function _function_barrier(names, model, F, S), Julia will not specialize the function calls and performance will not be improved.

    diff --git a/previews/PR3561/developers/roadmap/index.html b/previews/PR3561/developers/roadmap/index.html index aee97930d75..a441dba808a 100644 --- a/previews/PR3561/developers/roadmap/index.html +++ b/previews/PR3561/developers/roadmap/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -

    Development roadmap

    The JuMP developers have compiled this roadmap document to share their plans and goals with the JuMP community. Contributions to roadmap issues are especially invited.

    Most of these issues will require changes to both JuMP and MathOptInterface, and are non-trivial in their implementation. They are in no particular order, but represent broad themes that we see as areas in which JuMP could be improved.

    +

    Development roadmap

    The JuMP developers have compiled this roadmap document to share their plans and goals with the JuMP community. Contributions to roadmap issues are especially invited.

    Most of these issues will require changes to both JuMP and MathOptInterface, and are non-trivial in their implementation. They are in no particular order, but represent broad themes that we see as areas in which JuMP could be improved.

    diff --git a/previews/PR3561/developers/style/index.html b/previews/PR3561/developers/style/index.html index 32010162842..8969e54928d 100644 --- a/previews/PR3561/developers/style/index.html +++ b/previews/PR3561/developers/style/index.html @@ -182,4 +182,4 @@ end # module TestPkg -TestPkg.runtests()

    Break the tests into multiple files, with one module per file, so that subsets of the codebase can be tested by calling include with the relevant file.

    +TestPkg.runtests()

    Break the tests into multiple files, with one module per file, so that subsets of the codebase can be tested by calling include with the relevant file.

    diff --git a/previews/PR3561/extensions/DimensionalData/index.html b/previews/PR3561/extensions/DimensionalData/index.html index dfbd9d0fe8d..d5b60a7a673 100644 --- a/previews/PR3561/extensions/DimensionalData/index.html +++ b/previews/PR3561/extensions/DimensionalData/index.html @@ -39,4 +39,4 @@ 2-element DimArray{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape},1} with dimensions: Dim{:j} Categorical{String} String["a", "b"] ForwardOrdered "a" x[2,a] + x[3,a] + x[4,a] ≤ 1 - "b" x[2,b] + x[3,b] + x[4,b] ≤ 1

    Documentation

    See the DimensionalData.jl documentation for more details on the syntax and features of DimensionalData.DimArray.

    + "b" x[2,b] + x[3,b] + x[4,b] ≤ 1

    Documentation

    See the DimensionalData.jl documentation for more details on the syntax and features of DimensionalData.DimArray.

    diff --git a/previews/PR3561/extensions/introduction/index.html b/previews/PR3561/extensions/introduction/index.html index 3374f8c5953..6f9abdd5865 100644 --- a/previews/PR3561/extensions/introduction/index.html +++ b/previews/PR3561/extensions/introduction/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -

    Introduction

    This section of the documentation contains brief documentation for some popular JuMP extensions. The list of extensions is not exhaustive, but instead is intended to help you discover popular JuMP extensions, and to give you an overview of the types of extensions that are possible to write with JuMP.

    Affiliation

    Packages beginning with jump-dev/ are developed and maintained by the JuMP developers.

    Packages that do not begin with jump-dev/ are developed independently. The developers of these packages requested or consented to the inclusion of their README contents in the JuMP documentation for the benefit of users.

    Adding new extensions

    Written an extension? Add it to this section of the JuMP documentation by making a pull request to the docs/packages.toml file.

    Weak dependencies

    Some extensions listed in this section are implemented using the weak dependency feature added to Julia in v1.9. These extensions are activated if and only if you have JuMP and the other package loaded into your current scope with using or import.

    Compat

    Using a weak dependency requires Julia v1.9 or later.

    +

    Introduction

    This section of the documentation contains brief documentation for some popular JuMP extensions. The list of extensions is not exhaustive, but instead is intended to help you discover popular JuMP extensions, and to give you an overview of the types of extensions that are possible to write with JuMP.

    Affiliation

    Packages beginning with jump-dev/ are developed and maintained by the JuMP developers.

    Packages that do not begin with jump-dev/ are developed independently. The developers of these packages requested or consented to the inclusion of their README contents in the JuMP documentation for the benefit of users.

    Adding new extensions

    Written an extension? Add it to this section of the JuMP documentation by making a pull request to the docs/packages.toml file.

    Weak dependencies

    Some extensions listed in this section are implemented using the weak dependency feature added to Julia in v1.9. These extensions are activated if and only if you have JuMP and the other package loaded into your current scope with using or import.

    Compat

    Using a weak dependency requires Julia v1.9 or later.

    diff --git a/previews/PR3561/index.html b/previews/PR3561/index.html index 48d99473a4c..001fdaf3cb7 100644 --- a/previews/PR3561/index.html +++ b/previews/PR3561/index.html @@ -10,4 +10,4 @@ journal = {Mathematical Programming Computation}, year = {2023}, doi = {10.1007/s12532-023-00239-3} -}

    NumFOCUS

    NumFOCUS logo

    JuMP is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit charity in the United States. NumFOCUS provides JuMP with fiscal, legal, and administrative support to help ensure the health and sustainability of the project. Visit numfocus.org for more information.

    You can support JuMP by donating.

    Donations to JuMP are managed by NumFOCUS. For donors in the United States, your gift is tax-deductible to the extent provided by law. As with any donation, you should consult with your tax adviser about your particular tax situation.

    JuMP's largest expense is the annual JuMP-dev workshop. Donations will help us provide travel support for JuMP-dev attendees and take advantage of other opportunities that arise to support JuMP development.

    License

    JuMP is licensed under the MPL-2.0 software license. Consult the license and the Mozilla FAQ for more information. In addition, JuMP is typically used in conjunction with solver packages and extensions which have their own licences. Consult their package repositories for the specific licenses that apply.

    +}

    NumFOCUS

    NumFOCUS logo

    JuMP is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit charity in the United States. NumFOCUS provides JuMP with fiscal, legal, and administrative support to help ensure the health and sustainability of the project. Visit numfocus.org for more information.

    You can support JuMP by donating.

    Donations to JuMP are managed by NumFOCUS. For donors in the United States, your gift is tax-deductible to the extent provided by law. As with any donation, you should consult with your tax adviser about your particular tax situation.

    JuMP's largest expense is the annual JuMP-dev workshop. Donations will help us provide travel support for JuMP-dev attendees and take advantage of other opportunities that arise to support JuMP development.

    License

    JuMP is licensed under the MPL-2.0 software license. Consult the license and the Mozilla FAQ for more information. In addition, JuMP is typically used in conjunction with solver packages and extensions which have their own licences. Consult their package repositories for the specific licenses that apply.

    diff --git a/previews/PR3561/installation/index.html b/previews/PR3561/installation/index.html index 67f3d643740..38fd7f44a28 100644 --- a/previews/PR3561/installation/index.html +++ b/previews/PR3561/installation/index.html @@ -21,4 +21,4 @@ [4076af6c] ↓ JuMP v0.21.5 ⇒ v0.18.6 [707a9f91] + JuMPeR v0.6.0 Updating `~/jump_example/Manifest.toml` - ... lines omitted ...

    JuMPeR gets added at version 0.6.0 (+ JuMPeR v0.6.0), but JuMP gets downgraded from 0.21.5 to 0.18.6 (↓ JuMP v0.21.5 ⇒ v0.18.6)! The reason for this is that JuMPeR doesn't support a version of JuMP newer than 0.18.6.

    Tip

    Pay careful attention to the output of the package manager when adding new packages, especially when you see a package being downgraded.

    + ... lines omitted ...

    JuMPeR gets added at version 0.6.0 (+ JuMPeR v0.6.0), but JuMP gets downgraded from 0.21.5 to 0.18.6 (↓ JuMP v0.21.5 ⇒ v0.18.6)! The reason for this is that JuMPeR doesn't support a version of JuMP newer than 0.18.6.

    Tip

    Pay careful attention to the output of the package manager when adding new packages, especially when you see a package being downgraded.

    diff --git a/previews/PR3561/manual/callbacks/index.html b/previews/PR3561/manual/callbacks/index.html index c3800f70fa0..a656cd34b11 100644 --- a/previews/PR3561/manual/callbacks/index.html +++ b/previews/PR3561/manual/callbacks/index.html @@ -84,4 +84,4 @@ end my_callback_function (generic function with 1 method) -julia> set_attribute(model, MOI.HeuristicCallback(), my_callback_function)

    The third argument to submit is a vector of JuMP variables, and the fourth argument is a vector of values corresponding to each variable.

    MOI.submit returns an enum that depends on whether the solver accepted the solution. The possible return codes are:

    • MOI.HEURISTIC_SOLUTION_ACCEPTED
    • MOI.HEURISTIC_SOLUTION_REJECTED
    • MOI.HEURISTIC_SOLUTION_UNKNOWN
    Warning

    Some solvers may accept partial solutions. Others require a feasible integer solution for every variable. If in doubt, provide a complete solution.

    Info

    The heuristic solution callback may be called at fractional nodes in the branch-and-bound tree. There is no guarantee that the callback is called at every fractional primal solution.

    +julia> set_attribute(model, MOI.HeuristicCallback(), my_callback_function)

    The third argument to submit is a vector of JuMP variables, and the fourth argument is a vector of values corresponding to each variable.

    MOI.submit returns an enum that depends on whether the solver accepted the solution. The possible return codes are:

    • MOI.HEURISTIC_SOLUTION_ACCEPTED
    • MOI.HEURISTIC_SOLUTION_REJECTED
    • MOI.HEURISTIC_SOLUTION_UNKNOWN
    Warning

    Some solvers may accept partial solutions. Others require a feasible integer solution for every variable. If in doubt, provide a complete solution.

    Info

    The heuristic solution callback may be called at fractional nodes in the branch-and-bound tree. There is no guarantee that the callback is called at every fractional primal solution.

    diff --git a/previews/PR3561/manual/complex/index.html b/previews/PR3561/manual/complex/index.html index 0ee6f4edb26..b74e5088a4d 100644 --- a/previews/PR3561/manual/complex/index.html +++ b/previews/PR3561/manual/complex/index.html @@ -3,7 +3,7 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -

    Complex number support

    This page explains the complex-valued variables and constraints that JuMP supports. For a worked-example using these features, read the Quantum state discrimination tutorial.

    Complex-valued variables

    Create a complex-valued variable using ComplexPlane:

    julia> model = Model();
    +

    Complex number support

    This page explains the complex-valued variables and constraints that JuMP supports. For a worked-example using these features, read the Quantum state discrimination tutorial.

    Complex-valued variables

    Create a complex-valued variable using ComplexPlane:

    julia> model = Model();
     
     julia> @variable(model, x in ComplexPlane())
     real(x) + imag(x) im

    Note that x is not a VariableRef; instead, it is an affine expression with Complex{Float64}-valued coefficients:

    julia> typeof(x)
    @@ -22,7 +22,7 @@
     AffExpr (alias for GenericAffExpr{Float64, GenericVariableRef{Float64}})

    To create an anonymous variable, use the set keyword argument:

    julia> model = Model();
     
     julia> x = @variable(model, set = ComplexPlane())
    -_[1] + _[2] im

    Complex-valued variable bounds

    Because complex-valued variables lack a total ordering, the definition of a variable bound for a complex-valued variable is ambiguous. If you pass a real- or complex-valued argument to keywords such as lower_bound, upper_bound, and start_value, JuMP will apply the real and imaginary parts to the associated real-valued variables.

    julia> model = Model();
    +_[1] + _[2] im

    Complex-valued variable and start values bounds

    Because complex-valued variables lack a total ordering, the definition of a variable bound for a complex-valued variable is ambiguous. If you pass a real- or complex-valued argument to keywords such as lower_bound, upper_bound, and start_value, JuMP will apply the real and imaginary parts to the associated real-valued variables.

    julia> model = Model();
     
     julia> @variable(
                model,
    @@ -51,7 +51,20 @@
     julia> start_value.(vars)
     2-element Vector{Float64}:
      0.0
    - 4.0

    Complex-valued equality constraints

    JuMP reformulates complex-valued equality constraints into two real-valued constraints: one representing the real part, and one representing the imaginary part. Thus, complex-valued equality constraints can be solved any solver that supports the real-valued constraint type.

    For example:

    julia> model = Model(HiGHS.Optimizer);
    + 4.0

    You can modify the bounds and start values by passing imag(x) or real(x) to the appropriate function:

    julia> set_lower_bound(imag(x), 2)
    +
    +julia> lower_bound(imag(x))
    +2.0
    +
    +julia> delete_upper_bound(real(x))
    +
    +julia> has_upper_bound(real(x))
    +false
    +
    +julia> set_start_value(imag(x), 3)
    +
    +julia> start_value(imag(x))
    +3.0

    Complex-valued equality constraints

    JuMP reformulates complex-valued equality constraints into two real-valued constraints: one representing the real part, and one representing the imaginary part. Thus, complex-valued equality constraints can be solved any solver that supports the real-valued constraint type.

    For example:

    julia> model = Model(HiGHS.Optimizer);
     
     julia> set_silent(model)
     
    @@ -132,7 +145,43 @@
     GenericAffExpr{ComplexF64, VariableRef}
     
     julia> typeof(H[2, 1])
    -GenericAffExpr{ComplexF64, VariableRef}

    Hermitian PSD constraints

    The HermitianPSDCone can also be used in the @constraint macro:

    julia> model = Model();
    +GenericAffExpr{ComplexF64, VariableRef}

    Start values

    When setting the start value, you must be careful to set only the upper triangle of real variables, and the upper triangle excluding the diagonal of imaginary variables:

    julia> import LinearAlgebra
    +
    +julia> function set_hermitian_start(
    +           H::LinearAlgebra.Hermitian,
    +           start::LinearAlgebra.Hermitian,
    +       )
    +           for j in 1:size(H, 2), i in 1:j
    +               set_start_value(real(H[i, j]), real(start[i, j]))
    +               if i < j
    +                   set_start_value(imag(H[i, j]), imag(start[i, j]))
    +               end
    +           end
    +           return
    +       end
    +set_hermitian_start (generic function with 1 method)
    +
    +julia> H0 = LinearAlgebra.Hermitian(
    +           [1 (2+3im) (5+6im); (2-3im) 4 (7+8im); (5-6im) (7-8im) 9],
    +       )
    +3×3 LinearAlgebra.Hermitian{Complex{Int64}, Matrix{Complex{Int64}}}:
    + 1+0im  2+3im  5+6im
    + 2-3im  4+0im  7+8im
    + 5-6im  7-8im  9+0im
    +
    +julia> set_hermitian_start(H, H0)
    +
    +julia> start_value.(all_variables(model))
    +9-element Vector{Float64}:
    + 1.0
    + 2.0
    + 4.0
    + 5.0
    + 7.0
    + 9.0
    + 3.0
    + 6.0
    + 8.0

    Hermitian PSD constraints

    The HermitianPSDCone can also be used in the @constraint macro:

    julia> model = Model();
     
     julia> @variable(model, x[1:2])
     2-element Vector{VariableRef}:
    @@ -148,4 +197,4 @@
     
     julia> @constraint(model, H in HermitianPSDCone())
     [x[1]  im;
    - -im   -x[2]] ∈ HermitianPSDCone()
    Note

    The matrix H in H in HermitianPSDCone() must be a LinearAlgebra.Hermitian matrix type. A build_constraint error will be thrown if the matrix is a different matrix type.

    + -im -x[2]] ∈ HermitianPSDCone()
    Note

    The matrix H in H in HermitianPSDCone() must be a LinearAlgebra.Hermitian matrix type. A build_constraint error will be thrown if the matrix is a different matrix type.

    diff --git a/previews/PR3561/manual/constraints/index.html b/previews/PR3561/manual/constraints/index.html index 9a501f5c5a0..9e0e5ccab91 100644 --- a/previews/PR3561/manual/constraints/index.html +++ b/previews/PR3561/manual/constraints/index.html @@ -753,4 +753,4 @@ (x[1] == x[2]) - 0.0 = 0 julia> @constraint(model, x[1] == x[2] := rhs) -x[1] == x[2] = false +x[1] == x[2] = false diff --git a/previews/PR3561/manual/containers/index.html b/previews/PR3561/manual/containers/index.html index 05ac3983878..639b757bb0c 100644 --- a/previews/PR3561/manual/containers/index.html +++ b/previews/PR3561/manual/containers/index.html @@ -224,4 +224,4 @@ julia> Containers.@container([i = 1:2, j = 1:4; condition(i, j)], i + j) JuMP.Containers.SparseAxisArray{Int64, 2, Tuple{Int64, Int64}} with 2 entries: [1, 2] = 3 - [1, 4] = 5 + [1, 4] = 5 diff --git a/previews/PR3561/manual/expressions/index.html b/previews/PR3561/manual/expressions/index.html index 3da9017e33a..696f0ed23be 100644 --- a/previews/PR3561/manual/expressions/index.html +++ b/previews/PR3561/manual/expressions/index.html @@ -227,4 +227,4 @@ julia> x 2-element Vector{AffExpr}: 1.1 - 0

    Note that for large expressions this will be slower due to the allocation of additional temporary objects.

    + 0

    Note that for large expressions this will be slower due to the allocation of additional temporary objects.

    diff --git a/previews/PR3561/manual/models/index.html b/previews/PR3561/manual/models/index.html index eb751d35c53..8c2f633025a 100644 --- a/previews/PR3561/manual/models/index.html +++ b/previews/PR3561/manual/models/index.html @@ -234,4 +234,4 @@ If you expected the solver to support your problem, you may have an error in your formulation. Otherwise, consider using a different solver. The list of available solvers, along with the problem types they support, is available at https://jump.dev/JuMP.jl/stable/installation/#Supported-solvers. -Stacktrace:
    Warning

    Another downside of direct mode is that the behavior of querying solution information after modifying the problem is solver-specific. This can lead to errors, or the solver silently returning an incorrect value. See OptimizeNotCalled errors for more information.

    +Stacktrace:
    Warning

    Another downside of direct mode is that the behavior of querying solution information after modifying the problem is solver-specific. This can lead to errors, or the solver silently returning an incorrect value. See OptimizeNotCalled errors for more information.

    diff --git a/previews/PR3561/manual/nlp/index.html b/previews/PR3561/manual/nlp/index.html index 69ec28165b3..080b60e3d0c 100644 --- a/previews/PR3561/manual/nlp/index.html +++ b/previews/PR3561/manual/nlp/index.html @@ -344,4 +344,4 @@ f1(x[1]) - 1.0 ≤ 0 f2(x[1], x[2]) - 1.0 ≤ 0 f3(x[2], x[3], x[4]) - 1.0 ≤ 0 - f4(x[1], x[3], x[4], x[5]) - 1.0 ≤ 0

    Known performance issues

    The macro-based input to JuMP's nonlinear interface can cause a performance issue if you:

    1. write a macro with a large number (hundreds) of terms
    2. call that macro from within a function instead of from the top-level in global scope.

    The first issue does not depend on the number of resulting terms in the mathematical expression, but rather the number of terms in the Julia Expr representation of that expression. For example, the expression sum(x[i] for i in 1:1_000_000) contains one million mathematical terms, but the Expr representation is just a single sum.

    The most common cause, other than a lot of tedious typing, is if you write a program that automatically writes a JuMP model as a text file, which you later execute. One example is MINLPlib.jl which automatically transpiled models in the GAMS scalar format into JuMP examples.

    As a rule of thumb, if you are writing programs to automatically generate expressions for the JuMP macros, you should target the Raw expression input instead. For more information, read MathOptInterface Issue#1997.

    + f4(x[1], x[3], x[4], x[5]) - 1.0 ≤ 0

    Known performance issues

    The macro-based input to JuMP's nonlinear interface can cause a performance issue if you:

    1. write a macro with a large number (hundreds) of terms
    2. call that macro from within a function instead of from the top-level in global scope.

    The first issue does not depend on the number of resulting terms in the mathematical expression, but rather the number of terms in the Julia Expr representation of that expression. For example, the expression sum(x[i] for i in 1:1_000_000) contains one million mathematical terms, but the Expr representation is just a single sum.

    The most common cause, other than a lot of tedious typing, is if you write a program that automatically writes a JuMP model as a text file, which you later execute. One example is MINLPlib.jl which automatically transpiled models in the GAMS scalar format into JuMP examples.

    As a rule of thumb, if you are writing programs to automatically generate expressions for the JuMP macros, you should target the Raw expression input instead. For more information, read MathOptInterface Issue#1997.

    diff --git a/previews/PR3561/manual/nonlinear/index.html b/previews/PR3561/manual/nonlinear/index.html index fb4f6e38da2..b1304a93d89 100644 --- a/previews/PR3561/manual/nonlinear/index.html +++ b/previews/PR3561/manual/nonlinear/index.html @@ -196,4 +196,4 @@ y[i] = x[i]^i end return sum(y) -end +end diff --git a/previews/PR3561/manual/objective/index.html b/previews/PR3561/manual/objective/index.html index 1826c76c667..573ed88d664 100644 --- a/previews/PR3561/manual/objective/index.html +++ b/previews/PR3561/manual/objective/index.html @@ -165,4 +165,4 @@ 2 x[1] julia> @constraint(model, obj3 <= 2.0) -x[1] + x[2] ≤ 2 +x[1] + x[2] ≤ 2 diff --git a/previews/PR3561/manual/solutions/index.html b/previews/PR3561/manual/solutions/index.html index 66112c21486..94860b603c4 100644 --- a/previews/PR3561/manual/solutions/index.html +++ b/previews/PR3561/manual/solutions/index.html @@ -371,4 +371,4 @@ x integer => 0.1

    You can also use the functional form, where the first argument is a function that maps variables to their primal values:

    julia> optimize!(model)
     
     julia> primal_feasibility_report(v -> value(v), model)
    -Dict{Any, Float64}()
    +Dict{Any, Float64}() diff --git a/previews/PR3561/manual/variables/index.html b/previews/PR3561/manual/variables/index.html index e7accd53797..a41a5ae0e0f 100644 --- a/previews/PR3561/manual/variables/index.html +++ b/previews/PR3561/manual/variables/index.html @@ -632,4 +632,4 @@ p*x julia> typeof(px) -QuadExpr (alias for GenericQuadExpr{Float64, GenericVariableRef{Float64}})

    When to use a parameter

    Parameters are most useful when solving nonlinear models in a sequence:

    julia> using JuMP, Ipopt
    julia> model = Model(Ipopt.Optimizer);
    julia> set_silent(model)
    julia> @variable(model, x)x
    julia> @variable(model, p in Parameter(1.0))p
    julia> @objective(model, Min, (x - p)^2)x² - 2 p*x + p²
    julia> optimize!(model)
    julia> value(x)1.0
    julia> set_parameter_value(p, 5.0)
    julia> optimize!(model)
    julia> value(x)5.0

    Using parameters can be faster than creating a new model from scratch with updated data because JuMP is able to avoid repeating a number of steps in processing the model before handing it off to the solver.

    +QuadExpr (alias for GenericQuadExpr{Float64, GenericVariableRef{Float64}})

    When to use a parameter

    Parameters are most useful when solving nonlinear models in a sequence:

    julia> using JuMP, Ipopt
    julia> model = Model(Ipopt.Optimizer);
    julia> set_silent(model)
    julia> @variable(model, x)x
    julia> @variable(model, p in Parameter(1.0))p
    julia> @objective(model, Min, (x - p)^2)x² - 2 p*x + p²
    julia> optimize!(model)
    julia> value(x)1.0
    julia> set_parameter_value(p, 5.0)
    julia> optimize!(model)
    julia> value(x)5.0

    Using parameters can be faster than creating a new model from scratch with updated data because JuMP is able to avoid repeating a number of steps in processing the model before handing it off to the solver.

    diff --git a/previews/PR3561/moi/background/duality/index.html b/previews/PR3561/moi/background/duality/index.html index f9996bae41d..c139ce99c62 100644 --- a/previews/PR3561/moi/background/duality/index.html +++ b/previews/PR3561/moi/background/duality/index.html @@ -81,4 +81,4 @@ \max & \sum b_k y_k \\ \text{s.t.} \;\; & C+C^\top - \sum (A_k+A_k^\top) y_k \in \mathcal{S}_+ \\ & C-C^\top - \sum(A_k-A_k^\top) y_k = 0 -\end{align}\]

    and we recover $Z = X + X^\top$.

    +\end{align}\]

    and we recover $Z = X + X^\top$.

    diff --git a/previews/PR3561/moi/background/infeasibility_certificates/index.html b/previews/PR3561/moi/background/infeasibility_certificates/index.html index 5ccb1fb045d..3fb049282f4 100644 --- a/previews/PR3561/moi/background/infeasibility_certificates/index.html +++ b/previews/PR3561/moi/background/infeasibility_certificates/index.html @@ -29,4 +29,4 @@ \end{align}\]

    and:

    \[-\sum_{i=1}^m b_i^\top (y_i + \eta d_i) > -\sum_{i=1}^m b_i^\top y_i,\]

    for any feasible dual solution $y$. The latter simplifies to $-\sum_{i=1}^m b_i^\top d_i > 0$. For a maximization problem, the inequality is $\sum_{i=1}^m b_i^\top d_i < 0$. (Note that these are the same inequality, modulo a - sign.)

    If the solver has found a certificate of primal infeasibility:

    Note

    The choice of whether to scale the ray $d$ to have magnitude 1 is left to the solver.

    Infeasibility certificates of variable bounds

    Many linear solvers (for example, Gurobi) do not provide explicit access to the primal infeasibility certificate of a variable bound. However, given a set of linear constraints:

    \[\begin{align} l_A \le A x \le u_A \\ l_x \le x \le u_x, -\end{align}\]

    the primal certificate of the variable bounds can be computed using the primal certificate associated with the affine constraints, $d$. (Note that $d$ will have one element for each row of the $A$ matrix, and that some or all of the elements in the vectors $l_A$ and $u_A$ may be $\pm \infty$. If both $l_A$ and $u_A$ are finite for some row, the corresponding element in `d must be 0.)

    Given $d$, compute $\bar{d} = d^\top A$. If the bound is finite, a certificate for the lower variable bound of $x_i$ is $\max\{\bar{d}_i, 0\}$, and a certificate for the upper variable bound is $\min\{\bar{d}_i, 0\}$.

    +\end{align}\]

    the primal certificate of the variable bounds can be computed using the primal certificate associated with the affine constraints, $d$. (Note that $d$ will have one element for each row of the $A$ matrix, and that some or all of the elements in the vectors $l_A$ and $u_A$ may be $\pm \infty$. If both $l_A$ and $u_A$ are finite for some row, the corresponding element in `d must be 0.)

    Given $d$, compute $\bar{d} = d^\top A$. If the bound is finite, a certificate for the lower variable bound of $x_i$ is $\max\{\bar{d}_i, 0\}$, and a certificate for the upper variable bound is $\min\{\bar{d}_i, 0\}$.

    diff --git a/previews/PR3561/moi/background/motivation/index.html b/previews/PR3561/moi/background/motivation/index.html index 5bbe8885e75..77fc3ad661f 100644 --- a/previews/PR3561/moi/background/motivation/index.html +++ b/previews/PR3561/moi/background/motivation/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -

    Motivation

    MathOptInterface (MOI) is a replacement for MathProgBase, the first-generation abstraction layer for mathematical optimization previously used by JuMP and Convex.jl.

    To address a number of limitations of MathProgBase, MOI is designed to:

    • Be simple and extensible
      • unifying linear, quadratic, and conic optimization,
      • seamlessly facilitating extensions to essentially arbitrary constraints and functions (for example, indicator constraints, complementarity constraints, and piecewise-linear functions)
    • Be fast
      • by allowing access to a solver's in-memory representation of a problem without writing intermediate files (when possible)
      • by using multiple dispatch and avoiding requiring containers of non-concrete types
    • Allow a solver to return multiple results (for example, a pool of solutions)
    • Allow a solver to return extra arbitrary information via attributes (for example, variable- and constraint-wise membership in an irreducible inconsistent subset for infeasibility analysis)
    • Provide a greatly expanded set of status codes explaining what happened during the optimization procedure
    • Enable a solver to more precisely specify which problem classes it supports
    • Enable both primal and dual warm starts
    • Enable adding and removing both variables and constraints by indices that are not required to be consecutive
    • Enable any modification that the solver supports to an existing model
    • Avoid requiring the solver wrapper to store an additional copy of the problem data
    +

    Motivation

    MathOptInterface (MOI) is a replacement for MathProgBase, the first-generation abstraction layer for mathematical optimization previously used by JuMP and Convex.jl.

    To address a number of limitations of MathProgBase, MOI is designed to:

    • Be simple and extensible
      • unifying linear, quadratic, and conic optimization,
      • seamlessly facilitating extensions to essentially arbitrary constraints and functions (for example, indicator constraints, complementarity constraints, and piecewise-linear functions)
    • Be fast
      • by allowing access to a solver's in-memory representation of a problem without writing intermediate files (when possible)
      • by using multiple dispatch and avoiding requiring containers of non-concrete types
    • Allow a solver to return multiple results (for example, a pool of solutions)
    • Allow a solver to return extra arbitrary information via attributes (for example, variable- and constraint-wise membership in an irreducible inconsistent subset for infeasibility analysis)
    • Provide a greatly expanded set of status codes explaining what happened during the optimization procedure
    • Enable a solver to more precisely specify which problem classes it supports
    • Enable both primal and dual warm starts
    • Enable adding and removing both variables and constraints by indices that are not required to be consecutive
    • Enable any modification that the solver supports to an existing model
    • Avoid requiring the solver wrapper to store an additional copy of the problem data
    diff --git a/previews/PR3561/moi/background/naming_conventions/index.html b/previews/PR3561/moi/background/naming_conventions/index.html index 563626af990..8eba93d3387 100644 --- a/previews/PR3561/moi/background/naming_conventions/index.html +++ b/previews/PR3561/moi/background/naming_conventions/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -

    Naming conventions

    MOI follows several conventions for naming functions and structures. These should also be followed by packages extending MOI.

    Sets

    Sets encode the structure of constraints. Their names should follow the following conventions:

    • Abstract types in the set hierarchy should begin with Abstract and end in Set, for example, AbstractScalarSet, AbstractVectorSet.
    • Vector-valued conic sets should end with Cone, for example, NormInfinityCone, SecondOrderCone.
    • Vector-valued Cartesian products should be plural and not end in Cone, for example, Nonnegatives, not NonnegativeCone.
    • Matrix-valued conic sets should provide two representations: ConeSquare and ConeTriangle, for example, RootDetConeTriangle and RootDetConeSquare. See Matrix cones for more details.
    • Scalar sets should be singular, not plural, for example, Integer, not Integers.
    • As much as possible, the names should follow established conventions in the domain where this set is used: for instance, convex sets should have names close to those of CVX, and constraint-programming sets should follow MiniZinc's constraints.
    +

    Naming conventions

    MOI follows several conventions for naming functions and structures. These should also be followed by packages extending MOI.

    Sets

    Sets encode the structure of constraints. Their names should follow the following conventions:

    • Abstract types in the set hierarchy should begin with Abstract and end in Set, for example, AbstractScalarSet, AbstractVectorSet.
    • Vector-valued conic sets should end with Cone, for example, NormInfinityCone, SecondOrderCone.
    • Vector-valued Cartesian products should be plural and not end in Cone, for example, Nonnegatives, not NonnegativeCone.
    • Matrix-valued conic sets should provide two representations: ConeSquare and ConeTriangle, for example, RootDetConeTriangle and RootDetConeSquare. See Matrix cones for more details.
    • Scalar sets should be singular, not plural, for example, Integer, not Integers.
    • As much as possible, the names should follow established conventions in the domain where this set is used: for instance, convex sets should have names close to those of CVX, and constraint-programming sets should follow MiniZinc's constraints.
    diff --git a/previews/PR3561/moi/changelog/index.html b/previews/PR3561/moi/changelog/index.html index bf88d880860..2e83eaeef5e 100644 --- a/previews/PR3561/moi/changelog/index.html +++ b/previews/PR3561/moi/changelog/index.html @@ -31,4 +31,4 @@ end write(path, s) end -end

    v0.9.22 (May 22, 2021)

    This release contains backports from the ongoing development of the v0.10 release.

    • Improved type inference in Utilities, Bridges and FileFormats submodules to reduce latency.
    • Improved performance of Utilities.is_canonical.
    • Fixed Utilities.pass_nonvariable_constraints with bridged variables.
    • Fixed performance regression of Utilities.Model.
    • Fixed ordering of objective setting in parser.

    v0.9.21 (April 23, 2021)

    • Added supports_shift_constant.
    • Improve performance of bridging quadratic constraints.
    • Add precompilation statements.
    • Large improvements to the documentation.
    • Fix a variety of inference issues, benefiting precompilation and reducing initial latency.
    • RawParameters are now ignored when resetting a CachingOptimizer. Previously, changing the underlying optimizer after RawParameters were set would throw an error.
    • Utilities.AbstractModel is being refactored. This may break users interacting with private fields of a model generated using @model.

    v0.9.20 (February 20, 2021)

    • Improved performance of Utilities.ScalarFunctionIterator
    • Added support for compute_conflict to MOI layers
    • Added test with zero off-diagonal quadratic term in objective
    • Fixed double deletion of nested bridged SingleVariable/VectorOfVariables constraints
    • Fixed modification of un-set objective
    • Fixed function modification with duplicate terms
    • Made unit tests abort without failing if the problem class is not supported
    • Formatted code with JuliaFormatter
    • Clarified BasisStatusCode's docstring

    v0.9.19 (December 1, 2020)

    • Added CallbackNodeStatus attribute
    • Added bridge from GreaterThan or LessThan to Interval
    • Added tests for infeasibility certificates and double optimize
    • Fixed support for Julia v1.6
    • Re-organized MOI docs and added documentation for adding a test

    v0.9.18 (November 3, 2020)

    • Various improvements for working with complex numbers
    • Added GeoMeantoRelEntrBridge to bridge a GeometricMeanCone constraint to a relative entropy constraint

    v0.9.17 (September 21, 2020)

    • Fixed CleverDict with variable of negative index value
    • Implement supports_add_constrained_variable for MockOptimizer

    v0.9.16 (September 17, 2020)

    • Various fixes:
      • 32-bit support
      • CleverDict with abstract value type
      • Checks in test suite

    v0.9.15 (September 14, 2020)

    • Bridges improvements:
      • (R)SOCtoNonConvexQuad bridge
      • ZeroOne bridge
      • Use supports_add_constrained_variable in LazyBridgeOptimizer
      • Exposed VariableBridgeCost and ConstraintBridgeCost attributes
      • Prioritize constraining variables on creation according to these costs
      • Refactor bridge debugging
    • Large performance improvements across all submodules
    • Lots of documentation improvements
    • FileFormats improvements:
      • Update MathOptFormat to v0.5
      • Fix supported objectives in FileFormats
    • Testing improvements:
      • Add name option for basic_constraint_test
    • Bug fixes and missing methods
      • Add length for iterators
      • Fix bug with duplicate terms
      • Fix order of LinearOfConstraintIndices

    v0.9.14 (May 30, 2020)

    • Add a solver-independent interface for accessing the set of conflicting constraints an Irreducible Inconsistent Subsystem (#1056).
    • Bump JSONSchema dependency from v0.2 to v0.3 (#1090).
    • Documentation improvements:
      • Fix typos (#1054, #1060, #1061, #1064, #1069, #1070).
      • Remove the outdated recommendation for a package implementing MOI for a solver XXX to be called MathOptInterfaceXXX (#1087).
    • Utilities improvements:
      • Fix is_canonical for quadratic functions (#1081, #1089).
      • Implement add_constrained_variable[s] for CachingOptimizer so that it is added as constrained variables to the underlying optimizer (#1084).
      • Add support for custom objective functions for UniversalFallback (#1086).
      • Deterministic ordering of constraints in UniversalFallback (#1088).
    • Testing improvements:
      • Add NormOneCone/NormInfinityCone tests (#1045).
    • Bridges improvements:
      • Add bridges from Semiinteger and Semicontinuous (#1059).
      • Implement getting ConstraintSet for Variable.FlipSignBridge (#1066).
      • Fix setting ConstraintFunction for Constraint.ScalarizeBridge (#1093).
      • Fix NormOne/NormInf bridges with nonzero constants (#1045).
      • Fix StackOverflow in debug (#1063).
    • FileFormats improvements:
      • [SDPA] Implement the extension for integer variables (#1079).
      • [SDPA] Ignore comments after m and nblocks and detect dat-s extension (#1077).
      • [SDPA] No scaling of off-diagonal coefficient (#1076).
      • [SDPA] Add missing negation of constant (#1075).

    v0.9.13 (March 24, 2020)

    • Added tests for Semicontinuous and Semiinteger variables (#1033).
    • Added tests for using ExprGraphs from NLP evaluators (#1043).
    • Update version compatibilities of dependencies (#1034, #1051, #1052).
    • Fixed typos in documentation (#1044).

    v0.9.12 (February 28, 2020)

    • Fixed writing NLPBlock in MathOptFormat (#1037).
    • Fixed MockOptimizer for result attributes with non-one result index (#1039).
    • Updated test template with instantiate (#1032).

    v0.9.11 (February 21, 2020)

    • Add an option for the model created by Utilities.@model to be a subtype of AbstractOptimizer (#1031).
    • Described dual cone in docstrings of GeoMeanCone and RelativeEntropyCone (#1018, #1028).
    • Fixed typos in documentation (#1022, #1024).
    • Fixed warning of unsupported attribute (#1027).
    • Added more rootdet/logdet conic tests (#1026).
    • Implemented ConstraintDual for Constraint.GeoMeanBridge, Constraint.RootDetBridge and Constraint.LogDetBridge and test duals in tests with GeoMeanCone and RootDetConeTriangle and LogDetConeTriangle cones (#1025, #1026).

    v0.9.10 (January 31, 2020)

    • Added OptimizerWithAttributes grouping an optimizer constructor and a list of optimizer attributes (#1008).
    • Added RelativeEntropyCone with corresponding bridge into exponential cone constraints (#993).
    • Added NormSpectralCone and NormNuclearCone with corresponding bridges into positive semidefinite constraints (#976).
    • Added supports_constrained_variable(s) (#1004).
    • Added dual_set_type (#1002).
    • Added tests for vector specialized version of delete (#989, #1011).
    • Added PSD3 test (#1007).
    • Clarified dual solution of Tests.pow1v and Tests.pow1f (#1013).
    • Added support for EqualTo and Zero in Bridges.Constraint.SplitIntervalBridge (#1005).
    • Fixed Utilities.vectorize for empty vector (#1003).
    • Fixed free variables in LP writer (#1006).

    v0.9.9 (December 29, 2019)

    • Incorporated MathOptFormat.jl as the FileFormats submodule. FileFormats provides readers and writers for a number of standard file formats and MOF, a file format specialized for MOI (#969).
    • Improved performance of deletion of vector of variables in MOI.Utilities.Model (#983).
    • Updated to MutableArithmetics v0.2 (#981).
    • Added MutableArithmetics.promote_operation allocation tests (#975).
    • Fixed inference issue on Julia v1.1 (#982).

    v0.9.8 (December 19, 2019)

    • Implemented MutableArithmetics API (#924).
    • Fixed callbacks with CachingOptimizer (#959).
    • Fixed MOI.dimension for MOI.Complements (#948).
    • Added fallback for add_variables (#972).
    • Added is_diagonal_vectorized_index utility (#965).
    • Improved linear constraints display in manual (#963, #964).
    • Bridges improvements:
      • Added IndicatorSet to SOS1 bridge (#877).
      • Added support for starting values for Variable.VectorizeBridge (#944).
      • Fixed MOI.add_constraints with non-bridged variable constraint on bridged variable (#951).
      • Fixed corner cases and docstring of GeoMeanBridge (#961, #962, #966).
      • Fixed choice between variable or constraint bridges for constrained variables (#973).
      • Improve performance of bridge shortest path (#945, #946, #956).
      • Added docstring for test_delete_bridge (#954).
      • Added Variable bridge tests (#952).

    v0.9.7 (October 30, 2019)

    • Implemented _result_index_field for NLPBlockDual (#934).
    • Fixed copy of model with starting values for vector constraints (#941).
    • Bridges improvements:
      • Improved performance of add_bridge and added has_bridge (#935).
      • Added AbstractSetMapBridge for bridges between sets S1, S2 such that there is a linear map A such that A*S1 = S2 (#933).
      • Added support for starting values for FlipSignBridge, VectorizeBridge, ScalarizeBridge, SlackBridge, SplitIntervalBridge, RSOCBridge, SOCRBridge NormInfinityBridge, SOCtoPSDBridge and RSOCtoPSDBridge (#933, #936, #937, #938, #939).

    v0.9.6 (October 25, 2019)

    • Added complementarity constraints (#913).
    • Allowed ModelLike objects as value of attributes (#928).
    • Testing improvements:
      • Added dual_objective_value option to MOI.Test.TestConfig (#922).
      • Added InvalidIndex tests in basic_constraint_tests (#921).
      • Added tests for the constant term in indicator constraint (#929).
    • Bridges improvements:
      • Added support for starting values for Functionize bridges (#923).
      • Added variable indices context to variable bridges (#920).
      • Fixed a typo in printing o debug_supports (#927).

    v0.9.5 (October 9, 2019)

    • Clarified PrimalStatus/DualStatus to be NO_SOLUTION if result_index is out of bounds (#912).
    • Added tolerance for checks and use ResultCount + 1 for the result_index in MOI.Test.solve_result_status (#910, #917).
    • Use 0.5 instead of 2.0 for power in PowerCone in basic_constraint_test (#916).
    • Bridges improvements:
      • Added debug utilities for unsupported variable/constraint/objective (#861).
      • Fixed deletion of variables in bridged VectorOfVariables constraints (#909).
      • Fixed result_index with objective bridges (#911).

    v0.9.4 (October 2, 2019)

    • Added solver-independent MIP callbacks (#782).
    • Implements submit for Utilities.CachingOptimizer and Bridges.AbstractBridgeOptimizer (#906).
    • Added tests for result count of solution attributes (#901, #904).
    • Added NumberOfThreads attribute (#892).
    • Added Utilities.get_bounds to get the bounds on a variable (#890).
    • Added a note on duplicate coefficients in documentation (#581).
    • Added result index in ConstraintBasisStatus (#898).
    • Added extension dictionary to Utilities.Model (#884, #895).
    • Fixed deletion of constrained variables for CachingOptimizer (#905).
    • Implemented Utilities.shift_constraint for Test.UnknownScalarSet (#896).
    • Bridges improvements:
      • Added Variable.RSOCtoSOCBridge (#907).
      • Implemented MOI.get for ConstraintFunction/ConstraintSet for Bridges.Constraint.SquareBridge (#899).

    v0.9.3 (September 20, 2019)

    • Fixed ambiguity detected in Julia v1.3 (#891, #893).
    • Fixed missing sets from ListOfSupportedConstraints (#880).
    • Fixed copy of VectorOfVariables constraints with duplicate indices (#886).
    • Added extension dictionary to MOIU.Model (#884).
    • Implemented MOI.get for function and set for GeoMeanBridge (#888).
    • Updated documentation for SingleVariable indices and bridges (#885).
    • Testing improvements:
      • Added more comprehensive tests for names (#882).
      • Added tests for SingleVariable duals (#883).
      • Added tests for DualExponentialCone and DualPowerCone (#873).
    • Improvements for arbitrary coefficient type:
      • Fixed == for sets with mutable fields (#887).
      • Removed some Float64 assumptions in bridges (#878).
      • Automatic selection of Constraint.[Scalar|Vector]FunctionizeBridge (#889).

    v0.9.2 (September 5, 2019)

    • Implemented model printing for MOI.ModelLike and specialized it for models defined in MOI (864).
    • Generalized contlinear tests for arbitrary coefficient type (#855).
    • Fixed supports_constraint for Semiinteger and Semicontinuous and supports for ObjectiveFunction (#859).
    • Fixed Allocate-Load copy for single variable constraints (#856).
    • Bridges improvements:
      • Add objective bridges (#789).
      • Fixed Variable.RSOCtoPSDBridge for dimension 2 (#869).
      • Added Variable.SOCtoRSOCBridge (#865).
      • Added Constraint.SOCRBridge and disable MOI.Bridges.Constraint.SOCtoPSDBridge (#751).
      • Fixed added_constraint_types for Contraint.LogDetBridge and Constraint.RootDetBridge (#870).

    v0.9.1 (August 22, 2019)

    • Fix support for Julia v1.2 (#834).
    • L1 and L∞ norm epigraph cones and corresponding bridges to LP were added (#818).
    • Added tests to MOI.Test.nametest (#833).
    • Fix MOI.Test.soc3test for solvers not supporting infeasibility certificates (#839).
    • Implements operate for operators * and / between vector function and constant (#837).
    • Implements show for MOI.Utilities.IndexMap (#847).
    • Fix corner cases for mapping of variables in MOI.Utilities.CachingOptimizer and substitution of variables in MOI.Bridges.AbstractBridgeOptimizer (#848).
    • Fix transformation of constant terms for MOI.Bridges.Constraint.SOCtoPSDBridge and MOI.Bridges.Constraint.RSOCtoPSDBridge (#840).

    v0.9.0 (August 13, 2019)

    • Support for Julia v0.6 and v0.7 was dropped (#714, #717).
    • A MOI.Utilities.Model implementation of ModelLike, this should replace most use cases of MOI.Utilities.@model (#781).
    • add_constrained_variable and add_constrained_variables were added (#759).
    • Support for indicator constraints was added (#709, #712).
    • DualObjectiveValue attribute was added (#473).
    • RawParameter attribute was added (#733).
    • A dual_set function was added (#804).
    • A Benchmarks submodule was added to facilitate solver benchmarking (#769).
    • A submit function was added, this may for instance allow the user to submit solutions or cuts to the solver from a callback (#775).
    • The field of ObjectiveValue was renamed to result_index (#729).
    • The _constant and Utilities.getconstant function were renamed to constant
    • REDUCTION_CERTIFICATE result status was added (#734).
    • Abstract matrix sets were added (#731).
    • Testing improvements:
      • The testing guideline was updated (#728).
      • Quadratic tests were added (#697).
      • Unit tests for RawStatusString, SolveTime, Silent and SolverName were added (#726, #741).
      • A rotated second-order cone test was added (#759).
      • A power cone test was added (#768).
      • Tests for ZeroOne variables with variable bounds were added (#772).
      • An unbounded test was added (#773).
      • Existing tests had a few updates (#702, #703, #763).
    • Documentation improvements:
      • Added a section on CachingOptimizer (#777).
      • Added a section on UniversalFallback, Model and @model (#762).
      • Transition the knapsack example to a doctest with MockOptimizer (#786).
    • Utilities improvements:
      • A CleverDict utility was added for a vector that automatically transform into a dictionary once a first index is removed (#767).
      • The Utilities.constant function was renamed to Utilities.constant_vector (#740).
      • Implement optimizer attributes for CachingOptimizer (#745).
      • Rename Utilities.add_scalar_constraint to Utilities.normalize_and_add_constraint (#801).
      • operate with vcat, SingleVariable and VectorOfVariables now returns a VectorOfVariables (#616).
      • Fix a type piracy of operate (#784).
      • The load_constraint fallback signature was fixed (#760).
      • The set_dot function was extended to work with sparse arrays (#805).
    • Bridges improvements:
      • The bridges no longer store the constraint function and set before it is bridged, the bridges now have to implement ConstraintFunction and ConstraintSet if the user wants to recover them. As a consequence, the @bridge macro was removed (#722).
      • Bridge are now instantiated with a bridge_constraint function instead of using a constructor (#730).
      • Fix constraint attributes for bridges (#699).
      • Constraint bridges were moved to the Bridges/Constraint submodule so they should now inherit from MOI.Bridges.Constraint.Abstract and should implement MOI.Bridges.Constraint.concrete_bridge_type instead of MOI.Bridges.concrete_bridge_type (#756).
      • Variable bridges were added in (#759).
      • Various improvements (#746, #747).

    v0.8.4 (March 13, 2019)

    • Performance improvement in default_copy_to and bridge optimizer (#696).
    • Add Silent and implement setting optimizer attributes in caching and mock optimizers (#695).
    • Add Functionize bridges (SingleVariable and VectorOfVariables) (#659).
    • Minor typo fixes (#694).

    v0.8.3 (March 6, 2019)

    • Use zero constant in scalar constraint function of MOI.Test.copytest (#691).
    • Fix variable deletion with SingleVariable objective function (#690).
    • Fix LazyBridgeOptimizer with bridges that add no constraints (#689).
    • Error message improvements (#673, #685, #686, #688).
    • Documentation improvements (#682, #683, #687).
    • Basis status:
      • Remove VariableBasisStatus (#679).
      • Test ConstraintBasisStatus and implement it in bridges (#678).
    • Fix inference of NumberOfVariables and NumberOfConstraints (#677).
    • Implement division between a quadratic function and a number (#675).

    v0.8.2 (February 7, 2019)

    • Add RawStatusString attribute (#629).
    • Do not set names to the optimizer but only to the cache in CachingOptimizer (#638).
    • Make scalar MOI functions act as scalars in broadcast (#646).
    • Add function utilities:
      • Implement Base.zero (#634), Base.iszero (#643), add missing arithmetic operations (#644, #645) and fix division (#648).
      • Add a vectorize function that turns a vector of ScalarAffineFunction into a VectorAffineFunction (#642).
    • Improve support for starting values:
      • Show a warning in copy when starting values are not supported instead of throwing an error (#630).
      • Fix UniversalFallback for getting an variable or constraint attribute set to no indices (#623).
      • Add a test in contlineartest with partially set VariablePrimalStart.
    • Bridges improvements:
      • Fix StackOverFlow in LazyBridgeOptimizer when there is a cycle in the graph of bridges.
      • Add Slack bridges (#610, #650).
      • Add FlipSign bridges (#658).
    • Add tests with duplicate coefficients in ScalarAffineFunction and VectorAffineFunction (#639).
    • Use tolerance to compare VariablePrimal in rotatedsoc1 test (#632).
    • Use a zero constant in ScalarAffineFunction of constraints in psdt2 (#622).

    v0.8.1 (January 7, 2019)

    • Adding an NLP objective now overrides any objective set using the ObjectiveFunction attribute (#619).
    • Rename fullbridgeoptimizer into full_bridge_optimizer (#621).
    • Allow custom constraint types with full_bridge_optimizer (#617).
    • Add Vectorize bridge which transforms scalar linear constraints into vector linear constraints (#615).

    v0.8.0 (December 18, 2018)

    • Rename all enum values to follow the JuMP naming guidelines for constants, for example, Optimal becomes OPTIMAL, and DualInfeasible becomes DUAL_INFEASIBLE.
    • Rename CachingOptimizer methods for style compliance.
    • Add an MOI.TerminationStatusCode called ALMOST_DUAL_INFEASIBLE.

    v0.7.0 (December 13, 2018)

    • Test that MOI.TerminationStatus is MOI.OptimizeNotCalled before MOI.optimize! is called.
    • Check supports_default_copy_to in tests (#594).
    • Key pieces of information like optimality, infeasibility, etc., are now reported through TerminationStatusCode. It is typically no longer necessary to check the result statuses in addition to the termination status.
    • Add perspective dimension to log-det cone (#593).

    v0.6.4 (November 27, 2018)

    • Add OptimizeNotCalled termination status (#577) and improve documentation of other statuses (#575).
    • Add a solver naming guideline (#578).
    • Make FeasibilitySense the default ObjectiveSense (#579).
    • Fix Utilities.@model and Bridges.@bridge macros for functions and sets defined outside MOI (#582).
    • Document solver-specific attributes (#580) and implement them in Utilities.CachingOptimizer (#565).

    v0.6.3 (November 16, 2018)

    • Variables and constraints are now allowed to have duplicate names. An error is thrown only on lookup. This change breaks some existing tests. (#549)
    • Attributes may now be partially set (some values could be nothing). (#563)
    • Performance improvements in Utilities.Model (#549, #567, #568)
    • Fix bug in QuadtoSOC (#558).
    • New supports_default_copy_to method that optimizers should implement to control caching behavior.
    • Documentation improvements.

    v0.6.2 (October 26, 2018)

    • Improve hygiene of @model macro (#544).
    • Fix bug in copy tests (#543).
    • Fix bug in UniversalFallback attribute getter (#540).
    • Allow all correct solutions for solve_blank_obj unit test (#537).
    • Add errors for Allocate-Load and bad constraints (#534).
    • [performance] Add specialized implementation of hash for VariableIndex (#533).
    • [performance] Construct the name to object dictionaries lazily in model (#535).
    • Add the QuadtoSOC bridge which transforms ScalarQuadraticFunction constraints into RotatedSecondOrderCone (#483).

    v0.6.1 (September 22, 2018)

    • Enable PositiveSemidefiniteConeSquare set and quadratic functions in MOIB.fullbridgeoptimizer (#524).
    • Add warning in the bridge between PositiveSemidefiniteConeSquare and PositiveSemidefiniteConeTriangle when the matrix is almost symmetric (#522).
    • Modify MOIT.copytest to not add multiples constraints on the same variable (#521).
    • Add missing keyword argument in one of MOIU.add_scalar_constraint methods (#520).

    v0.6.0 (August 30, 2018)

    • The MOIU.@model and MOIB.@bridge macros now support functions and sets defined in external modules. As a consequence, function and set names in the macro arguments need to be prefixed by module name.
    • Rename functions according to the JuMP style guide:
      • copy! with keyword arguments copynames and warnattributes -> copy_to with keyword arguments copy_names and warn_attributes;
      • set! -> set;
      • addvariable[s]! -> add_variable[s];
      • supportsconstraint -> supports_constraint;
      • addconstraint[s]! -> add_constraint[s];
      • isvalid -> is_valid;
      • isempty -> is_empty;
      • Base.delete! -> delete;
      • modify! -> modify;
      • transform! -> transform;
      • initialize! -> initialize;
      • write -> write_to_file; and
      • read! -> read_from_file.
    • Remove free! (use Base.finalize instead).
    • Add the SquarePSD bridge which transforms PositiveSemidefiniteConeTriangle constraints into PositiveSemidefiniteConeTriangle.
    • Add result fallback for ConstraintDual of variable-wise constraint, ConstraintPrimal and ObjectiveValue.
    • Add tests for ObjectiveBound.
    • Add test for empty rows in vector linear constraint.
    • Rework errors: CannotError has been renamed NotAllowedError and the distinction between UnsupportedError and NotAllowedError is now about whether the element is not supported (for example, it cannot be copied a model containing this element) or the operation is not allowed (either because it is not implemented, because it cannot be performed in the current state of the model, or because it cannot be performed for a specific index)
    • canget is removed. NoSolution is added as a result status to indicate that the solver does not have either a primal or dual solution available (See #479).

    v0.5.0 (August 5, 2018)

    • Fix names with CachingOptimizer.
    • Cleanup thanks to @mohamed82008.
    • Added a universal fallback for constraints.
    • Fast utilities for function canonicalization thanks to @rdeits.
    • Renamed dimension field to side_dimension in the context of matrix-like sets.
    • New and improved tests for cases like duplicate terms and ObjectiveBound.
    • Removed cantransform, canaddconstraint, canaddvariable, canset, canmodify, and candelete functions from the API. They are replaced by a new set of errors that are thrown: Subtypes of UnsupportedError indicate unsupported operations, while subtypes of CannotError indicate operations that cannot be performed in the current state.
    • The API for copy! is updated to remove the CopyResult type.
    • Updates for the new JuMP style guide.

    v0.4.1 (June 28, 2018)

    • Fixes vector function modification on 32 bits.
    • Fixes Bellman-Ford algorithm for bridges.
    • Added an NLP test with FeasibilitySense.
    • Update modification documentation.

    v0.4.0 (June 23, 2018)

    • Helper constructors for VectorAffineTerm and VectorQuadraticTerm.
    • Added modify_lhs to TestConfig.
    • Additional unit tests for optimizers.
    • Added a type parameter to CachingOptimizer for the optimizer field.
    • New API for problem modification (#388)
    • Tests pass without deprecation warnings on Julia 0.7.
    • Small fixes and documentation updates.

    v0.3.0 (May 25, 2018)

    • Functions have been redefined to use arrays-of-structs instead of structs-of-arrays.
    • Improvements to MockOptimizer.
    • Significant changes to Bridges.
    • New and improved unit tests.
    • Fixes for Julia 0.7.

    v0.2.0 (April 24, 2018)

    • Improvements to and better coverage of Tests.
    • Documentation fixes.
    • SolverName attribute.
    • Changes to the NLP interface (new definition of variable order and arrays of structs for bound pairs and sparsity patterns).
    • Addition of NLP tests.
    • Introduction of UniversalFallback.
    • copynames keyword argument to MOI.copy!.
    • Add Bridges submodule.

    v0.1.0 (February 28, 2018)

    • Initial public release.
    • The framework for MOI was developed at the JuMP-dev workshop at MIT in June 2017 as a sorely needed replacement for MathProgBase.
    +end

    v0.9.22 (May 22, 2021)

    This release contains backports from the ongoing development of the v0.10 release.

    • Improved type inference in Utilities, Bridges and FileFormats submodules to reduce latency.
    • Improved performance of Utilities.is_canonical.
    • Fixed Utilities.pass_nonvariable_constraints with bridged variables.
    • Fixed performance regression of Utilities.Model.
    • Fixed ordering of objective setting in parser.

    v0.9.21 (April 23, 2021)

    • Added supports_shift_constant.
    • Improve performance of bridging quadratic constraints.
    • Add precompilation statements.
    • Large improvements to the documentation.
    • Fix a variety of inference issues, benefiting precompilation and reducing initial latency.
    • RawParameters are now ignored when resetting a CachingOptimizer. Previously, changing the underlying optimizer after RawParameters were set would throw an error.
    • Utilities.AbstractModel is being refactored. This may break users interacting with private fields of a model generated using @model.

    v0.9.20 (February 20, 2021)

    • Improved performance of Utilities.ScalarFunctionIterator
    • Added support for compute_conflict to MOI layers
    • Added test with zero off-diagonal quadratic term in objective
    • Fixed double deletion of nested bridged SingleVariable/VectorOfVariables constraints
    • Fixed modification of un-set objective
    • Fixed function modification with duplicate terms
    • Made unit tests abort without failing if the problem class is not supported
    • Formatted code with JuliaFormatter
    • Clarified BasisStatusCode's docstring

    v0.9.19 (December 1, 2020)

    • Added CallbackNodeStatus attribute
    • Added bridge from GreaterThan or LessThan to Interval
    • Added tests for infeasibility certificates and double optimize
    • Fixed support for Julia v1.6
    • Re-organized MOI docs and added documentation for adding a test

    v0.9.18 (November 3, 2020)

    • Various improvements for working with complex numbers
    • Added GeoMeantoRelEntrBridge to bridge a GeometricMeanCone constraint to a relative entropy constraint

    v0.9.17 (September 21, 2020)

    • Fixed CleverDict with variable of negative index value
    • Implement supports_add_constrained_variable for MockOptimizer

    v0.9.16 (September 17, 2020)

    • Various fixes:
      • 32-bit support
      • CleverDict with abstract value type
      • Checks in test suite

    v0.9.15 (September 14, 2020)

    • Bridges improvements:
      • (R)SOCtoNonConvexQuad bridge
      • ZeroOne bridge
      • Use supports_add_constrained_variable in LazyBridgeOptimizer
      • Exposed VariableBridgeCost and ConstraintBridgeCost attributes
      • Prioritize constraining variables on creation according to these costs
      • Refactor bridge debugging
    • Large performance improvements across all submodules
    • Lots of documentation improvements
    • FileFormats improvements:
      • Update MathOptFormat to v0.5
      • Fix supported objectives in FileFormats
    • Testing improvements:
      • Add name option for basic_constraint_test
    • Bug fixes and missing methods
      • Add length for iterators
      • Fix bug with duplicate terms
      • Fix order of LinearOfConstraintIndices

    v0.9.14 (May 30, 2020)

    • Add a solver-independent interface for accessing the set of conflicting constraints an Irreducible Inconsistent Subsystem (#1056).
    • Bump JSONSchema dependency from v0.2 to v0.3 (#1090).
    • Documentation improvements:
      • Fix typos (#1054, #1060, #1061, #1064, #1069, #1070).
      • Remove the outdated recommendation for a package implementing MOI for a solver XXX to be called MathOptInterfaceXXX (#1087).
    • Utilities improvements:
      • Fix is_canonical for quadratic functions (#1081, #1089).
      • Implement add_constrained_variable[s] for CachingOptimizer so that it is added as constrained variables to the underlying optimizer (#1084).
      • Add support for custom objective functions for UniversalFallback (#1086).
      • Deterministic ordering of constraints in UniversalFallback (#1088).
    • Testing improvements:
      • Add NormOneCone/NormInfinityCone tests (#1045).
    • Bridges improvements:
      • Add bridges from Semiinteger and Semicontinuous (#1059).
      • Implement getting ConstraintSet for Variable.FlipSignBridge (#1066).
      • Fix setting ConstraintFunction for Constraint.ScalarizeBridge (#1093).
      • Fix NormOne/NormInf bridges with nonzero constants (#1045).
      • Fix StackOverflow in debug (#1063).
    • FileFormats improvements:
      • [SDPA] Implement the extension for integer variables (#1079).
      • [SDPA] Ignore comments after m and nblocks and detect dat-s extension (#1077).
      • [SDPA] No scaling of off-diagonal coefficient (#1076).
      • [SDPA] Add missing negation of constant (#1075).

    v0.9.13 (March 24, 2020)

    • Added tests for Semicontinuous and Semiinteger variables (#1033).
    • Added tests for using ExprGraphs from NLP evaluators (#1043).
    • Update version compatibilities of dependencies (#1034, #1051, #1052).
    • Fixed typos in documentation (#1044).

    v0.9.12 (February 28, 2020)

    • Fixed writing NLPBlock in MathOptFormat (#1037).
    • Fixed MockOptimizer for result attributes with non-one result index (#1039).
    • Updated test template with instantiate (#1032).

    v0.9.11 (February 21, 2020)

    • Add an option for the model created by Utilities.@model to be a subtype of AbstractOptimizer (#1031).
    • Described dual cone in docstrings of GeoMeanCone and RelativeEntropyCone (#1018, #1028).
    • Fixed typos in documentation (#1022, #1024).
    • Fixed warning of unsupported attribute (#1027).
    • Added more rootdet/logdet conic tests (#1026).
    • Implemented ConstraintDual for Constraint.GeoMeanBridge, Constraint.RootDetBridge and Constraint.LogDetBridge and test duals in tests with GeoMeanCone and RootDetConeTriangle and LogDetConeTriangle cones (#1025, #1026).

    v0.9.10 (January 31, 2020)

    • Added OptimizerWithAttributes grouping an optimizer constructor and a list of optimizer attributes (#1008).
    • Added RelativeEntropyCone with corresponding bridge into exponential cone constraints (#993).
    • Added NormSpectralCone and NormNuclearCone with corresponding bridges into positive semidefinite constraints (#976).
    • Added supports_constrained_variable(s) (#1004).
    • Added dual_set_type (#1002).
    • Added tests for vector specialized version of delete (#989, #1011).
    • Added PSD3 test (#1007).
    • Clarified dual solution of Tests.pow1v and Tests.pow1f (#1013).
    • Added support for EqualTo and Zero in Bridges.Constraint.SplitIntervalBridge (#1005).
    • Fixed Utilities.vectorize for empty vector (#1003).
    • Fixed free variables in LP writer (#1006).

    v0.9.9 (December 29, 2019)

    • Incorporated MathOptFormat.jl as the FileFormats submodule. FileFormats provides readers and writers for a number of standard file formats and MOF, a file format specialized for MOI (#969).
    • Improved performance of deletion of vector of variables in MOI.Utilities.Model (#983).
    • Updated to MutableArithmetics v0.2 (#981).
    • Added MutableArithmetics.promote_operation allocation tests (#975).
    • Fixed inference issue on Julia v1.1 (#982).

    v0.9.8 (December 19, 2019)

    • Implemented MutableArithmetics API (#924).
    • Fixed callbacks with CachingOptimizer (#959).
    • Fixed MOI.dimension for MOI.Complements (#948).
    • Added fallback for add_variables (#972).
    • Added is_diagonal_vectorized_index utility (#965).
    • Improved linear constraints display in manual (#963, #964).
    • Bridges improvements:
      • Added IndicatorSet to SOS1 bridge (#877).
      • Added support for starting values for Variable.VectorizeBridge (#944).
      • Fixed MOI.add_constraints with non-bridged variable constraint on bridged variable (#951).
      • Fixed corner cases and docstring of GeoMeanBridge (#961, #962, #966).
      • Fixed choice between variable or constraint bridges for constrained variables (#973).
      • Improve performance of bridge shortest path (#945, #946, #956).
      • Added docstring for test_delete_bridge (#954).
      • Added Variable bridge tests (#952).

    v0.9.7 (October 30, 2019)

    • Implemented _result_index_field for NLPBlockDual (#934).
    • Fixed copy of model with starting values for vector constraints (#941).
    • Bridges improvements:
      • Improved performance of add_bridge and added has_bridge (#935).
      • Added AbstractSetMapBridge for bridges between sets S1, S2 such that there is a linear map A such that A*S1 = S2 (#933).
      • Added support for starting values for FlipSignBridge, VectorizeBridge, ScalarizeBridge, SlackBridge, SplitIntervalBridge, RSOCBridge, SOCRBridge NormInfinityBridge, SOCtoPSDBridge and RSOCtoPSDBridge (#933, #936, #937, #938, #939).

    v0.9.6 (October 25, 2019)

    • Added complementarity constraints (#913).
    • Allowed ModelLike objects as value of attributes (#928).
    • Testing improvements:
      • Added dual_objective_value option to MOI.Test.TestConfig (#922).
      • Added InvalidIndex tests in basic_constraint_tests (#921).
      • Added tests for the constant term in indicator constraint (#929).
    • Bridges improvements:
      • Added support for starting values for Functionize bridges (#923).
      • Added variable indices context to variable bridges (#920).
      • Fixed a typo in printing o debug_supports (#927).

    v0.9.5 (October 9, 2019)

    • Clarified PrimalStatus/DualStatus to be NO_SOLUTION if result_index is out of bounds (#912).
    • Added tolerance for checks and use ResultCount + 1 for the result_index in MOI.Test.solve_result_status (#910, #917).
    • Use 0.5 instead of 2.0 for power in PowerCone in basic_constraint_test (#916).
    • Bridges improvements:
      • Added debug utilities for unsupported variable/constraint/objective (#861).
      • Fixed deletion of variables in bridged VectorOfVariables constraints (#909).
      • Fixed result_index with objective bridges (#911).

    v0.9.4 (October 2, 2019)

    • Added solver-independent MIP callbacks (#782).
    • Implements submit for Utilities.CachingOptimizer and Bridges.AbstractBridgeOptimizer (#906).
    • Added tests for result count of solution attributes (#901, #904).
    • Added NumberOfThreads attribute (#892).
    • Added Utilities.get_bounds to get the bounds on a variable (#890).
    • Added a note on duplicate coefficients in documentation (#581).
    • Added result index in ConstraintBasisStatus (#898).
    • Added extension dictionary to Utilities.Model (#884, #895).
    • Fixed deletion of constrained variables for CachingOptimizer (#905).
    • Implemented Utilities.shift_constraint for Test.UnknownScalarSet (#896).
    • Bridges improvements:
      • Added Variable.RSOCtoSOCBridge (#907).
      • Implemented MOI.get for ConstraintFunction/ConstraintSet for Bridges.Constraint.SquareBridge (#899).

    v0.9.3 (September 20, 2019)

    • Fixed ambiguity detected in Julia v1.3 (#891, #893).
    • Fixed missing sets from ListOfSupportedConstraints (#880).
    • Fixed copy of VectorOfVariables constraints with duplicate indices (#886).
    • Added extension dictionary to MOIU.Model (#884).
    • Implemented MOI.get for function and set for GeoMeanBridge (#888).
    • Updated documentation for SingleVariable indices and bridges (#885).
    • Testing improvements:
      • Added more comprehensive tests for names (#882).
      • Added tests for SingleVariable duals (#883).
      • Added tests for DualExponentialCone and DualPowerCone (#873).
    • Improvements for arbitrary coefficient type:
      • Fixed == for sets with mutable fields (#887).
      • Removed some Float64 assumptions in bridges (#878).
      • Automatic selection of Constraint.[Scalar|Vector]FunctionizeBridge (#889).

    v0.9.2 (September 5, 2019)

    • Implemented model printing for MOI.ModelLike and specialized it for models defined in MOI (864).
    • Generalized contlinear tests for arbitrary coefficient type (#855).
    • Fixed supports_constraint for Semiinteger and Semicontinuous and supports for ObjectiveFunction (#859).
    • Fixed Allocate-Load copy for single variable constraints (#856).
    • Bridges improvements:
      • Add objective bridges (#789).
      • Fixed Variable.RSOCtoPSDBridge for dimension 2 (#869).
      • Added Variable.SOCtoRSOCBridge (#865).
      • Added Constraint.SOCRBridge and disable MOI.Bridges.Constraint.SOCtoPSDBridge (#751).
      • Fixed added_constraint_types for Contraint.LogDetBridge and Constraint.RootDetBridge (#870).

    v0.9.1 (August 22, 2019)

    • Fix support for Julia v1.2 (#834).
    • L1 and L∞ norm epigraph cones and corresponding bridges to LP were added (#818).
    • Added tests to MOI.Test.nametest (#833).
    • Fix MOI.Test.soc3test for solvers not supporting infeasibility certificates (#839).
    • Implements operate for operators * and / between vector function and constant (#837).
    • Implements show for MOI.Utilities.IndexMap (#847).
    • Fix corner cases for mapping of variables in MOI.Utilities.CachingOptimizer and substitution of variables in MOI.Bridges.AbstractBridgeOptimizer (#848).
    • Fix transformation of constant terms for MOI.Bridges.Constraint.SOCtoPSDBridge and MOI.Bridges.Constraint.RSOCtoPSDBridge (#840).

    v0.9.0 (August 13, 2019)

    • Support for Julia v0.6 and v0.7 was dropped (#714, #717).
    • A MOI.Utilities.Model implementation of ModelLike, this should replace most use cases of MOI.Utilities.@model (#781).
    • add_constrained_variable and add_constrained_variables were added (#759).
    • Support for indicator constraints was added (#709, #712).
    • DualObjectiveValue attribute was added (#473).
    • RawParameter attribute was added (#733).
    • A dual_set function was added (#804).
    • A Benchmarks submodule was added to facilitate solver benchmarking (#769).
    • A submit function was added, this may for instance allow the user to submit solutions or cuts to the solver from a callback (#775).
    • The field of ObjectiveValue was renamed to result_index (#729).
    • The _constant and Utilities.getconstant function were renamed to constant
    • REDUCTION_CERTIFICATE result status was added (#734).
    • Abstract matrix sets were added (#731).
    • Testing improvements:
      • The testing guideline was updated (#728).
      • Quadratic tests were added (#697).
      • Unit tests for RawStatusString, SolveTime, Silent and SolverName were added (#726, #741).
      • A rotated second-order cone test was added (#759).
      • A power cone test was added (#768).
      • Tests for ZeroOne variables with variable bounds were added (#772).
      • An unbounded test was added (#773).
      • Existing tests had a few updates (#702, #703, #763).
    • Documentation improvements:
      • Added a section on CachingOptimizer (#777).
      • Added a section on UniversalFallback, Model and @model (#762).
      • Transition the knapsack example to a doctest with MockOptimizer (#786).
    • Utilities improvements:
      • A CleverDict utility was added for a vector that automatically transform into a dictionary once a first index is removed (#767).
      • The Utilities.constant function was renamed to Utilities.constant_vector (#740).
      • Implement optimizer attributes for CachingOptimizer (#745).
      • Rename Utilities.add_scalar_constraint to Utilities.normalize_and_add_constraint (#801).
      • operate with vcat, SingleVariable and VectorOfVariables now returns a VectorOfVariables (#616).
      • Fix a type piracy of operate (#784).
      • The load_constraint fallback signature was fixed (#760).
      • The set_dot function was extended to work with sparse arrays (#805).
    • Bridges improvements:
      • The bridges no longer store the constraint function and set before it is bridged, the bridges now have to implement ConstraintFunction and ConstraintSet if the user wants to recover them. As a consequence, the @bridge macro was removed (#722).
      • Bridge are now instantiated with a bridge_constraint function instead of using a constructor (#730).
      • Fix constraint attributes for bridges (#699).
      • Constraint bridges were moved to the Bridges/Constraint submodule so they should now inherit from MOI.Bridges.Constraint.Abstract and should implement MOI.Bridges.Constraint.concrete_bridge_type instead of MOI.Bridges.concrete_bridge_type (#756).
      • Variable bridges were added in (#759).
      • Various improvements (#746, #747).

    v0.8.4 (March 13, 2019)

    • Performance improvement in default_copy_to and bridge optimizer (#696).
    • Add Silent and implement setting optimizer attributes in caching and mock optimizers (#695).
    • Add Functionize bridges (SingleVariable and VectorOfVariables) (#659).
    • Minor typo fixes (#694).

    v0.8.3 (March 6, 2019)

    • Use zero constant in scalar constraint function of MOI.Test.copytest (#691).
    • Fix variable deletion with SingleVariable objective function (#690).
    • Fix LazyBridgeOptimizer with bridges that add no constraints (#689).
    • Error message improvements (#673, #685, #686, #688).
    • Documentation improvements (#682, #683, #687).
    • Basis status:
      • Remove VariableBasisStatus (#679).
      • Test ConstraintBasisStatus and implement it in bridges (#678).
    • Fix inference of NumberOfVariables and NumberOfConstraints (#677).
    • Implement division between a quadratic function and a number (#675).

    v0.8.2 (February 7, 2019)

    • Add RawStatusString attribute (#629).
    • Do not set names to the optimizer but only to the cache in CachingOptimizer (#638).
    • Make scalar MOI functions act as scalars in broadcast (#646).
    • Add function utilities:
      • Implement Base.zero (#634), Base.iszero (#643), add missing arithmetic operations (#644, #645) and fix division (#648).
      • Add a vectorize function that turns a vector of ScalarAffineFunction into a VectorAffineFunction (#642).
    • Improve support for starting values:
      • Show a warning in copy when starting values are not supported instead of throwing an error (#630).
      • Fix UniversalFallback for getting an variable or constraint attribute set to no indices (#623).
      • Add a test in contlineartest with partially set VariablePrimalStart.
    • Bridges improvements:
      • Fix StackOverFlow in LazyBridgeOptimizer when there is a cycle in the graph of bridges.
      • Add Slack bridges (#610, #650).
      • Add FlipSign bridges (#658).
    • Add tests with duplicate coefficients in ScalarAffineFunction and VectorAffineFunction (#639).
    • Use tolerance to compare VariablePrimal in rotatedsoc1 test (#632).
    • Use a zero constant in ScalarAffineFunction of constraints in psdt2 (#622).

    v0.8.1 (January 7, 2019)

    • Adding an NLP objective now overrides any objective set using the ObjectiveFunction attribute (#619).
    • Rename fullbridgeoptimizer into full_bridge_optimizer (#621).
    • Allow custom constraint types with full_bridge_optimizer (#617).
    • Add Vectorize bridge which transforms scalar linear constraints into vector linear constraints (#615).

    v0.8.0 (December 18, 2018)

    • Rename all enum values to follow the JuMP naming guidelines for constants, for example, Optimal becomes OPTIMAL, and DualInfeasible becomes DUAL_INFEASIBLE.
    • Rename CachingOptimizer methods for style compliance.
    • Add an MOI.TerminationStatusCode called ALMOST_DUAL_INFEASIBLE.

    v0.7.0 (December 13, 2018)

    • Test that MOI.TerminationStatus is MOI.OptimizeNotCalled before MOI.optimize! is called.
    • Check supports_default_copy_to in tests (#594).
    • Key pieces of information like optimality, infeasibility, etc., are now reported through TerminationStatusCode. It is typically no longer necessary to check the result statuses in addition to the termination status.
    • Add perspective dimension to log-det cone (#593).

    v0.6.4 (November 27, 2018)

    • Add OptimizeNotCalled termination status (#577) and improve documentation of other statuses (#575).
    • Add a solver naming guideline (#578).
    • Make FeasibilitySense the default ObjectiveSense (#579).
    • Fix Utilities.@model and Bridges.@bridge macros for functions and sets defined outside MOI (#582).
    • Document solver-specific attributes (#580) and implement them in Utilities.CachingOptimizer (#565).

    v0.6.3 (November 16, 2018)

    • Variables and constraints are now allowed to have duplicate names. An error is thrown only on lookup. This change breaks some existing tests. (#549)
    • Attributes may now be partially set (some values could be nothing). (#563)
    • Performance improvements in Utilities.Model (#549, #567, #568)
    • Fix bug in QuadtoSOC (#558).
    • New supports_default_copy_to method that optimizers should implement to control caching behavior.
    • Documentation improvements.

    v0.6.2 (October 26, 2018)

    • Improve hygiene of @model macro (#544).
    • Fix bug in copy tests (#543).
    • Fix bug in UniversalFallback attribute getter (#540).
    • Allow all correct solutions for solve_blank_obj unit test (#537).
    • Add errors for Allocate-Load and bad constraints (#534).
    • [performance] Add specialized implementation of hash for VariableIndex (#533).
    • [performance] Construct the name to object dictionaries lazily in model (#535).
    • Add the QuadtoSOC bridge which transforms ScalarQuadraticFunction constraints into RotatedSecondOrderCone (#483).

    v0.6.1 (September 22, 2018)

    • Enable PositiveSemidefiniteConeSquare set and quadratic functions in MOIB.fullbridgeoptimizer (#524).
    • Add warning in the bridge between PositiveSemidefiniteConeSquare and PositiveSemidefiniteConeTriangle when the matrix is almost symmetric (#522).
    • Modify MOIT.copytest to not add multiples constraints on the same variable (#521).
    • Add missing keyword argument in one of MOIU.add_scalar_constraint methods (#520).

    v0.6.0 (August 30, 2018)

    • The MOIU.@model and MOIB.@bridge macros now support functions and sets defined in external modules. As a consequence, function and set names in the macro arguments need to be prefixed by module name.
    • Rename functions according to the JuMP style guide:
      • copy! with keyword arguments copynames and warnattributes -> copy_to with keyword arguments copy_names and warn_attributes;
      • set! -> set;
      • addvariable[s]! -> add_variable[s];
      • supportsconstraint -> supports_constraint;
      • addconstraint[s]! -> add_constraint[s];
      • isvalid -> is_valid;
      • isempty -> is_empty;
      • Base.delete! -> delete;
      • modify! -> modify;
      • transform! -> transform;
      • initialize! -> initialize;
      • write -> write_to_file; and
      • read! -> read_from_file.
    • Remove free! (use Base.finalize instead).
    • Add the SquarePSD bridge which transforms PositiveSemidefiniteConeTriangle constraints into PositiveSemidefiniteConeTriangle.
    • Add result fallback for ConstraintDual of variable-wise constraint, ConstraintPrimal and ObjectiveValue.
    • Add tests for ObjectiveBound.
    • Add test for empty rows in vector linear constraint.
    • Rework errors: CannotError has been renamed NotAllowedError and the distinction between UnsupportedError and NotAllowedError is now about whether the element is not supported (for example, it cannot be copied a model containing this element) or the operation is not allowed (either because it is not implemented, because it cannot be performed in the current state of the model, or because it cannot be performed for a specific index)
    • canget is removed. NoSolution is added as a result status to indicate that the solver does not have either a primal or dual solution available (See #479).

    v0.5.0 (August 5, 2018)

    • Fix names with CachingOptimizer.
    • Cleanup thanks to @mohamed82008.
    • Added a universal fallback for constraints.
    • Fast utilities for function canonicalization thanks to @rdeits.
    • Renamed dimension field to side_dimension in the context of matrix-like sets.
    • New and improved tests for cases like duplicate terms and ObjectiveBound.
    • Removed cantransform, canaddconstraint, canaddvariable, canset, canmodify, and candelete functions from the API. They are replaced by a new set of errors that are thrown: Subtypes of UnsupportedError indicate unsupported operations, while subtypes of CannotError indicate operations that cannot be performed in the current state.
    • The API for copy! is updated to remove the CopyResult type.
    • Updates for the new JuMP style guide.

    v0.4.1 (June 28, 2018)

    • Fixes vector function modification on 32 bits.
    • Fixes Bellman-Ford algorithm for bridges.
    • Added an NLP test with FeasibilitySense.
    • Update modification documentation.

    v0.4.0 (June 23, 2018)

    • Helper constructors for VectorAffineTerm and VectorQuadraticTerm.
    • Added modify_lhs to TestConfig.
    • Additional unit tests for optimizers.
    • Added a type parameter to CachingOptimizer for the optimizer field.
    • New API for problem modification (#388)
    • Tests pass without deprecation warnings on Julia 0.7.
    • Small fixes and documentation updates.

    v0.3.0 (May 25, 2018)

    • Functions have been redefined to use arrays-of-structs instead of structs-of-arrays.
    • Improvements to MockOptimizer.
    • Significant changes to Bridges.
    • New and improved unit tests.
    • Fixes for Julia 0.7.

    v0.2.0 (April 24, 2018)

    • Improvements to and better coverage of Tests.
    • Documentation fixes.
    • SolverName attribute.
    • Changes to the NLP interface (new definition of variable order and arrays of structs for bound pairs and sparsity patterns).
    • Addition of NLP tests.
    • Introduction of UniversalFallback.
    • copynames keyword argument to MOI.copy!.
    • Add Bridges submodule.

    v0.1.0 (February 28, 2018)

    • Initial public release.
    • The framework for MOI was developed at the JuMP-dev workshop at MIT in June 2017 as a sorely needed replacement for MathProgBase.
    diff --git a/previews/PR3561/moi/developer/checklists/index.html b/previews/PR3561/moi/developer/checklists/index.html index c600b96aa2a..da34484a27b 100644 --- a/previews/PR3561/moi/developer/checklists/index.html +++ b/previews/PR3561/moi/developer/checklists/index.html @@ -113,4 +113,4 @@ ## Documentation - - [ ] The version fields are updated in `docs/src/submodules/FileFormats/overview.md` + - [ ] The version fields are updated in `docs/src/submodules/FileFormats/overview.md` diff --git a/previews/PR3561/moi/index.html b/previews/PR3561/moi/index.html index 1224bddefd9..fe2acc13468 100644 --- a/previews/PR3561/moi/index.html +++ b/previews/PR3561/moi/index.html @@ -10,4 +10,4 @@ year={2021}, doi={10.1287/ijoc.2021.1067}, publisher={INFORMS} -} +} diff --git a/previews/PR3561/moi/manual/constraints/index.html b/previews/PR3561/moi/manual/constraints/index.html index c706d218cbf..10bbdbd2823 100644 --- a/previews/PR3561/moi/manual/constraints/index.html +++ b/previews/PR3561/moi/manual/constraints/index.html @@ -23,4 +23,4 @@ false

    Constraint attributes

    The following attributes are available for constraints:

    Get and set these attributes using get and set.

    julia> MOI.set(model, MOI.ConstraintName(), c, "con_c")
     
     julia> MOI.get(model, MOI.ConstraintName(), c)
    -"con_c"

    Constraints by function-set pairs

    Below is a list of common constraint types and how they are represented as function-set pairs in MOI. In the notation below, $x$ is a vector of decision variables, $x_i$ is a scalar decision variable, $\alpha, \beta$ are scalar constants, $a, b$ are constant vectors, A is a constant matrix and $\mathbb{R}_+$ (resp. $\mathbb{R}_-$) is the set of non-negative (resp. non-positive) real numbers.

    Linear constraints

    Mathematical ConstraintMOI FunctionMOI Set
    $a^Tx \le \beta$ScalarAffineFunctionLessThan
    $a^Tx \ge \alpha$ScalarAffineFunctionGreaterThan
    $a^Tx = \beta$ScalarAffineFunctionEqualTo
    $\alpha \le a^Tx \le \beta$ScalarAffineFunctionInterval
    $x_i \le \beta$VariableIndexLessThan
    $x_i \ge \alpha$VariableIndexGreaterThan
    $x_i = \beta$VariableIndexEqualTo
    $\alpha \le x_i \le \beta$VariableIndexInterval
    $Ax + b \in \mathbb{R}_+^n$VectorAffineFunctionNonnegatives
    $Ax + b \in \mathbb{R}_-^n$VectorAffineFunctionNonpositives
    $Ax + b = 0$VectorAffineFunctionZeros

    By convention, solvers are not expected to support nonzero constant terms in the ScalarAffineFunctions the first four rows of the preceding table because they are redundant with the parameters of the sets. For example, encode $2x + 1 \le 2$ as $2x \le 1$.

    Constraints with VariableIndex in LessThan, GreaterThan, EqualTo, or Interval sets have a natural interpretation as variable bounds. As such, it is typically not natural to impose multiple lower- or upper-bounds on the same variable, and the solver interfaces will throw respectively LowerBoundAlreadySet or UpperBoundAlreadySet.

    Moreover, adding two VariableIndex constraints on the same variable with the same set is impossible because they share the same index as it is the index of the variable, see ConstraintIndex.

    It is natural, however, to impose upper- and lower-bounds separately as two different constraints on a single variable. The difference between imposing bounds by using a single Interval constraint and by using separate LessThan and GreaterThan constraints is that the latter will allow the solver to return separate dual multipliers for the two bounds, while the former will allow the solver to return only a single dual for the interval constraint.

    Conic constraints

    Mathematical ConstraintMOI FunctionMOI Set
    $\lVert Ax + b\rVert_2 \le c^Tx + d$VectorAffineFunctionSecondOrderCone
    $y \ge \lVert x \rVert_2$VectorOfVariablesSecondOrderCone
    $2yz \ge \lVert x \rVert_2^2, y,z \ge 0$VectorOfVariablesRotatedSecondOrderCone
    $(a_1^Tx + b_1,a_2^Tx + b_2,a_3^Tx + b_3) \in \mathcal{E}$VectorAffineFunctionExponentialCone
    $A(x) \in \mathcal{S}_+$VectorAffineFunctionPositiveSemidefiniteConeTriangle
    $B(x) \in \mathcal{S}_+$VectorAffineFunctionPositiveSemidefiniteConeSquare
    $x \in \mathcal{S}_+$VectorOfVariablesPositiveSemidefiniteConeTriangle
    $x \in \mathcal{S}_+$VectorOfVariablesPositiveSemidefiniteConeSquare

    where $\mathcal{E}$ is the exponential cone (see ExponentialCone), $\mathcal{S}_+$ is the set of positive semidefinite symmetric matrices, $A$ is an affine map that outputs symmetric matrices and $B$ is an affine map that outputs square matrices.

    Quadratic constraints

    Mathematical ConstraintMOI FunctionMOI Set
    $\frac{1}{2}x^TQx + a^Tx + b \ge 0$ScalarQuadraticFunctionGreaterThan
    $\frac{1}{2}x^TQx + a^Tx + b \le 0$ScalarQuadraticFunctionLessThan
    $\frac{1}{2}x^TQx + a^Tx + b = 0$ScalarQuadraticFunctionEqualTo
    Bilinear matrix inequalityVectorQuadraticFunctionPositiveSemidefiniteCone...
    Note

    For more details on the internal format of the quadratic functions see ScalarQuadraticFunction or VectorQuadraticFunction.

    Discrete and logical constraints

    Mathematical ConstraintMOI FunctionMOI Set
    $x_i \in \mathbb{Z}$VariableIndexInteger
    $x_i \in \{0,1\}$VariableIndexZeroOne
    $x_i \in \{0\} \cup [l,u]$VariableIndexSemicontinuous
    $x_i \in \{0\} \cup \{l,l+1,\ldots,u-1,u\}$VariableIndexSemiinteger
    At most one component of $x$ can be nonzeroVectorOfVariablesSOS1
    At most two components of $x$ can be nonzero, and if so they must be adjacent componentsVectorOfVariablesSOS2
    $y = 1 \implies a^T x \in S$VectorAffineFunctionIndicator

    JuMP mapping

    The following bullet points show examples of how JuMP constraints are translated into MOI function-set pairs:

    • @constraint(m, 2x + y <= 10) becomes ScalarAffineFunction-in-LessThan
    • @constraint(m, 2x + y >= 10) becomes ScalarAffineFunction-in-GreaterThan
    • @constraint(m, 2x + y == 10) becomes ScalarAffineFunction-in-EqualTo
    • @constraint(m, 0 <= 2x + y <= 10) becomes ScalarAffineFunction-in-Interval
    • @constraint(m, 2x + y in ArbitrarySet()) becomes ScalarAffineFunction-in-ArbitrarySet.

    Variable bounds are handled in a similar fashion:

    • @variable(m, x <= 1) becomes VariableIndex-in-LessThan
    • @variable(m, x >= 1) becomes VariableIndex-in-GreaterThan

    One notable difference is that a variable with an upper and lower bound is translated into two constraints, rather than an interval, that is:

    • @variable(m, 0 <= x <= 1) becomes VariableIndex-in-LessThan and VariableIndex-in-GreaterThan.
    +"con_c"

    Constraints by function-set pairs

    Below is a list of common constraint types and how they are represented as function-set pairs in MOI. In the notation below, $x$ is a vector of decision variables, $x_i$ is a scalar decision variable, $\alpha, \beta$ are scalar constants, $a, b$ are constant vectors, A is a constant matrix and $\mathbb{R}_+$ (resp. $\mathbb{R}_-$) is the set of non-negative (resp. non-positive) real numbers.

    Linear constraints

    Mathematical ConstraintMOI FunctionMOI Set
    $a^Tx \le \beta$ScalarAffineFunctionLessThan
    $a^Tx \ge \alpha$ScalarAffineFunctionGreaterThan
    $a^Tx = \beta$ScalarAffineFunctionEqualTo
    $\alpha \le a^Tx \le \beta$ScalarAffineFunctionInterval
    $x_i \le \beta$VariableIndexLessThan
    $x_i \ge \alpha$VariableIndexGreaterThan
    $x_i = \beta$VariableIndexEqualTo
    $\alpha \le x_i \le \beta$VariableIndexInterval
    $Ax + b \in \mathbb{R}_+^n$VectorAffineFunctionNonnegatives
    $Ax + b \in \mathbb{R}_-^n$VectorAffineFunctionNonpositives
    $Ax + b = 0$VectorAffineFunctionZeros

    By convention, solvers are not expected to support nonzero constant terms in the ScalarAffineFunctions the first four rows of the preceding table because they are redundant with the parameters of the sets. For example, encode $2x + 1 \le 2$ as $2x \le 1$.

    Constraints with VariableIndex in LessThan, GreaterThan, EqualTo, or Interval sets have a natural interpretation as variable bounds. As such, it is typically not natural to impose multiple lower- or upper-bounds on the same variable, and the solver interfaces will throw respectively LowerBoundAlreadySet or UpperBoundAlreadySet.

    Moreover, adding two VariableIndex constraints on the same variable with the same set is impossible because they share the same index as it is the index of the variable, see ConstraintIndex.

    It is natural, however, to impose upper- and lower-bounds separately as two different constraints on a single variable. The difference between imposing bounds by using a single Interval constraint and by using separate LessThan and GreaterThan constraints is that the latter will allow the solver to return separate dual multipliers for the two bounds, while the former will allow the solver to return only a single dual for the interval constraint.

    Conic constraints

    Mathematical ConstraintMOI FunctionMOI Set
    $\lVert Ax + b\rVert_2 \le c^Tx + d$VectorAffineFunctionSecondOrderCone
    $y \ge \lVert x \rVert_2$VectorOfVariablesSecondOrderCone
    $2yz \ge \lVert x \rVert_2^2, y,z \ge 0$VectorOfVariablesRotatedSecondOrderCone
    $(a_1^Tx + b_1,a_2^Tx + b_2,a_3^Tx + b_3) \in \mathcal{E}$VectorAffineFunctionExponentialCone
    $A(x) \in \mathcal{S}_+$VectorAffineFunctionPositiveSemidefiniteConeTriangle
    $B(x) \in \mathcal{S}_+$VectorAffineFunctionPositiveSemidefiniteConeSquare
    $x \in \mathcal{S}_+$VectorOfVariablesPositiveSemidefiniteConeTriangle
    $x \in \mathcal{S}_+$VectorOfVariablesPositiveSemidefiniteConeSquare

    where $\mathcal{E}$ is the exponential cone (see ExponentialCone), $\mathcal{S}_+$ is the set of positive semidefinite symmetric matrices, $A$ is an affine map that outputs symmetric matrices and $B$ is an affine map that outputs square matrices.

    Quadratic constraints

    Mathematical ConstraintMOI FunctionMOI Set
    $\frac{1}{2}x^TQx + a^Tx + b \ge 0$ScalarQuadraticFunctionGreaterThan
    $\frac{1}{2}x^TQx + a^Tx + b \le 0$ScalarQuadraticFunctionLessThan
    $\frac{1}{2}x^TQx + a^Tx + b = 0$ScalarQuadraticFunctionEqualTo
    Bilinear matrix inequalityVectorQuadraticFunctionPositiveSemidefiniteCone...
    Note

    For more details on the internal format of the quadratic functions see ScalarQuadraticFunction or VectorQuadraticFunction.

    Discrete and logical constraints

    Mathematical ConstraintMOI FunctionMOI Set
    $x_i \in \mathbb{Z}$VariableIndexInteger
    $x_i \in \{0,1\}$VariableIndexZeroOne
    $x_i \in \{0\} \cup [l,u]$VariableIndexSemicontinuous
    $x_i \in \{0\} \cup \{l,l+1,\ldots,u-1,u\}$VariableIndexSemiinteger
    At most one component of $x$ can be nonzeroVectorOfVariablesSOS1
    At most two components of $x$ can be nonzero, and if so they must be adjacent componentsVectorOfVariablesSOS2
    $y = 1 \implies a^T x \in S$VectorAffineFunctionIndicator

    JuMP mapping

    The following bullet points show examples of how JuMP constraints are translated into MOI function-set pairs:

    • @constraint(m, 2x + y <= 10) becomes ScalarAffineFunction-in-LessThan
    • @constraint(m, 2x + y >= 10) becomes ScalarAffineFunction-in-GreaterThan
    • @constraint(m, 2x + y == 10) becomes ScalarAffineFunction-in-EqualTo
    • @constraint(m, 0 <= 2x + y <= 10) becomes ScalarAffineFunction-in-Interval
    • @constraint(m, 2x + y in ArbitrarySet()) becomes ScalarAffineFunction-in-ArbitrarySet.

    Variable bounds are handled in a similar fashion:

    • @variable(m, x <= 1) becomes VariableIndex-in-LessThan
    • @variable(m, x >= 1) becomes VariableIndex-in-GreaterThan

    One notable difference is that a variable with an upper and lower bound is translated into two constraints, rather than an interval, that is:

    • @variable(m, 0 <= x <= 1) becomes VariableIndex-in-LessThan and VariableIndex-in-GreaterThan.
    diff --git a/previews/PR3561/moi/manual/models/index.html b/previews/PR3561/moi/manual/models/index.html index b407dd79ff6..3a1b0ab858f 100644 --- a/previews/PR3561/moi/manual/models/index.html +++ b/previews/PR3561/moi/manual/models/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -

    Models

    The most significant part of MOI is the definition of the model API that is used to specify an instance of an optimization problem (for example, by adding variables and constraints). Objects that implement the model API must inherit from the ModelLike abstract type.

    Notably missing from the model API is the method to solve an optimization problem. ModelLike objects may store an instance (for example, in memory or backed by a file format) without being linked to a particular solver. In addition to the model API, MOI defines AbstractOptimizer and provides methods to solve the model and interact with solutions. See the Solutions section for more details.

    Info

    Throughout the rest of the manual, model is used as a generic ModelLike, and optimizer is used as a generic AbstractOptimizer.

    Tip

    MOI does not export functions, but for brevity we often omit qualifying names with the MOI module. Best practice is to have

    import MathOptInterface as MOI

    and prefix all MOI methods with MOI. in user code. If a name is also available in base Julia, we always explicitly use the module prefix, for example, with MOI.get.

    Attributes

    Attributes are properties of the model that can be queried and modified. These include constants such as the number of variables in a model NumberOfVariables), and properties of variables and constraints such as the name of a variable (VariableName).

    There are four types of attributes:

    Some attributes are values that can be queried by the user but not modified, while other attributes can be modified by the user.

    All interactions with attributes occur through the get and set functions.

    Consult the docstrings of each attribute for information on what it represents.

    ModelLike API

    The following attributes are available:

    AbstractOptimizer API

    The following attributes are available:

    +

    Models

    The most significant part of MOI is the definition of the model API that is used to specify an instance of an optimization problem (for example, by adding variables and constraints). Objects that implement the model API must inherit from the ModelLike abstract type.

    Notably missing from the model API is the method to solve an optimization problem. ModelLike objects may store an instance (for example, in memory or backed by a file format) without being linked to a particular solver. In addition to the model API, MOI defines AbstractOptimizer and provides methods to solve the model and interact with solutions. See the Solutions section for more details.

    Info

    Throughout the rest of the manual, model is used as a generic ModelLike, and optimizer is used as a generic AbstractOptimizer.

    Tip

    MOI does not export functions, but for brevity we often omit qualifying names with the MOI module. Best practice is to have

    import MathOptInterface as MOI

    and prefix all MOI methods with MOI. in user code. If a name is also available in base Julia, we always explicitly use the module prefix, for example, with MOI.get.

    Attributes

    Attributes are properties of the model that can be queried and modified. These include constants such as the number of variables in a model NumberOfVariables), and properties of variables and constraints such as the name of a variable (VariableName).

    There are four types of attributes:

    Some attributes are values that can be queried by the user but not modified, while other attributes can be modified by the user.

    All interactions with attributes occur through the get and set functions.

    Consult the docstrings of each attribute for information on what it represents.

    ModelLike API

    The following attributes are available:

    AbstractOptimizer API

    The following attributes are available:

    diff --git a/previews/PR3561/moi/manual/modification/index.html b/previews/PR3561/moi/manual/modification/index.html index ec46029f806..475b7a42863 100644 --- a/previews/PR3561/moi/manual/modification/index.html +++ b/previews/PR3561/moi/manual/modification/index.html @@ -126,4 +126,4 @@ ); julia> MOI.get(model, MOI.ConstraintFunction(), c) ≈ new_f -true +true diff --git a/previews/PR3561/moi/manual/solutions/index.html b/previews/PR3561/moi/manual/solutions/index.html index 8dbf8ee8e9e..4802bf9305d 100644 --- a/previews/PR3561/moi/manual/solutions/index.html +++ b/previews/PR3561/moi/manual/solutions/index.html @@ -36,4 +36,4 @@ end rethrow(err) # Something else went wrong. Rethrow the error end -end +end diff --git a/previews/PR3561/moi/manual/standard_form/index.html b/previews/PR3561/moi/manual/standard_form/index.html index 100720a55a4..c26d524d510 100644 --- a/previews/PR3561/moi/manual/standard_form/index.html +++ b/previews/PR3561/moi/manual/standard_form/index.html @@ -7,4 +7,4 @@ & \min_{x \in \mathbb{R}^n} & f_0(x) \\ & \;\;\text{s.t.} & f_i(x) & \in \mathcal{S}_i & i = 1 \ldots m -\end{align}\]

    where:

    • the functions $f_0, f_1, \ldots, f_m$ are specified by AbstractFunction objects
    • the sets $\mathcal{S}_1, \ldots, \mathcal{S}_m$ are specified by AbstractSet objects
    Tip

    For more information on this standard form, read our paper.

    MOI defines some commonly used functions and sets, but the interface is extensible to other sets recognized by the solver.

    Functions

    The function types implemented in MathOptInterface.jl are:

    FunctionDescription
    VariableIndex$x_j$, the projection onto a single coordinate defined by a variable index $j$.
    VectorOfVariablesThe projection onto multiple coordinates (that is, extracting a sub-vector).
    ScalarAffineFunction$a^T x + b$, where $a$ is a vector and $b$ scalar.
    ScalarNonlinearFunction$f(x)$, where $f$ is a nonlinear function.
    VectorAffineFunction$A x + b$, where $A$ is a matrix and $b$ is a vector.
    ScalarQuadraticFunction$\frac{1}{2} x^T Q x + a^T x + b$, where $Q$ is a symmetric matrix, $a$ is a vector, and $b$ is a constant.
    VectorQuadraticFunctionA vector of scalar-valued quadratic functions.
    VectorNonlinearFunction$f(x)$, where $f$ is a vector-valued nonlinear function.

    Extensions for nonlinear programming are present but not yet well documented.

    One-dimensional sets

    The one-dimensional set types implemented in MathOptInterface.jl are:

    SetDescription
    LessThan(u)$(-\infty, u]$
    GreaterThan(l)$[l, \infty)$
    EqualTo(v)$\{v\}$
    Interval(l, u)$[l, u]$
    Integer()$\mathbb{Z}$
    ZeroOne()$\{ 0, 1 \}$
    Semicontinuous(l, u)$\{ 0\} \cup [l, u]$
    Semiinteger(l, u)$\{ 0\} \cup \{l,l+1,\ldots,u-1,u\}$

    Vector cones

    The vector-valued set types implemented in MathOptInterface.jl are:

    SetDescription
    Reals(d)$\mathbb{R}^{d}$
    Zeros(d)$0^{d}$
    Nonnegatives(d)$\{ x \in \mathbb{R}^{d} : x \ge 0 \}$
    Nonpositives(d)$\{ x \in \mathbb{R}^{d} : x \le 0 \}$
    SecondOrderCone(d)$\{ (t,x) \in \mathbb{R}^{d} : t \ge \lVert x \rVert_2 \}$
    RotatedSecondOrderCone(d)$\{ (t,u,x) \in \mathbb{R}^{d} : 2tu \ge \lVert x \rVert_2^2, t \ge 0,u \ge 0 \}$
    ExponentialCone()$\{ (x,y,z) \in \mathbb{R}^3 : y \exp (x/y) \le z, y > 0 \}$
    DualExponentialCone()$\{ (u,v,w) \in \mathbb{R}^3 : -u \exp (v/u) \le \exp(1) w, u < 0 \}$
    GeometricMeanCone(d)$\{ (t,x) \in \mathbb{R}^{1+n} : x \ge 0, t \le \sqrt[n]{x_1 x_2 \cdots x_n} \}$ where $n$ is $d - 1$
    PowerCone(α)$\{ (x,y,z) \in \mathbb{R}^3 : x^{\alpha} y^{1-\alpha} \ge |z|, x \ge 0,y \ge 0 \}$
    DualPowerCone(α)$\{ (u,v,w) \in \mathbb{R}^3 : \left(\frac{u}{\alpha}\right(^{\alpha}\left(\frac{v}{1-\alpha}\right)^{1-\alpha} \ge |w|, u,v \ge 0 \}$
    NormOneCone(d)$\{ (t,x) \in \mathbb{R}^{d} : t \ge \sum_i \lvert x_i \rvert \}$
    NormInfinityCone(d)$\{ (t,x) \in \mathbb{R}^{d} : t \ge \max_i \lvert x_i \rvert \}$
    RelativeEntropyCone(d)$\{ (u, v, w) \in \mathbb{R}^{d} : u \ge \sum_i w_i \log (\frac{w_i}{v_i}), v_i \ge 0, w_i \ge 0 \}$
    HyperRectangle(l, u)$\{x \in \bar{\mathbb{R}}^d: x_i \in [l_i, u_i] \forall i=1,\ldots,d\}$
    NormCone(p, d)``{ (t,x) \in \mathbb{R}^{d} : t \ge \left(\sum\limits_i

    Matrix cones

    The matrix-valued set types implemented in MathOptInterface.jl are:

    SetDescription
    RootDetConeTriangle(d)$\{ (t,X) \in \mathbb{R}^{1+d(1+d)/2} : t \le \det(X)^{1/d}, X \mbox{ is the upper triangle of a PSD matrix} \}$
    RootDetConeSquare(d)$\{ (t,X) \in \mathbb{R}^{1+d^2} : t \le \det(X)^{1/d}, X \mbox{ is a PSD matrix} \}$
    PositiveSemidefiniteConeTriangle(d)$\{ X \in \mathbb{R}^{d(d+1)/2} : X \mbox{ is the upper triangle of a PSD matrix} \}$
    PositiveSemidefiniteConeSquare(d)$\{ X \in \mathbb{R}^{d^2} : X \mbox{ is a PSD matrix} \}$
    LogDetConeTriangle(d)$\{ (t,u,X) \in \mathbb{R}^{2+d(1+d)/2} : t \le u\log(\det(X/u)), X \mbox{ is the upper triangle of a PSD matrix}, u > 0 \}$
    LogDetConeSquare(d)$\{ (t,u,X) \in \mathbb{R}^{2+d^2} : t \le u \log(\det(X/u)), X \mbox{ is a PSD matrix}, u > 0 \}$
    NormSpectralCone(r, c)$\{ (t, X) \in \mathbb{R}^{1 + r \times c} : t \ge \sigma_1(X), X \mbox{ is a } r\times c\mbox{ matrix} \}$
    NormNuclearCone(r, c)$\{ (t, X) \in \mathbb{R}^{1 + r \times c} : t \ge \sum_i \sigma_i(X), X \mbox{ is a } r\times c\mbox{ matrix} \}$
    HermitianPositiveSemidefiniteConeTriangle(d)The cone of Hermitian positive semidefinite matrices, with
    side_dimension rows and columns.
    Scaled(S)The set S scaled so that Utilities.set_dot corresponds to LinearAlgebra.dot

    Some of these cones can take two forms: XXXConeTriangle and XXXConeSquare.

    In XXXConeTriangle sets, the matrix is assumed to be symmetric, and the elements are provided by a vector, in which the entries of the upper-right triangular part of the matrix are given column by column (or equivalently, the entries of the lower-left triangular part are given row by row).

    In XXXConeSquare sets, the entries of the matrix are given column by column (or equivalently, row by row), and the matrix is constrained to be symmetric. As an example, given a 2-by-2 matrix of variables X and a one-dimensional variable t, we can specify a root-det constraint as [t, X11, X12, X22] ∈ RootDetConeTriangle or [t, X11, X12, X21, X22] ∈ RootDetConeSquare.

    We provide both forms to enable flexibility for solvers who may natively support one or the other. Transformations between XXXConeTriangle and XXXConeSquare are handled by bridges, which removes the chance of conversion mistakes by users or solver developers.

    Multi-dimensional sets with combinatorial structure

    Other sets are vector-valued, with a particular combinatorial structure. Read their docstrings for more information on how to interpret them.

    SetDescription
    SOS1A Special Ordered Set (SOS) of Type I
    SOS2A Special Ordered Set (SOS) of Type II
    IndicatorA set to specify an indicator constraint
    ComplementsA set to specify a mixed complementarity constraint
    AllDifferentThe all_different global constraint
    BinPackingThe bin_packing global constraint
    CircuitThe circuit global constraint
    CountAtLeastThe at_least global constraint
    CountBelongsThe nvalue global constraint
    CountDistinctThe distinct global constraint
    CountGreaterThanThe count_gt global constraint
    CumulativeThe cumulative global constraint
    PathThe path global constraint
    TableThe table global constraint
    +\end{align}\]

    where:

    • the functions $f_0, f_1, \ldots, f_m$ are specified by AbstractFunction objects
    • the sets $\mathcal{S}_1, \ldots, \mathcal{S}_m$ are specified by AbstractSet objects
    Tip

    For more information on this standard form, read our paper.

    MOI defines some commonly used functions and sets, but the interface is extensible to other sets recognized by the solver.

    Functions

    The function types implemented in MathOptInterface.jl are:

    FunctionDescription
    VariableIndex$x_j$, the projection onto a single coordinate defined by a variable index $j$.
    VectorOfVariablesThe projection onto multiple coordinates (that is, extracting a sub-vector).
    ScalarAffineFunction$a^T x + b$, where $a$ is a vector and $b$ scalar.
    ScalarNonlinearFunction$f(x)$, where $f$ is a nonlinear function.
    VectorAffineFunction$A x + b$, where $A$ is a matrix and $b$ is a vector.
    ScalarQuadraticFunction$\frac{1}{2} x^T Q x + a^T x + b$, where $Q$ is a symmetric matrix, $a$ is a vector, and $b$ is a constant.
    VectorQuadraticFunctionA vector of scalar-valued quadratic functions.
    VectorNonlinearFunction$f(x)$, where $f$ is a vector-valued nonlinear function.

    Extensions for nonlinear programming are present but not yet well documented.

    One-dimensional sets

    The one-dimensional set types implemented in MathOptInterface.jl are:

    SetDescription
    LessThan(u)$(-\infty, u]$
    GreaterThan(l)$[l, \infty)$
    EqualTo(v)$\{v\}$
    Interval(l, u)$[l, u]$
    Integer()$\mathbb{Z}$
    ZeroOne()$\{ 0, 1 \}$
    Semicontinuous(l, u)$\{ 0\} \cup [l, u]$
    Semiinteger(l, u)$\{ 0\} \cup \{l,l+1,\ldots,u-1,u\}$

    Vector cones

    The vector-valued set types implemented in MathOptInterface.jl are:

    SetDescription
    Reals(d)$\mathbb{R}^{d}$
    Zeros(d)$0^{d}$
    Nonnegatives(d)$\{ x \in \mathbb{R}^{d} : x \ge 0 \}$
    Nonpositives(d)$\{ x \in \mathbb{R}^{d} : x \le 0 \}$
    SecondOrderCone(d)$\{ (t,x) \in \mathbb{R}^{d} : t \ge \lVert x \rVert_2 \}$
    RotatedSecondOrderCone(d)$\{ (t,u,x) \in \mathbb{R}^{d} : 2tu \ge \lVert x \rVert_2^2, t \ge 0,u \ge 0 \}$
    ExponentialCone()$\{ (x,y,z) \in \mathbb{R}^3 : y \exp (x/y) \le z, y > 0 \}$
    DualExponentialCone()$\{ (u,v,w) \in \mathbb{R}^3 : -u \exp (v/u) \le \exp(1) w, u < 0 \}$
    GeometricMeanCone(d)$\{ (t,x) \in \mathbb{R}^{1+n} : x \ge 0, t \le \sqrt[n]{x_1 x_2 \cdots x_n} \}$ where $n$ is $d - 1$
    PowerCone(α)$\{ (x,y,z) \in \mathbb{R}^3 : x^{\alpha} y^{1-\alpha} \ge |z|, x \ge 0,y \ge 0 \}$
    DualPowerCone(α)$\{ (u,v,w) \in \mathbb{R}^3 : \left(\frac{u}{\alpha}\right(^{\alpha}\left(\frac{v}{1-\alpha}\right)^{1-\alpha} \ge |w|, u,v \ge 0 \}$
    NormOneCone(d)$\{ (t,x) \in \mathbb{R}^{d} : t \ge \sum_i \lvert x_i \rvert \}$
    NormInfinityCone(d)$\{ (t,x) \in \mathbb{R}^{d} : t \ge \max_i \lvert x_i \rvert \}$
    RelativeEntropyCone(d)$\{ (u, v, w) \in \mathbb{R}^{d} : u \ge \sum_i w_i \log (\frac{w_i}{v_i}), v_i \ge 0, w_i \ge 0 \}$
    HyperRectangle(l, u)$\{x \in \bar{\mathbb{R}}^d: x_i \in [l_i, u_i] \forall i=1,\ldots,d\}$
    NormCone(p, d)``{ (t,x) \in \mathbb{R}^{d} : t \ge \left(\sum\limits_i

    Matrix cones

    The matrix-valued set types implemented in MathOptInterface.jl are:

    SetDescription
    RootDetConeTriangle(d)$\{ (t,X) \in \mathbb{R}^{1+d(1+d)/2} : t \le \det(X)^{1/d}, X \mbox{ is the upper triangle of a PSD matrix} \}$
    RootDetConeSquare(d)$\{ (t,X) \in \mathbb{R}^{1+d^2} : t \le \det(X)^{1/d}, X \mbox{ is a PSD matrix} \}$
    PositiveSemidefiniteConeTriangle(d)$\{ X \in \mathbb{R}^{d(d+1)/2} : X \mbox{ is the upper triangle of a PSD matrix} \}$
    PositiveSemidefiniteConeSquare(d)$\{ X \in \mathbb{R}^{d^2} : X \mbox{ is a PSD matrix} \}$
    LogDetConeTriangle(d)$\{ (t,u,X) \in \mathbb{R}^{2+d(1+d)/2} : t \le u\log(\det(X/u)), X \mbox{ is the upper triangle of a PSD matrix}, u > 0 \}$
    LogDetConeSquare(d)$\{ (t,u,X) \in \mathbb{R}^{2+d^2} : t \le u \log(\det(X/u)), X \mbox{ is a PSD matrix}, u > 0 \}$
    NormSpectralCone(r, c)$\{ (t, X) \in \mathbb{R}^{1 + r \times c} : t \ge \sigma_1(X), X \mbox{ is a } r\times c\mbox{ matrix} \}$
    NormNuclearCone(r, c)$\{ (t, X) \in \mathbb{R}^{1 + r \times c} : t \ge \sum_i \sigma_i(X), X \mbox{ is a } r\times c\mbox{ matrix} \}$
    HermitianPositiveSemidefiniteConeTriangle(d)The cone of Hermitian positive semidefinite matrices, with
    side_dimension rows and columns.
    Scaled(S)The set S scaled so that Utilities.set_dot corresponds to LinearAlgebra.dot

    Some of these cones can take two forms: XXXConeTriangle and XXXConeSquare.

    In XXXConeTriangle sets, the matrix is assumed to be symmetric, and the elements are provided by a vector, in which the entries of the upper-right triangular part of the matrix are given column by column (or equivalently, the entries of the lower-left triangular part are given row by row).

    In XXXConeSquare sets, the entries of the matrix are given column by column (or equivalently, row by row), and the matrix is constrained to be symmetric. As an example, given a 2-by-2 matrix of variables X and a one-dimensional variable t, we can specify a root-det constraint as [t, X11, X12, X22] ∈ RootDetConeTriangle or [t, X11, X12, X21, X22] ∈ RootDetConeSquare.

    We provide both forms to enable flexibility for solvers who may natively support one or the other. Transformations between XXXConeTriangle and XXXConeSquare are handled by bridges, which removes the chance of conversion mistakes by users or solver developers.

    Multi-dimensional sets with combinatorial structure

    Other sets are vector-valued, with a particular combinatorial structure. Read their docstrings for more information on how to interpret them.

    SetDescription
    SOS1A Special Ordered Set (SOS) of Type I
    SOS2A Special Ordered Set (SOS) of Type II
    IndicatorA set to specify an indicator constraint
    ComplementsA set to specify a mixed complementarity constraint
    AllDifferentThe all_different global constraint
    BinPackingThe bin_packing global constraint
    CircuitThe circuit global constraint
    CountAtLeastThe at_least global constraint
    CountBelongsThe nvalue global constraint
    CountDistinctThe distinct global constraint
    CountGreaterThanThe count_gt global constraint
    CumulativeThe cumulative global constraint
    PathThe path global constraint
    TableThe table global constraint
    diff --git a/previews/PR3561/moi/manual/variables/index.html b/previews/PR3561/moi/manual/variables/index.html index 679ae19b8b0..02ea2d5e314 100644 --- a/previews/PR3561/moi/manual/variables/index.html +++ b/previews/PR3561/moi/manual/variables/index.html @@ -14,4 +14,4 @@ false
    Warning

    Not all ModelLike models support deleting variables. A DeleteNotAllowed error is thrown if this is not supported.

    Variable attributes

    The following attributes are available for variables:

    Get and set these attributes using get and set.

    julia> MOI.set(model, MOI.VariableName(), x, "var_x")
     
     julia> MOI.get(model, MOI.VariableName(), x)
    -"var_x"
    +"var_x" diff --git a/previews/PR3561/moi/reference/callbacks/index.html b/previews/PR3561/moi/reference/callbacks/index.html index 2df316d76ed..aae8c4a053a 100644 --- a/previews/PR3561/moi/reference/callbacks/index.html +++ b/previews/PR3561/moi/reference/callbacks/index.html @@ -33,4 +33,4 @@ MOI.submit(optimizer, MOI.HeuristicSolution(callback_data), x, values) end -endsource
    MathOptInterface.HeuristicSolutionType
    HeuristicSolution(callback_data)

    Heuristically obtained feasible solution. The solution is submitted as variables, values where values[i] gives the value of variables[i], similarly to set. The submit call returns a HeuristicSolutionStatus indicating whether the provided solution was accepted or rejected.

    This can be submitted only from the HeuristicCallback. The field callback_data is a solver-specific callback type that is passed as the argument to the heuristic callback.

    Some solvers require a complete solution, others only partial solutions.

    source
    +endsource
    MathOptInterface.HeuristicSolutionType
    HeuristicSolution(callback_data)

    Heuristically obtained feasible solution. The solution is submitted as variables, values where values[i] gives the value of variables[i], similarly to set. The submit call returns a HeuristicSolutionStatus indicating whether the provided solution was accepted or rejected.

    This can be submitted only from the HeuristicCallback. The field callback_data is a solver-specific callback type that is passed as the argument to the heuristic callback.

    Some solvers require a complete solution, others only partial solutions.

    source
    diff --git a/previews/PR3561/moi/reference/constraints/index.html b/previews/PR3561/moi/reference/constraints/index.html index a7376fc93fc..a8f586a2f1f 100644 --- a/previews/PR3561/moi/reference/constraints/index.html +++ b/previews/PR3561/moi/reference/constraints/index.html @@ -5,12 +5,12 @@ gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash});

    Constraints

    Types

    MathOptInterface.ConstraintIndexType
    ConstraintIndex{F, S}

    A type-safe wrapper for Int64 for use in referencing F-in-S constraints in a model. The parameter F is the type of the function in the constraint, and the parameter S is the type of set in the constraint. To allow for deletion, indices need not be consecutive. Indices within a constraint type (i.e. F-in-S) must be unique, but non-unique indices across different constraint types are allowed. If F is VariableIndex then the index is equal to the index of the variable. That is for an index::ConstraintIndex{VariableIndex}, we always have

    index.value == MOI.get(model, MOI.ConstraintFunction(), index).value
    source

    Functions

    MathOptInterface.is_validMethod
    is_valid(model::ModelLike, index::Index)::Bool

    Return a Bool indicating whether this index refers to a valid object in the model model.

    source
    MathOptInterface.add_constraintFunction
    add_constraint(model::ModelLike, func::F, set::S)::ConstraintIndex{F,S} where {F,S}

    Add the constraint $f(x) \in \mathcal{S}$ where $f$ is defined by func, and $\mathcal{S}$ is defined by set.

    add_constraint(model::ModelLike, v::VariableIndex, set::S)::ConstraintIndex{VariableIndex,S} where {S}
     add_constraint(model::ModelLike, vec::Vector{VariableIndex}, set::S)::ConstraintIndex{VectorOfVariables,S} where {S}

    Add the constraint $v \in \mathcal{S}$ where $v$ is the variable (or vector of variables) referenced by v and $\mathcal{S}$ is defined by set.

    source
    MathOptInterface.add_constraintsFunction
    add_constraints(model::ModelLike, funcs::Vector{F}, sets::Vector{S})::Vector{ConstraintIndex{F,S}} where {F,S}

    Add the set of constraints specified by each function-set pair in funcs and sets. F and S should be concrete types. This call is equivalent to add_constraint.(model, funcs, sets) but may be more efficient.

    source
    MathOptInterface.transformFunction

    Transform Constraint Set

    transform(model::ModelLike, c::ConstraintIndex{F,S1}, newset::S2)::ConstraintIndex{F,S2}

    Replace the set in constraint c with newset. The constraint index c will no longer be valid, and the function returns a new constraint index with the correct type.

    Solvers may only support a subset of constraint transforms that they perform efficiently (for example, changing from a LessThan to GreaterThan set). In addition, set modification (where S1 = S2) should be performed via the modify function.

    Typically, the user should delete the constraint and add a new one.

    Examples

    If c is a ConstraintIndex{ScalarAffineFunction{Float64},LessThan{Float64}},

    c2 = transform(model, c, GreaterThan(0.0))
    -transform(model, c, LessThan(0.0)) # errors
    source
    MathOptInterface.supports_constraintFunction
    MOI.supports_constraint(
    -    BT::Type{<:AbstractBridge},
    -    F::Type{<:MOI.AbstractFunction},
    -    S::Type{<:MOI.AbstractSet},
    -)::Bool

    Return a Bool indicating whether the bridges of type BT support bridging F-in-S constraints.

    Implementation notes

    • This method depends only on the type of the inputs, not the runtime values.
    • There is a default fallback, so you need only implement this method for constraint types that the bridge implements.
    source
    supports_constraint(
    +transform(model, c, LessThan(0.0)) # errors
    source
    MathOptInterface.supports_constraintFunction
    supports_constraint(
         model::ModelLike,
         ::Type{F},
         ::Type{S},
    -)::Bool where {F<:AbstractFunction,S<:AbstractSet}

    Return a Bool indicating whether model supports F-in-S constraints, that is, copy_to(model, src) does not throw UnsupportedConstraint when src contains F-in-S constraints. If F-in-S constraints are only not supported in specific circumstances, e.g. F-in-S constraints cannot be combined with another type of constraint, it should still return true.

    source

    Attributes

    MathOptInterface.ConstraintNameType
    ConstraintName()

    A constraint attribute for a string identifying the constraint.

    It is valid for constraints variables to have the same name; however, constraints with duplicate names cannot be looked up using get, regardless of whether they have the same F-in-S type.

    ConstraintName has a default value of "" if not set.

    Notes

    You should not implement ConstraintName for VariableIndex constraints.

    source
    MathOptInterface.ConstraintPrimalType
    ConstraintPrimal(result_index::Int = 1)

    A constraint attribute for the assignment to some constraint's primal value(s) in result result_index.

    If the constraint is f(x) in S, then in most cases the ConstraintPrimal is the value of f, evaluated at the correspondng VariablePrimal solution.

    However, some conic solvers reformulate b - Ax in S to s = b - Ax, s in S. These solvers may return the value of s for ConstraintPrimal, rather than b - Ax. (Although these are constrained by an equality constraint, due to numerical tolerances they may not be identical.)

    If the solver does not have a primal value for the constraint because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the ConstraintPrimal attribute.

    If result_index is omitted, it is 1 by default. See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.ConstraintDualType
    ConstraintDual(result_index::Int = 1)

    A constraint attribute for the assignment to some constraint's dual value(s) in result result_index. If result_index is omitted, it is 1 by default.

    If the solver does not have a dual value for the variable because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a primal solution is available), the result is undefined. Users should first check DualStatus before accessing the ConstraintDual attribute.

    See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.ConstraintBasisStatusType
    ConstraintBasisStatus(result_index::Int = 1)

    A constraint attribute for the BasisStatusCode of some constraint in result result_index, with respect to an available optimal solution basis. If result_index is omitted, it is 1 by default.

    If the solver does not have a basis statue for the constraint because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the ConstraintBasisStatus attribute.

    See ResultCount for information on how the results are ordered.

    Notes

    For the basis status of a variable, query VariableBasisStatus.

    ConstraintBasisStatus does not apply to VariableIndex constraints. You can infer the basis status of a VariableIndex constraint by looking at the result of VariableBasisStatus.

    source
    MathOptInterface.ConstraintFunctionType
    ConstraintFunction()

    A constraint attribute for the AbstractFunction object used to define the constraint.

    It is guaranteed to be equivalent but not necessarily identical to the function provided by the user.

    source
    MathOptInterface.CanonicalConstraintFunctionType
    CanonicalConstraintFunction()

    A constraint attribute for a canonical representation of the AbstractFunction object used to define the constraint.

    Getting this attribute is guaranteed to return a function that is equivalent but not necessarily identical to the function provided by the user.

    By default, MOI.get(model, MOI.CanonicalConstraintFunction(), ci) fallbacks to MOI.Utilities.canonical(MOI.get(model, MOI.ConstraintFunction(), ci)). However, if model knows that the constraint function is canonical then it can implement a specialized method that directly return the function without calling Utilities.canonical. Therefore, the value returned cannot be assumed to be a copy of the function stored in model. Moreover, Utilities.Model checks with Utilities.is_canonical whether the function stored internally is already canonical and if it's the case, then it returns the function stored internally instead of a copy.

    source
    MathOptInterface.BasisStatusCodeType
    BasisStatusCode

    An Enum of possible values for the ConstraintBasisStatus and VariableBasisStatus attributes, explaining the status of a given element with respect to an optimal solution basis.

    Notes

    • NONBASIC_AT_LOWER and NONBASIC_AT_UPPER should be used only for

    constraints with the Interval set. In this case, they are necessary to distinguish which side of the constraint is active. One-sided constraints (e.g., LessThan and GreaterThan) should use NONBASIC instead of the NONBASIC_AT_* values. This restriction does not apply to VariableBasisStatus, which should return NONBASIC_AT_* regardless of whether the alternative bound exists.

    • In linear programs, SUPER_BASIC occurs when a variable with no bounds is not

    in the basis.

    Values

    Possible values are:

    source
    +)::Bool where {F<:AbstractFunction,S<:AbstractSet}

    Return a Bool indicating whether model supports F-in-S constraints, that is, copy_to(model, src) does not throw UnsupportedConstraint when src contains F-in-S constraints. If F-in-S constraints are only not supported in specific circumstances, e.g. F-in-S constraints cannot be combined with another type of constraint, it should still return true.

    source
    MOI.supports_constraint(
    +    BT::Type{<:AbstractBridge},
    +    F::Type{<:MOI.AbstractFunction},
    +    S::Type{<:MOI.AbstractSet},
    +)::Bool

    Return a Bool indicating whether the bridges of type BT support bridging F-in-S constraints.

    Implementation notes

    • This method depends only on the type of the inputs, not the runtime values.
    • There is a default fallback, so you need only implement this method for constraint types that the bridge implements.
    source

    Attributes

    MathOptInterface.ConstraintNameType
    ConstraintName()

    A constraint attribute for a string identifying the constraint.

    It is valid for constraints variables to have the same name; however, constraints with duplicate names cannot be looked up using get, regardless of whether they have the same F-in-S type.

    ConstraintName has a default value of "" if not set.

    Notes

    You should not implement ConstraintName for VariableIndex constraints.

    source
    MathOptInterface.ConstraintPrimalType
    ConstraintPrimal(result_index::Int = 1)

    A constraint attribute for the assignment to some constraint's primal value(s) in result result_index.

    If the constraint is f(x) in S, then in most cases the ConstraintPrimal is the value of f, evaluated at the correspondng VariablePrimal solution.

    However, some conic solvers reformulate b - Ax in S to s = b - Ax, s in S. These solvers may return the value of s for ConstraintPrimal, rather than b - Ax. (Although these are constrained by an equality constraint, due to numerical tolerances they may not be identical.)

    If the solver does not have a primal value for the constraint because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the ConstraintPrimal attribute.

    If result_index is omitted, it is 1 by default. See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.ConstraintDualType
    ConstraintDual(result_index::Int = 1)

    A constraint attribute for the assignment to some constraint's dual value(s) in result result_index. If result_index is omitted, it is 1 by default.

    If the solver does not have a dual value for the variable because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a primal solution is available), the result is undefined. Users should first check DualStatus before accessing the ConstraintDual attribute.

    See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.ConstraintBasisStatusType
    ConstraintBasisStatus(result_index::Int = 1)

    A constraint attribute for the BasisStatusCode of some constraint in result result_index, with respect to an available optimal solution basis. If result_index is omitted, it is 1 by default.

    If the solver does not have a basis statue for the constraint because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the ConstraintBasisStatus attribute.

    See ResultCount for information on how the results are ordered.

    Notes

    For the basis status of a variable, query VariableBasisStatus.

    ConstraintBasisStatus does not apply to VariableIndex constraints. You can infer the basis status of a VariableIndex constraint by looking at the result of VariableBasisStatus.

    source
    MathOptInterface.ConstraintFunctionType
    ConstraintFunction()

    A constraint attribute for the AbstractFunction object used to define the constraint.

    It is guaranteed to be equivalent but not necessarily identical to the function provided by the user.

    source
    MathOptInterface.CanonicalConstraintFunctionType
    CanonicalConstraintFunction()

    A constraint attribute for a canonical representation of the AbstractFunction object used to define the constraint.

    Getting this attribute is guaranteed to return a function that is equivalent but not necessarily identical to the function provided by the user.

    By default, MOI.get(model, MOI.CanonicalConstraintFunction(), ci) fallbacks to MOI.Utilities.canonical(MOI.get(model, MOI.ConstraintFunction(), ci)). However, if model knows that the constraint function is canonical then it can implement a specialized method that directly return the function without calling Utilities.canonical. Therefore, the value returned cannot be assumed to be a copy of the function stored in model. Moreover, Utilities.Model checks with Utilities.is_canonical whether the function stored internally is already canonical and if it's the case, then it returns the function stored internally instead of a copy.

    source
    MathOptInterface.BasisStatusCodeType
    BasisStatusCode

    An Enum of possible values for the ConstraintBasisStatus and VariableBasisStatus attributes, explaining the status of a given element with respect to an optimal solution basis.

    Notes

    • NONBASIC_AT_LOWER and NONBASIC_AT_UPPER should be used only for

    constraints with the Interval set. In this case, they are necessary to distinguish which side of the constraint is active. One-sided constraints (e.g., LessThan and GreaterThan) should use NONBASIC instead of the NONBASIC_AT_* values. This restriction does not apply to VariableBasisStatus, which should return NONBASIC_AT_* regardless of whether the alternative bound exists.

    • In linear programs, SUPER_BASIC occurs when a variable with no bounds is not

    in the basis.

    Values

    Possible values are:

    source
    diff --git a/previews/PR3561/moi/reference/errors/index.html b/previews/PR3561/moi/reference/errors/index.html index a34b9d361df..e58c3c159ec 100644 --- a/previews/PR3561/moi/reference/errors/index.html +++ b/previews/PR3561/moi/reference/errors/index.html @@ -49,4 +49,4 @@ julia> throw(MOI.UnsupportedNonlinearOperator(:black_box)) ERROR: MathOptInterface.UnsupportedNonlinearOperator: The nonlinear operator `:black_box` is not supported by the model. Stacktrace: -[...]source

    Note that setting the ConstraintFunction of a VariableIndex constraint is not allowed:

    +[...]source

    Note that setting the ConstraintFunction of a VariableIndex constraint is not allowed:

    diff --git a/previews/PR3561/moi/reference/models/index.html b/previews/PR3561/moi/reference/models/index.html index 937e9e684b8..587e57fa653 100644 --- a/previews/PR3561/moi/reference/models/index.html +++ b/previews/PR3561/moi/reference/models/index.html @@ -3,11 +3,7 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -

    Models

    Attribute interface

    MathOptInterface.is_set_by_optimizeFunction
    is_set_by_optimize(::AnyAttribute)

    Return a Bool indicating whether the value of the attribute is modified during an optimize! call, that is, the attribute is used to query the result of the optimization.

    Important note when defining new attributes

    This function returns false by default so it should be implemented for attributes that are modified by optimize!.

    source
    MathOptInterface.is_copyableFunction
    is_copyable(::AnyAttribute)

    Return a Bool indicating whether the value of the attribute may be copied during copy_to using set.

    Important note when defining new attributes

    By default is_copyable(attr) returns !is_set_by_optimize(attr). A specific method should be defined for attributes which are copied indirectly during copy_to. For instance, both is_copyable and is_set_by_optimize return false for the following attributes:

    source
    MathOptInterface.getFunction
    MOI.get(b::AbstractBridge, ::MOI.NumberOfVariables)::Int64

    Return the number of variables created by the bridge b in the model.

    See also MOI.NumberOfConstraints.

    Implementation notes

    • There is a default fallback, so you need only implement this if the bridge adds new variables.
    source
    MOI.get(b::AbstractBridge, ::MOI.ListOfVariableIndices)

    Return the list of variables created by the bridge b.

    See also MOI.ListOfVariableIndices.

    Implementation notes

    • There is a default fallback, so you need only implement this if the bridge adds new variables.
    source
    MOI.get(b::AbstractBridge, ::MOI.NumberOfConstraints{F,S})::Int64 where {F,S}

    Return the number of constraints of the type F-in-S created by the bridge b.

    See also MOI.NumberOfConstraints.

    Implementation notes

    • There is a default fallback, so you need only implement this for the constraint types returned by added_constraint_types.
    source
    MOI.get(b::AbstractBridge, ::MOI.ListOfConstraintIndices{F,S}) where {F,S}

    Return a Vector{ConstraintIndex{F,S}} with indices of all constraints of type F-in-S created by the bride b.

    See also MOI.ListOfConstraintIndices.

    Implementation notes

    • There is a default fallback, so you need only implement this for the constraint types returned by added_constraint_types.
    source
    function MOI.get(
    -    model::MOI.ModelLike,
    -    attr::MOI.AbstractConstraintAttribute,
    -    bridge::AbstractBridge,
    -)

    Return the value of the attribute attr of the model model for the constraint bridged by bridge.

    source
    get(optimizer::AbstractOptimizer, attr::AbstractOptimizerAttribute)

    Return an attribute attr of the optimizer optimizer.

    get(model::ModelLike, attr::AbstractModelAttribute)

    Return an attribute attr of the model model.

    get(model::ModelLike, attr::AbstractVariableAttribute, v::VariableIndex)

    If the attribute attr is set for the variable v in the model model, return its value, return nothing otherwise. If the attribute attr is not supported by model then an error should be thrown instead of returning nothing.

    get(model::ModelLike, attr::AbstractVariableAttribute, v::Vector{VariableIndex})

    Return a vector of attributes corresponding to each variable in the collection v in the model model.

    get(model::ModelLike, attr::AbstractConstraintAttribute, c::ConstraintIndex)

    If the attribute attr is set for the constraint c in the model model, return its value, return nothing otherwise. If the attribute attr is not supported by model then an error should be thrown instead of returning nothing.

    get(
    +

    Models

    Attribute interface

    MathOptInterface.is_set_by_optimizeFunction
    is_set_by_optimize(::AnyAttribute)

    Return a Bool indicating whether the value of the attribute is modified during an optimize! call, that is, the attribute is used to query the result of the optimization.

    Important note when defining new attributes

    This function returns false by default so it should be implemented for attributes that are modified by optimize!.

    source
    MathOptInterface.is_copyableFunction
    is_copyable(::AnyAttribute)

    Return a Bool indicating whether the value of the attribute may be copied during copy_to using set.

    Important note when defining new attributes

    By default is_copyable(attr) returns !is_set_by_optimize(attr). A specific method should be defined for attributes which are copied indirectly during copy_to. For instance, both is_copyable and is_set_by_optimize return false for the following attributes:

    source
    MathOptInterface.getFunction
    get(optimizer::AbstractOptimizer, attr::AbstractOptimizerAttribute)

    Return an attribute attr of the optimizer optimizer.

    get(model::ModelLike, attr::AbstractModelAttribute)

    Return an attribute attr of the model model.

    get(model::ModelLike, attr::AbstractVariableAttribute, v::VariableIndex)

    If the attribute attr is set for the variable v in the model model, return its value, return nothing otherwise. If the attribute attr is not supported by model then an error should be thrown instead of returning nothing.

    get(model::ModelLike, attr::AbstractVariableAttribute, v::Vector{VariableIndex})

    Return a vector of attributes corresponding to each variable in the collection v in the model model.

    get(model::ModelLike, attr::AbstractConstraintAttribute, c::ConstraintIndex)

    If the attribute attr is set for the constraint c in the model model, return its value, return nothing otherwise. If the attribute attr is not supported by model then an error should be thrown instead of returning nothing.

    get(
         model::ModelLike,
         attr::AbstractConstraintAttribute,
         c::Vector{ConstraintIndex{F,S}},
    @@ -15,12 +11,11 @@
         model::ModelLike,
         ::Type{ConstraintIndex{F,S}},
         name::String,
    -) where {F,S}

    If an F-in-S constraint with name name exists in the model model, return the corresponding index, otherwise return nothing. Errors if two constraints have the same name.

    get(model::ModelLike, ::Type{ConstraintIndex}, name::String)

    If any constraint with name name exists in the model model, return the corresponding index, otherwise return nothing. This version is available for convenience but may incur a performance penalty because it is not type stable. Errors if two constraints have the same name.

    source
    get(model::GenericModel, attr::MathOptInterface.AbstractOptimizerAttribute)

    Return the value of the attribute attr from the model's MOI backend.

    source
    get(model::GenericModel, attr::MathOptInterface.AbstractModelAttribute)

    Return the value of the attribute attr from the model's MOI backend.

    source
    MathOptInterface.get!Function
    get!(output, model::ModelLike, args...)

    An in-place version of get.

    The signature matches that of get except that the the result is placed in the vector output.

    source
    MathOptInterface.setFunction
    function MOI.set(
    +) where {F,S}

    If an F-in-S constraint with name name exists in the model model, return the corresponding index, otherwise return nothing. Errors if two constraints have the same name.

    get(model::ModelLike, ::Type{ConstraintIndex}, name::String)

    If any constraint with name name exists in the model model, return the corresponding index, otherwise return nothing. This version is available for convenience but may incur a performance penalty because it is not type stable. Errors if two constraints have the same name.

    source
    get(model::GenericModel, attr::MathOptInterface.AbstractOptimizerAttribute)

    Return the value of the attribute attr from the model's MOI backend.

    source
    get(model::GenericModel, attr::MathOptInterface.AbstractModelAttribute)

    Return the value of the attribute attr from the model's MOI backend.

    source
    MOI.get(b::AbstractBridge, ::MOI.NumberOfVariables)::Int64

    Return the number of variables created by the bridge b in the model.

    See also MOI.NumberOfConstraints.

    Implementation notes

    • There is a default fallback, so you need only implement this if the bridge adds new variables.
    source
    MOI.get(b::AbstractBridge, ::MOI.ListOfVariableIndices)

    Return the list of variables created by the bridge b.

    See also MOI.ListOfVariableIndices.

    Implementation notes

    • There is a default fallback, so you need only implement this if the bridge adds new variables.
    source
    MOI.get(b::AbstractBridge, ::MOI.NumberOfConstraints{F,S})::Int64 where {F,S}

    Return the number of constraints of the type F-in-S created by the bridge b.

    See also MOI.NumberOfConstraints.

    Implementation notes

    • There is a default fallback, so you need only implement this for the constraint types returned by added_constraint_types.
    source
    MOI.get(b::AbstractBridge, ::MOI.ListOfConstraintIndices{F,S}) where {F,S}

    Return a Vector{ConstraintIndex{F,S}} with indices of all constraints of type F-in-S created by the bride b.

    See also MOI.ListOfConstraintIndices.

    Implementation notes

    • There is a default fallback, so you need only implement this for the constraint types returned by added_constraint_types.
    source
    function MOI.get(
         model::MOI.ModelLike,
         attr::MOI.AbstractConstraintAttribute,
         bridge::AbstractBridge,
    -    value,
    -)

    Set the value of the attribute attr of the model model for the constraint bridged by bridge.

    source
    set(optimizer::AbstractOptimizer, attr::AbstractOptimizerAttribute, value)

    Assign value to the attribute attr of the optimizer optimizer.

    set(model::ModelLike, attr::AbstractModelAttribute, value)

    Assign value to the attribute attr of the model model.

    set(model::ModelLike, attr::AbstractVariableAttribute, v::VariableIndex, value)

    Assign value to the attribute attr of variable v in model model.

    set(
    +)

    Return the value of the attribute attr of the model model for the constraint bridged by bridge.

    source
    MathOptInterface.get!Function
    get!(output, model::ModelLike, args...)

    An in-place version of get.

    The signature matches that of get except that the the result is placed in the vector output.

    source
    MathOptInterface.setFunction
    set(optimizer::AbstractOptimizer, attr::AbstractOptimizerAttribute, value)

    Assign value to the attribute attr of the optimizer optimizer.

    set(model::ModelLike, attr::AbstractModelAttribute, value)

    Assign value to the attribute attr of the model model.

    set(model::ModelLike, attr::AbstractVariableAttribute, v::VariableIndex, value)

    Assign value to the attribute attr of variable v in model model.

    set(
         model::ModelLike,
         attr::AbstractVariableAttribute,
         v::Vector{VariableIndex},
    @@ -45,11 +40,12 @@
         ::ConstraintFunction,
         c::ConstraintIndex{F,S},
         func::F,
    -) where {F,S}

    Replace the function in constraint c with func. F must match the original function type used to define the constraint.

    Note

    Setting the constraint function is not allowed if F is VariableIndex; a SettingVariableIndexNotAllowed error is thrown instead. This is because, it would require changing the index c since the index of VariableIndex constraints must be the same as the index of the variable.

    source
    MathOptInterface.supportsFunction
    MOI.supports(
    +) where {F,S}

    Replace the function in constraint c with func. F must match the original function type used to define the constraint.

    Note

    Setting the constraint function is not allowed if F is VariableIndex; a SettingVariableIndexNotAllowed error is thrown instead. This is because, it would require changing the index c since the index of VariableIndex constraints must be the same as the index of the variable.

    source
    function MOI.set(
         model::MOI.ModelLike,
         attr::MOI.AbstractConstraintAttribute,
    -    BT::Type{<:AbstractBridge},
    -)

    Return a Bool indicating whether BT supports setting attr to model.

    source
    supports(model::ModelLike, sub::AbstractSubmittable)::Bool

    Return a Bool indicating whether model supports the submittable sub.

    supports(model::ModelLike, attr::AbstractOptimizerAttribute)::Bool

    Return a Bool indicating whether model supports the optimizer attribute attr. That is, it returns false if copy_to(model, src) shows a warning in case attr is in the ListOfOptimizerAttributesSet of src; see copy_to for more details on how unsupported optimizer attributes are handled in copy.

    supports(model::ModelLike, attr::AbstractModelAttribute)::Bool

    Return a Bool indicating whether model supports the model attribute attr. That is, it returns false if copy_to(model, src) cannot be performed in case attr is in the ListOfModelAttributesSet of src.

    supports(
    +    bridge::AbstractBridge,
    +    value,
    +)

    Set the value of the attribute attr of the model model for the constraint bridged by bridge.

    source
    MathOptInterface.supportsFunction
    supports(model::ModelLike, sub::AbstractSubmittable)::Bool

    Return a Bool indicating whether model supports the submittable sub.

    supports(model::ModelLike, attr::AbstractOptimizerAttribute)::Bool

    Return a Bool indicating whether model supports the optimizer attribute attr. That is, it returns false if copy_to(model, src) shows a warning in case attr is in the ListOfOptimizerAttributesSet of src; see copy_to for more details on how unsupported optimizer attributes are handled in copy.

    supports(model::ModelLike, attr::AbstractModelAttribute)::Bool

    Return a Bool indicating whether model supports the model attribute attr. That is, it returns false if copy_to(model, src) cannot be performed in case attr is in the ListOfModelAttributesSet of src.

    supports(
         model::ModelLike,
         attr::AbstractVariableAttribute,
         ::Type{VariableIndex},
    @@ -57,7 +53,11 @@
         model::ModelLike,
         attr::AbstractConstraintAttribute,
         ::Type{ConstraintIndex{F,S}},
    -)::Bool where {F,S}

    Return a Bool indicating whether model supports the constraint attribute attr applied to an F-in-S constraint. That is, it returns false if copy_to(model, src) cannot be performed in case attr is in the ListOfConstraintAttributesSet of src.

    For all five methods, if the attribute is only not supported in specific circumstances, it should still return true.

    Note that supports is only defined for attributes for which is_copyable returns true as other attributes do not appear in the list of attributes set obtained by ListOf...AttributesSet.

    source
    MathOptInterface.attribute_value_typeFunction
    attribute_value_type(attr::AnyAttribute)

    Given an attribute attr, return the type of value expected by get, or returned by set.

    Notes

    • Only implement this if it make sense to do so. If un-implemented, the default is Any.
    source

    Model interface

    MathOptInterface.is_emptyFunction
    is_empty(model::ModelLike)

    Returns false if the model has any model attribute set or has any variables or constraints.

    Note that an empty model can have optimizer attributes set.

    source
    MathOptInterface.empty!Function
    empty!(model::ModelLike)

    Empty the model, that is, remove all variables, constraints and model attributes but not optimizer attributes.

    source
    MathOptInterface.write_to_fileFunction
    write_to_file(model::ModelLike, filename::String)

    Write the current model to the file at filename.

    Supported file types depend on the model type.

    source
    MathOptInterface.read_from_fileFunction
    read_from_file(model::ModelLike, filename::String)

    Read the file filename into the model model. If model is non-empty, this may throw an error.

    Supported file types depend on the model type.

    Note

    Once the contents of the file are loaded into the model, users can query the variables via get(model, ListOfVariableIndices()). However, some filetypes, such as LP files, do not maintain an explicit ordering of the variables. Therefore, the returned list may be in an arbitrary order.

    To avoid depending on the order of the indices, look up each variable index by name using get(model, VariableIndex, "name").

    source
    MathOptInterface.copy_toFunction
    copy_to(dest::ModelLike, src::ModelLike)::IndexMap

    Copy the model from src into dest.

    The target dest is emptied, and all previous indices to variables and constraints in dest are invalidated.

    Returns an IndexMap object that translates variable and constraint indices from the src model to the corresponding indices in the dest model.

    Notes

    AbstractOptimizerAttributes are not copied to the dest model.

    IndexMap

    Implementations of copy_to must return an IndexMap. For technical reasons, this type is defined in the Utilities submodule as MOI.Utilities.IndexMap. However, since it is an integral part of the MOI API, we provide MOI.IndexMap as an alias.

    Example

    # Given empty `ModelLike` objects `src` and `dest`.
    +)::Bool where {F,S}

    Return a Bool indicating whether model supports the constraint attribute attr applied to an F-in-S constraint. That is, it returns false if copy_to(model, src) cannot be performed in case attr is in the ListOfConstraintAttributesSet of src.

    For all five methods, if the attribute is only not supported in specific circumstances, it should still return true.

    Note that supports is only defined for attributes for which is_copyable returns true as other attributes do not appear in the list of attributes set obtained by ListOf...AttributesSet.

    source
    MOI.supports(
    +    model::MOI.ModelLike,
    +    attr::MOI.AbstractConstraintAttribute,
    +    BT::Type{<:AbstractBridge},
    +)

    Return a Bool indicating whether BT supports setting attr to model.

    source
    MathOptInterface.attribute_value_typeFunction
    attribute_value_type(attr::AnyAttribute)

    Given an attribute attr, return the type of value expected by get, or returned by set.

    Notes

    • Only implement this if it make sense to do so. If un-implemented, the default is Any.
    source

    Model interface

    MathOptInterface.is_emptyFunction
    is_empty(model::ModelLike)

    Returns false if the model has any model attribute set or has any variables or constraints.

    Note that an empty model can have optimizer attributes set.

    source
    MathOptInterface.empty!Function
    empty!(model::ModelLike)

    Empty the model, that is, remove all variables, constraints and model attributes but not optimizer attributes.

    source
    MathOptInterface.write_to_fileFunction
    write_to_file(model::ModelLike, filename::String)

    Write the current model to the file at filename.

    Supported file types depend on the model type.

    source
    MathOptInterface.read_from_fileFunction
    read_from_file(model::ModelLike, filename::String)

    Read the file filename into the model model. If model is non-empty, this may throw an error.

    Supported file types depend on the model type.

    Note

    Once the contents of the file are loaded into the model, users can query the variables via get(model, ListOfVariableIndices()). However, some filetypes, such as LP files, do not maintain an explicit ordering of the variables. Therefore, the returned list may be in an arbitrary order.

    To avoid depending on the order of the indices, look up each variable index by name using get(model, VariableIndex, "name").

    source
    MathOptInterface.copy_toFunction
    copy_to(dest::ModelLike, src::ModelLike)::IndexMap

    Copy the model from src into dest.

    The target dest is emptied, and all previous indices to variables and constraints in dest are invalidated.

    Returns an IndexMap object that translates variable and constraint indices from the src model to the corresponding indices in the dest model.

    Notes

    AbstractOptimizerAttributes are not copied to the dest model.

    IndexMap

    Implementations of copy_to must return an IndexMap. For technical reasons, this type is defined in the Utilities submodule as MOI.Utilities.IndexMap. However, since it is an integral part of the MOI API, we provide MOI.IndexMap as an alias.

    Example

    # Given empty `ModelLike` objects `src` and `dest`.
     
     x = add_variable(src)
     
    @@ -133,4 +133,4 @@
     MOI.get(model, MOI.RelativeGapTolerance())  # returns 1e-3
     # ... and the relative gap of the obtained solution is smaller or equal to the
     # tolerance
    -MOI.get(model, MOI.RelativeGap())  # should return something ≤ 1e-3
    Warning

    The mathematical definition of "relative gap", and its allowed range, are solver-dependent. Typically, solvers expect a value between 0.0 and 1.0.

    source

    List of attributes useful for optimizers

    MathOptInterface.TerminationStatusCodeType
    TerminationStatusCode

    An Enum of possible values for the TerminationStatus attribute. This attribute is meant to explain the reason why the optimizer stopped executing in the most recent call to optimize!.

    Values

    Possible values are:

    • OPTIMIZE_NOT_CALLED: The algorithm has not started.
    • OPTIMAL: The algorithm found a globally optimal solution.
    • INFEASIBLE: The algorithm concluded that no feasible solution exists.
    • DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.
    • LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.
    • LOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.
    • INFEASIBLE_OR_UNBOUNDED: The algorithm stopped because it decided that the problem is infeasible or unbounded; this occasionally happens during MIP presolve.
    • ALMOST_OPTIMAL: The algorithm found a globally optimal solution to relaxed tolerances.
    • ALMOST_INFEASIBLE: The algorithm concluded that no feasible solution exists within relaxed tolerances.
    • ALMOST_DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem within relaxed tolerances.
    • ALMOST_LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, or could not find directions for improvement within relaxed tolerances.
    • ITERATION_LIMIT: An iterative algorithm stopped after conducting the maximum number of iterations.
    • TIME_LIMIT: The algorithm stopped after a user-specified computation time.
    • NODE_LIMIT: A branch-and-bound algorithm stopped because it explored a maximum number of nodes in the branch-and-bound tree.
    • SOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.
    • MEMORY_LIMIT: The algorithm stopped because it ran out of memory.
    • OBJECTIVE_LIMIT: The algorithm stopped because it found a solution better than a minimum limit set by the user.
    • NORM_LIMIT: The algorithm stopped because the norm of an iterate became too large.
    • OTHER_LIMIT: The algorithm stopped due to a limit not covered by one of the _LIMIT_ statuses above.
    • SLOW_PROGRESS: The algorithm stopped because it was unable to continue making progress towards the solution.
    • NUMERICAL_ERROR: The algorithm stopped because it encountered unrecoverable numerical error.
    • INVALID_MODEL: The algorithm stopped because the model is invalid.
    • INVALID_OPTION: The algorithm stopped because it was provided an invalid option.
    • INTERRUPTED: The algorithm stopped because of an interrupt signal.
    • OTHER_ERROR: The algorithm stopped because of an error not covered by one of the statuses defined above.
    source
    MathOptInterface.DUAL_INFEASIBLEConstant
    DUAL_INFEASIBLE::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.

    source
    MathOptInterface.LOCALLY_SOLVEDConstant
    LOCALLY_SOLVED::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.

    source
    MathOptInterface.LOCALLY_INFEASIBLEConstant
    LOCALLY_INFEASIBLE::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    LOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.

    source
    MathOptInterface.SOLUTION_LIMITConstant
    SOLUTION_LIMIT::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    SOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.

    source
    MathOptInterface.DualStatusType
    DualStatus(result_index::Int = 1)

    A model attribute for the ResultStatusCode of the dual result result_index. If result_index is omitted, it defaults to 1.

    See ResultCount for information on how the results are ordered.

    If result_index is larger than the value of ResultCount then NO_SOLUTION is returned.

    source
    MathOptInterface.ResultCountType
    ResultCount()

    A model attribute for the number of results available.

    Order of solutions

    A number of attributes contain an index, result_index, which is used to refer to one of the available results. Thus, result_index must be an integer between 1 and the number of available results.

    As a general rule, the first result (result_index=1) is the most important result (e.g., an optimal solution or an infeasibility certificate). Other results will typically be alternate solutions that the solver found during the search for the first result.

    If a (local) optimal solution is available, i.e., TerminationStatus is OPTIMAL or LOCALLY_SOLVED, the first result must correspond to the (locally) optimal solution. Other results may be alternative optimal solutions, or they may be other suboptimal solutions; use ObjectiveValue to distingiush between them.

    If a primal or dual infeasibility certificate is available, i.e., TerminationStatus is INFEASIBLE or DUAL_INFEASIBLE and the corresponding PrimalStatus or DualStatus is INFEASIBILITY_CERTIFICATE, then the first result must be a certificate. Other results may be alternate certificates, or infeasible points.

    source
    MathOptInterface.ObjectiveValueType
    ObjectiveValue(result_index::Int = 1)

    A model attribute for the objective value of the primal solution result_index.

    If the solver does not have a primal value for the objective because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the ObjectiveValue attribute.

    See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.DualObjectiveValueType
    DualObjectiveValue(result_index::Int = 1)

    A model attribute for the value of the objective function of the dual problem for the result_indexth dual result.

    If the solver does not have a dual value for the objective because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a primal solution is available), the result is undefined. Users should first check DualStatus before accessing the DualObjectiveValue attribute.

    See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.RelativeGapType
    RelativeGap()

    A model attribute for the final relative optimality gap.

    Warning

    The definition of this gap is solver-dependent. However, most solvers implementing this attribute define the relative gap as some variation of $\frac{|b-f|}{|f|}$, where $b$ is the best bound and $f$ is the best feasible objective value.

    source
    MathOptInterface.SimplexIterationsType
    SimplexIterations()

    A model attribute for the cumulative number of simplex iterations during the optimization process.

    For a mixed-integer program (MIP), the return value is the total simplex iterations for all nodes.

    source
    MathOptInterface.NodeCountType
    NodeCount()

    A model attribute for the total number of branch-and-bound nodes explored while solving a mixed-integer program (MIP).

    source

    ResultStatusCode

    MathOptInterface.ResultStatusCodeType
    ResultStatusCode

    An Enum of possible values for the PrimalStatus and DualStatus attributes.

    The values indicate how to interpret the result vector.

    Values

    Possible values are:

    • NO_SOLUTION: the result vector is empty.
    • FEASIBLE_POINT: the result vector is a feasible point.
    • NEARLY_FEASIBLE_POINT: the result vector is feasible if some constraint tolerances are relaxed.
    • INFEASIBLE_POINT: the result vector is an infeasible point.
    • INFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.
    • NEARLY_INFEASIBILITY_CERTIFICATE: the result satisfies a relaxed criterion for a certificate of infeasibility.
    • REDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.
    • NEARLY_REDUCTION_CERTIFICATE: the result satisfies a relaxed criterion for an ill-posed certificate.
    • UNKNOWN_RESULT_STATUS: the result vector contains a solution with an unknown interpretation.
    • OTHER_RESULT_STATUS: the result vector contains a solution with an interpretation not covered by one of the statuses defined above
    source
    MathOptInterface.INFEASIBILITY_CERTIFICATEConstant
    INFEASIBILITY_CERTIFICATE::ResultStatusCode

    An instance of the ResultStatusCode enum.

    INFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.

    source
    MathOptInterface.REDUCTION_CERTIFICATEConstant
    REDUCTION_CERTIFICATE::ResultStatusCode

    An instance of the ResultStatusCode enum.

    REDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.

    source

    Conflict Status

    MathOptInterface.compute_conflict!Function
    compute_conflict!(optimizer::AbstractOptimizer)

    Computes a minimal subset of constraints such that the model with the other constraint removed is still infeasible.

    Some solvers call a set of conflicting constraints an Irreducible Inconsistent Subsystem (IIS).

    See also ConflictStatus and ConstraintConflictStatus.

    Note

    If the model is modified after a call to compute_conflict!, the implementor is not obliged to purge the conflict. Any calls to the above attributes may return values for the original conflict without a warning. Similarly, when modifying the model, the conflict can be discarded.

    source
    MathOptInterface.ConflictStatusCodeType
    ConflictStatusCode

    An Enum of possible values for the ConflictStatus attribute. This attribute is meant to explain the reason why the conflict finder stopped executing in the most recent call to compute_conflict!.

    Possible values are:

    • COMPUTE_CONFLICT_NOT_CALLED: the function compute_conflict! has not yet been called
    • NO_CONFLICT_EXISTS: there is no conflict because the problem is feasible
    • NO_CONFLICT_FOUND: the solver could not find a conflict
    • CONFLICT_FOUND: at least one conflict could be found
    source
    MathOptInterface.ConflictParticipationStatusCodeType
    ConflictParticipationStatusCode

    An Enum of possible values for the ConstraintConflictStatus attribute. This attribute is meant to indicate whether a given constraint participates or not in the last computed conflict.

    Values

    Possible values are:

    • NOT_IN_CONFLICT: the constraint does not participate in the conflict
    • IN_CONFLICT: the constraint participates in the conflict
    • MAYBE_IN_CONFLICT: the constraint may participate in the conflict, the solver was not able to prove that the constraint can be excluded from the conflict
    source
    +MOI.get(model, MOI.RelativeGap()) # should return something ≤ 1e-3
    Warning

    The mathematical definition of "relative gap", and its allowed range, are solver-dependent. Typically, solvers expect a value between 0.0 and 1.0.

    source

    List of attributes useful for optimizers

    MathOptInterface.TerminationStatusCodeType
    TerminationStatusCode

    An Enum of possible values for the TerminationStatus attribute. This attribute is meant to explain the reason why the optimizer stopped executing in the most recent call to optimize!.

    Values

    Possible values are:

    • OPTIMIZE_NOT_CALLED: The algorithm has not started.
    • OPTIMAL: The algorithm found a globally optimal solution.
    • INFEASIBLE: The algorithm concluded that no feasible solution exists.
    • DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.
    • LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.
    • LOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.
    • INFEASIBLE_OR_UNBOUNDED: The algorithm stopped because it decided that the problem is infeasible or unbounded; this occasionally happens during MIP presolve.
    • ALMOST_OPTIMAL: The algorithm found a globally optimal solution to relaxed tolerances.
    • ALMOST_INFEASIBLE: The algorithm concluded that no feasible solution exists within relaxed tolerances.
    • ALMOST_DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem within relaxed tolerances.
    • ALMOST_LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, or could not find directions for improvement within relaxed tolerances.
    • ITERATION_LIMIT: An iterative algorithm stopped after conducting the maximum number of iterations.
    • TIME_LIMIT: The algorithm stopped after a user-specified computation time.
    • NODE_LIMIT: A branch-and-bound algorithm stopped because it explored a maximum number of nodes in the branch-and-bound tree.
    • SOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.
    • MEMORY_LIMIT: The algorithm stopped because it ran out of memory.
    • OBJECTIVE_LIMIT: The algorithm stopped because it found a solution better than a minimum limit set by the user.
    • NORM_LIMIT: The algorithm stopped because the norm of an iterate became too large.
    • OTHER_LIMIT: The algorithm stopped due to a limit not covered by one of the _LIMIT_ statuses above.
    • SLOW_PROGRESS: The algorithm stopped because it was unable to continue making progress towards the solution.
    • NUMERICAL_ERROR: The algorithm stopped because it encountered unrecoverable numerical error.
    • INVALID_MODEL: The algorithm stopped because the model is invalid.
    • INVALID_OPTION: The algorithm stopped because it was provided an invalid option.
    • INTERRUPTED: The algorithm stopped because of an interrupt signal.
    • OTHER_ERROR: The algorithm stopped because of an error not covered by one of the statuses defined above.
    source
    MathOptInterface.DUAL_INFEASIBLEConstant
    DUAL_INFEASIBLE::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.

    source
    MathOptInterface.LOCALLY_SOLVEDConstant
    LOCALLY_SOLVED::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.

    source
    MathOptInterface.LOCALLY_INFEASIBLEConstant
    LOCALLY_INFEASIBLE::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    LOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.

    source
    MathOptInterface.SOLUTION_LIMITConstant
    SOLUTION_LIMIT::TerminationStatusCode

    An instance of the TerminationStatusCode enum.

    SOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.

    source
    MathOptInterface.DualStatusType
    DualStatus(result_index::Int = 1)

    A model attribute for the ResultStatusCode of the dual result result_index. If result_index is omitted, it defaults to 1.

    See ResultCount for information on how the results are ordered.

    If result_index is larger than the value of ResultCount then NO_SOLUTION is returned.

    source
    MathOptInterface.ResultCountType
    ResultCount()

    A model attribute for the number of results available.

    Order of solutions

    A number of attributes contain an index, result_index, which is used to refer to one of the available results. Thus, result_index must be an integer between 1 and the number of available results.

    As a general rule, the first result (result_index=1) is the most important result (e.g., an optimal solution or an infeasibility certificate). Other results will typically be alternate solutions that the solver found during the search for the first result.

    If a (local) optimal solution is available, i.e., TerminationStatus is OPTIMAL or LOCALLY_SOLVED, the first result must correspond to the (locally) optimal solution. Other results may be alternative optimal solutions, or they may be other suboptimal solutions; use ObjectiveValue to distingiush between them.

    If a primal or dual infeasibility certificate is available, i.e., TerminationStatus is INFEASIBLE or DUAL_INFEASIBLE and the corresponding PrimalStatus or DualStatus is INFEASIBILITY_CERTIFICATE, then the first result must be a certificate. Other results may be alternate certificates, or infeasible points.

    source
    MathOptInterface.ObjectiveValueType
    ObjectiveValue(result_index::Int = 1)

    A model attribute for the objective value of the primal solution result_index.

    If the solver does not have a primal value for the objective because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the ObjectiveValue attribute.

    See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.DualObjectiveValueType
    DualObjectiveValue(result_index::Int = 1)

    A model attribute for the value of the objective function of the dual problem for the result_indexth dual result.

    If the solver does not have a dual value for the objective because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a primal solution is available), the result is undefined. Users should first check DualStatus before accessing the DualObjectiveValue attribute.

    See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.RelativeGapType
    RelativeGap()

    A model attribute for the final relative optimality gap.

    Warning

    The definition of this gap is solver-dependent. However, most solvers implementing this attribute define the relative gap as some variation of $\frac{|b-f|}{|f|}$, where $b$ is the best bound and $f$ is the best feasible objective value.

    source
    MathOptInterface.SimplexIterationsType
    SimplexIterations()

    A model attribute for the cumulative number of simplex iterations during the optimization process.

    For a mixed-integer program (MIP), the return value is the total simplex iterations for all nodes.

    source
    MathOptInterface.NodeCountType
    NodeCount()

    A model attribute for the total number of branch-and-bound nodes explored while solving a mixed-integer program (MIP).

    source

    ResultStatusCode

    MathOptInterface.ResultStatusCodeType
    ResultStatusCode

    An Enum of possible values for the PrimalStatus and DualStatus attributes.

    The values indicate how to interpret the result vector.

    Values

    Possible values are:

    • NO_SOLUTION: the result vector is empty.
    • FEASIBLE_POINT: the result vector is a feasible point.
    • NEARLY_FEASIBLE_POINT: the result vector is feasible if some constraint tolerances are relaxed.
    • INFEASIBLE_POINT: the result vector is an infeasible point.
    • INFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.
    • NEARLY_INFEASIBILITY_CERTIFICATE: the result satisfies a relaxed criterion for a certificate of infeasibility.
    • REDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.
    • NEARLY_REDUCTION_CERTIFICATE: the result satisfies a relaxed criterion for an ill-posed certificate.
    • UNKNOWN_RESULT_STATUS: the result vector contains a solution with an unknown interpretation.
    • OTHER_RESULT_STATUS: the result vector contains a solution with an interpretation not covered by one of the statuses defined above
    source
    MathOptInterface.INFEASIBILITY_CERTIFICATEConstant
    INFEASIBILITY_CERTIFICATE::ResultStatusCode

    An instance of the ResultStatusCode enum.

    INFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.

    source
    MathOptInterface.REDUCTION_CERTIFICATEConstant
    REDUCTION_CERTIFICATE::ResultStatusCode

    An instance of the ResultStatusCode enum.

    REDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.

    source

    Conflict Status

    MathOptInterface.compute_conflict!Function
    compute_conflict!(optimizer::AbstractOptimizer)

    Computes a minimal subset of constraints such that the model with the other constraint removed is still infeasible.

    Some solvers call a set of conflicting constraints an Irreducible Inconsistent Subsystem (IIS).

    See also ConflictStatus and ConstraintConflictStatus.

    Note

    If the model is modified after a call to compute_conflict!, the implementor is not obliged to purge the conflict. Any calls to the above attributes may return values for the original conflict without a warning. Similarly, when modifying the model, the conflict can be discarded.

    source
    MathOptInterface.ConflictStatusCodeType
    ConflictStatusCode

    An Enum of possible values for the ConflictStatus attribute. This attribute is meant to explain the reason why the conflict finder stopped executing in the most recent call to compute_conflict!.

    Possible values are:

    • COMPUTE_CONFLICT_NOT_CALLED: the function compute_conflict! has not yet been called
    • NO_CONFLICT_EXISTS: there is no conflict because the problem is feasible
    • NO_CONFLICT_FOUND: the solver could not find a conflict
    • CONFLICT_FOUND: at least one conflict could be found
    source
    MathOptInterface.ConflictParticipationStatusCodeType
    ConflictParticipationStatusCode

    An Enum of possible values for the ConstraintConflictStatus attribute. This attribute is meant to indicate whether a given constraint participates or not in the last computed conflict.

    Values

    Possible values are:

    • NOT_IN_CONFLICT: the constraint does not participate in the conflict
    • IN_CONFLICT: the constraint participates in the conflict
    • MAYBE_IN_CONFLICT: the constraint may participate in the conflict, the solver was not able to prove that the constraint can be excluded from the conflict
    source
    diff --git a/previews/PR3561/moi/reference/modification/index.html b/previews/PR3561/moi/reference/modification/index.html index 3c0531c14c2..94187e9ab8b 100644 --- a/previews/PR3561/moi/reference/modification/index.html +++ b/previews/PR3561/moi/reference/modification/index.html @@ -28,4 +28,4 @@ )source
    MathOptInterface.AbstractFunctionModificationType
    AbstractFunctionModification

    An abstract supertype for structs which specify partial modifications to functions, to be used for making small modifications instead of replacing the functions entirely.

    source
    +) where {T}

    A struct used to request a change in the linear coefficients of a single variable in a vector-valued function.

    New coefficients are specified by (output_index, coefficient) tuples.

    Applicable to VectorAffineFunction and VectorQuadraticFunction.

    source diff --git a/previews/PR3561/moi/reference/nonlinear/index.html b/previews/PR3561/moi/reference/nonlinear/index.html index 38eb2caf023..92a09f0d090 100644 --- a/previews/PR3561/moi/reference/nonlinear/index.html +++ b/previews/PR3561/moi/reference/nonlinear/index.html @@ -79,4 +79,4 @@ )source
    MathOptInterface.constraint_exprFunction
    constraint_expr(d::AbstractNLPEvaluator, i::Integer)::Expr

    Returns a Julia Expr object representing the expression graph for the $i\text{th}$ nonlinear constraint.

    Format

    The format is the same as objective_expr, with an additional comparison operator indicating the sense of and bounds on the constraint.

    For single-sided comparisons, the body of the constraint must be on the left-hand side, and the right-hand side must be a constant.

    For double-sided comparisons (that is, $l \le f(x) \le u$), the body of the constraint must be in the middle, and the left- and right-hand sides must be constants.

    The bounds on the constraints must match the NLPBoundsPairs passed to NLPBlockData.

    Examples

    :(x[MOI.VariableIndex(1)]^2 <= 1.0)
     :(x[MOI.VariableIndex(1)]^2 >= 2.0)
     :(x[MOI.VariableIndex(1)]^2 == 3.0)
    -:(4.0 <= x[MOI.VariableIndex(1)]^2 <= 5.0)
    source
    +:(4.0 <= x[MOI.VariableIndex(1)]^2 <= 5.0)source diff --git a/previews/PR3561/moi/reference/standard_form/index.html b/previews/PR3561/moi/reference/standard_form/index.html index c7a9380b6d4..39fd4b07ddd 100644 --- a/previews/PR3561/moi/reference/standard_form/index.html +++ b/previews/PR3561/moi/reference/standard_form/index.html @@ -990,4 +990,4 @@ MOI.VectorOfVariables([t; vec(X)]), MOI.RootDetConeSquare(2), ) -MathOptInterface.ConstraintIndex{MathOptInterface.VectorOfVariables, MathOptInterface.RootDetConeSquare}(1)source +MathOptInterface.ConstraintIndex{MathOptInterface.VectorOfVariables, MathOptInterface.RootDetConeSquare}(1)source diff --git a/previews/PR3561/moi/reference/variables/index.html b/previews/PR3561/moi/reference/variables/index.html index 6d62fb9712e..f38e1423cea 100644 --- a/previews/PR3561/moi/reference/variables/index.html +++ b/previews/PR3561/moi/reference/variables/index.html @@ -25,4 +25,4 @@ )::Bool

    Return a Bool indicating whether model supports constraining a variable to belong to a set of type S either on creation of the variable with add_constrained_variable or after the variable is created with add_constraint.

    By default, this function falls back to supports_add_constrained_variables(model, Reals) && supports_constraint(model, MOI.VariableIndex, S) which is the correct definition for most models.

    Example

    Suppose that a solver supports only two kind of variables: binary variables and continuous variables with a lower bound. If the solver decides not to support VariableIndex-in-Binary and VariableIndex-in-GreaterThan constraints, it only has to implement add_constrained_variable for these two sets which prevents the user to add both a binary constraint and a lower bound on the same variable. Moreover, if the user adds a VariableIndex-in-GreaterThan constraint, implementing this interface (i.e., supports_add_constrained_variables) enables the constraint to be transparently bridged into a supported constraint.

    source
    MathOptInterface.supports_add_constrained_variablesFunction
    supports_add_constrained_variables(
         model::ModelLike,
         S::Type{<:AbstractVectorSet}
    -)::Bool

    Return a Bool indicating whether model supports constraining a vector of variables to belong to a set of type S either on creation of the vector of variables with add_constrained_variables or after the variable is created with add_constraint.

    By default, if S is Reals then this function returns true and otherwise, it falls back to supports_add_constrained_variables(model, Reals) && supports_constraint(model, MOI.VectorOfVariables, S) which is the correct definition for most models.

    Example

    In the standard conic form (see Duality), the variables are grouped into several cones and the constraints are affine equality constraints. If Reals is not one of the cones supported by the solvers then it needs to implement supports_add_constrained_variables(::Optimizer, ::Type{Reals}) = false as free variables are not supported. The solvers should then implement supports_add_constrained_variables(::Optimizer, ::Type{<:SupportedCones}) = true where SupportedCones is the union of all cone types that are supported; it does not have to implement the method supports_constraint(::Type{VectorOfVariables}, Type{<:SupportedCones}) as it should return false and it's the default. This prevents the user to constrain the same variable in two different cones. When a VectorOfVariables-in-S is added, the variables of the vector have already been created so they already belong to given cones. If bridges are enabled, the constraint will therefore be bridged by adding slack variables in S and equality constraints ensuring that the slack variables are equal to the corresponding variables of the given constraint function.

    Note that there may also be sets for which !supports_add_constrained_variables(model, S) and supports_constraint(model, MOI.VectorOfVariables, S). For instance, suppose a solver supports positive semidefinite variable constraints and two types of variables: binary variables and nonnegative variables. Then the solver should support adding VectorOfVariables-in-PositiveSemidefiniteConeTriangle constraints, but it should not support creating variables constrained to belong to the PositiveSemidefiniteConeTriangle because the variables in PositiveSemidefiniteConeTriangle should first be created as either binary or non-negative.

    source
    MathOptInterface.is_validMethod
    is_valid(model::ModelLike, index::Index)::Bool

    Return a Bool indicating whether this index refers to a valid object in the model model.

    source
    MathOptInterface.deleteMethod
    delete(model::ModelLike, index::Index)

    Delete the referenced object from the model. Throw DeleteNotAllowed if if index cannot be deleted.

    The following modifications also take effect if Index is VariableIndex:

    • If index used in the objective function, it is removed from the function, i.e., it is substituted for zero.
    • For each func-in-set constraint of the model:
      • If func isa VariableIndex and func == index then the constraint is deleted.
      • If func isa VectorOfVariables and index in func.variables then
        • if length(func.variables) == 1 is one, the constraint is deleted;
        • if length(func.variables) > 1 and supports_dimension_update(set) then then the variable is removed from func and set is replaced by update_dimension(set, MOI.dimension(set) - 1).
        • Otherwise, a DeleteNotAllowed error is thrown.
      • Otherwise, the variable is removed from func, i.e., it is substituted for zero.
    source
    MathOptInterface.deleteMethod
    delete(model::ModelLike, indices::Vector{R<:Index}) where {R}

    Delete the referenced objects in the vector indices from the model. It may be assumed that R is a concrete type. The default fallback sequentially deletes the individual items in indices, although specialized implementations may be more efficient.

    source

    Attributes

    MathOptInterface.VariableNameType
    VariableName()

    A variable attribute for a string identifying the variable. It is valid for two variables to have the same name; however, variables with duplicate names cannot be looked up using get. It has a default value of "" if not set`.

    source
    MathOptInterface.VariablePrimalStartType
    VariablePrimalStart()

    A variable attribute for the initial assignment to some primal variable's value that the optimizer may use to warm-start the solve. May be a number or nothing (unset).

    source
    MathOptInterface.VariablePrimalType
    VariablePrimal(result_index::Int = 1)

    A variable attribute for the assignment to some primal variable's value in result result_index. If result_index is omitted, it is 1 by default.

    If the solver does not have a primal value for the variable because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the VariablePrimal attribute.

    See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.VariableBasisStatusType
    VariableBasisStatus(result_index::Int = 1)

    A variable attribute for the BasisStatusCode of a variable in result result_index, with respect to an available optimal solution basis.

    If the solver does not have a basis statue for the variable because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the VariableBasisStatus attribute.

    See ResultCount for information on how the results are ordered.

    source
    +)::Bool

    Return a Bool indicating whether model supports constraining a vector of variables to belong to a set of type S either on creation of the vector of variables with add_constrained_variables or after the variable is created with add_constraint.

    By default, if S is Reals then this function returns true and otherwise, it falls back to supports_add_constrained_variables(model, Reals) && supports_constraint(model, MOI.VectorOfVariables, S) which is the correct definition for most models.

    Example

    In the standard conic form (see Duality), the variables are grouped into several cones and the constraints are affine equality constraints. If Reals is not one of the cones supported by the solvers then it needs to implement supports_add_constrained_variables(::Optimizer, ::Type{Reals}) = false as free variables are not supported. The solvers should then implement supports_add_constrained_variables(::Optimizer, ::Type{<:SupportedCones}) = true where SupportedCones is the union of all cone types that are supported; it does not have to implement the method supports_constraint(::Type{VectorOfVariables}, Type{<:SupportedCones}) as it should return false and it's the default. This prevents the user to constrain the same variable in two different cones. When a VectorOfVariables-in-S is added, the variables of the vector have already been created so they already belong to given cones. If bridges are enabled, the constraint will therefore be bridged by adding slack variables in S and equality constraints ensuring that the slack variables are equal to the corresponding variables of the given constraint function.

    Note that there may also be sets for which !supports_add_constrained_variables(model, S) and supports_constraint(model, MOI.VectorOfVariables, S). For instance, suppose a solver supports positive semidefinite variable constraints and two types of variables: binary variables and nonnegative variables. Then the solver should support adding VectorOfVariables-in-PositiveSemidefiniteConeTriangle constraints, but it should not support creating variables constrained to belong to the PositiveSemidefiniteConeTriangle because the variables in PositiveSemidefiniteConeTriangle should first be created as either binary or non-negative.

    source
    MathOptInterface.is_validMethod
    is_valid(model::ModelLike, index::Index)::Bool

    Return a Bool indicating whether this index refers to a valid object in the model model.

    source
    MathOptInterface.deleteMethod
    delete(model::ModelLike, index::Index)

    Delete the referenced object from the model. Throw DeleteNotAllowed if if index cannot be deleted.

    The following modifications also take effect if Index is VariableIndex:

    • If index used in the objective function, it is removed from the function, i.e., it is substituted for zero.
    • For each func-in-set constraint of the model:
      • If func isa VariableIndex and func == index then the constraint is deleted.
      • If func isa VectorOfVariables and index in func.variables then
        • if length(func.variables) == 1 is one, the constraint is deleted;
        • if length(func.variables) > 1 and supports_dimension_update(set) then then the variable is removed from func and set is replaced by update_dimension(set, MOI.dimension(set) - 1).
        • Otherwise, a DeleteNotAllowed error is thrown.
      • Otherwise, the variable is removed from func, i.e., it is substituted for zero.
    source
    MathOptInterface.deleteMethod
    delete(model::ModelLike, indices::Vector{R<:Index}) where {R}

    Delete the referenced objects in the vector indices from the model. It may be assumed that R is a concrete type. The default fallback sequentially deletes the individual items in indices, although specialized implementations may be more efficient.

    source

    Attributes

    MathOptInterface.VariableNameType
    VariableName()

    A variable attribute for a string identifying the variable. It is valid for two variables to have the same name; however, variables with duplicate names cannot be looked up using get. It has a default value of "" if not set`.

    source
    MathOptInterface.VariablePrimalStartType
    VariablePrimalStart()

    A variable attribute for the initial assignment to some primal variable's value that the optimizer may use to warm-start the solve. May be a number or nothing (unset).

    source
    MathOptInterface.VariablePrimalType
    VariablePrimal(result_index::Int = 1)

    A variable attribute for the assignment to some primal variable's value in result result_index. If result_index is omitted, it is 1 by default.

    If the solver does not have a primal value for the variable because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the VariablePrimal attribute.

    See ResultCount for information on how the results are ordered.

    source
    MathOptInterface.VariableBasisStatusType
    VariableBasisStatus(result_index::Int = 1)

    A variable attribute for the BasisStatusCode of a variable in result result_index, with respect to an available optimal solution basis.

    If the solver does not have a basis statue for the variable because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the VariableBasisStatus attribute.

    See ResultCount for information on how the results are ordered.

    source
    diff --git a/previews/PR3561/moi/release_notes/index.html b/previews/PR3561/moi/release_notes/index.html index 15c67a4d8b1..b788ccab815 100644 --- a/previews/PR3561/moi/release_notes/index.html +++ b/previews/PR3561/moi/release_notes/index.html @@ -31,4 +31,4 @@ end write(path, s) end -end

    v0.9.22 (May 22, 2021)

    This release contains backports from the ongoing development of the v0.10 release.

    • Improved type inference in Utilities, Bridges and FileFormats submodules to reduce latency.
    • Improved performance of Utilities.is_canonical.
    • Fixed Utilities.pass_nonvariable_constraints with bridged variables.
    • Fixed performance regression of Utilities.Model.
    • Fixed ordering of objective setting in parser.

    v0.9.21 (April 23, 2021)

    • Added supports_shift_constant.
    • Improve performance of bridging quadratic constraints.
    • Add precompilation statements.
    • Large improvements to the documentation.
    • Fix a variety of inference issues, benefiting precompilation and reducing initial latency.
    • RawParameters are now ignored when resetting a CachingOptimizer. Previously, changing the underlying optimizer after RawParameters were set would throw an error.
    • Utilities.AbstractModel is being refactored. This may break users interacting with private fields of a model generated using @model.

    v0.9.20 (February 20, 2021)

    • Improved performance of Utilities.ScalarFunctionIterator
    • Added support for compute_conflict to MOI layers
    • Added test with zero off-diagonal quadratic term in objective
    • Fixed double deletion of nested bridged SingleVariable/VectorOfVariables constraints
    • Fixed modification of un-set objective
    • Fixed function modification with duplicate terms
    • Made unit tests abort without failing if the problem class is not supported
    • Formatted code with JuliaFormatter
    • Clarified BasisStatusCode's docstring

    v0.9.19 (December 1, 2020)

    • Added CallbackNodeStatus attribute
    • Added bridge from GreaterThan or LessThan to Interval
    • Added tests for infeasibility certificates and double optimize
    • Fixed support for Julia v1.6
    • Re-organized MOI docs and added documentation for adding a test

    v0.9.18 (November 3, 2020)

    • Various improvements for working with complex numbers
    • Added GeoMeantoRelEntrBridge to bridge a GeometricMeanCone constraint to a relative entropy constraint

    v0.9.17 (September 21, 2020)

    • Fixed CleverDict with variable of negative index value
    • Implement supports_add_constrained_variable for MockOptimizer

    v0.9.16 (September 17, 2020)

    • Various fixes:
      • 32-bit support
      • CleverDict with abstract value type
      • Checks in test suite

    v0.9.15 (September 14, 2020)

    • Bridges improvements:
      • (R)SOCtoNonConvexQuad bridge
      • ZeroOne bridge
      • Use supports_add_constrained_variable in LazyBridgeOptimizer
      • Exposed VariableBridgeCost and ConstraintBridgeCost attributes
      • Prioritize constraining variables on creation according to these costs
      • Refactor bridge debugging
    • Large performance improvements across all submodules
    • Lots of documentation improvements
    • FileFormats improvements:
      • Update MathOptFormat to v0.5
      • Fix supported objectives in FileFormats
    • Testing improvements:
      • Add name option for basic_constraint_test
    • Bug fixes and missing methods
      • Add length for iterators
      • Fix bug with duplicate terms
      • Fix order of LinearOfConstraintIndices

    v0.9.14 (May 30, 2020)

    • Add a solver-independent interface for accessing the set of conflicting constraints an Irreducible Inconsistent Subsystem (#1056).
    • Bump JSONSchema dependency from v0.2 to v0.3 (#1090).
    • Documentation improvements:
      • Fix typos (#1054, #1060, #1061, #1064, #1069, #1070).
      • Remove the outdated recommendation for a package implementing MOI for a solver XXX to be called MathOptInterfaceXXX (#1087).
    • Utilities improvements:
      • Fix is_canonical for quadratic functions (#1081, #1089).
      • Implement add_constrained_variable[s] for CachingOptimizer so that it is added as constrained variables to the underlying optimizer (#1084).
      • Add support for custom objective functions for UniversalFallback (#1086).
      • Deterministic ordering of constraints in UniversalFallback (#1088).
    • Testing improvements:
      • Add NormOneCone/NormInfinityCone tests (#1045).
    • Bridges improvements:
      • Add bridges from Semiinteger and Semicontinuous (#1059).
      • Implement getting ConstraintSet for Variable.FlipSignBridge (#1066).
      • Fix setting ConstraintFunction for Constraint.ScalarizeBridge (#1093).
      • Fix NormOne/NormInf bridges with nonzero constants (#1045).
      • Fix StackOverflow in debug (#1063).
    • FileFormats improvements:
      • [SDPA] Implement the extension for integer variables (#1079).
      • [SDPA] Ignore comments after m and nblocks and detect dat-s extension (#1077).
      • [SDPA] No scaling of off-diagonal coefficient (#1076).
      • [SDPA] Add missing negation of constant (#1075).

    v0.9.13 (March 24, 2020)

    • Added tests for Semicontinuous and Semiinteger variables (#1033).
    • Added tests for using ExprGraphs from NLP evaluators (#1043).
    • Update version compatibilities of dependencies (#1034, #1051, #1052).
    • Fixed typos in documentation (#1044).

    v0.9.12 (February 28, 2020)

    • Fixed writing NLPBlock in MathOptFormat (#1037).
    • Fixed MockOptimizer for result attributes with non-one result index (#1039).
    • Updated test template with instantiate (#1032).

    v0.9.11 (February 21, 2020)

    • Add an option for the model created by Utilities.@model to be a subtype of AbstractOptimizer (#1031).
    • Described dual cone in docstrings of GeoMeanCone and RelativeEntropyCone (#1018, #1028).
    • Fixed typos in documentation (#1022, #1024).
    • Fixed warning of unsupported attribute (#1027).
    • Added more rootdet/logdet conic tests (#1026).
    • Implemented ConstraintDual for Constraint.GeoMeanBridge, Constraint.RootDetBridge and Constraint.LogDetBridge and test duals in tests with GeoMeanCone and RootDetConeTriangle and LogDetConeTriangle cones (#1025, #1026).

    v0.9.10 (January 31, 2020)

    • Added OptimizerWithAttributes grouping an optimizer constructor and a list of optimizer attributes (#1008).
    • Added RelativeEntropyCone with corresponding bridge into exponential cone constraints (#993).
    • Added NormSpectralCone and NormNuclearCone with corresponding bridges into positive semidefinite constraints (#976).
    • Added supports_constrained_variable(s) (#1004).
    • Added dual_set_type (#1002).
    • Added tests for vector specialized version of delete (#989, #1011).
    • Added PSD3 test (#1007).
    • Clarified dual solution of Tests.pow1v and Tests.pow1f (#1013).
    • Added support for EqualTo and Zero in Bridges.Constraint.SplitIntervalBridge (#1005).
    • Fixed Utilities.vectorize for empty vector (#1003).
    • Fixed free variables in LP writer (#1006).

    v0.9.9 (December 29, 2019)

    • Incorporated MathOptFormat.jl as the FileFormats submodule. FileFormats provides readers and writers for a number of standard file formats and MOF, a file format specialized for MOI (#969).
    • Improved performance of deletion of vector of variables in MOI.Utilities.Model (#983).
    • Updated to MutableArithmetics v0.2 (#981).
    • Added MutableArithmetics.promote_operation allocation tests (#975).
    • Fixed inference issue on Julia v1.1 (#982).

    v0.9.8 (December 19, 2019)

    • Implemented MutableArithmetics API (#924).
    • Fixed callbacks with CachingOptimizer (#959).
    • Fixed MOI.dimension for MOI.Complements (#948).
    • Added fallback for add_variables (#972).
    • Added is_diagonal_vectorized_index utility (#965).
    • Improved linear constraints display in manual (#963, #964).
    • Bridges improvements:
      • Added IndicatorSet to SOS1 bridge (#877).
      • Added support for starting values for Variable.VectorizeBridge (#944).
      • Fixed MOI.add_constraints with non-bridged variable constraint on bridged variable (#951).
      • Fixed corner cases and docstring of GeoMeanBridge (#961, #962, #966).
      • Fixed choice between variable or constraint bridges for constrained variables (#973).
      • Improve performance of bridge shortest path (#945, #946, #956).
      • Added docstring for test_delete_bridge (#954).
      • Added Variable bridge tests (#952).

    v0.9.7 (October 30, 2019)

    • Implemented _result_index_field for NLPBlockDual (#934).
    • Fixed copy of model with starting values for vector constraints (#941).
    • Bridges improvements:
      • Improved performance of add_bridge and added has_bridge (#935).
      • Added AbstractSetMapBridge for bridges between sets S1, S2 such that there is a linear map A such that A*S1 = S2 (#933).
      • Added support for starting values for FlipSignBridge, VectorizeBridge, ScalarizeBridge, SlackBridge, SplitIntervalBridge, RSOCBridge, SOCRBridge NormInfinityBridge, SOCtoPSDBridge and RSOCtoPSDBridge (#933, #936, #937, #938, #939).

    v0.9.6 (October 25, 2019)

    • Added complementarity constraints (#913).
    • Allowed ModelLike objects as value of attributes (#928).
    • Testing improvements:
      • Added dual_objective_value option to MOI.Test.TestConfig (#922).
      • Added InvalidIndex tests in basic_constraint_tests (#921).
      • Added tests for the constant term in indicator constraint (#929).
    • Bridges improvements:
      • Added support for starting values for Functionize bridges (#923).
      • Added variable indices context to variable bridges (#920).
      • Fixed a typo in printing o debug_supports (#927).

    v0.9.5 (October 9, 2019)

    • Clarified PrimalStatus/DualStatus to be NO_SOLUTION if result_index is out of bounds (#912).
    • Added tolerance for checks and use ResultCount + 1 for the result_index in MOI.Test.solve_result_status (#910, #917).
    • Use 0.5 instead of 2.0 for power in PowerCone in basic_constraint_test (#916).
    • Bridges improvements:
      • Added debug utilities for unsupported variable/constraint/objective (#861).
      • Fixed deletion of variables in bridged VectorOfVariables constraints (#909).
      • Fixed result_index with objective bridges (#911).

    v0.9.4 (October 2, 2019)

    • Added solver-independent MIP callbacks (#782).
    • Implements submit for Utilities.CachingOptimizer and Bridges.AbstractBridgeOptimizer (#906).
    • Added tests for result count of solution attributes (#901, #904).
    • Added NumberOfThreads attribute (#892).
    • Added Utilities.get_bounds to get the bounds on a variable (#890).
    • Added a note on duplicate coefficients in documentation (#581).
    • Added result index in ConstraintBasisStatus (#898).
    • Added extension dictionary to Utilities.Model (#884, #895).
    • Fixed deletion of constrained variables for CachingOptimizer (#905).
    • Implemented Utilities.shift_constraint for Test.UnknownScalarSet (#896).
    • Bridges improvements:
      • Added Variable.RSOCtoSOCBridge (#907).
      • Implemented MOI.get for ConstraintFunction/ConstraintSet for Bridges.Constraint.SquareBridge (#899).

    v0.9.3 (September 20, 2019)

    • Fixed ambiguity detected in Julia v1.3 (#891, #893).
    • Fixed missing sets from ListOfSupportedConstraints (#880).
    • Fixed copy of VectorOfVariables constraints with duplicate indices (#886).
    • Added extension dictionary to MOIU.Model (#884).
    • Implemented MOI.get for function and set for GeoMeanBridge (#888).
    • Updated documentation for SingleVariable indices and bridges (#885).
    • Testing improvements:
      • Added more comprehensive tests for names (#882).
      • Added tests for SingleVariable duals (#883).
      • Added tests for DualExponentialCone and DualPowerCone (#873).
    • Improvements for arbitrary coefficient type:
      • Fixed == for sets with mutable fields (#887).
      • Removed some Float64 assumptions in bridges (#878).
      • Automatic selection of Constraint.[Scalar|Vector]FunctionizeBridge (#889).

    v0.9.2 (September 5, 2019)

    • Implemented model printing for MOI.ModelLike and specialized it for models defined in MOI (864).
    • Generalized contlinear tests for arbitrary coefficient type (#855).
    • Fixed supports_constraint for Semiinteger and Semicontinuous and supports for ObjectiveFunction (#859).
    • Fixed Allocate-Load copy for single variable constraints (#856).
    • Bridges improvements:
      • Add objective bridges (#789).
      • Fixed Variable.RSOCtoPSDBridge for dimension 2 (#869).
      • Added Variable.SOCtoRSOCBridge (#865).
      • Added Constraint.SOCRBridge and disable MOI.Bridges.Constraint.SOCtoPSDBridge (#751).
      • Fixed added_constraint_types for Contraint.LogDetBridge and Constraint.RootDetBridge (#870).

    v0.9.1 (August 22, 2019)

    • Fix support for Julia v1.2 (#834).
    • L1 and L∞ norm epigraph cones and corresponding bridges to LP were added (#818).
    • Added tests to MOI.Test.nametest (#833).
    • Fix MOI.Test.soc3test for solvers not supporting infeasibility certificates (#839).
    • Implements operate for operators * and / between vector function and constant (#837).
    • Implements show for MOI.Utilities.IndexMap (#847).
    • Fix corner cases for mapping of variables in MOI.Utilities.CachingOptimizer and substitution of variables in MOI.Bridges.AbstractBridgeOptimizer (#848).
    • Fix transformation of constant terms for MOI.Bridges.Constraint.SOCtoPSDBridge and MOI.Bridges.Constraint.RSOCtoPSDBridge (#840).

    v0.9.0 (August 13, 2019)

    • Support for Julia v0.6 and v0.7 was dropped (#714, #717).
    • A MOI.Utilities.Model implementation of ModelLike, this should replace most use cases of MOI.Utilities.@model (#781).
    • add_constrained_variable and add_constrained_variables were added (#759).
    • Support for indicator constraints was added (#709, #712).
    • DualObjectiveValue attribute was added (#473).
    • RawParameter attribute was added (#733).
    • A dual_set function was added (#804).
    • A Benchmarks submodule was added to facilitate solver benchmarking (#769).
    • A submit function was added, this may for instance allow the user to submit solutions or cuts to the solver from a callback (#775).
    • The field of ObjectiveValue was renamed to result_index (#729).
    • The _constant and Utilities.getconstant function were renamed to constant
    • REDUCTION_CERTIFICATE result status was added (#734).
    • Abstract matrix sets were added (#731).
    • Testing improvements:
      • The testing guideline was updated (#728).
      • Quadratic tests were added (#697).
      • Unit tests for RawStatusString, SolveTime, Silent and SolverName were added (#726, #741).
      • A rotated second-order cone test was added (#759).
      • A power cone test was added (#768).
      • Tests for ZeroOne variables with variable bounds were added (#772).
      • An unbounded test was added (#773).
      • Existing tests had a few updates (#702, #703, #763).
    • Documentation improvements:
      • Added a section on CachingOptimizer (#777).
      • Added a section on UniversalFallback, Model and @model (#762).
      • Transition the knapsack example to a doctest with MockOptimizer (#786).
    • Utilities improvements:
      • A CleverDict utility was added for a vector that automatically transform into a dictionary once a first index is removed (#767).
      • The Utilities.constant function was renamed to Utilities.constant_vector (#740).
      • Implement optimizer attributes for CachingOptimizer (#745).
      • Rename Utilities.add_scalar_constraint to Utilities.normalize_and_add_constraint (#801).
      • operate with vcat, SingleVariable and VectorOfVariables now returns a VectorOfVariables (#616).
      • Fix a type piracy of operate (#784).
      • The load_constraint fallback signature was fixed (#760).
      • The set_dot function was extended to work with sparse arrays (#805).
    • Bridges improvements:
      • The bridges no longer store the constraint function and set before it is bridged, the bridges now have to implement ConstraintFunction and ConstraintSet if the user wants to recover them. As a consequence, the @bridge macro was removed (#722).
      • Bridge are now instantiated with a bridge_constraint function instead of using a constructor (#730).
      • Fix constraint attributes for bridges (#699).
      • Constraint bridges were moved to the Bridges/Constraint submodule so they should now inherit from MOI.Bridges.Constraint.Abstract and should implement MOI.Bridges.Constraint.concrete_bridge_type instead of MOI.Bridges.concrete_bridge_type (#756).
      • Variable bridges were added in (#759).
      • Various improvements (#746, #747).

    v0.8.4 (March 13, 2019)

    • Performance improvement in default_copy_to and bridge optimizer (#696).
    • Add Silent and implement setting optimizer attributes in caching and mock optimizers (#695).
    • Add Functionize bridges (SingleVariable and VectorOfVariables) (#659).
    • Minor typo fixes (#694).

    v0.8.3 (March 6, 2019)

    • Use zero constant in scalar constraint function of MOI.Test.copytest (#691).
    • Fix variable deletion with SingleVariable objective function (#690).
    • Fix LazyBridgeOptimizer with bridges that add no constraints (#689).
    • Error message improvements (#673, #685, #686, #688).
    • Documentation improvements (#682, #683, #687).
    • Basis status:
      • Remove VariableBasisStatus (#679).
      • Test ConstraintBasisStatus and implement it in bridges (#678).
    • Fix inference of NumberOfVariables and NumberOfConstraints (#677).
    • Implement division between a quadratic function and a number (#675).

    v0.8.2 (February 7, 2019)

    • Add RawStatusString attribute (#629).
    • Do not set names to the optimizer but only to the cache in CachingOptimizer (#638).
    • Make scalar MOI functions act as scalars in broadcast (#646).
    • Add function utilities:
      • Implement Base.zero (#634), Base.iszero (#643), add missing arithmetic operations (#644, #645) and fix division (#648).
      • Add a vectorize function that turns a vector of ScalarAffineFunction into a VectorAffineFunction (#642).
    • Improve support for starting values:
      • Show a warning in copy when starting values are not supported instead of throwing an error (#630).
      • Fix UniversalFallback for getting an variable or constraint attribute set to no indices (#623).
      • Add a test in contlineartest with partially set VariablePrimalStart.
    • Bridges improvements:
      • Fix StackOverFlow in LazyBridgeOptimizer when there is a cycle in the graph of bridges.
      • Add Slack bridges (#610, #650).
      • Add FlipSign bridges (#658).
    • Add tests with duplicate coefficients in ScalarAffineFunction and VectorAffineFunction (#639).
    • Use tolerance to compare VariablePrimal in rotatedsoc1 test (#632).
    • Use a zero constant in ScalarAffineFunction of constraints in psdt2 (#622).

    v0.8.1 (January 7, 2019)

    • Adding an NLP objective now overrides any objective set using the ObjectiveFunction attribute (#619).
    • Rename fullbridgeoptimizer into full_bridge_optimizer (#621).
    • Allow custom constraint types with full_bridge_optimizer (#617).
    • Add Vectorize bridge which transforms scalar linear constraints into vector linear constraints (#615).

    v0.8.0 (December 18, 2018)

    • Rename all enum values to follow the JuMP naming guidelines for constants, for example, Optimal becomes OPTIMAL, and DualInfeasible becomes DUAL_INFEASIBLE.
    • Rename CachingOptimizer methods for style compliance.
    • Add an MOI.TerminationStatusCode called ALMOST_DUAL_INFEASIBLE.

    v0.7.0 (December 13, 2018)

    • Test that MOI.TerminationStatus is MOI.OptimizeNotCalled before MOI.optimize! is called.
    • Check supports_default_copy_to in tests (#594).
    • Key pieces of information like optimality, infeasibility, etc., are now reported through TerminationStatusCode. It is typically no longer necessary to check the result statuses in addition to the termination status.
    • Add perspective dimension to log-det cone (#593).

    v0.6.4 (November 27, 2018)

    • Add OptimizeNotCalled termination status (#577) and improve documentation of other statuses (#575).
    • Add a solver naming guideline (#578).
    • Make FeasibilitySense the default ObjectiveSense (#579).
    • Fix Utilities.@model and Bridges.@bridge macros for functions and sets defined outside MOI (#582).
    • Document solver-specific attributes (#580) and implement them in Utilities.CachingOptimizer (#565).

    v0.6.3 (November 16, 2018)

    • Variables and constraints are now allowed to have duplicate names. An error is thrown only on lookup. This change breaks some existing tests. (#549)
    • Attributes may now be partially set (some values could be nothing). (#563)
    • Performance improvements in Utilities.Model (#549, #567, #568)
    • Fix bug in QuadtoSOC (#558).
    • New supports_default_copy_to method that optimizers should implement to control caching behavior.
    • Documentation improvements.

    v0.6.2 (October 26, 2018)

    • Improve hygiene of @model macro (#544).
    • Fix bug in copy tests (#543).
    • Fix bug in UniversalFallback attribute getter (#540).
    • Allow all correct solutions for solve_blank_obj unit test (#537).
    • Add errors for Allocate-Load and bad constraints (#534).
    • [performance] Add specialized implementation of hash for VariableIndex (#533).
    • [performance] Construct the name to object dictionaries lazily in model (#535).
    • Add the QuadtoSOC bridge which transforms ScalarQuadraticFunction constraints into RotatedSecondOrderCone (#483).

    v0.6.1 (September 22, 2018)

    • Enable PositiveSemidefiniteConeSquare set and quadratic functions in MOIB.fullbridgeoptimizer (#524).
    • Add warning in the bridge between PositiveSemidefiniteConeSquare and PositiveSemidefiniteConeTriangle when the matrix is almost symmetric (#522).
    • Modify MOIT.copytest to not add multiples constraints on the same variable (#521).
    • Add missing keyword argument in one of MOIU.add_scalar_constraint methods (#520).

    v0.6.0 (August 30, 2018)

    • The MOIU.@model and MOIB.@bridge macros now support functions and sets defined in external modules. As a consequence, function and set names in the macro arguments need to be prefixed by module name.
    • Rename functions according to the JuMP style guide:
      • copy! with keyword arguments copynames and warnattributes -> copy_to with keyword arguments copy_names and warn_attributes;
      • set! -> set;
      • addvariable[s]! -> add_variable[s];
      • supportsconstraint -> supports_constraint;
      • addconstraint[s]! -> add_constraint[s];
      • isvalid -> is_valid;
      • isempty -> is_empty;
      • Base.delete! -> delete;
      • modify! -> modify;
      • transform! -> transform;
      • initialize! -> initialize;
      • write -> write_to_file; and
      • read! -> read_from_file.
    • Remove free! (use Base.finalize instead).
    • Add the SquarePSD bridge which transforms PositiveSemidefiniteConeTriangle constraints into PositiveSemidefiniteConeTriangle.
    • Add result fallback for ConstraintDual of variable-wise constraint, ConstraintPrimal and ObjectiveValue.
    • Add tests for ObjectiveBound.
    • Add test for empty rows in vector linear constraint.
    • Rework errors: CannotError has been renamed NotAllowedError and the distinction between UnsupportedError and NotAllowedError is now about whether the element is not supported (for example, it cannot be copied a model containing this element) or the operation is not allowed (either because it is not implemented, because it cannot be performed in the current state of the model, or because it cannot be performed for a specific index)
    • canget is removed. NoSolution is added as a result status to indicate that the solver does not have either a primal or dual solution available (See #479).

    v0.5.0 (August 5, 2018)

    • Fix names with CachingOptimizer.
    • Cleanup thanks to @mohamed82008.
    • Added a universal fallback for constraints.
    • Fast utilities for function canonicalization thanks to @rdeits.
    • Renamed dimension field to side_dimension in the context of matrix-like sets.
    • New and improved tests for cases like duplicate terms and ObjectiveBound.
    • Removed cantransform, canaddconstraint, canaddvariable, canset, canmodify, and candelete functions from the API. They are replaced by a new set of errors that are thrown: Subtypes of UnsupportedError indicate unsupported operations, while subtypes of CannotError indicate operations that cannot be performed in the current state.
    • The API for copy! is updated to remove the CopyResult type.
    • Updates for the new JuMP style guide.

    v0.4.1 (June 28, 2018)

    • Fixes vector function modification on 32 bits.
    • Fixes Bellman-Ford algorithm for bridges.
    • Added an NLP test with FeasibilitySense.
    • Update modification documentation.

    v0.4.0 (June 23, 2018)

    • Helper constructors for VectorAffineTerm and VectorQuadraticTerm.
    • Added modify_lhs to TestConfig.
    • Additional unit tests for optimizers.
    • Added a type parameter to CachingOptimizer for the optimizer field.
    • New API for problem modification (#388)
    • Tests pass without deprecation warnings on Julia 0.7.
    • Small fixes and documentation updates.

    v0.3.0 (May 25, 2018)

    • Functions have been redefined to use arrays-of-structs instead of structs-of-arrays.
    • Improvements to MockOptimizer.
    • Significant changes to Bridges.
    • New and improved unit tests.
    • Fixes for Julia 0.7.

    v0.2.0 (April 24, 2018)

    • Improvements to and better coverage of Tests.
    • Documentation fixes.
    • SolverName attribute.
    • Changes to the NLP interface (new definition of variable order and arrays of structs for bound pairs and sparsity patterns).
    • Addition of NLP tests.
    • Introduction of UniversalFallback.
    • copynames keyword argument to MOI.copy!.
    • Add Bridges submodule.

    v0.1.0 (February 28, 2018)

    • Initial public release.
    • The framework for MOI was developed at the JuMP-dev workshop at MIT in June 2017 as a sorely needed replacement for MathProgBase.
    +end

    v0.9.22 (May 22, 2021)

    This release contains backports from the ongoing development of the v0.10 release.

    • Improved type inference in Utilities, Bridges and FileFormats submodules to reduce latency.
    • Improved performance of Utilities.is_canonical.
    • Fixed Utilities.pass_nonvariable_constraints with bridged variables.
    • Fixed performance regression of Utilities.Model.
    • Fixed ordering of objective setting in parser.

    v0.9.21 (April 23, 2021)

    • Added supports_shift_constant.
    • Improve performance of bridging quadratic constraints.
    • Add precompilation statements.
    • Large improvements to the documentation.
    • Fix a variety of inference issues, benefiting precompilation and reducing initial latency.
    • RawParameters are now ignored when resetting a CachingOptimizer. Previously, changing the underlying optimizer after RawParameters were set would throw an error.
    • Utilities.AbstractModel is being refactored. This may break users interacting with private fields of a model generated using @model.

    v0.9.20 (February 20, 2021)

    • Improved performance of Utilities.ScalarFunctionIterator
    • Added support for compute_conflict to MOI layers
    • Added test with zero off-diagonal quadratic term in objective
    • Fixed double deletion of nested bridged SingleVariable/VectorOfVariables constraints
    • Fixed modification of un-set objective
    • Fixed function modification with duplicate terms
    • Made unit tests abort without failing if the problem class is not supported
    • Formatted code with JuliaFormatter
    • Clarified BasisStatusCode's docstring

    v0.9.19 (December 1, 2020)

    • Added CallbackNodeStatus attribute
    • Added bridge from GreaterThan or LessThan to Interval
    • Added tests for infeasibility certificates and double optimize
    • Fixed support for Julia v1.6
    • Re-organized MOI docs and added documentation for adding a test

    v0.9.18 (November 3, 2020)

    • Various improvements for working with complex numbers
    • Added GeoMeantoRelEntrBridge to bridge a GeometricMeanCone constraint to a relative entropy constraint

    v0.9.17 (September 21, 2020)

    • Fixed CleverDict with variable of negative index value
    • Implement supports_add_constrained_variable for MockOptimizer

    v0.9.16 (September 17, 2020)

    • Various fixes:
      • 32-bit support
      • CleverDict with abstract value type
      • Checks in test suite

    v0.9.15 (September 14, 2020)

    • Bridges improvements:
      • (R)SOCtoNonConvexQuad bridge
      • ZeroOne bridge
      • Use supports_add_constrained_variable in LazyBridgeOptimizer
      • Exposed VariableBridgeCost and ConstraintBridgeCost attributes
      • Prioritize constraining variables on creation according to these costs
      • Refactor bridge debugging
    • Large performance improvements across all submodules
    • Lots of documentation improvements
    • FileFormats improvements:
      • Update MathOptFormat to v0.5
      • Fix supported objectives in FileFormats
    • Testing improvements:
      • Add name option for basic_constraint_test
    • Bug fixes and missing methods
      • Add length for iterators
      • Fix bug with duplicate terms
      • Fix order of LinearOfConstraintIndices

    v0.9.14 (May 30, 2020)

    • Add a solver-independent interface for accessing the set of conflicting constraints an Irreducible Inconsistent Subsystem (#1056).
    • Bump JSONSchema dependency from v0.2 to v0.3 (#1090).
    • Documentation improvements:
      • Fix typos (#1054, #1060, #1061, #1064, #1069, #1070).
      • Remove the outdated recommendation for a package implementing MOI for a solver XXX to be called MathOptInterfaceXXX (#1087).
    • Utilities improvements:
      • Fix is_canonical for quadratic functions (#1081, #1089).
      • Implement add_constrained_variable[s] for CachingOptimizer so that it is added as constrained variables to the underlying optimizer (#1084).
      • Add support for custom objective functions for UniversalFallback (#1086).
      • Deterministic ordering of constraints in UniversalFallback (#1088).
    • Testing improvements:
      • Add NormOneCone/NormInfinityCone tests (#1045).
    • Bridges improvements:
      • Add bridges from Semiinteger and Semicontinuous (#1059).
      • Implement getting ConstraintSet for Variable.FlipSignBridge (#1066).
      • Fix setting ConstraintFunction for Constraint.ScalarizeBridge (#1093).
      • Fix NormOne/NormInf bridges with nonzero constants (#1045).
      • Fix StackOverflow in debug (#1063).
    • FileFormats improvements:
      • [SDPA] Implement the extension for integer variables (#1079).
      • [SDPA] Ignore comments after m and nblocks and detect dat-s extension (#1077).
      • [SDPA] No scaling of off-diagonal coefficient (#1076).
      • [SDPA] Add missing negation of constant (#1075).

    v0.9.13 (March 24, 2020)

    • Added tests for Semicontinuous and Semiinteger variables (#1033).
    • Added tests for using ExprGraphs from NLP evaluators (#1043).
    • Update version compatibilities of dependencies (#1034, #1051, #1052).
    • Fixed typos in documentation (#1044).

    v0.9.12 (February 28, 2020)

    • Fixed writing NLPBlock in MathOptFormat (#1037).
    • Fixed MockOptimizer for result attributes with non-one result index (#1039).
    • Updated test template with instantiate (#1032).

    v0.9.11 (February 21, 2020)

    • Add an option for the model created by Utilities.@model to be a subtype of AbstractOptimizer (#1031).
    • Described dual cone in docstrings of GeoMeanCone and RelativeEntropyCone (#1018, #1028).
    • Fixed typos in documentation (#1022, #1024).
    • Fixed warning of unsupported attribute (#1027).
    • Added more rootdet/logdet conic tests (#1026).
    • Implemented ConstraintDual for Constraint.GeoMeanBridge, Constraint.RootDetBridge and Constraint.LogDetBridge and test duals in tests with GeoMeanCone and RootDetConeTriangle and LogDetConeTriangle cones (#1025, #1026).

    v0.9.10 (January 31, 2020)

    • Added OptimizerWithAttributes grouping an optimizer constructor and a list of optimizer attributes (#1008).
    • Added RelativeEntropyCone with corresponding bridge into exponential cone constraints (#993).
    • Added NormSpectralCone and NormNuclearCone with corresponding bridges into positive semidefinite constraints (#976).
    • Added supports_constrained_variable(s) (#1004).
    • Added dual_set_type (#1002).
    • Added tests for vector specialized version of delete (#989, #1011).
    • Added PSD3 test (#1007).
    • Clarified dual solution of Tests.pow1v and Tests.pow1f (#1013).
    • Added support for EqualTo and Zero in Bridges.Constraint.SplitIntervalBridge (#1005).
    • Fixed Utilities.vectorize for empty vector (#1003).
    • Fixed free variables in LP writer (#1006).

    v0.9.9 (December 29, 2019)

    • Incorporated MathOptFormat.jl as the FileFormats submodule. FileFormats provides readers and writers for a number of standard file formats and MOF, a file format specialized for MOI (#969).
    • Improved performance of deletion of vector of variables in MOI.Utilities.Model (#983).
    • Updated to MutableArithmetics v0.2 (#981).
    • Added MutableArithmetics.promote_operation allocation tests (#975).
    • Fixed inference issue on Julia v1.1 (#982).

    v0.9.8 (December 19, 2019)

    • Implemented MutableArithmetics API (#924).
    • Fixed callbacks with CachingOptimizer (#959).
    • Fixed MOI.dimension for MOI.Complements (#948).
    • Added fallback for add_variables (#972).
    • Added is_diagonal_vectorized_index utility (#965).
    • Improved linear constraints display in manual (#963, #964).
    • Bridges improvements:
      • Added IndicatorSet to SOS1 bridge (#877).
      • Added support for starting values for Variable.VectorizeBridge (#944).
      • Fixed MOI.add_constraints with non-bridged variable constraint on bridged variable (#951).
      • Fixed corner cases and docstring of GeoMeanBridge (#961, #962, #966).
      • Fixed choice between variable or constraint bridges for constrained variables (#973).
      • Improve performance of bridge shortest path (#945, #946, #956).
      • Added docstring for test_delete_bridge (#954).
      • Added Variable bridge tests (#952).

    v0.9.7 (October 30, 2019)

    • Implemented _result_index_field for NLPBlockDual (#934).
    • Fixed copy of model with starting values for vector constraints (#941).
    • Bridges improvements:
      • Improved performance of add_bridge and added has_bridge (#935).
      • Added AbstractSetMapBridge for bridges between sets S1, S2 such that there is a linear map A such that A*S1 = S2 (#933).
      • Added support for starting values for FlipSignBridge, VectorizeBridge, ScalarizeBridge, SlackBridge, SplitIntervalBridge, RSOCBridge, SOCRBridge NormInfinityBridge, SOCtoPSDBridge and RSOCtoPSDBridge (#933, #936, #937, #938, #939).

    v0.9.6 (October 25, 2019)

    • Added complementarity constraints (#913).
    • Allowed ModelLike objects as value of attributes (#928).
    • Testing improvements:
      • Added dual_objective_value option to MOI.Test.TestConfig (#922).
      • Added InvalidIndex tests in basic_constraint_tests (#921).
      • Added tests for the constant term in indicator constraint (#929).
    • Bridges improvements:
      • Added support for starting values for Functionize bridges (#923).
      • Added variable indices context to variable bridges (#920).
      • Fixed a typo in printing o debug_supports (#927).

    v0.9.5 (October 9, 2019)

    • Clarified PrimalStatus/DualStatus to be NO_SOLUTION if result_index is out of bounds (#912).
    • Added tolerance for checks and use ResultCount + 1 for the result_index in MOI.Test.solve_result_status (#910, #917).
    • Use 0.5 instead of 2.0 for power in PowerCone in basic_constraint_test (#916).
    • Bridges improvements:
      • Added debug utilities for unsupported variable/constraint/objective (#861).
      • Fixed deletion of variables in bridged VectorOfVariables constraints (#909).
      • Fixed result_index with objective bridges (#911).

    v0.9.4 (October 2, 2019)

    • Added solver-independent MIP callbacks (#782).
    • Implements submit for Utilities.CachingOptimizer and Bridges.AbstractBridgeOptimizer (#906).
    • Added tests for result count of solution attributes (#901, #904).
    • Added NumberOfThreads attribute (#892).
    • Added Utilities.get_bounds to get the bounds on a variable (#890).
    • Added a note on duplicate coefficients in documentation (#581).
    • Added result index in ConstraintBasisStatus (#898).
    • Added extension dictionary to Utilities.Model (#884, #895).
    • Fixed deletion of constrained variables for CachingOptimizer (#905).
    • Implemented Utilities.shift_constraint for Test.UnknownScalarSet (#896).
    • Bridges improvements:
      • Added Variable.RSOCtoSOCBridge (#907).
      • Implemented MOI.get for ConstraintFunction/ConstraintSet for Bridges.Constraint.SquareBridge (#899).

    v0.9.3 (September 20, 2019)

    • Fixed ambiguity detected in Julia v1.3 (#891, #893).
    • Fixed missing sets from ListOfSupportedConstraints (#880).
    • Fixed copy of VectorOfVariables constraints with duplicate indices (#886).
    • Added extension dictionary to MOIU.Model (#884).
    • Implemented MOI.get for function and set for GeoMeanBridge (#888).
    • Updated documentation for SingleVariable indices and bridges (#885).
    • Testing improvements:
      • Added more comprehensive tests for names (#882).
      • Added tests for SingleVariable duals (#883).
      • Added tests for DualExponentialCone and DualPowerCone (#873).
    • Improvements for arbitrary coefficient type:
      • Fixed == for sets with mutable fields (#887).
      • Removed some Float64 assumptions in bridges (#878).
      • Automatic selection of Constraint.[Scalar|Vector]FunctionizeBridge (#889).

    v0.9.2 (September 5, 2019)

    • Implemented model printing for MOI.ModelLike and specialized it for models defined in MOI (864).
    • Generalized contlinear tests for arbitrary coefficient type (#855).
    • Fixed supports_constraint for Semiinteger and Semicontinuous and supports for ObjectiveFunction (#859).
    • Fixed Allocate-Load copy for single variable constraints (#856).
    • Bridges improvements:
      • Add objective bridges (#789).
      • Fixed Variable.RSOCtoPSDBridge for dimension 2 (#869).
      • Added Variable.SOCtoRSOCBridge (#865).
      • Added Constraint.SOCRBridge and disable MOI.Bridges.Constraint.SOCtoPSDBridge (#751).
      • Fixed added_constraint_types for Contraint.LogDetBridge and Constraint.RootDetBridge (#870).

    v0.9.1 (August 22, 2019)

    • Fix support for Julia v1.2 (#834).
    • L1 and L∞ norm epigraph cones and corresponding bridges to LP were added (#818).
    • Added tests to MOI.Test.nametest (#833).
    • Fix MOI.Test.soc3test for solvers not supporting infeasibility certificates (#839).
    • Implements operate for operators * and / between vector function and constant (#837).
    • Implements show for MOI.Utilities.IndexMap (#847).
    • Fix corner cases for mapping of variables in MOI.Utilities.CachingOptimizer and substitution of variables in MOI.Bridges.AbstractBridgeOptimizer (#848).
    • Fix transformation of constant terms for MOI.Bridges.Constraint.SOCtoPSDBridge and MOI.Bridges.Constraint.RSOCtoPSDBridge (#840).

    v0.9.0 (August 13, 2019)

    • Support for Julia v0.6 and v0.7 was dropped (#714, #717).
    • A MOI.Utilities.Model implementation of ModelLike, this should replace most use cases of MOI.Utilities.@model (#781).
    • add_constrained_variable and add_constrained_variables were added (#759).
    • Support for indicator constraints was added (#709, #712).
    • DualObjectiveValue attribute was added (#473).
    • RawParameter attribute was added (#733).
    • A dual_set function was added (#804).
    • A Benchmarks submodule was added to facilitate solver benchmarking (#769).
    • A submit function was added, this may for instance allow the user to submit solutions or cuts to the solver from a callback (#775).
    • The field of ObjectiveValue was renamed to result_index (#729).
    • The _constant and Utilities.getconstant function were renamed to constant
    • REDUCTION_CERTIFICATE result status was added (#734).
    • Abstract matrix sets were added (#731).
    • Testing improvements:
      • The testing guideline was updated (#728).
      • Quadratic tests were added (#697).
      • Unit tests for RawStatusString, SolveTime, Silent and SolverName were added (#726, #741).
      • A rotated second-order cone test was added (#759).
      • A power cone test was added (#768).
      • Tests for ZeroOne variables with variable bounds were added (#772).
      • An unbounded test was added (#773).
      • Existing tests had a few updates (#702, #703, #763).
    • Documentation improvements:
      • Added a section on CachingOptimizer (#777).
      • Added a section on UniversalFallback, Model and @model (#762).
      • Transition the knapsack example to a doctest with MockOptimizer (#786).
    • Utilities improvements:
      • A CleverDict utility was added for a vector that automatically transform into a dictionary once a first index is removed (#767).
      • The Utilities.constant function was renamed to Utilities.constant_vector (#740).
      • Implement optimizer attributes for CachingOptimizer (#745).
      • Rename Utilities.add_scalar_constraint to Utilities.normalize_and_add_constraint (#801).
      • operate with vcat, SingleVariable and VectorOfVariables now returns a VectorOfVariables (#616).
      • Fix a type piracy of operate (#784).
      • The load_constraint fallback signature was fixed (#760).
      • The set_dot function was extended to work with sparse arrays (#805).
    • Bridges improvements:
      • The bridges no longer store the constraint function and set before it is bridged, the bridges now have to implement ConstraintFunction and ConstraintSet if the user wants to recover them. As a consequence, the @bridge macro was removed (#722).
      • Bridge are now instantiated with a bridge_constraint function instead of using a constructor (#730).
      • Fix constraint attributes for bridges (#699).
      • Constraint bridges were moved to the Bridges/Constraint submodule so they should now inherit from MOI.Bridges.Constraint.Abstract and should implement MOI.Bridges.Constraint.concrete_bridge_type instead of MOI.Bridges.concrete_bridge_type (#756).
      • Variable bridges were added in (#759).
      • Various improvements (#746, #747).

    v0.8.4 (March 13, 2019)

    • Performance improvement in default_copy_to and bridge optimizer (#696).
    • Add Silent and implement setting optimizer attributes in caching and mock optimizers (#695).
    • Add Functionize bridges (SingleVariable and VectorOfVariables) (#659).
    • Minor typo fixes (#694).

    v0.8.3 (March 6, 2019)

    • Use zero constant in scalar constraint function of MOI.Test.copytest (#691).
    • Fix variable deletion with SingleVariable objective function (#690).
    • Fix LazyBridgeOptimizer with bridges that add no constraints (#689).
    • Error message improvements (#673, #685, #686, #688).
    • Documentation improvements (#682, #683, #687).
    • Basis status:
      • Remove VariableBasisStatus (#679).
      • Test ConstraintBasisStatus and implement it in bridges (#678).
    • Fix inference of NumberOfVariables and NumberOfConstraints (#677).
    • Implement division between a quadratic function and a number (#675).

    v0.8.2 (February 7, 2019)

    • Add RawStatusString attribute (#629).
    • Do not set names to the optimizer but only to the cache in CachingOptimizer (#638).
    • Make scalar MOI functions act as scalars in broadcast (#646).
    • Add function utilities:
      • Implement Base.zero (#634), Base.iszero (#643), add missing arithmetic operations (#644, #645) and fix division (#648).
      • Add a vectorize function that turns a vector of ScalarAffineFunction into a VectorAffineFunction (#642).
    • Improve support for starting values:
      • Show a warning in copy when starting values are not supported instead of throwing an error (#630).
      • Fix UniversalFallback for getting an variable or constraint attribute set to no indices (#623).
      • Add a test in contlineartest with partially set VariablePrimalStart.
    • Bridges improvements:
      • Fix StackOverFlow in LazyBridgeOptimizer when there is a cycle in the graph of bridges.
      • Add Slack bridges (#610, #650).
      • Add FlipSign bridges (#658).
    • Add tests with duplicate coefficients in ScalarAffineFunction and VectorAffineFunction (#639).
    • Use tolerance to compare VariablePrimal in rotatedsoc1 test (#632).
    • Use a zero constant in ScalarAffineFunction of constraints in psdt2 (#622).

    v0.8.1 (January 7, 2019)

    • Adding an NLP objective now overrides any objective set using the ObjectiveFunction attribute (#619).
    • Rename fullbridgeoptimizer into full_bridge_optimizer (#621).
    • Allow custom constraint types with full_bridge_optimizer (#617).
    • Add Vectorize bridge which transforms scalar linear constraints into vector linear constraints (#615).

    v0.8.0 (December 18, 2018)

    • Rename all enum values to follow the JuMP naming guidelines for constants, for example, Optimal becomes OPTIMAL, and DualInfeasible becomes DUAL_INFEASIBLE.
    • Rename CachingOptimizer methods for style compliance.
    • Add an MOI.TerminationStatusCode called ALMOST_DUAL_INFEASIBLE.

    v0.7.0 (December 13, 2018)

    • Test that MOI.TerminationStatus is MOI.OptimizeNotCalled before MOI.optimize! is called.
    • Check supports_default_copy_to in tests (#594).
    • Key pieces of information like optimality, infeasibility, etc., are now reported through TerminationStatusCode. It is typically no longer necessary to check the result statuses in addition to the termination status.
    • Add perspective dimension to log-det cone (#593).

    v0.6.4 (November 27, 2018)

    • Add OptimizeNotCalled termination status (#577) and improve documentation of other statuses (#575).
    • Add a solver naming guideline (#578).
    • Make FeasibilitySense the default ObjectiveSense (#579).
    • Fix Utilities.@model and Bridges.@bridge macros for functions and sets defined outside MOI (#582).
    • Document solver-specific attributes (#580) and implement them in Utilities.CachingOptimizer (#565).

    v0.6.3 (November 16, 2018)

    • Variables and constraints are now allowed to have duplicate names. An error is thrown only on lookup. This change breaks some existing tests. (#549)
    • Attributes may now be partially set (some values could be nothing). (#563)
    • Performance improvements in Utilities.Model (#549, #567, #568)
    • Fix bug in QuadtoSOC (#558).
    • New supports_default_copy_to method that optimizers should implement to control caching behavior.
    • Documentation improvements.

    v0.6.2 (October 26, 2018)

    • Improve hygiene of @model macro (#544).
    • Fix bug in copy tests (#543).
    • Fix bug in UniversalFallback attribute getter (#540).
    • Allow all correct solutions for solve_blank_obj unit test (#537).
    • Add errors for Allocate-Load and bad constraints (#534).
    • [performance] Add specialized implementation of hash for VariableIndex (#533).
    • [performance] Construct the name to object dictionaries lazily in model (#535).
    • Add the QuadtoSOC bridge which transforms ScalarQuadraticFunction constraints into RotatedSecondOrderCone (#483).

    v0.6.1 (September 22, 2018)

    • Enable PositiveSemidefiniteConeSquare set and quadratic functions in MOIB.fullbridgeoptimizer (#524).
    • Add warning in the bridge between PositiveSemidefiniteConeSquare and PositiveSemidefiniteConeTriangle when the matrix is almost symmetric (#522).
    • Modify MOIT.copytest to not add multiples constraints on the same variable (#521).
    • Add missing keyword argument in one of MOIU.add_scalar_constraint methods (#520).

    v0.6.0 (August 30, 2018)

    • The MOIU.@model and MOIB.@bridge macros now support functions and sets defined in external modules. As a consequence, function and set names in the macro arguments need to be prefixed by module name.
    • Rename functions according to the JuMP style guide:
      • copy! with keyword arguments copynames and warnattributes -> copy_to with keyword arguments copy_names and warn_attributes;
      • set! -> set;
      • addvariable[s]! -> add_variable[s];
      • supportsconstraint -> supports_constraint;
      • addconstraint[s]! -> add_constraint[s];
      • isvalid -> is_valid;
      • isempty -> is_empty;
      • Base.delete! -> delete;
      • modify! -> modify;
      • transform! -> transform;
      • initialize! -> initialize;
      • write -> write_to_file; and
      • read! -> read_from_file.
    • Remove free! (use Base.finalize instead).
    • Add the SquarePSD bridge which transforms PositiveSemidefiniteConeTriangle constraints into PositiveSemidefiniteConeTriangle.
    • Add result fallback for ConstraintDual of variable-wise constraint, ConstraintPrimal and ObjectiveValue.
    • Add tests for ObjectiveBound.
    • Add test for empty rows in vector linear constraint.
    • Rework errors: CannotError has been renamed NotAllowedError and the distinction between UnsupportedError and NotAllowedError is now about whether the element is not supported (for example, it cannot be copied a model containing this element) or the operation is not allowed (either because it is not implemented, because it cannot be performed in the current state of the model, or because it cannot be performed for a specific index)
    • canget is removed. NoSolution is added as a result status to indicate that the solver does not have either a primal or dual solution available (See #479).

    v0.5.0 (August 5, 2018)

    • Fix names with CachingOptimizer.
    • Cleanup thanks to @mohamed82008.
    • Added a universal fallback for constraints.
    • Fast utilities for function canonicalization thanks to @rdeits.
    • Renamed dimension field to side_dimension in the context of matrix-like sets.
    • New and improved tests for cases like duplicate terms and ObjectiveBound.
    • Removed cantransform, canaddconstraint, canaddvariable, canset, canmodify, and candelete functions from the API. They are replaced by a new set of errors that are thrown: Subtypes of UnsupportedError indicate unsupported operations, while subtypes of CannotError indicate operations that cannot be performed in the current state.
    • The API for copy! is updated to remove the CopyResult type.
    • Updates for the new JuMP style guide.

    v0.4.1 (June 28, 2018)

    • Fixes vector function modification on 32 bits.
    • Fixes Bellman-Ford algorithm for bridges.
    • Added an NLP test with FeasibilitySense.
    • Update modification documentation.

    v0.4.0 (June 23, 2018)

    • Helper constructors for VectorAffineTerm and VectorQuadraticTerm.
    • Added modify_lhs to TestConfig.
    • Additional unit tests for optimizers.
    • Added a type parameter to CachingOptimizer for the optimizer field.
    • New API for problem modification (#388)
    • Tests pass without deprecation warnings on Julia 0.7.
    • Small fixes and documentation updates.

    v0.3.0 (May 25, 2018)

    • Functions have been redefined to use arrays-of-structs instead of structs-of-arrays.
    • Improvements to MockOptimizer.
    • Significant changes to Bridges.
    • New and improved unit tests.
    • Fixes for Julia 0.7.

    v0.2.0 (April 24, 2018)

    • Improvements to and better coverage of Tests.
    • Documentation fixes.
    • SolverName attribute.
    • Changes to the NLP interface (new definition of variable order and arrays of structs for bound pairs and sparsity patterns).
    • Addition of NLP tests.
    • Introduction of UniversalFallback.
    • copynames keyword argument to MOI.copy!.
    • Add Bridges submodule.

    v0.1.0 (February 28, 2018)

    • Initial public release.
    • The framework for MOI was developed at the JuMP-dev workshop at MIT in June 2017 as a sorely needed replacement for MathProgBase.
    diff --git a/previews/PR3561/moi/submodules/Benchmarks/overview/index.html b/previews/PR3561/moi/submodules/Benchmarks/overview/index.html index 2a863085793..52a002fd455 100644 --- a/previews/PR3561/moi/submodules/Benchmarks/overview/index.html +++ b/previews/PR3561/moi/submodules/Benchmarks/overview/index.html @@ -21,4 +21,4 @@ MOI.Benchmarks.compare_against_baseline( suite, "current"; directory = "/tmp", verbose = true -)

    This comparison will create a report detailing improvements and regressions.

    +)

    This comparison will create a report detailing improvements and regressions.

    diff --git a/previews/PR3561/moi/submodules/Benchmarks/reference/index.html b/previews/PR3561/moi/submodules/Benchmarks/reference/index.html index 5ee6ba6ee3f..a4c4cf380b3 100644 --- a/previews/PR3561/moi/submodules/Benchmarks/reference/index.html +++ b/previews/PR3561/moi/submodules/Benchmarks/reference/index.html @@ -18,4 +18,4 @@ )

    Run all benchmarks in suite and compare against files called name in directory that were created by a call to create_baseline.

    A report summarizing the comparison is written to report_filename in directory.

    Extra kwargs are based to BenchmarkTools.run.

    Examples

    my_suite = suite(() -> GLPK.Optimizer())
     compare_against_baseline(
         my_suite, "glpk_master"; directory = "/tmp", verbose = true
    -)
    source +)source diff --git a/previews/PR3561/moi/submodules/Bridges/list_of_bridges/index.html b/previews/PR3561/moi/submodules/Bridges/list_of_bridges/index.html index 5aed6f255fc..12a00b0441d 100644 --- a/previews/PR3561/moi/submodules/Bridges/list_of_bridges/index.html +++ b/previews/PR3561/moi/submodules/Bridges/list_of_bridges/index.html @@ -111,4 +111,4 @@ & & & x_{11} & x_{12} & x_{13} \\ & & & & x_{22} & x_{23} \\ & & & & & x_{33} -\end{bmatrix}\]

    is positive semidefinite.

    The bridge achieves this reformulation by adding a new set of variables in MOI.PositiveSemidefiniteConeTriangle(6), and then adding three groups of equality constraints to:

    • constrain the two x blocks to be equal
    • force the diagonal of the y blocks to be 0
    • force the lower triangular of the y block to be the negative of the upper triangle.
    source +\end{bmatrix}\]

    is positive semidefinite.

    The bridge achieves this reformulation by adding a new set of variables in MOI.PositiveSemidefiniteConeTriangle(6), and then adding three groups of equality constraints to:

    • constrain the two x blocks to be equal
    • force the diagonal of the y blocks to be 0
    • force the lower triangular of the y block to be the negative of the upper triangle.
    source diff --git a/previews/PR3561/moi/submodules/Bridges/overview/index.html b/previews/PR3561/moi/submodules/Bridges/overview/index.html index b7a061b2891..66faac0cd16 100644 --- a/previews/PR3561/moi/submodules/Bridges/overview/index.html +++ b/previews/PR3561/moi/submodules/Bridges/overview/index.html @@ -54,4 +54,4 @@ julia> MOI.get(inner_optimizer, MOI.ListOfConstraintTypesPresent()) 1-element Vector{Tuple{Type, Type}}: - (MathOptInterface.VariableIndex, MathOptInterface.Interval{Float64}) + (MathOptInterface.VariableIndex, MathOptInterface.Interval{Float64}) diff --git a/previews/PR3561/moi/submodules/Bridges/reference/index.html b/previews/PR3561/moi/submodules/Bridges/reference/index.html index bad7ce36723..c5b9879463c 100644 --- a/previews/PR3561/moi/submodules/Bridges/reference/index.html +++ b/previews/PR3561/moi/submodules/Bridges/reference/index.html @@ -196,4 +196,4 @@ cost::Int, )

    As an alternative to variable_node, add a virtual edge to graph that represents adding a free variable, followed by a constraint of type constraint_node, with bridging cost cost.

    Why is this needed?

    Variables can either be added as a variable constrained on creation, or as a free variable which then has a constraint added to it.

    source
    MathOptInterface.Bridges.bridge_indexFunction
    bridge_index(graph::Graph, node::VariableNode)::Int
     bridge_index(graph::Graph, node::ConstraintNode)::Int
    -bridge_index(graph::Graph, node::ObjectiveNode)::Int

    Return the optimal index of the bridge to chose from node.

    source
    MathOptInterface.Bridges.is_variable_edge_bestFunction
    is_variable_edge_best(graph::Graph, node::VariableNode)::Bool

    Return a Bool indicating whether node should be added as a variable constrained on creation, or as a free variable followed by a constraint.

    source
    +bridge_index(graph::Graph, node::ObjectiveNode)::Int

    Return the optimal index of the bridge to chose from node.

    source
    MathOptInterface.Bridges.is_variable_edge_bestFunction
    is_variable_edge_best(graph::Graph, node::VariableNode)::Bool

    Return a Bool indicating whether node should be added as a variable constrained on creation, or as a free variable followed by a constraint.

    source
    diff --git a/previews/PR3561/moi/submodules/FileFormats/overview/index.html b/previews/PR3561/moi/submodules/FileFormats/overview/index.html index d3eda3c4ac9..8573cac5e60 100644 --- a/previews/PR3561/moi/submodules/FileFormats/overview/index.html +++ b/previews/PR3561/moi/submodules/FileFormats/overview/index.html @@ -138,4 +138,4 @@ path: [variables][1] instance: Dict{String, Any}("NaMe" => "x") schema key: required -schema value: Any["name"] +schema value: Any["name"] diff --git a/previews/PR3561/moi/submodules/FileFormats/reference/index.html b/previews/PR3561/moi/submodules/FileFormats/reference/index.html index 88214681f9a..dedbc0cefb8 100644 --- a/previews/PR3561/moi/submodules/FileFormats/reference/index.html +++ b/previews/PR3561/moi/submodules/FileFormats/reference/index.html @@ -19,4 +19,4 @@ \end{align}\]

    In other words, the standard conic form contains nonnegative and positive semidefinite variables with equality constraints. That is, in the MathOptInterface's terminology, MOI.VectorOfVariables-in-MOI.Nonnegatives, MOI.VectorOfVariables-in-MOI.PositiveSemidefiniteConeTriangle and MOI.ScalarAffineFunction-in-MOI.EqualTo constraints.

    If a model is in standard conic form, use Dualization.jl to transform it into the geometric conic form before writting it. Otherwise, the nonnegative (resp. positive semidefinite) variables will be bridged into free variables with affine constraints constraining them to belong to the nonnegative orthant (resp. positive semidefinite cone) by the MOI.Bridges.Constraint.VectorFunctionizeBridge. Moreover, equality constraints will be bridged into pairs of affine constraints in the nonnegative orthant by the MOI.Bridges.Constraint.SplitIntervalBridge and then the MOI.Bridges.Constraint.VectorizeBridge.

    If a solver is in standard conic form, use Dualization.jl to transform the model read into standard conic form before copying it to the solver. Otherwise, the free variables will be bridged into pairs of variables in the nonnegative orthant by the MOI.Bridges.Variable.FreeBridge and affine constraints will be bridged into equality constraints by creating a slack variable by the MOI.Bridges.Constraint.VectorSlackBridge.

    source

    Other helpers

    MathOptInterface.FileFormats.NL.SolFileResultsType
    SolFileResults(filename::String, model::Model)

    Parse the .sol file filename created by solving model and return a SolFileResults struct.

    The returned struct supports the MOI.get API for querying result attributes such as MOI.TerminationStatus, MOI.VariablePrimal, and MOI.ConstraintDual.

    source
    SolFileResults(
         raw_status::String,
         termination_status::MOI.TerminationStatusCode,
    -)

    Return a SolFileResults struct with MOI.RawStatusString set to raw_status, MOI.TerminationStatus set to termination_status, and MOI.PrimalStatus and MOI.DualStatus set to NO_SOLUTION.

    All other attributes are un-set.

    source
    +)

    Return a SolFileResults struct with MOI.RawStatusString set to raw_status, MOI.TerminationStatus set to termination_status, and MOI.PrimalStatus and MOI.DualStatus set to NO_SOLUTION.

    All other attributes are un-set.

    source diff --git a/previews/PR3561/moi/submodules/Nonlinear/overview/index.html b/previews/PR3561/moi/submodules/Nonlinear/overview/index.html index d9d7acbca14..3ec8173b06a 100644 --- a/previews/PR3561/moi/submodules/Nonlinear/overview/index.html +++ b/previews/PR3561/moi/submodules/Nonlinear/overview/index.html @@ -184,4 +184,4 @@ Node(NODE_VARIABLE, 1, 1), ], [2.0], - );

    This is less readable than the other options, but does this data structure meet our design goals?

    Instead of a heap-allocated object for each node, we only have two Vectors for each expression, nodes and values, as well as two constant vectors for the OPERATORS. In addition, all fields are concretely typed, and there are no Union or Any types.

    For our third goal, it is not easy to identify the children of a node, but it is easy to identify the parent of any node. Therefore, we can use Nonlinear.adjacency_matrix to compute a sparse matrix that maps parents to their children.

    The tape is also ordered topologically, so that a reverse pass of the nodes evaluates all children nodes before their parent.

    The design in practice

    In practice, Node and Expression are exactly Nonlinear.Node and Nonlinear.Expression. However, Nonlinear.NodeType has more fields to account for comparison operators such as :>= and :<=, logic operators such as :&& and :||, nonlinear parameters, and nested subexpressions.

    Moreover, instead of storing the operators as global constants, they are stored in Nonlinear.OperatorRegistry, and it also stores a vector of logic operators and a vector of comparison operators. In addition to Nonlinear.DEFAULT_UNIVARIATE_OPERATORS and Nonlinear.DEFAULT_MULTIVARIATE_OPERATORS, you can register user-defined functions using Nonlinear.register_operator.

    Nonlinear.Model is a struct that stores the Nonlinear.OperatorRegistry, as well as a list of parameters and subexpressions in the model.

    ReverseAD

    Nonlinear.ReverseAD is a submodule for computing derivatives of a nonlinear optimization problem using sparse reverse-mode automatic differentiation (AD).

    This section does not attempt to explain how sparse reverse-mode AD works, but instead explains why MOI contains its own implementation, and highlights notable differences from similar packages.

    Warning

    Don't use the API in ReverseAD to compute derivatives. Instead, create a Nonlinear.Evaluator object with Nonlinear.SparseReverseMode as the backend, and then query the MOI API methods.

    Design goals

    The JuliaDiff organization maintains a list of packages for doing AD in Julia. At last count, there were at least ten packages——not including ReverseAD——for reverse-mode AD in Julia. ReverseAD exists because it has a different set of design goals.

    • Goal: handle scale and sparsity. The types of nonlinear optimization problems that MOI represents can be large scale (10^5 or more functions across 10^5 or more variables) with very sparse derivatives. The ability to compute a sparse Hessian matrix is essential. To the best of our knowledge, ReverseAD is the only reverse-mode AD system in Julia that handles sparsity by default.
    • Goal: limit the scope to improve robustness. Most other AD packages accept arbitrary Julia functions as input and then trace an expression graph using operator overloading. This means they must deal (or detect and ignore) with control flow, I/O, and other vagaries of Julia. In contrast, ReverseAD only accepts functions in the form of Nonlinear.Expression, which greatly limits the range of syntax that it must deal with. By reducing the scope of what we accept as input to functions relevant for mathematical optimization, we can provide a simpler implementation with various performance optimizations.
    • Goal: provide outputs which match what solvers expect. Other AD packages focus on differentiating individual Julia functions. In contrast, ReverseAD has a very specific use-case: to generate outputs needed by the MOI nonlinear API. This means it needs to efficiently compute sparse Hessians, and it needs subexpression handling to avoid recomputing subexpressions that are shared between functions.

    History

    ReverseAD started life as ReverseDiffSparse.jl, development of which began in early 2014(!). This was well before the other AD packages started development. Because we had a well-tested, working AD in JuMP, there was less motivation to contribute to and explore other AD packages. The lack of historical interaction also meant that other packages were not optimized for the types of problems that JuMP is built for (that is, large-scale sparse problems). When we first created MathOptInterface, we kept the AD in JuMP to simplify the transition, and post-poned the development of a first-class nonlinear interface in MathOptInterface.

    Prior to the introduction of Nonlinear, JuMP's nonlinear implementation was a confusing mix of functions and types spread across the code base and in the private _Derivatives submodule. This made it hard to swap the AD system for another. The main motivation for refactoring JuMP to create the Nonlinear submodule in MathOptInterface was to abstract the interface between JuMP and the AD system, allowing us to swap-in and test new AD systems in the future.

    + );

    This is less readable than the other options, but does this data structure meet our design goals?

    Instead of a heap-allocated object for each node, we only have two Vectors for each expression, nodes and values, as well as two constant vectors for the OPERATORS. In addition, all fields are concretely typed, and there are no Union or Any types.

    For our third goal, it is not easy to identify the children of a node, but it is easy to identify the parent of any node. Therefore, we can use Nonlinear.adjacency_matrix to compute a sparse matrix that maps parents to their children.

    The tape is also ordered topologically, so that a reverse pass of the nodes evaluates all children nodes before their parent.

    The design in practice

    In practice, Node and Expression are exactly Nonlinear.Node and Nonlinear.Expression. However, Nonlinear.NodeType has more fields to account for comparison operators such as :>= and :<=, logic operators such as :&& and :||, nonlinear parameters, and nested subexpressions.

    Moreover, instead of storing the operators as global constants, they are stored in Nonlinear.OperatorRegistry, and it also stores a vector of logic operators and a vector of comparison operators. In addition to Nonlinear.DEFAULT_UNIVARIATE_OPERATORS and Nonlinear.DEFAULT_MULTIVARIATE_OPERATORS, you can register user-defined functions using Nonlinear.register_operator.

    Nonlinear.Model is a struct that stores the Nonlinear.OperatorRegistry, as well as a list of parameters and subexpressions in the model.

    ReverseAD

    Nonlinear.ReverseAD is a submodule for computing derivatives of a nonlinear optimization problem using sparse reverse-mode automatic differentiation (AD).

    This section does not attempt to explain how sparse reverse-mode AD works, but instead explains why MOI contains its own implementation, and highlights notable differences from similar packages.

    Warning

    Don't use the API in ReverseAD to compute derivatives. Instead, create a Nonlinear.Evaluator object with Nonlinear.SparseReverseMode as the backend, and then query the MOI API methods.

    Design goals

    The JuliaDiff organization maintains a list of packages for doing AD in Julia. At last count, there were at least ten packages——not including ReverseAD——for reverse-mode AD in Julia. ReverseAD exists because it has a different set of design goals.

    • Goal: handle scale and sparsity. The types of nonlinear optimization problems that MOI represents can be large scale (10^5 or more functions across 10^5 or more variables) with very sparse derivatives. The ability to compute a sparse Hessian matrix is essential. To the best of our knowledge, ReverseAD is the only reverse-mode AD system in Julia that handles sparsity by default.
    • Goal: limit the scope to improve robustness. Most other AD packages accept arbitrary Julia functions as input and then trace an expression graph using operator overloading. This means they must deal (or detect and ignore) with control flow, I/O, and other vagaries of Julia. In contrast, ReverseAD only accepts functions in the form of Nonlinear.Expression, which greatly limits the range of syntax that it must deal with. By reducing the scope of what we accept as input to functions relevant for mathematical optimization, we can provide a simpler implementation with various performance optimizations.
    • Goal: provide outputs which match what solvers expect. Other AD packages focus on differentiating individual Julia functions. In contrast, ReverseAD has a very specific use-case: to generate outputs needed by the MOI nonlinear API. This means it needs to efficiently compute sparse Hessians, and it needs subexpression handling to avoid recomputing subexpressions that are shared between functions.

    History

    ReverseAD started life as ReverseDiffSparse.jl, development of which began in early 2014(!). This was well before the other AD packages started development. Because we had a well-tested, working AD in JuMP, there was less motivation to contribute to and explore other AD packages. The lack of historical interaction also meant that other packages were not optimized for the types of problems that JuMP is built for (that is, large-scale sparse problems). When we first created MathOptInterface, we kept the AD in JuMP to simplify the transition, and post-poned the development of a first-class nonlinear interface in MathOptInterface.

    Prior to the introduction of Nonlinear, JuMP's nonlinear implementation was a confusing mix of functions and types spread across the code base and in the private _Derivatives submodule. This made it hard to swap the AD system for another. The main motivation for refactoring JuMP to create the Nonlinear submodule in MathOptInterface was to abstract the interface between JuMP and the AD system, allowing us to swap-in and test new AD systems in the future.

    diff --git a/previews/PR3561/moi/submodules/Nonlinear/reference/index.html b/previews/PR3561/moi/submodules/Nonlinear/reference/index.html index da9ccf03806..6f094145667 100644 --- a/previews/PR3561/moi/submodules/Nonlinear/reference/index.html +++ b/previews/PR3561/moi/submodules/Nonlinear/reference/index.html @@ -148,4 +148,4 @@ delete(model, c1) evaluator = Evaluator(model) MOI.initialize(evaluator, Symbol[]) -ordinal_index(model, c2) # Returns 1source +ordinal_index(model, c2) # Returns 1source diff --git a/previews/PR3561/moi/submodules/Test/overview/index.html b/previews/PR3561/moi/submodules/Test/overview/index.html index 99133402fca..c4bdee203f6 100644 --- a/previews/PR3561/moi/submodules/Test/overview/index.html +++ b/previews/PR3561/moi/submodules/Test/overview/index.html @@ -167,4 +167,4 @@ ), ) return -end

    Finally, you also need to implement Test.version_added. If we added this test when the latest released version of MOI was v0.10.5, define:

    version_added(::typeof(test_unit_optimize!_twice)) = v"0.10.6"

    Step 6

    Commit the changes to git from ~/.julia/dev/MathOptInterface and submit the PR for review.

    Tip

    If you need help writing a test, open an issue on GitHub, or ask the Developer Chatroom.

    +end

    Finally, you also need to implement Test.version_added. If we added this test when the latest released version of MOI was v0.10.5, define:

    version_added(::typeof(test_unit_optimize!_twice)) = v"0.10.6"

    Step 6

    Commit the changes to git from ~/.julia/dev/MathOptInterface and submit the PR for review.

    Tip

    If you need help writing a test, open an issue on GitHub, or ask the Developer Chatroom.

    diff --git a/previews/PR3561/moi/submodules/Test/reference/index.html b/previews/PR3561/moi/submodules/Test/reference/index.html index a2d2e7cf373..7860cfdd255 100644 --- a/previews/PR3561/moi/submodules/Test/reference/index.html +++ b/previews/PR3561/moi/submodules/Test/reference/index.html @@ -51,4 +51,4 @@ end return reset_function endsource
    MathOptInterface.Test.version_addedFunction
    version_added(::typeof(function_name))

    Returns the version of MOI in which the test function_name was added.

    This method should be implemented for all new tests.

    See the exclude_tests_after keyword of runtests for more details.

    source
    MathOptInterface.Test.@requiresMacro
    @requires(x)

    Check that the condition x is true. Otherwise, throw an RequirementUnmet error to indicate that the model does not support something required by the test function.

    Examples

    @requires MOI.supports(model, MOI.Silent())
    -@test MOI.get(model, MOI.Silent())
    source
    +@test MOI.get(model, MOI.Silent())source diff --git a/previews/PR3561/moi/submodules/Utilities/overview/index.html b/previews/PR3561/moi/submodules/Utilities/overview/index.html index b5aea4683c7..0c26aa33279 100644 --- a/previews/PR3561/moi/submodules/Utilities/overview/index.html +++ b/previews/PR3561/moi/submodules/Utilities/overview/index.html @@ -251,4 +251,4 @@ index_map = MOI.copy_to(dest, src) for (F, S) in MOI.get(src, MOI.ListOfConstraintTypesPresent()) function_barrier(dest, src, index_map[F, S]) -end +end diff --git a/previews/PR3561/moi/submodules/Utilities/reference/index.html b/previews/PR3561/moi/submodules/Utilities/reference/index.html index 54f4da2e1af..b713d76f86a 100644 --- a/previews/PR3561/moi/submodules/Utilities/reference/index.html +++ b/previews/PR3561/moi/submodules/Utilities/reference/index.html @@ -87,7 +87,7 @@ typeof(CleverDicts.key_to_index), typeof(CleverDicts.index_to_key), } -end

    A struct storing F-in-S constraints as a mapping between the constraint indices to the corresponding tuple of function and set.

    source
    MathOptInterface.Utilities.@struct_of_constraints_by_function_typesMacro
    Utilities.@struct_of_constraints_by_function_types(name, func_types...)

    Given a vector of n function types (F1, F2,..., Fn) in func_types, defines a subtype of StructOfConstraints of name name and which type parameters {T, C1, C2, ..., Cn}. It contains n field where the ith field has type Ci and stores the constraints of function type Fi.

    The expression Fi can also be a union in which case any constraint for which the function type is in the union is stored in the field with type Ci.

    source
    MathOptInterface.Utilities.@struct_of_constraints_by_set_typesMacro
    Utilities.@struct_of_constraints_by_set_types(name, func_types...)

    Given a vector of n set types (S1, S2,..., Sn) in func_types, defines a subtype of StructOfConstraints of name name and which type parameters {T, C1, C2, ..., Cn}. It contains n field where the ith field has type Ci and stores the constraints of set type Si. The expression Si can also be a union in which case any constraint for which the set type is in the union is stored in the field with type Ci. This can be useful if Ci is a MatrixOfConstraints in order to concatenate the coefficients of constraints of several different set types in the same matrix.

    source
    MathOptInterface.Utilities.struct_of_constraint_codeFunction
    struct_of_constraint_code(struct_name, types, field_types = nothing)

    Given a vector of n Union{SymbolFun,_UnionSymbolFS{SymbolFun}} or Union{SymbolSet,_UnionSymbolFS{SymbolSet}} in types, defines a subtype of StructOfConstraints of name name and which type parameters {T, F1, F2, ..., Fn} if field_types is nothing and a {T} otherwise. It contains n field where the ith field has type Ci if field_types is nothing and type field_types[i] otherwise. If types is vector of Union{SymbolFun,_UnionSymbolFS{SymbolFun}} (resp. Union{SymbolSet,_UnionSymbolFS{SymbolSet}}) then the constraints of that function (resp. set) type are stored in the corresponding field.

    This function is used by the macros @model, @struct_of_constraints_by_function_types and @struct_of_constraints_by_set_types.

    source

    Caching optimizer

    MathOptInterface.Utilities.CachingOptimizerType
    CachingOptimizer

    CachingOptimizer is an intermediate layer that stores a cache of the model and links it with an optimizer. It supports incremental model construction and modification even when the optimizer doesn't.

    Constructors

        CachingOptimizer(cache::MOI.ModelLike, optimizer::AbstractOptimizer)

    Creates a CachingOptimizer in AUTOMATIC mode, with the optimizer optimizer.

    The type of the optimizer returned is CachingOptimizer{typeof(optimizer), typeof(cache)} so it does not support the function reset_optimizer(::CachingOptimizer, new_optimizer) if the type of new_optimizer is different from the type of optimizer.

        CachingOptimizer(cache::MOI.ModelLike, mode::CachingOptimizerMode)

    Creates a CachingOptimizer in the NO_OPTIMIZER state and mode mode.

    The type of the optimizer returned is CachingOptimizer{MOI.AbstractOptimizer,typeof(cache)} so it does support the function reset_optimizer(::CachingOptimizer, new_optimizer) if the type of new_optimizer is different from the type of optimizer.

    About the type

    States

    A CachingOptimizer may be in one of three possible states (CachingOptimizerState):

    • NO_OPTIMIZER: The CachingOptimizer does not have any optimizer.
    • EMPTY_OPTIMIZER: The CachingOptimizer has an empty optimizer. The optimizer is not synchronized with the cached model.
    • ATTACHED_OPTIMIZER: The CachingOptimizer has an optimizer, and it is synchronized with the cached model.

    Modes

    A CachingOptimizer has two modes of operation (CachingOptimizerMode):

    • MANUAL: The only methods that change the state of the CachingOptimizer are Utilities.reset_optimizer, Utilities.drop_optimizer, and Utilities.attach_optimizer. Attempting to perform an operation in the incorrect state results in an error.
    • AUTOMATIC: The CachingOptimizer changes its state when necessary. For example, optimize! will automatically call attach_optimizer (an optimizer must have been previously set). Attempting to add a constraint or perform a modification not supported by the optimizer results in a drop to EMPTY_OPTIMIZER mode.
    source
    MathOptInterface.Utilities.attach_optimizerFunction
    attach_optimizer(model::CachingOptimizer)

    Attaches the optimizer to model, copying all model data into it. Can be called only from the EMPTY_OPTIMIZER state. If the copy succeeds, the CachingOptimizer will be in state ATTACHED_OPTIMIZER after the call, otherwise an error is thrown; see MOI.copy_to for more details on which errors can be thrown.

    source
    MOIU.attach_optimizer(model::GenericModel)

    Call MOIU.attach_optimizer on the backend of model.

    Cannot be called in direct mode.

    source
    MathOptInterface.Utilities.reset_optimizerFunction
    reset_optimizer(m::CachingOptimizer, optimizer::MOI.AbstractOptimizer)

    Sets or resets m to have the given empty optimizer optimizer.

    Can be called from any state. An assertion error will be thrown if optimizer is not empty.

    The CachingOptimizer m will be in state EMPTY_OPTIMIZER after the call.

    source
    reset_optimizer(m::CachingOptimizer)

    Detaches and empties the current optimizer. Can be called from ATTACHED_OPTIMIZER or EMPTY_OPTIMIZER state. The CachingOptimizer will be in state EMPTY_OPTIMIZER after the call.

    source
    MOIU.reset_optimizer(model::GenericModel, optimizer::MOI.AbstractOptimizer)

    Call MOIU.reset_optimizer on the backend of model.

    Cannot be called in direct mode.

    source
    MOIU.reset_optimizer(model::GenericModel)

    Call MOIU.reset_optimizer on the backend of model.

    Cannot be called in direct mode.

    source
    MathOptInterface.Utilities.drop_optimizerFunction
    drop_optimizer(m::CachingOptimizer)

    Drops the optimizer, if one is present. Can be called from any state. The CachingOptimizer will be in state NO_OPTIMIZER after the call.

    source
    MOIU.drop_optimizer(model::GenericModel)

    Call MOIU.drop_optimizer on the backend of model.

    Cannot be called in direct mode.

    source

    Mock optimizer

    Printing

    MathOptInterface.Utilities.latex_formulationFunction
    latex_formulation(model::MOI.ModelLike; kwargs...)

    Wrap model in a type so that it can be pretty-printed as text/latex in a notebook like IJulia, or in Documenter.

    To render the model, end the cell with latex_formulation(model), or call display(latex_formulation(model)) in to force the display of the model from inside a function.

    Possible keyword arguments are:

    • simplify_coefficients : Simplify coefficients if possible by omitting them or removing trailing zeros.
    • default_name : The name given to variables with an empty name.
    • print_types : Print the MOI type of each function and set for clarity.
    source

    Copy utilities

    MathOptInterface.Utilities.ModelFilterType
    ModelFilter(filter::Function, model::MOI.ModelLike)

    A layer to filter out various components of model.

    The filter function takes a single argument, which is each element from the list returned by the attributes below. It returns true if the element should be visible in the filtered model and false otherwise.

    The components that are filtered are:

    • Entire constraint types via:
      • MOI.ListOfConstraintTypesPresent
    • Individual constraints via:
      • MOI.ListOfConstraintIndices{F,S}
    • Specific attributes via:
      • MOI.ListOfModelAttributesSet
      • MOI.ListOfConstraintAttributesSet
      • MOI.ListOfVariableAttributesSet
    Warning

    The list of attributes filtered may change in a future release. You should write functions that are generic and not limited to the five types listed above. Thus, you should probably define a fallback filter(::Any) = true.

    See below for examples of how this works.

    Note

    This layer has a limited scope. It is intended by be used in conjunction with MOI.copy_to.

    Example: copy model excluding integer constraints

    Use the do syntax to provide a single function.

    filtered_src = MOI.Utilities.ModelFilter(src) do item
    +end

    A struct storing F-in-S constraints as a mapping between the constraint indices to the corresponding tuple of function and set.

    source
    MathOptInterface.Utilities.@struct_of_constraints_by_function_typesMacro
    Utilities.@struct_of_constraints_by_function_types(name, func_types...)

    Given a vector of n function types (F1, F2,..., Fn) in func_types, defines a subtype of StructOfConstraints of name name and which type parameters {T, C1, C2, ..., Cn}. It contains n field where the ith field has type Ci and stores the constraints of function type Fi.

    The expression Fi can also be a union in which case any constraint for which the function type is in the union is stored in the field with type Ci.

    source
    MathOptInterface.Utilities.@struct_of_constraints_by_set_typesMacro
    Utilities.@struct_of_constraints_by_set_types(name, func_types...)

    Given a vector of n set types (S1, S2,..., Sn) in func_types, defines a subtype of StructOfConstraints of name name and which type parameters {T, C1, C2, ..., Cn}. It contains n field where the ith field has type Ci and stores the constraints of set type Si. The expression Si can also be a union in which case any constraint for which the set type is in the union is stored in the field with type Ci. This can be useful if Ci is a MatrixOfConstraints in order to concatenate the coefficients of constraints of several different set types in the same matrix.

    source
    MathOptInterface.Utilities.struct_of_constraint_codeFunction
    struct_of_constraint_code(struct_name, types, field_types = nothing)

    Given a vector of n Union{SymbolFun,_UnionSymbolFS{SymbolFun}} or Union{SymbolSet,_UnionSymbolFS{SymbolSet}} in types, defines a subtype of StructOfConstraints of name name and which type parameters {T, F1, F2, ..., Fn} if field_types is nothing and a {T} otherwise. It contains n field where the ith field has type Ci if field_types is nothing and type field_types[i] otherwise. If types is vector of Union{SymbolFun,_UnionSymbolFS{SymbolFun}} (resp. Union{SymbolSet,_UnionSymbolFS{SymbolSet}}) then the constraints of that function (resp. set) type are stored in the corresponding field.

    This function is used by the macros @model, @struct_of_constraints_by_function_types and @struct_of_constraints_by_set_types.

    source

    Caching optimizer

    MathOptInterface.Utilities.CachingOptimizerType
    CachingOptimizer

    CachingOptimizer is an intermediate layer that stores a cache of the model and links it with an optimizer. It supports incremental model construction and modification even when the optimizer doesn't.

    Constructors

        CachingOptimizer(cache::MOI.ModelLike, optimizer::AbstractOptimizer)

    Creates a CachingOptimizer in AUTOMATIC mode, with the optimizer optimizer.

    The type of the optimizer returned is CachingOptimizer{typeof(optimizer), typeof(cache)} so it does not support the function reset_optimizer(::CachingOptimizer, new_optimizer) if the type of new_optimizer is different from the type of optimizer.

        CachingOptimizer(cache::MOI.ModelLike, mode::CachingOptimizerMode)

    Creates a CachingOptimizer in the NO_OPTIMIZER state and mode mode.

    The type of the optimizer returned is CachingOptimizer{MOI.AbstractOptimizer,typeof(cache)} so it does support the function reset_optimizer(::CachingOptimizer, new_optimizer) if the type of new_optimizer is different from the type of optimizer.

    About the type

    States

    A CachingOptimizer may be in one of three possible states (CachingOptimizerState):

    • NO_OPTIMIZER: The CachingOptimizer does not have any optimizer.
    • EMPTY_OPTIMIZER: The CachingOptimizer has an empty optimizer. The optimizer is not synchronized with the cached model.
    • ATTACHED_OPTIMIZER: The CachingOptimizer has an optimizer, and it is synchronized with the cached model.

    Modes

    A CachingOptimizer has two modes of operation (CachingOptimizerMode):

    • MANUAL: The only methods that change the state of the CachingOptimizer are Utilities.reset_optimizer, Utilities.drop_optimizer, and Utilities.attach_optimizer. Attempting to perform an operation in the incorrect state results in an error.
    • AUTOMATIC: The CachingOptimizer changes its state when necessary. For example, optimize! will automatically call attach_optimizer (an optimizer must have been previously set). Attempting to add a constraint or perform a modification not supported by the optimizer results in a drop to EMPTY_OPTIMIZER mode.
    source
    MathOptInterface.Utilities.attach_optimizerFunction
    MOIU.attach_optimizer(model::GenericModel)

    Call MOIU.attach_optimizer on the backend of model.

    Cannot be called in direct mode.

    source
    attach_optimizer(model::CachingOptimizer)

    Attaches the optimizer to model, copying all model data into it. Can be called only from the EMPTY_OPTIMIZER state. If the copy succeeds, the CachingOptimizer will be in state ATTACHED_OPTIMIZER after the call, otherwise an error is thrown; see MOI.copy_to for more details on which errors can be thrown.

    source
    MathOptInterface.Utilities.reset_optimizerFunction
    MOIU.reset_optimizer(model::GenericModel, optimizer::MOI.AbstractOptimizer)

    Call MOIU.reset_optimizer on the backend of model.

    Cannot be called in direct mode.

    source
    MOIU.reset_optimizer(model::GenericModel)

    Call MOIU.reset_optimizer on the backend of model.

    Cannot be called in direct mode.

    source
    reset_optimizer(m::CachingOptimizer, optimizer::MOI.AbstractOptimizer)

    Sets or resets m to have the given empty optimizer optimizer.

    Can be called from any state. An assertion error will be thrown if optimizer is not empty.

    The CachingOptimizer m will be in state EMPTY_OPTIMIZER after the call.

    source
    reset_optimizer(m::CachingOptimizer)

    Detaches and empties the current optimizer. Can be called from ATTACHED_OPTIMIZER or EMPTY_OPTIMIZER state. The CachingOptimizer will be in state EMPTY_OPTIMIZER after the call.

    source
    MathOptInterface.Utilities.drop_optimizerFunction
    MOIU.drop_optimizer(model::GenericModel)

    Call MOIU.drop_optimizer on the backend of model.

    Cannot be called in direct mode.

    source
    drop_optimizer(m::CachingOptimizer)

    Drops the optimizer, if one is present. Can be called from any state. The CachingOptimizer will be in state NO_OPTIMIZER after the call.

    source

    Mock optimizer

    Printing

    MathOptInterface.Utilities.latex_formulationFunction
    latex_formulation(model::MOI.ModelLike; kwargs...)

    Wrap model in a type so that it can be pretty-printed as text/latex in a notebook like IJulia, or in Documenter.

    To render the model, end the cell with latex_formulation(model), or call display(latex_formulation(model)) in to force the display of the model from inside a function.

    Possible keyword arguments are:

    • simplify_coefficients : Simplify coefficients if possible by omitting them or removing trailing zeros.
    • default_name : The name given to variables with an empty name.
    • print_types : Print the MOI type of each function and set for clarity.
    source

    Copy utilities

    MathOptInterface.Utilities.ModelFilterType
    ModelFilter(filter::Function, model::MOI.ModelLike)

    A layer to filter out various components of model.

    The filter function takes a single argument, which is each element from the list returned by the attributes below. It returns true if the element should be visible in the filtered model and false otherwise.

    The components that are filtered are:

    • Entire constraint types via:
      • MOI.ListOfConstraintTypesPresent
    • Individual constraints via:
      • MOI.ListOfConstraintIndices{F,S}
    • Specific attributes via:
      • MOI.ListOfModelAttributesSet
      • MOI.ListOfConstraintAttributesSet
      • MOI.ListOfVariableAttributesSet
    Warning

    The list of attributes filtered may change in a future release. You should write functions that are generic and not limited to the five types listed above. Thus, you should probably define a fallback filter(::Any) = true.

    See below for examples of how this works.

    Note

    This layer has a limited scope. It is intended by be used in conjunction with MOI.copy_to.

    Example: copy model excluding integer constraints

    Use the do syntax to provide a single function.

    filtered_src = MOI.Utilities.ModelFilter(src) do item
         return item != (MOI.VariableIndex, MOI.Integer)
     end
     MOI.copy_to(dest, filtered_src)

    Example: copy model excluding names

    Use type dispatch to simplify the implementation:

    my_filter(::Any) = true  # Note the generic fallback!
    @@ -265,4 +265,4 @@
     For performance, it is recommended that the inner loop lies in a separate
     function to gurantee type-stability.
     
    -If you want an iterator of all current outer keys, use [`outer_keys`](@ref).
    source
    +If you want an iterator of all current outer keys, use [`outer_keys`](@ref).source diff --git a/previews/PR3561/moi/tutorials/bridging_constraint/index.html b/previews/PR3561/moi/tutorials/bridging_constraint/index.html index df0e426e0af..7ff92ea4330 100644 --- a/previews/PR3561/moi/tutorials/bridging_constraint/index.html +++ b/previews/PR3561/moi/tutorials/bridging_constraint/index.html @@ -103,4 +103,4 @@ end

    Bridge deletion

    When a bridge is deleted, the constraints it added must be deleted too.

    function delete(model::ModelLike, bridge::SignBridge)
         delete(model, bridge.constraint)
         return
    -end
    +end diff --git a/previews/PR3561/moi/tutorials/example/index.html b/previews/PR3561/moi/tutorials/example/index.html index a68b496c64e..8a546ec7aa9 100644 --- a/previews/PR3561/moi/tutorials/example/index.html +++ b/previews/PR3561/moi/tutorials/example/index.html @@ -46,4 +46,4 @@ 3-element Vector{Float64}: 1.0 1.0 - 1.0 + 1.0 diff --git a/previews/PR3561/moi/tutorials/implementing/index.html b/previews/PR3561/moi/tutorials/implementing/index.html index 3c98ef9a5ea..3d9b286d1ab 100644 --- a/previews/PR3561/moi/tutorials/implementing/index.html +++ b/previews/PR3561/moi/tutorials/implementing/index.html @@ -115,4 +115,4 @@ n = # Code to get NumberOfObjectives return n end

    Then, the user can write:

    model = Gurobi.Optimizer()
    -MOI.set(model, Gurobi.NumberofObjectives(), 3)
    +MOI.set(model, Gurobi.NumberofObjectives(), 3) diff --git a/previews/PR3561/moi/tutorials/latency/index.html b/previews/PR3561/moi/tutorials/latency/index.html index 064cf9e7d85..689de98d80f 100644 --- a/previews/PR3561/moi/tutorials/latency/index.html +++ b/previews/PR3561/moi/tutorials/latency/index.html @@ -130,4 +130,4 @@ end

    You can create a flame-graph via

    using SnoopComile
     tinf = @snoopi_deep example_diet(GLPK.Optimizer, true)
     using ProfileView
    -ProfileView.view(flamegraph(tinf))

    Here's how things looked in mid-August 2021: flamegraph

    There are a few opportunities for improvement (non-red flames, particularly on the right). But the main problem is a large red (non-precompilable due to method ownership) flame.

    +ProfileView.view(flamegraph(tinf))

    Here's how things looked in mid-August 2021: flamegraph

    There are a few opportunities for improvement (non-red flames, particularly on the right). But the main problem is a large red (non-precompilable due to method ownership) flame.

    diff --git a/previews/PR3561/moi/tutorials/manipulating_expressions/index.html b/previews/PR3561/moi/tutorials/manipulating_expressions/index.html index b1dafecd543..e8b7d6106f1 100644 --- a/previews/PR3561/moi/tutorials/manipulating_expressions/index.html +++ b/previews/PR3561/moi/tutorials/manipulating_expressions/index.html @@ -23,4 +23,4 @@ 2-element Vector{MathOptInterface.ScalarAffineFunction{Int64}}: (2) + (1) MOI.VariableIndex(1) (4) + (2) MOI.VariableIndex(1)
    Note

    Utilities.eachscalar returns an iterator on the dimensions, which serves the same purpose as Utilities.scalarize.

    output_dimension returns the number of dimensions of the output of a function:

    julia> MOI.output_dimension(g)
    -2
    +2 diff --git a/previews/PR3561/moi/tutorials/mathprogbase/index.html b/previews/PR3561/moi/tutorials/mathprogbase/index.html index baa7dc19e76..cfcf48570a9 100644 --- a/previews/PR3561/moi/tutorials/mathprogbase/index.html +++ b/previews/PR3561/moi/tutorials/mathprogbase/index.html @@ -55,4 +55,4 @@ objval = objective_value(model), sol = value.(x) ) -end +end diff --git a/previews/PR3561/packages/Alpine/index.html b/previews/PR3561/packages/Alpine/index.html index 514e31f468f..0d562e9a074 100644 --- a/previews/PR3561/packages/Alpine/index.html +++ b/previews/PR3561/packages/Alpine/index.html @@ -46,4 +46,4 @@ author={Kim, Jongeun and Richard, Jean-Philippe P. and Tawarmalani, Mohit}, eprinttype={Optimization Online}, date={2022} -} +} diff --git a/previews/PR3561/packages/AmplNLWriter/index.html b/previews/PR3561/packages/AmplNLWriter/index.html index 5149086f955..e71c72c30ab 100644 --- a/previews/PR3561/packages/AmplNLWriter/index.html +++ b/previews/PR3561/packages/AmplNLWriter/index.html @@ -12,4 +12,4 @@ import Bonmin_jll model = Model(() -> AmplNLWriter.Optimizer(Bonmin_jll.amplexe)) set_attribute(model, "bonmin.nlp_log_level", 0)

    opt files

    Some options need to be specified via an .opt file.

    This file must be located in the current working directory whenever the model is solved.

    The .opt file must be named after the name of the solver, for example, bonmin.opt, and each line must contain an option name and the desired value, separated by a space.

    For example, to set the absolute and relative tolerances in Couenne to 1 and 0.05 respectively, the couenne.opt file should contain:

    allowable_gap 1
    -allowable_fraction_gap 0.05
    +allowable_fraction_gap 0.05 diff --git a/previews/PR3561/packages/BARON/index.html b/previews/PR3561/packages/BARON/index.html index 4eec17fd0e2..8a191cd85a5 100644 --- a/previews/PR3561/packages/BARON/index.html +++ b/previews/PR3561/packages/BARON/index.html @@ -6,4 +6,4 @@

    BARON.jl

    Build Status codecov

    BARON.jl is a wrapper for BARON by The Optimization Firm.

    Affiliation

    This wrapper is maintained by the JuMP community and is not officially supported by The Optimization Firm.

    License

    BARON.jl is licensed under the MIT License.

    The underlying solver is a closed-source commercial product for which you must obtain a license from The Optimization Firm, although a small trial version is available for free.

    Installation

    First, download a copy of the BARON solver and unpack the executable in a location of your choosing.

    Once installed, set the BARON_EXEC environment variable pointing to the BARON executable (full path, including file name as it differs across platforms), and run Pkg.add("BARON"). For example:

    ENV["BARON_EXEC"] = "/path/to/baron.exe"
     using Pkg
     Pkg.add("BARON")

    Use with JuMP

    using JuMP, BARON
    -model = Model(BARON.Optimizer)

    MathOptInterface API

    The BARON optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    +model = Model(BARON.Optimizer)

    MathOptInterface API

    The BARON optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    diff --git a/previews/PR3561/packages/BilevelJuMP/index.html b/previews/PR3561/packages/BilevelJuMP/index.html index a523f134787..941901b35ee 100644 --- a/previews/PR3561/packages/BilevelJuMP/index.html +++ b/previews/PR3561/packages/BilevelJuMP/index.html @@ -34,4 +34,4 @@ objective_value(model) # = 3 * (3.5 * 8/15) + 8/15 # = 6.13... value(x) # = 3.5 * 8/15 # = 1.86... -value(y) # = 8/15 # = 0.53... +value(y) # = 8/15 # = 0.53... diff --git a/previews/PR3561/packages/CDCS/index.html b/previews/PR3561/packages/CDCS/index.html index a3914c51018..8686b452ceb 100644 --- a/previews/PR3561/packages/CDCS/index.html +++ b/previews/PR3561/packages/CDCS/index.html @@ -27,4 +27,4 @@ mat"cdcsInstall" end -julia> mat"savepath" +julia> mat"savepath" diff --git a/previews/PR3561/packages/CDDLib/index.html b/previews/PR3561/packages/CDDLib/index.html index cef9569faaa..776418ab2d9 100644 --- a/previews/PR3561/packages/CDDLib/index.html +++ b/previews/PR3561/packages/CDDLib/index.html @@ -6,4 +6,4 @@

    CDDLib

    CDDLib.jl is a wrapper for cddlib.

    CDDLib.jl can be used with C API of cddlib, the higher level interface of Polyhedra.jl, or as a linear programming solver with JuMP or MathOptInterface.

    Problem description

    As written in the README of cddlib:

    The C-library cddlib is a C implementation of the Double Description Method of Motzkin et al. for generating all vertices (that is, extreme points) and extreme rays of a general convex polyhedron in R^d given by a system of linear inequalities:

    P = { x=(x1, ..., xd)^T :  b - A  x  >= 0 }

    where A is a given m x d real matrix, b is a given m-vector and 0 is the m-vector of all zeros.

    The program can be used for the reverse operation (that is, convex hull computation). This means that one can move back and forth between an inequality representation and a generator (that is, vertex and ray) representation of a polyhedron with cdd. Also, cdd can solve a linear programming problem, that is, a problem of maximizing and minimizing a linear function over P.

    License

    CDDLib.jl is licensed under the GPL v2 license.

    The underlying solver, cddlib/cddlib is also licensed under the GPL v2 license.

    Installation

    Install CDDLib.jl using the Julia package manager:

    import Pkg
     Pkg.add("CDDLib")

    Building the package will download binaries of cddlib that are provided by cddlib_jll.jl.

    Use with JuMP

    Use CDDLib.Optimizer{Float64} to use CDDLib.jl with JuMP:

    using JuMP, CDDLib
     model = Model(CDDLib.Optimizer{Float64})

    When using CDDLib.jl with MathOptInterface, you can pass a different number type:

    using MathOptInterface, CDDLib
    -model = CDDLib.Optimizer{Rational{BigInt}}()

    Debugging

    CDDLib.jl uses two global Boolean variables to enable debugging outputs: debug and log.

    You can query the value of debug and log with get_debug and get_log, and set their values with set_debug and set_log.

    +model = CDDLib.Optimizer{Rational{BigInt}}()

    Debugging

    CDDLib.jl uses two global Boolean variables to enable debugging outputs: debug and log.

    You can query the value of debug and log with get_debug and get_log, and set their values with set_debug and set_log.

    diff --git a/previews/PR3561/packages/COPT/index.html b/previews/PR3561/packages/COPT/index.html index 179694d608e..692808136d9 100644 --- a/previews/PR3561/packages/COPT/index.html +++ b/previews/PR3561/packages/COPT/index.html @@ -39,4 +39,4 @@ @show value.(X) @show value.(z) @show shadow_price(c1) -@show shadow_price(c2) +@show shadow_price(c2) diff --git a/previews/PR3561/packages/COSMO/index.html b/previews/PR3561/packages/COSMO/index.html index 1f114584cdf..2c270c9fd57 100644 --- a/previews/PR3561/packages/COSMO/index.html +++ b/previews/PR3561/packages/COSMO/index.html @@ -34,4 +34,4 @@ publisher = {Springer}, doi = {10.1007/s10957-021-01896-x}, url = {https://doi.org/10.1007/s10957-021-01896-x} -}

    The article is available under Open Access here.

    Contributing

    • Contributions are always welcome. Our style guide can be found here.
    • Current issues, tasks and future ideas are listed in Issues. Please report any issues or bugs that you encounter.
    • As an open source project we are also interested in any projects and applications that use COSMO. Please let us know by opening a GitHub issue.

    Python - Interface

    COSMO can also be called from Python. Take a look at: cosmo-python

    Licence 🔍

    This project is licensed under the Apache License - see the LICENSE.md file for details.

    +}

    The article is available under Open Access here.

    Contributing

    • Contributions are always welcome. Our style guide can be found here.
    • Current issues, tasks and future ideas are listed in Issues. Please report any issues or bugs that you encounter.
    • As an open source project we are also interested in any projects and applications that use COSMO. Please let us know by opening a GitHub issue.

    Python - Interface

    COSMO can also be called from Python. Take a look at: cosmo-python

    Licence 🔍

    This project is licensed under the Apache License - see the LICENSE.md file for details.

    diff --git a/previews/PR3561/packages/CPLEX/index.html b/previews/PR3561/packages/CPLEX/index.html index 8a3acd90a50..fbe138baf2d 100644 --- a/previews/PR3561/packages/CPLEX/index.html +++ b/previews/PR3561/packages/CPLEX/index.html @@ -161,4 +161,4 @@ x_optimal = value.(x) y_optimal = value.(y) println("x: $(x_optimal), y: $(y_optimal)") -end +end diff --git a/previews/PR3561/packages/CSDP/index.html b/previews/PR3561/packages/CSDP/index.html index ffd946f560c..f9caa557f8d 100644 --- a/previews/PR3561/packages/CSDP/index.html +++ b/previews/PR3561/packages/CSDP/index.html @@ -10,4 +10,4 @@ A(X) = a X ⪰ 0

    where A(X) = [⟨A_1, X⟩, ..., ⟨A_m, X⟩]. The corresponding dual is:

    min ⟨a, y⟩
          A'(y) - C = Z
    -             Z ⪰ 0

    where A'(y) = y_1A_1 + ... + y_mA_m

    Termination criteria

    CSDP will terminate successfully (or partially) in the following cases:

    • If CSDP finds X, Z ⪰ 0 such that the following 3 tolerances are satisfied:
      • primal feasibility tolerance: ||A(x) - a||_2 / (1 + ||a||_2) < axtol
      • dual feasibility tolerance: ||A'(y) - C - Z||_F / (1 + ||C||_F) < atytol
      • relative duality gap tolerance: gap / (1 + |⟨a, y⟩| + |⟨C, X⟩|) < objtol
        • objective duality gap: if usexygap is 0, gap = ⟨a, y⟩ - ⟨C, X⟩
        • XY duality gap: if usexygap is 1, gap = ⟨Z, X⟩
      then it returns 0.
    • If CSDP finds y and Z ⪰ 0 such that -⟨a, y⟩ / ||A'(y) - Z||_F > pinftol, it returns 1 with y such that ⟨a, y⟩ = -1.
    • If CSDP finds X ⪰ 0 such that ⟨C, X⟩ / ||A(X)||_2 > dinftol, it returns 2 with X such that ⟨C, X⟩ = 1.
    • If CSDP finds X, Z ⪰ 0 such that the following 3 tolerances are satisfied with 1000*axtol, 1000*atytol and 1000*objtol but at least one of them is not satisfied with axtol, atytol and objtol and cannot make progress, then it returns 3.

    In addition, if the printlevel option is at least 1, the following will be printed:

    • If the return code is 1, CSDP will print ⟨a, y⟩ and ||A'(y) - Z||_F
    • If the return code is 2, CSDP will print ⟨C, X⟩ and ||A(X)||_F
    • Otherwise, CSDP will print
      • the primal/dual objective value,
      • the relative primal/dual infeasibility,
      • the objective duality gap ⟨a, y⟩ - ⟨C, X⟩ and objective relative duality gap (⟨a, y⟩ - ⟨C, X⟩) / (1 + |⟨a, y⟩| + |⟨C, X⟩|),
      • the XY duality gap ⟨Z, X⟩ and XY relative duality gap ⟨Z, X⟩ / (1 + |⟨a, y⟩| + |⟨C, X⟩|)
      • and the DIMACS error measures.

    In theory, for feasible primal and dual solutions, ⟨a, y⟩ - ⟨C, X⟩ = ⟨Z, X⟩, so the objective and XY duality gap should be equivalent. However, in practice, there are sometimes solution which satisfy primal and dual feasibility tolerances but have objective duality gap which are not close to XY duality gap. In some cases, the objective duality gap may even become negative (hence the tweakgap option). This is the reason usexygap is 1 by default.

    CSDP considers that X ⪰ 0 (resp. Z ⪰ 0) is satisfied when the Cholesky factorizations can be computed. In practice, this is somewhat more conservative than simply requiring all eigenvalues to be nonnegative.

    Status

    The table below shows how the different CSDP statuses are converted to the MathOptInterface statuses.

    CSDP codeStateDescriptionMOI status
    0SuccessSDP solvedMOI.OPTIMAL
    1SuccessThe problem is primal infeasible, and we have a certificateMOI.INFEASIBLE
    2SuccessThe problem is dual infeasible, and we have a certificateMOI.DUAL_INFEASIBLE
    3Partial SuccessA solution has been found, but full accuracy was not achievedMOI.ALMOST_OPTIMAL
    4FailureMaximum iterations reachedMOI.ITERATION_LIMIT
    5FailureStuck at edge of primal feasibilityMOI.SLOW_PROGRESS
    6FailureStuck at edge of dual infeasibilityMOI.SLOW_PROGRESS
    7FailureLack of progressMOI.SLOW_PROGRESS
    8FailureX, Z, or O was singularMOI.NUMERICAL_ERROR
    9FailureDetected NaN or Inf valuesMOI.NUMERICAL_ERROR
    + Z ⪰ 0

    where A'(y) = y_1A_1 + ... + y_mA_m

    Termination criteria

    CSDP will terminate successfully (or partially) in the following cases:

    • If CSDP finds X, Z ⪰ 0 such that the following 3 tolerances are satisfied:
      • primal feasibility tolerance: ||A(x) - a||_2 / (1 + ||a||_2) < axtol
      • dual feasibility tolerance: ||A'(y) - C - Z||_F / (1 + ||C||_F) < atytol
      • relative duality gap tolerance: gap / (1 + |⟨a, y⟩| + |⟨C, X⟩|) < objtol
        • objective duality gap: if usexygap is 0, gap = ⟨a, y⟩ - ⟨C, X⟩
        • XY duality gap: if usexygap is 1, gap = ⟨Z, X⟩
      then it returns 0.
    • If CSDP finds y and Z ⪰ 0 such that -⟨a, y⟩ / ||A'(y) - Z||_F > pinftol, it returns 1 with y such that ⟨a, y⟩ = -1.
    • If CSDP finds X ⪰ 0 such that ⟨C, X⟩ / ||A(X)||_2 > dinftol, it returns 2 with X such that ⟨C, X⟩ = 1.
    • If CSDP finds X, Z ⪰ 0 such that the following 3 tolerances are satisfied with 1000*axtol, 1000*atytol and 1000*objtol but at least one of them is not satisfied with axtol, atytol and objtol and cannot make progress, then it returns 3.

    In addition, if the printlevel option is at least 1, the following will be printed:

    • If the return code is 1, CSDP will print ⟨a, y⟩ and ||A'(y) - Z||_F
    • If the return code is 2, CSDP will print ⟨C, X⟩ and ||A(X)||_F
    • Otherwise, CSDP will print
      • the primal/dual objective value,
      • the relative primal/dual infeasibility,
      • the objective duality gap ⟨a, y⟩ - ⟨C, X⟩ and objective relative duality gap (⟨a, y⟩ - ⟨C, X⟩) / (1 + |⟨a, y⟩| + |⟨C, X⟩|),
      • the XY duality gap ⟨Z, X⟩ and XY relative duality gap ⟨Z, X⟩ / (1 + |⟨a, y⟩| + |⟨C, X⟩|)
      • and the DIMACS error measures.

    In theory, for feasible primal and dual solutions, ⟨a, y⟩ - ⟨C, X⟩ = ⟨Z, X⟩, so the objective and XY duality gap should be equivalent. However, in practice, there are sometimes solution which satisfy primal and dual feasibility tolerances but have objective duality gap which are not close to XY duality gap. In some cases, the objective duality gap may even become negative (hence the tweakgap option). This is the reason usexygap is 1 by default.

    CSDP considers that X ⪰ 0 (resp. Z ⪰ 0) is satisfied when the Cholesky factorizations can be computed. In practice, this is somewhat more conservative than simply requiring all eigenvalues to be nonnegative.

    Status

    The table below shows how the different CSDP statuses are converted to the MathOptInterface statuses.

    CSDP codeStateDescriptionMOI status
    0SuccessSDP solvedMOI.OPTIMAL
    1SuccessThe problem is primal infeasible, and we have a certificateMOI.INFEASIBLE
    2SuccessThe problem is dual infeasible, and we have a certificateMOI.DUAL_INFEASIBLE
    3Partial SuccessA solution has been found, but full accuracy was not achievedMOI.ALMOST_OPTIMAL
    4FailureMaximum iterations reachedMOI.ITERATION_LIMIT
    5FailureStuck at edge of primal feasibilityMOI.SLOW_PROGRESS
    6FailureStuck at edge of dual infeasibilityMOI.SLOW_PROGRESS
    7FailureLack of progressMOI.SLOW_PROGRESS
    8FailureX, Z, or O was singularMOI.NUMERICAL_ERROR
    9FailureDetected NaN or Inf valuesMOI.NUMERICAL_ERROR
    diff --git a/previews/PR3561/packages/Cbc/index.html b/previews/PR3561/packages/Cbc/index.html index 8816404c20d..f476da17ef6 100644 --- a/previews/PR3561/packages/Cbc/index.html +++ b/previews/PR3561/packages/Cbc/index.html @@ -9,4 +9,4 @@ set_attribute(model, "logLevel", 1)

    MathOptInterface API

    The COIN Branch-and-Cut (Cbc) optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    List of supported optimizer attributes:

    List of supported variable attributes:

    List of supported constraint attributes:

    Options

    Options are, unfortunately, not well documented.

    The following options are likely to be the most useful:

    ParameterExampleExplanation
    seconds60.0Solution timeout limit
    logLevel2Set to 0 to disable solution output
    maxSolutions1Terminate after this many feasible solutions have been found
    maxNodes1Terminate after this many branch-and-bound nodes have been evaluated
    allowableGap0.05Terminate after optimality gap is less than this value (on an absolute scale)
    ratioGap0.05Terminate after optimality gap is smaller than this relative fraction
    threads1Set the number of threads to use for parallel branch & bound

    The complete list of parameters can be found by running the cbc executable and typing ? at the prompt.

    Start the cbc executable from Julia as follows:

    using Cbc_jll
     Cbc_jll.cbc() do exe
         run(`$(exe)`)
    -end
    +end diff --git a/previews/PR3561/packages/Clarabel/index.html b/previews/PR3561/packages/Clarabel/index.html index 1c609106d05..60f3801b4ae 100644 --- a/previews/PR3561/packages/Clarabel/index.html +++ b/previews/PR3561/packages/Clarabel/index.html @@ -23,4 +23,4 @@ \text{minimize} & \frac{1}{2}x^T P x + q^T x\\\\[2ex] \text{subject to} & Ax + s = b \\\\[1ex] & s \in \mathcal{K} -\end{array}\]

    with decision variables $x \in \mathbb{R}^n$, $s \in \mathbb{R}^m$ and data matrices $P=P^\top \succeq 0$, $q \in \mathbb{R}^n$, $A \in \mathbb{R}^{m \times n}$, and $b \in \mathbb{R}^m$. The convex set $\mathcal{K}$ is a composition of convex cones.

    For more information see the Clarabel Documentation (stable | dev).

    Clarabel is also available in a Rust implementation with additional language interfaces. See here.

    Features

    • Versatile: Clarabel.jl solves linear programs (LPs), quadratic programs (QPs), second-order cone programs (SOCPs) and semidefinite programs (SDPs). It also solves problems with exponential, power cone and generalized power cone constraints.
    • Quadratic objectives: Unlike interior point solvers based on the standard homogeneous self-dual embedding (HSDE), Clarabel.jl handles quadratic objectives without requiring any epigraphical reformulation of the objective. It can therefore be significantly faster than other HSDE-based solvers for problems with quadratic objective functions.
    • Infeasibility detection: Infeasible problems are detected using a homogeneous embedding technique.
    • JuMP / Convex.jl support: We provide an interface to MathOptInterface (MOI), which allows you to describe your problem in JuMP and Convex.jl.
    • Arbitrary precision types: You can solve problems with any floating point precision, for example, Float32 or Julia's BigFloat type, using either the native interface, or via MathOptInterface / Convex.jl.
    • Open Source: Our code is available on GitHub and distributed under the Apache 2.0 License

    Installation

    • Clarabel.jl can be added via the Julia package manager (type ]): pkg> add Clarabel

    License 🔍

    This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details.

    +\end{array}\]

    with decision variables $x \in \mathbb{R}^n$, $s \in \mathbb{R}^m$ and data matrices $P=P^\top \succeq 0$, $q \in \mathbb{R}^n$, $A \in \mathbb{R}^{m \times n}$, and $b \in \mathbb{R}^m$. The convex set $\mathcal{K}$ is a composition of convex cones.

    For more information see the Clarabel Documentation (stable | dev).

    Clarabel is also available in a Rust implementation with additional language interfaces. See here.

    Features

    • Versatile: Clarabel.jl solves linear programs (LPs), quadratic programs (QPs), second-order cone programs (SOCPs) and semidefinite programs (SDPs). It also solves problems with exponential, power cone and generalized power cone constraints.
    • Quadratic objectives: Unlike interior point solvers based on the standard homogeneous self-dual embedding (HSDE), Clarabel.jl handles quadratic objectives without requiring any epigraphical reformulation of the objective. It can therefore be significantly faster than other HSDE-based solvers for problems with quadratic objective functions.
    • Infeasibility detection: Infeasible problems are detected using a homogeneous embedding technique.
    • JuMP / Convex.jl support: We provide an interface to MathOptInterface (MOI), which allows you to describe your problem in JuMP and Convex.jl.
    • Arbitrary precision types: You can solve problems with any floating point precision, for example, Float32 or Julia's BigFloat type, using either the native interface, or via MathOptInterface / Convex.jl.
    • Open Source: Our code is available on GitHub and distributed under the Apache 2.0 License

    Installation

    • Clarabel.jl can be added via the Julia package manager (type ]): pkg> add Clarabel

    License 🔍

    This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details.

    diff --git a/previews/PR3561/packages/Clp/index.html b/previews/PR3561/packages/Clp/index.html index 3ab1e651567..2d469286865 100644 --- a/previews/PR3561/packages/Clp/index.html +++ b/previews/PR3561/packages/Clp/index.html @@ -7,4 +7,4 @@ Pkg.add("Clp")

    In addition to installing the Clp.jl package, this will also download and install the Clp binaries. You do not need to install Clp separately.

    To use a custom binary, read the Custom solver binaries section of the JuMP documentation.

    Use with JuMP

    To use Clp with JuMP, use Clp.Optimizer:

    using JuMP, Clp
     model = Model(Clp.Optimizer)
     set_attribute(model, "LogLevel", 1)
    -set_attribute(model, "Algorithm", 4)

    MathOptInterface API

    The Clp optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    Options are, unfortunately, not well documented.

    The following options are likely to be the most useful:

    ParameterExampleExplanation
    PrimalTolerance1e-7Primal feasibility tolerance
    DualTolerance1e-7Dual feasibility tolerance
    DualObjectiveLimit1e308When using dual simplex (where the objective is monotonically changing), terminate when the objective exceeds this limit
    MaximumIterations2147483647Terminate after performing this number of simplex iterations
    MaximumSeconds-1.0Terminate after this many seconds have passed. A negative value means no time limit
    LogLevel1Set to 1, 2, 3, or 4 for increasing output. Set to 0 to disable output
    PresolveType0Set to 1 to disable presolve
    SolveType5Solution method: dual simplex (0), primal simplex (1), sprint (2), barrier with crossover (3), barrier without crossover (4), automatic (5)
    InfeasibleReturn0Set to 1 to return as soon as the problem is found to be infeasible (by default, an infeasibility proof is computed as well)
    Scaling30 -off, 1 equilibrium, 2 geometric, 3 auto, 4 dynamic(later)
    Perturbation100switch on perturbation (50), automatic (100), don't try perturbing (102)

    C API

    The C API can be accessed via Clp.Clp_XXX functions, where the names and arguments are identical to the C API.

    +set_attribute(model, "Algorithm", 4)

    MathOptInterface API

    The Clp optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    Options are, unfortunately, not well documented.

    The following options are likely to be the most useful:

    ParameterExampleExplanation
    PrimalTolerance1e-7Primal feasibility tolerance
    DualTolerance1e-7Dual feasibility tolerance
    DualObjectiveLimit1e308When using dual simplex (where the objective is monotonically changing), terminate when the objective exceeds this limit
    MaximumIterations2147483647Terminate after performing this number of simplex iterations
    MaximumSeconds-1.0Terminate after this many seconds have passed. A negative value means no time limit
    LogLevel1Set to 1, 2, 3, or 4 for increasing output. Set to 0 to disable output
    PresolveType0Set to 1 to disable presolve
    SolveType5Solution method: dual simplex (0), primal simplex (1), sprint (2), barrier with crossover (3), barrier without crossover (4), automatic (5)
    InfeasibleReturn0Set to 1 to return as soon as the problem is found to be infeasible (by default, an infeasibility proof is computed as well)
    Scaling30 -off, 1 equilibrium, 2 geometric, 3 auto, 4 dynamic(later)
    Perturbation100switch on perturbation (50), automatic (100), don't try perturbing (102)

    C API

    The C API can be accessed via Clp.Clp_XXX functions, where the names and arguments are identical to the C API.

    diff --git a/previews/PR3561/packages/DAQP/index.html b/previews/PR3561/packages/DAQP/index.html index 81cd6980a63..c337da398ed 100644 --- a/previews/PR3561/packages/DAQP/index.html +++ b/previews/PR3561/packages/DAQP/index.html @@ -5,4 +5,4 @@ gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash});

    DAQP.jl

    DAQP.jl is a Julia wrapper for the Quadratic Programming solver DAQP.

    License

    DAQP.jl is licensed under the MIT license.

    The underlying solver, darnstrom/daqp is licensed under the MIT license.

    Installation

    Install DAQP.jl using the Julia package manager:

    import Pkg
     Pkg.add("DAQP")

    Use with JuMP

    To use DAQP with JuMP, do:

    using JuMP, DAQP
    -model = Model(DAQP.Optimizer)

    Documentation

    General information about the solver is available at https://darnstrom.github.io/daqp/, and specifics for the Julia interface are available at https://darnstrom.github.io/daqp/start/julia.

    +model = Model(DAQP.Optimizer)

    Documentation

    General information about the solver is available at https://darnstrom.github.io/daqp/, and specifics for the Julia interface are available at https://darnstrom.github.io/daqp/start/julia.

    diff --git a/previews/PR3561/packages/DiffOpt/index.html b/previews/PR3561/packages/DiffOpt/index.html index fe1ff7d4879..b04debc7308 100644 --- a/previews/PR3561/packages/DiffOpt/index.html +++ b/previews/PR3561/packages/DiffOpt/index.html @@ -20,4 +20,4 @@ # fetch the gradients grad_exp = MOI.get(model, DiffOpt.ReverseConstraintFunction(), cons) # -3 x - 1 constant(grad_exp) # -1 -coefficient(grad_exp, x) # -3

    GSOC2020

    DiffOpt began as a NumFOCUS sponsored Google Summer of Code (2020) project

    +coefficient(grad_exp, x) # -3

    GSOC2020

    DiffOpt began as a NumFOCUS sponsored Google Summer of Code (2020) project

    diff --git a/previews/PR3561/packages/Dualization/index.html b/previews/PR3561/packages/Dualization/index.html index b327148e544..7eda0b363d9 100644 --- a/previews/PR3561/packages/Dualization/index.html +++ b/previews/PR3561/packages/Dualization/index.html @@ -10,4 +10,4 @@ dual_model = dualize(model)

    To solve the dual formulation of a JuMP model, create a dual_optimizer:

    using JuMP, Dualization, SCS
     model = Model(dual_optimizer(SCS.Optimizer))
     # ... build model ...
    -optimize!(model)  # Solves the dual instead of the primal

    Documentation

    The documentation for Dualization.jl includes a detailed description of the dual reformulation, along with examples and an API reference.

    +optimize!(model) # Solves the dual instead of the primal

    Documentation

    The documentation for Dualization.jl includes a detailed description of the dual reformulation, along with examples and an API reference.

    diff --git a/previews/PR3561/packages/EAGO/index.html b/previews/PR3561/packages/EAGO/index.html index d119902ce0e..fc3dd79d37f 100644 --- a/previews/PR3561/packages/EAGO/index.html +++ b/previews/PR3561/packages/EAGO/index.html @@ -3,70 +3,70 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -
    - -# EAGO - Easy Advanced Global Optimization - -EAGO is an open-source development environment for **robust and global optimization** in Julia. See the full [README](https://github.com/PSORLab/EAGO.jl/blob/master/README.md) for more information. - -| **PSOR Lab** | **Current Version** | **Build Status** | **Documentation** | -|:------------:|:-------------------:|:----------------:|:-----------------:| -| [![](https://img.shields.io/badge/Developed_by-PSOR_Lab-342674)](https://psor.uconn.edu/) | [![](https://docs.juliahub.com/EAGO/version.svg)](https://juliahub.com/ui/Packages/General/EAGO) | [![Build Status](https://github.com/PSORLab/EAGO.jl/workflows/CI/badge.svg?branch=master)](https://github.com/PSORLab/EAGO.jl/actions?query=workflow%3ACI) [![codecov](https://codecov.io/gh/PSORLab/EAGO.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/PSORLab/EAGO.jl)| [![](https://img.shields.io/badge/docs-latest-blue.svg)](https://PSORLab.github.io/EAGO.jl/dev) | - -EAGO is a deterministic global optimizer designed to address a wide variety of optimization problems, emphasizing nonlinear programs (NLPs), by propagating McCormick relaxations along the factorable structure of each expression in the NLP. Most operators supported by modern automatic differentiation (AD) packages are supported by EAGO and a number utilities for sanitizing native Julia code and generating relaxations on a wide variety of user-defined functions have been included. Currently, EAGO supports problems that have a priori variable bounds defined and have differentiable constraints. That is, problems should be specified in the generic form below: -

    math \begin{align} f^{\} = & \min{\mathbf y \in Y \subset \mathbb R^{n{y}}} f(\mathbf y) \ -{\rm s.t.} \;\; & \mathbf h(\mathbf y) = \mathbf 0 \ -& \mathbf g(\mathbf y) \leq \mathbf 0 \ -& Y = [\mathbf y^{\mathbf L}, \mathbf y^{\mathbf U}] \in \mathbb{IR}^{n} \ -& \qquad \mathbf y^{\mathbf L}, \mathbf y^{\mathbf U} \in \mathbb R^{n} \end{align*}

    
    -For each nonlinear term, EAGO makes use of factorable representations to construct bounds and relaxations. In the case of $f(x) = x (x - 5) \sin(x)$, a list is generated and rules for constructing McCormick relaxations are used to formulate relaxations in the original decision space, $X$ [[1](#references)]:
    -
    -- $v_{1} = x$
    -- $v_{2} = v_{1} - 5$
    -- $v_{3} = \sin(v_{1})$
    -- $v_{4} = v_{1} v_{2}$
    -- $v_{5} = v_{4} v_{3}$
    -- $f(x) = v_{5}$
    -
    -<p align="center">
    -<img src="https://github.com/PSORLab/EAGO.jl/blob/master/docs/src/mccormick/Figure_1.png?raw=true" width="60%" height="60%">
    -
    -Either these original relaxations, differentiable McCormick relaxations [[2](#references)], or affine relaxations thereof can be used to construct relaxations of optimization problems useful in branch and bound routines for global optimization. Utilities are included to combine these with algorithms for relaxing implicit functions [[3](#references)] and forward-reverse propagation of McCormick arithmetic [[4](#references)].
    -
    -## License
    -
    -EAGO is licensed under the [MIT License](https://github.com/PSORLab/EAGO.jl/blob/master/LICENSE.md).
    -
    -## Installation
    -
    -EAGO is a registered Julia package and it can be installed using the Julia package manager:
    -

    julia import Pkg Pkg.add("EAGO")

    
    -## Use with JuMP
    -
    -EAGO makes use of JuMP to improve the user's experience in setting up optimization models. Consider the "process" problem instance from [[5](#references)]:
    -

    math \begin{align} & \max{\mathbf x \in X} 0.063 x{4} x{7} - 5.04 x{1} - 0.035 x{2} - 10 x{3} - 3.36 x{2} \ -{\rm s.t.} \;\; & x{1} (1.12 + 0.13167 x{8} - 0.00667 x{8}^{2}) + x{4} = 0 \ -& -0.001 x{4} x{9} x{6} / (98 - x{6}) + x{3} = 0 \ -& -(1.098 x{8} - 0.038 x{8}^{2}) - 0.325 x{6} + x{7} = 0 \ -& -(x{2} + x{5}) / x{1} + x{8} = 0 \ -& -x{1} + 1.22 x{4} - x{5} = 0 \ -& x{9} + 0.222 x{10} - 35.82 = 0 \ -& -3.0 x{7} + x_{10} + 133.0 = 0 \ -& X = [10, 2000] \times [0, 16000] \times [0, 120] \times [0, 5000] \ -& \qquad \times [0, 2000] \times [85, 93] \times [90,9 5] \times [3, 12] \times [1.2, 4] \times [145, 162] \end{align}

    
    -This model can be formulated in Julia as:
    -

    julia using JuMP, EAGO

    Build model using EAGO's optimizer

    m = Model(EAGO.Optimizer)

    Define bounded variables

    xL = [10.0; 0.0; 0.0; 0.0; 0.0; 85.0; 90.0; 3.0; 1.2; 145.0] xU = [2000.0; 16000.0; 120.0; 5000.0; 2000.0; 93.0; 95.0; 12.0; 4.0; 162.0] @variable(m, xL[i] <= x[i=1:10] <= xU[i])

    Define nonlinear constraints

    @NLconstraint(m, e1, -x[1](1.12 + 0.13167x[8] - 0.00667(x[8])^2) + x[4] == 0.0) @NLconstraint(m, e3, -0.001x[4]x[9]x[6]/(98.0 - x[6]) + x[3] == 0.0) @NLconstraint(m, e4, -(1.098x[8] - 0.038(x[8])^2) - 0.325*x[6] + x[7] == 57.425) @NLconstraint(m, e5, -(x[2] + x[5])/x[1] + x[8] == 0.0)

    Define linear constraints

    @constraint(m, e2, -x[1] + 1.22x[4] - x[5] == 0.0) @constraint(m, e6, x[9] + 0.222x[10] == 35.82) @constraint(m, e7, -3.0*x[7] + x[10] == -133.0)

    Define nonlinear objective

    @NLobjective(m, Max, 0.063x[4]x[7] - 5.04x[1] - 0.035x[2] - 10x[3] - 3.36x[5])

    Solve the optimization problem

    JuMP.optimize!(m)

    
    -## Documentation
    -
    -EAGO has numerous features: a solver accessible from JuMP/MathOptInterface (MOI), domain reduction routines, McCormick relaxations, and specialized nonconvex semi-infinite program solvers. A full description of all features can be found on the [documentation website](https://psorlab.github.io/EAGO.jl/dev/). A series of example have been provided in the documentation and in the form of Jupyter Notebooks in the separate [EAGO-notebooks](https://github.com/PSORLab/EAGO-notebooks) repository.
    -
    -## A Cautionary Note on Global Optimization
    -
    -As a global optimization platform, EAGO's solvers can be used to find solutions of general nonconvex problems with a guaranteed certificate of optimality. However, global solvers suffer from the curse of dimensionality and therefore their performance is outstripped by convex/local solvers. For users interested in large-scale applications, be warned that problems generally larger than a few variables may prove challenging for certain types of global optimization problems.
    -
    -## Citing EAGO
    -
    -Please cite the following paper when using EAGO. In plain text form this is:
    -

    Wilhelm, M.E. and Stuber, M.D. EAGO.jl: easy advanced global optimization in Julia. Optimization Methods and Software. 37(2): 425-450 (2022). DOI: 10.1080/10556788.2020.1786566

    
    -As a BibTeX entry:
    -

    bibtex @article{doi:10.1080/10556788.2020.1786566, author = {Wilhelm, M.E. and Stuber, M.D.}, title = {EAGO.jl: easy advanced global optimization in Julia}, journal = {Optimization Methods and Software}, volume = {37}, number = {2}, pages = {425-450}, year = {2022}, publisher = {Taylor & Francis}, doi = {10.1080/10556788.2020.1786566}, URL = {https://doi.org/10.1080/10556788.2020.1786566}, eprint = {https://doi.org/10.1080/10556788.2020.1786566} } ```

    References

    1. Mitsos, A., Chachuat, B., and Barton, P.I. McCormick-based relaxations of algorithms. SIAM Journal on Optimization. 20(2): 573–601 (2009).
    2. Khan, K.A., Watson, H.A.J., and Barton, P.I. Differentiable McCormick relaxations. Journal of Global Optimization. 67(4): 687-729 (2017).
    3. Stuber, M.D., Scott, J.K., and Barton, P.I.: Convex and concave relaxations of implicit functions. Optimization Methods and Software 30(3): 424–460 (2015).
    4. Wechsung, A., Scott, J.K., Watson, H.A.J., and Barton, P.I. Reverse propagation of McCormick relaxations. Journal of Global Optimization 63(1): 1-36 (2015).
    5. Bracken, J., and McCormick, G.P. Selected Applications of Nonlinear Programming. John Wiley and Sons, New York (1968).
    +

    @raw html <img src="https://github.com/PSORLab/EAGO.jl/blob/master/docs/src/assets/logo.png?raw=true" width="75%" height="75%"/>

    EAGO - Easy Advanced Global Optimization

    EAGO is an open-source development environment for robust and global optimization in Julia. See the full README for more information.

    PSOR LabCurrent VersionBuild StatusDocumentation
    Build Status codecov

    EAGO is a deterministic global optimizer designed to address a wide variety of optimization problems, emphasizing nonlinear programs (NLPs), by propagating McCormick relaxations along the factorable structure of each expression in the NLP. Most operators supported by modern automatic differentiation (AD) packages are supported by EAGO and a number utilities for sanitizing native Julia code and generating relaxations on a wide variety of user-defined functions have been included. Currently, EAGO supports problems that have a priori variable bounds defined and have differentiable constraints. That is, problems should be specified in the generic form below:

    \[\begin{aligned} +f^{*} = & \min_{\mathbf y \in Y \subset \mathbb R^{n_{y}}} f(\mathbf y) \\ +{\rm s.t.} \; \; & \mathbf h(\mathbf y) = \mathbf 0 \\ +& \mathbf g(\mathbf y) \leq \mathbf 0 \\ +& Y = [\mathbf y^{L}, \mathbf y^{U}] \in \mathbb{IR}^{n} \\ +& \qquad \mathbf y^{L}, \mathbf y^{U} \in \mathbb R^{n} +\end{aligned}\]

    For each nonlinear term, EAGO makes use of factorable representations to construct bounds and relaxations.

    For example, given the function

    \[f(x) = x (x - 5) \sin(x),\]

    a list is generated and rules for constructing McCormick relaxations are used to formulate relaxations in the original decision space, $X$ [1]:

    \[\begin{aligned} +v_{1} & = x \\ +v_{2} & = v_{1} - 5 \\ +v_{3} & = \sin(v_{1}) \\ +v_{4} & = v_{1} v_{2} \\ +v_{5} & = v_{4} v_{3} \\ +f(x) & = v_{5} \\ +\end{aligned}\]

    @raw html <p align="center"> <img src="https://github.com/PSORLab/EAGO.jl/blob/master/docs/src/mccormick/Figure_1.png?raw=true" width="60%" height="60%"/> </p>

    Either these original relaxations, differentiable McCormick relaxations [2], or affine relaxations thereof can be used to construct relaxations of optimization problems useful in branch and bound routines for global optimization. Utilities are included to combine these with algorithms for relaxing implicit functions [3] and forward-reverse propagation of McCormick arithmetic [4].

    License

    EAGO is licensed under the MIT License.

    Installation

    EAGO is a registered Julia package that can be installed using the Julia package manager:

    import Pkg
    +Pkg.add("EAGO")

    Use with JuMP

    EAGO makes use of JuMP to improve the user's experience in setting up optimization models. Consider the "process" problem instance from [5]:

    \[\begin{aligned} +& \max_{\mathbf x \in X} 0.063 x_{4} x_{7} - 5.04 x_{1} - 0.035 x_{2} - 10 x_{3} - 3.36 x_{2} \\ +{\rm s.t.} \; \; & x_{1} (1.12 + 0.13167 x_{8} - 0.00667 x_{8}^{2}) + x_{4} = 0 \\ +& -0.001 x_{4} x_{9} x_{6} / (98 - x_{6}) + x_{3} = 0 \\ +& -(1.098 x_{8} - 0.038 x_{8}^{2}) - 0.325 x_{6} + x_{7} = 0 \\ +& -(x_{2} + x_{5}) / x_{1} + x_{8} = 0 \\ +& -x_{1} + 1.22 x_{4} - x_{5} = 0 \\ +& x_{9} + 0.222 x_{10} - 35.82 = 0 \\ +& -3.0 x_{7} + x_{10} + 133.0 = 0 \\ +& X = [10, 2000] \times [0, 16000] \times [0, 120] \times [0, 5000] \\ +& \qquad \times [0, 2000] \times [85, 93] \times [90,9 5] \times [3, 12] \times [1.2, 4] \times [145, 162] +\end{aligned}\]

    This model can be formulated in Julia as:

    using JuMP
    +import EAGO
    +# Build model using EAGO's optimizer
    +model = Model(EAGO.Optimizer)
    +# Define bounded variables
    +xL = [10.0, 0.0, 0.0, 0.0, 0.0, 85.0, 90.0, 3.0, 1.2, 145.0]
    +xU = [2000.0, 16000.0, 120.0, 5000.0, 2000.0, 93.0, 95.0, 12.0, 4.0, 162.0]
    +@variable(model, xL[i] <= x[i=1:10] <= xU[i])
    +# Define nonlinear constraints
    +@NLconstraints(model, begin
    +    -x[1]*(1.12 + 0.13167*x[8] - 0.00667*(x[8])^2) + x[4] == 0.0
    +    -0.001*x[4]*x[9]*x[6]/(98.0 - x[6]) + x[3] == 0.0
    +    -(1.098*x[8] - 0.038*(x[8])^2) - 0.325*x[6] + x[7] == 57.425
    +    -(x[2] + x[5])/x[1] + x[8] == 0.0
    +end)
    +# Define linear constraints
    +@constraints(model, begin
    +    -x[1] + 1.22*x[4] - x[5] == 0.0
    +    x[9] + 0.222*x[10] == 35.82
    +    -3.0*x[7] + x[10] == -133.0
    +end)
    +# Define nonlinear objective
    +@NLobjective(
    +    model, 
    +    Max,
    +    0.063*x[4]*x[7] - 5.04*x[1] - 0.035*x[2] - 10*x[3] - 3.36*x[5],
    +)
    +# Solve the optimization problem
    +optimize!(model)

    Documentation

    EAGO has numerous features: a solver accessible from JuMP/MathOptInterface (MOI), domain reduction routines, McCormick relaxations, and specialized nonconvex semi-infinite program solvers. A full description of all features can be found on the documentation website.

    A series of examples have been provided in the documentation and in the form of Jupyter Notebooks in the separate EAGO-notebooks repository.

    A Cautionary Note on Global Optimization

    As a global optimization platform, EAGO's solvers can be used to find solutions of general nonconvex problems with a guaranteed certificate of optimality. However, global solvers suffer from the curse of dimensionality and therefore their performance is outstripped by convex/local solvers.

    For users interested in large-scale applications, be warned that problems generally larger than a few variables may prove challenging for certain types of global optimization problems.

    Citing EAGO

    Please cite the following paper when using EAGO. In plain text form this is:

    Wilhelm, M.E. and Stuber, M.D. EAGO.jl: easy advanced global optimization in Julia.
    +Optimization Methods and Software. 37(2): 425-450 (2022). DOI: 10.1080/10556788.2020.1786566

    As a BibTeX entry:

    @article{doi:10.1080/10556788.2020.1786566,
    +    author = {Wilhelm, M.E. and Stuber, M.D.},
    +    title = {EAGO.jl: easy advanced global optimization in Julia},
    +    journal = {Optimization Methods and Software},
    +    volume = {37},
    +    number = {2},
    +    pages = {425-450},
    +    year  = {2022},
    +    publisher = {Taylor & Francis},
    +    doi = {10.1080/10556788.2020.1786566},
    +    URL = {https://doi.org/10.1080/10556788.2020.1786566},
    +    eprint = {https://doi.org/10.1080/10556788.2020.1786566}
    +}

    References

    1. Mitsos, A., Chachuat, B., and Barton, P.I. McCormick-based relaxations of algorithms. SIAM Journal on Optimization. 20(2): 573–601 (2009).
    2. Khan, K.A., Watson, H.A.J., and Barton, P.I. Differentiable McCormick relaxations. Journal of Global Optimization. 67(4): 687–729 (2017).
    3. Stuber, M.D., Scott, J.K., and Barton, P.I.: Convex and concave relaxations of implicit functions. Optimization Methods and Software 30(3): 424–460 (2015).
    4. Wechsung, A., Scott, J.K., Watson, H.A.J., and Barton, P.I. Reverse propagation of McCormick relaxations. Journal of Global Optimization 63(1): 1–36 (2015).
    5. Bracken, J., and McCormick, G.P. Selected Applications of Nonlinear Programming. John Wiley and Sons, New York (1968).
    diff --git a/previews/PR3561/packages/ECOS/index.html b/previews/PR3561/packages/ECOS/index.html index f147d9dcc48..83700d8339f 100644 --- a/previews/PR3561/packages/ECOS/index.html +++ b/previews/PR3561/packages/ECOS/index.html @@ -6,4 +6,4 @@

    ECOS.jl

    Build Status codecov

    ECOS.jl is a wrapper for the ECOS solver.

    The wrapper has two components:

    Affiliation

    This wrapper is maintained by the JuMP community and is not a product of Embotech AG.

    License

    ECOS.jl is licensed under the MIT License.

    The underlying solver, embotech/ecos, is licensed under the GPL v3 license.

    Installation

    Install ECOS.jl using Pkg.add:

    import Pkg
     Pkg.add("ECOS")

    In addition to installing the ECOS.jl package, this will also download and install the ECOS binaries. You do not need to install ECOS separately.

    To use a custom binary, read the Custom solver binaries section of the JuMP documentation.

    Use with JuMP

    To use ECOS with JuMP, use ECOS.Optimizer:

    using JuMP, ECOS
     model = Model(ECOS.Optimizer)
    -set_attribute(model, "maxit", 100)

    MathOptInterface API

    The ECOS optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    The following options are supported:

    ParameterExplanation
    gammascaling the final step length
    deltaregularization parameter
    epsregularization threshold
    feastolprimal/dual infeasibility tolerance
    abstolabsolute tolerance on duality gap
    reltolrelative tolerance on duality gap
    feastol_inaccprimal/dual infeasibility relaxed tolerance
    abstol_inaccabsolute relaxed tolerance on duality gap
    reltol_inaccrelative relaxed tolerance on duality gap
    nitrefnumber of iterative refinement steps
    maxitmaximum number of iterations
    verboseverbosity bool for PRINTLEVEL < 3
    +set_attribute(model, "maxit", 100)

    MathOptInterface API

    The ECOS optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    The following options are supported:

    ParameterExplanation
    gammascaling the final step length
    deltaregularization parameter
    epsregularization threshold
    feastolprimal/dual infeasibility tolerance
    abstolabsolute tolerance on duality gap
    reltolrelative tolerance on duality gap
    feastol_inaccprimal/dual infeasibility relaxed tolerance
    abstol_inaccabsolute relaxed tolerance on duality gap
    reltol_inaccrelative relaxed tolerance on duality gap
    nitrefnumber of iterative refinement steps
    maxitmaximum number of iterations
    verboseverbosity bool for PRINTLEVEL < 3
    diff --git a/previews/PR3561/packages/GAMS/index.html b/previews/PR3561/packages/GAMS/index.html index 3058628079d..f2fd3586e44 100644 --- a/previews/PR3561/packages/GAMS/index.html +++ b/previews/PR3561/packages/GAMS/index.html @@ -22,4 +22,4 @@ MOI.get(model, GAMS.GeneratedConstraintName(), c[2]) # returns eq2 MOI.get(model, GAMS.OriginalConstraintName("eq1")) # returns c[1] -MOI.get(model, GAMS.OriginalConstraintName("eq10")) # returns nothing

    Note that JuMP direct-mode is used.

    +MOI.get(model, GAMS.OriginalConstraintName("eq10")) # returns nothing

    Note that JuMP direct-mode is used.

    diff --git a/previews/PR3561/packages/GLPK/index.html b/previews/PR3561/packages/GLPK/index.html index 03d8a57a611..f1edec2fe35 100644 --- a/previews/PR3561/packages/GLPK/index.html +++ b/previews/PR3561/packages/GLPK/index.html @@ -36,4 +36,4 @@ @test primal_status(model) == MOI.FEASIBLE_POINT @test value(x) == 1 @test value(y) == 2 -@show reasons

    C API

    The C API can be accessed via GLPK.glp_XXX functions, where the names and arguments are identical to the C API. See the /tests folder for inspiration.

    Thread safety

    GLPK is not thread-safe and should not be used with multithreading.

    +@show reasons

    C API

    The C API can be accessed via GLPK.glp_XXX functions, where the names and arguments are identical to the C API. See the /tests folder for inspiration.

    Thread safety

    GLPK is not thread-safe and should not be used with multithreading.

    diff --git a/previews/PR3561/packages/Gurobi/index.html b/previews/PR3561/packages/Gurobi/index.html index 4a8b335bf7b..53f82051a28 100644 --- a/previews/PR3561/packages/Gurobi/index.html +++ b/previews/PR3561/packages/Gurobi/index.html @@ -109,4 +109,4 @@ println(lower_bound(x[i])) end

    Common errors

    Using Gurobi v9.0 and you got an error like Q not PSD?

    You need to set the NonConvex parameter:

    model = Model(Gurobi.Optimizer)
     set_optimizer_attribute(model, "NonConvex", 2)

    Gurobi Error 1009: Version number is XX.X, license is for version XX.X

    Make sure that your license is correct for your Gurobi version. See the Gurobi documentation for details.

    Once you are sure that the license and Gurobi versions match, re-install Gurobi.jl by running:

    import Pkg
    -Pkg.build("Gurobi")
    +Pkg.build("Gurobi") diff --git a/previews/PR3561/packages/HiGHS/index.html b/previews/PR3561/packages/HiGHS/index.html index 07de03fd2a3..a448f0dcf49 100644 --- a/previews/PR3561/packages/HiGHS/index.html +++ b/previews/PR3561/packages/HiGHS/index.html @@ -7,4 +7,4 @@ Pkg.add("HiGHS")

    In addition to installing the HiGHS.jl package, this will also download and install the HiGHS binaries. You do not need to install HiGHS separately.

    To use a custom binary, read the Custom solver binaries section of the JuMP documentation.

    Use with JuMP

    To use HiGHS with JuMP, use HiGHS.Optimizer:

    using JuMP, HiGHS
     model = Model(HiGHS.Optimizer)
     set_attribute(model, "presolve", "on")
    -set_attribute(model, "time_limit", 60.0)

    MathOptInterface API

    The HiGHS optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    See the HiGHS documentation for a full list of the available options.

    C API

    The C API can be accessed via HiGHS.Highs_xxx functions, where the names and arguments are identical to the C API.

    +set_attribute(model, "time_limit", 60.0)

    MathOptInterface API

    The HiGHS optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    See the HiGHS documentation for a full list of the available options.

    C API

    The C API can be accessed via HiGHS.Highs_xxx functions, where the names and arguments are identical to the C API.

    diff --git a/previews/PR3561/packages/Hypatia/index.html b/previews/PR3561/packages/Hypatia/index.html index 9370e34fe21..bc5cdb19b7d 100644 --- a/previews/PR3561/packages/Hypatia/index.html +++ b/previews/PR3561/packages/Hypatia/index.html @@ -42,4 +42,4 @@ volume={15}, pages={53--101}, doi={https://doi.org/10.1007/s12532-022-00226-0} -} +} diff --git a/previews/PR3561/packages/InfiniteOpt/index.html b/previews/PR3561/packages/InfiniteOpt/index.html index df7b209d35e..483544d8336 100644 --- a/previews/PR3561/packages/InfiniteOpt/index.html +++ b/previews/PR3561/packages/InfiniteOpt/index.html @@ -12,4 +12,4 @@ doi = {https://doi.org/10.1016/j.compchemeng.2021.107567}, url = {https://www.sciencedirect.com/science/article/pii/S0098135421003458}, author = {Joshua L. Pulsipher and Weiqi Zhang and Tyler J. Hongisto and Victor M. Zavala}, -}

    A pre-print version is freely available though arXiv.

    +}

    A pre-print version is freely available though arXiv.

    diff --git a/previews/PR3561/packages/Ipopt/index.html b/previews/PR3561/packages/Ipopt/index.html index 5253cfc67db..ce52ebe27c7 100644 --- a/previews/PR3561/packages/Ipopt/index.html +++ b/previews/PR3561/packages/Ipopt/index.html @@ -118,4 +118,4 @@ export OMP_PROC_BIND=TRUE

    BLAS and LAPACK

    With Julia v1.9 or later, Ipopt and the linear solvers MUMPS (default), SPRAL, and HSL are compiled with libblastrampoline (LBT), a library that can change between BLAS and LAPACK backends at runtime.

    The default BLAS and LAPACK backend is OpenBLAS.

    Using LBT, we can also switch dynamically to other BLAS backends such as Intel MKL and Apple Accelerate. Because Ipopt and the linear solvers heavily rely on BLAS and LAPACK routines, using an optimized backend for a particular platform can improve the performance.

    MKL

    If you have MKL.jl installed, switch to MKL by adding using MKL to your code:

    using MKL  # Replace OpenBLAS by Intel MKL
     using Ipopt

    AppleAccelerate

    If you are using macOS ≥ v13.4 and you have AppleAccelerate.jl installed, add using AppleAccelerate to your code:

    using AppleAccelerate  # Replace OpenBLAS by Apple Accelerate
     using Ipopt

    Display backends

    Check what backends are loaded using:

    import LinearAlgebra
    -LinearAlgebra.BLAS.lbt_get_config()
    +LinearAlgebra.BLAS.lbt_get_config() diff --git a/previews/PR3561/packages/Juniper/index.html b/previews/PR3561/packages/Juniper/index.html index 586a776b0ad..7408a8d6e5d 100644 --- a/previews/PR3561/packages/Juniper/index.html +++ b/previews/PR3561/packages/Juniper/index.html @@ -33,4 +33,4 @@ year="2018", publisher="Springer International Publishing", isbn="978-3-319-93031-2" -} +} diff --git a/previews/PR3561/packages/KNITRO/index.html b/previews/PR3561/packages/KNITRO/index.html index c565c283e3a..e0c08d10244 100644 --- a/previews/PR3561/packages/KNITRO/index.html +++ b/previews/PR3561/packages/KNITRO/index.html @@ -10,4 +10,4 @@ set_attribute(model, "algorithm", 4)

    Use with AMPL

    To use KNITRO with AmplNLWriter.jl, use KNITRO.amplexe:

    using JuMP
     import AmplNLWriter
     import KNITRO
    -model = Model(() -> AmplNLWriter.Optimizer(KNITRO.amplexe, ["outlev=3"]))

    Use with other packages

    A variety of packages extend KNITRO.jl to support other optimization modeling systems. These include:

    MathOptInterface API

    The Knitro optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    A list of available options is provided in the KNITRO reference manual.

    Low-level wrapper

    KNITRO.jl implements most of Knitro's functionalities. If you aim at using part of Knitro's API that are not implemented in the MathOptInterface/JuMP ecosystem, you can refer to the low-level API, which wraps Knitro's C API (whose templates are specified in the file knitro.h).

    Extensive examples using the C wrapper can be found in examples/.

    Multi-threading

    Due to limitations in the interaction between Julia and C, KNITRO.jl disables multi-threading if the problem is nonlinear. This will override any options such as par_numthreads that you may have set. Read GitHub issue #93 for more details.

    +model = Model(() -> AmplNLWriter.Optimizer(KNITRO.amplexe, ["outlev=3"]))

    Use with other packages

    A variety of packages extend KNITRO.jl to support other optimization modeling systems. These include:

    MathOptInterface API

    The Knitro optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    A list of available options is provided in the KNITRO reference manual.

    Low-level wrapper

    KNITRO.jl implements most of Knitro's functionalities. If you aim at using part of Knitro's API that are not implemented in the MathOptInterface/JuMP ecosystem, you can refer to the low-level API, which wraps Knitro's C API (whose templates are specified in the file knitro.h).

    Extensive examples using the C wrapper can be found in examples/.

    Multi-threading

    Due to limitations in the interaction between Julia and C, KNITRO.jl disables multi-threading if the problem is nonlinear. This will override any options such as par_numthreads that you may have set. Read GitHub issue #93 for more details.

    diff --git a/previews/PR3561/packages/Loraine/index.html b/previews/PR3561/packages/Loraine/index.html index d877f3312a7..20b57ab9470 100644 --- a/previews/PR3561/packages/Loraine/index.html +++ b/previews/PR3561/packages/Loraine/index.html @@ -29,4 +29,4 @@ www={https://hal.science/hal-04076509/} note={Preprint hal-04076509} year={2023} -}
    • 1https://www.youtube.com/watch?v=0D2wNf1lVrI
    +}
    • 1https://www.youtube.com/watch?v=0D2wNf1lVrI
    diff --git a/previews/PR3561/packages/MadNLP/index.html b/previews/PR3561/packages/MadNLP/index.html index c2b54ec9959..d412883ab9e 100644 --- a/previews/PR3561/packages/MadNLP/index.html +++ b/previews/PR3561/packages/MadNLP/index.html @@ -45,4 +45,4 @@ author={Shin, Sungho and Coffrin, Carleton and Sundar, Kaarthik and Zavala, Victor M}, journal={arXiv preprint arXiv:2010.02404}, year={2020} -}

    Bug reports and support

    Please report issues and feature requests via the GitHub issue tracker.

    +}

    Bug reports and support

    Please report issues and feature requests via the GitHub issue tracker.

    diff --git a/previews/PR3561/packages/MiniZinc/index.html b/previews/PR3561/packages/MiniZinc/index.html index d5492ac669c..85d3a86fd68 100644 --- a/previews/PR3561/packages/MiniZinc/index.html +++ b/previews/PR3561/packages/MiniZinc/index.html @@ -53,4 +53,4 @@ @constraint(model, x in MOI.AllDifferent(3)) @objective(model, Max, sum(i * x[i] for i in 1:3)) optimize!(model) -@show value.(x)

    MathOptInterface API

    The MiniZinc Optimizer{T} supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    Set options using MOI.RawOptimizerAttribute in MOI or set_attribute in JuMP.

    MiniZinc.jl supports the following options:

    • model_filename::String = "": the location at which to write out the .mzn file during optimization. This option can be helpful during debugging. If left empty, a temporary file will be used instead.
    +@show value.(x)

    MathOptInterface API

    The MiniZinc Optimizer{T} supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Options

    Set options using MOI.RawOptimizerAttribute in MOI or set_attribute in JuMP.

    MiniZinc.jl supports the following options:

    • model_filename::String = "": the location at which to write out the .mzn file during optimization. This option can be helpful during debugging. If left empty, a temporary file will be used instead.
    diff --git a/previews/PR3561/packages/MosekTools/index.html b/previews/PR3561/packages/MosekTools/index.html index 80f623e45aa..3b8f95bb485 100644 --- a/previews/PR3561/packages/MosekTools/index.html +++ b/previews/PR3561/packages/MosekTools/index.html @@ -7,4 +7,4 @@ using MosekTools model = Model(Mosek.Optimizer) set_attribute(model, "QUIET", true) -set_attribute(model, "INTPNT_CO_TOL_DFEAS", 1e-7)

    Options

    The parameter QUIET is a special parameter that when set to true disables all Mosek printing output.

    All other parameters can be found in the Mosek documentation.

    Note that the prefix MSK_IPAR_ (for integer parameters), MSK_DPAR_ (for floating point parameters) or MSK_SPAR_ (for string parameters) are optional. If they are not given, they are inferred from the type of the value. For example, in the example above, as 1e-7 is a floating point number, the parameters name used is MSK_DPAR_INTPNT_CO_TOL_DFEAS.

    +set_attribute(model, "INTPNT_CO_TOL_DFEAS", 1e-7)

    Options

    The parameter QUIET is a special parameter that when set to true disables all Mosek printing output.

    All other parameters can be found in the Mosek documentation.

    Note that the prefix MSK_IPAR_ (for integer parameters), MSK_DPAR_ (for floating point parameters) or MSK_SPAR_ (for string parameters) are optional. If they are not given, they are inferred from the type of the value. For example, in the example above, as 1e-7 is a floating point number, the parameters name used is MSK_DPAR_INTPNT_CO_TOL_DFEAS.

    diff --git a/previews/PR3561/packages/MultiObjectiveAlgorithms/index.html b/previews/PR3561/packages/MultiObjectiveAlgorithms/index.html index 7eaf6563cfd..6be8922e47d 100644 --- a/previews/PR3561/packages/MultiObjectiveAlgorithms/index.html +++ b/previews/PR3561/packages/MultiObjectiveAlgorithms/index.html @@ -9,4 +9,4 @@ import MultiObjectiveAlgorithms as MOA model = JuMP.Model(() -> MOA.Optimizer(HiGHS.Optimizer)) set_attribute(model, MOA.Algorithm(), MOA.Dichotomy()) -set_attribute(model, MOA.SolutionLimit(), 4)

    Replace HiGHS.Optimizer with an optimizer capable of solving a single-objective instance of your optimization problem.

    You may set additional optimizer attributes, the supported attributes depend on the choice of solution algorithm.

    Algorithm

    Set the algorithm using the MOA.Algorithm() attribute.

    The value must be one of the algorithms supported by MOA:

    • MOA.Chalmet()
    • MOA.Dichotomy()
    • MOA.DominguezRios()
    • MOA.EpsilonConstraint()
    • MOA.Hierarchical()
    • MOA.KirlikSayin()
    • MOA.Lexicographic() [default]
    • MOA.TambyVanderpooten()

    Consult their docstrings for details.

    Other optimizer attributes

    There are a number of optimizer attributes supported by the algorithms in MOA.

    Each algorithm supports only a subset of the attributes. Consult the algorithm's docstring for details on which attributes it supports, and how it uses them in the solution process.

    • MOA.EpsilonConstraintStep()
    • MOA.LexicographicAllPermutations()
    • MOA.ObjectiveAbsoluteTolerance(index::Int)
    • MOA.ObjectivePriority(index::Int)
    • MOA.ObjectiveRelativeTolerance(index::Int)
    • MOA.ObjectiveWeight(index::Int)
    • MOA.SolutionLimit()
    • MOI.TimeLimitSec()
    +set_attribute(model, MOA.SolutionLimit(), 4)

    Replace HiGHS.Optimizer with an optimizer capable of solving a single-objective instance of your optimization problem.

    You may set additional optimizer attributes, the supported attributes depend on the choice of solution algorithm.

    Algorithm

    Set the algorithm using the MOA.Algorithm() attribute.

    The value must be one of the algorithms supported by MOA:

    • MOA.Chalmet()
    • MOA.Dichotomy()
    • MOA.DominguezRios()
    • MOA.EpsilonConstraint()
    • MOA.Hierarchical()
    • MOA.KirlikSayin()
    • MOA.Lexicographic() [default]
    • MOA.TambyVanderpooten()

    Consult their docstrings for details.

    Other optimizer attributes

    There are a number of optimizer attributes supported by the algorithms in MOA.

    Each algorithm supports only a subset of the attributes. Consult the algorithm's docstring for details on which attributes it supports, and how it uses them in the solution process.

    • MOA.EpsilonConstraintStep()
    • MOA.LexicographicAllPermutations()
    • MOA.ObjectiveAbsoluteTolerance(index::Int)
    • MOA.ObjectivePriority(index::Int)
    • MOA.ObjectiveRelativeTolerance(index::Int)
    • MOA.ObjectiveWeight(index::Int)
    • MOA.SolutionLimit()
    • MOI.TimeLimitSec()
    diff --git a/previews/PR3561/packages/NEOSServer/index.html b/previews/PR3561/packages/NEOSServer/index.html index 0f8c834e7bf..b22949ce6b6 100644 --- a/previews/PR3561/packages/NEOSServer/index.html +++ b/previews/PR3561/packages/NEOSServer/index.html @@ -28,4 +28,4 @@ model = Model() do NEOSServer.Optimizer(email="me@mydomain.com", solver="Ipopt") -end

    Note: NEOSServer.Optimizer is limited to the following solvers:

    • "CPLEX"
    • "FICO-Xpress"
    • "Ipopt"
    • "Knitro"
    • "MOSEK"
    • "OCTERACT"
    • "SNOPT"

    NEOS Limits

    NEOS currently limits jobs to an 8 hour time limit, 3 GB of memory, and a 16 MB submission file. If your model exceeds these limits, NEOSServer.jl may be unable to return useful information to the user.

    +end

    Note: NEOSServer.Optimizer is limited to the following solvers:

    • "CPLEX"
    • "FICO-Xpress"
    • "Ipopt"
    • "Knitro"
    • "MOSEK"
    • "OCTERACT"
    • "SNOPT"

    NEOS Limits

    NEOS currently limits jobs to an 8 hour time limit, 3 GB of memory, and a 16 MB submission file. If your model exceeds these limits, NEOSServer.jl may be unable to return useful information to the user.

    diff --git a/previews/PR3561/packages/NLopt/index.html b/previews/PR3561/packages/NLopt/index.html index fcc5828986d..1ecd07cd7ce 100644 --- a/previews/PR3561/packages/NLopt/index.html +++ b/previews/PR3561/packages/NLopt/index.html @@ -6,4 +6,4 @@

    NLopt.jl

    Build Status codecov

    NLopt.jl is a wrapper for the NLopt library.

    License

    NLopt.jl is licensed under the MIT License.

    The underlying solver, stevengj/nlopt, is licensed under the LGPL v3.0 license.

    Installation

    Install NLopt.jl using the Julia package manager:

    import Pkg
     Pkg.add("NLopt")

    In addition to installing the NLopt.jl package, this will also download and install the NLopt binaries. You do not need to install NLopt separately.

    Use with JuMP

    You can use NLopt with JuMP as follows:

    using JuMP, NLopt
     model = Model(NLopt.Optimizer)
    -set_attribute(model, "algorithm", :LD_MMA)

    Options

    The algorithm attribute is required. The value must be one of the supported NLopt algorithms.

    Documentation

    For more details, see the NLopt.jl README or the NLopt documentation.

    +set_attribute(model, "algorithm", :LD_MMA)

    Options

    The algorithm attribute is required. The value must be one of the supported NLopt algorithms.

    Documentation

    For more details, see the NLopt.jl README or the NLopt documentation.

    diff --git a/previews/PR3561/packages/OSQP/index.html b/previews/PR3561/packages/OSQP/index.html index 3cd1b558711..fc22c82c838 100644 --- a/previews/PR3561/packages/OSQP/index.html +++ b/previews/PR3561/packages/OSQP/index.html @@ -6,4 +6,4 @@

    OSQP.jl

    Build Status codecov.io

    OSQP.jl is a Julia wrapper for OSQP: the Operator Splitting QP Solver.

    License

    OSQP.jl is licensed under the Apache-2.0 license.

    The upstream solver, osqp/osqp is also licensed under the Apache-2.0 license.

    Installation

    Install OSQP.jl using the Julia package manager

    import Pkg
     Pkg.add("OSQP")

    Problem class

    The OSQP (Operator Splitting Quadratic Program) solver is a numerical optimization package for solving problems in the form

    minimize        0.5 x' P x + q' x
     
    -subject to      l <= A x <= u

    where x in R^n is the optimization variable. The objective function is defined by a positive semidefinite matrix P in S^n_+ and vector q in R^n. The linear constraints are defined by matrix A in R^{m x n} and vectors l in R^m U {-inf}^m, u in R^m U {+inf}^m.

    Documentation

    Detailed documentation is available at https://osqp.org/.

    +subject to l <= A x <= u

    where x in R^n is the optimization variable. The objective function is defined by a positive semidefinite matrix P in S^n_+ and vector q in R^n. The linear constraints are defined by matrix A in R^{m x n} and vectors l in R^m U {-inf}^m, u in R^m U {+inf}^m.

    Documentation

    Detailed documentation is available at https://osqp.org/.

    diff --git a/previews/PR3561/packages/PATHSolver/index.html b/previews/PR3561/packages/PATHSolver/index.html index 2272ef212dd..ec48c43c9fa 100644 --- a/previews/PR3561/packages/PATHSolver/index.html +++ b/previews/PR3561/packages/PATHSolver/index.html @@ -165,4 +165,4 @@ 0.8 1.2

    Thread safety

    PATH is not thread-safe and there are no known work-arounds. Do not run it in parallel using Threads.@threads. See issue #62 for more details.

    Factorization methods

    By default, PATHSolver.jl will download the LUSOL shared library. To use LUSOL, set the following options:

    model = Model(PATHSolver.Optimizer)
     set_optimizer_attribute(model, "factorization_method", "blu_lusol")
    -set_optimizer_attribute(model, "factorization_library_name", PATHSolver.LUSOL_LIBRARY_PATH)

    To use factorization_method umfpack you will need the umfpack shared library that is available directly from the developers of that code for academic use.

    Manual installation

    By default PATHSolver.jl will download a copy of the libpath library. If you already have one installed and want to use that, set the PATH_JL_LOCATION environment variable to point to the libpath50.xx library.

    +set_optimizer_attribute(model, "factorization_library_name", PATHSolver.LUSOL_LIBRARY_PATH)

    To use factorization_method umfpack you will need the umfpack shared library that is available directly from the developers of that code for academic use.

    Manual installation

    By default PATHSolver.jl will download a copy of the libpath library. If you already have one installed and want to use that, set the PATH_JL_LOCATION environment variable to point to the libpath50.xx library.

    diff --git a/previews/PR3561/packages/Pajarito/index.html b/previews/PR3561/packages/Pajarito/index.html index 0a033c0f2fd..82496e962c7 100644 --- a/previews/PR3561/packages/Pajarito/index.html +++ b/previews/PR3561/packages/Pajarito/index.html @@ -27,4 +27,4 @@ pages={249--293}, year={2020}, publisher={Springer} -}

    Note this paper describes a legacy MathProgBase version of Pajarito, which is available on the mathprogbase branch of this repository. Starting with version v0.8.0, Pajarito supports MathOptInterface instead of MathProgBase.

    +}

    Note this paper describes a legacy MathProgBase version of Pajarito, which is available on the mathprogbase branch of this repository. Starting with version v0.8.0, Pajarito supports MathOptInterface instead of MathProgBase.

    diff --git a/previews/PR3561/packages/ParametricOptInterface/index.html b/previews/PR3561/packages/ParametricOptInterface/index.html index 414f65f7736..782012cee99 100644 --- a/previews/PR3561/packages/ParametricOptInterface/index.html +++ b/previews/PR3561/packages/ParametricOptInterface/index.html @@ -13,4 +13,4 @@ @objective(model, Min, 2x) optimize!(model) MOI.set(model, POI.ParameterValue(), p, 2.0) -optimize!(model)

    GSOC2020

    ParametricOptInterface began as a NumFOCUS sponsored Google Summer of Code (2020) project.

    +optimize!(model)

    GSOC2020

    ParametricOptInterface began as a NumFOCUS sponsored Google Summer of Code (2020) project.

    diff --git a/previews/PR3561/packages/Pavito/index.html b/previews/PR3561/packages/Pavito/index.html index 1f912840775..11744621152 100644 --- a/previews/PR3561/packages/Pavito/index.html +++ b/previews/PR3561/packages/Pavito/index.html @@ -13,4 +13,4 @@ "cont_solver" => optimizer_with_attributes(Ipopt.Optimizer, "print_level" => 0), ), -)

    The algorithm implemented by Pavito itself is relatively simple; most of the hard work is performed by the MILP solver passed as mip_solver and the NLP solver passed as cont_solver.

    The performance of Pavito depends on these two types of solvers.

    For better performance, you should use a commercial MILP solver such as CPLEX or Gurobi.

    Options

    The following optimizer attributes can set to a Pavito.Optimizer to modify its behavior:

    • log_level::Int Verbosity flag: 0 for quiet, higher for basic solve info
    • timeout::Float64 Time limit for algorithm (in seconds)
    • rel_gap::Float64 Relative optimality gap termination condition
    • mip_solver_drives::Bool Let MILP solver manage convergence ("branch and cut")
    • mip_solver::MOI.OptimizerWithAttributes MILP solver
    • cont_solver::MOI.OptimizerWithAttributes Continuous NLP solver

    Pavito is not yet numerically robust and may require tuning of parameters to improve convergence.

    If the default parameters don't work for you, please let us know by opening an issue.

    For improved Pavito performance, MILP solver integrality tolerance and feasibility tolerances should typically be tightened, for example to 1e-8.

    Bug reports and support

    Please report any issues via the GitHub issue tracker. All types of issues are welcome and encouraged; this includes bug reports, documentation typos, feature requests, etc. The Optimization (Mathematical) category on Discourse is appropriate for general discussion.

    +)

    The algorithm implemented by Pavito itself is relatively simple; most of the hard work is performed by the MILP solver passed as mip_solver and the NLP solver passed as cont_solver.

    The performance of Pavito depends on these two types of solvers.

    For better performance, you should use a commercial MILP solver such as CPLEX or Gurobi.

    Options

    The following optimizer attributes can set to a Pavito.Optimizer to modify its behavior:

    • log_level::Int Verbosity flag: 0 for quiet, higher for basic solve info
    • timeout::Float64 Time limit for algorithm (in seconds)
    • rel_gap::Float64 Relative optimality gap termination condition
    • mip_solver_drives::Bool Let MILP solver manage convergence ("branch and cut")
    • mip_solver::MOI.OptimizerWithAttributes MILP solver
    • cont_solver::MOI.OptimizerWithAttributes Continuous NLP solver

    Pavito is not yet numerically robust and may require tuning of parameters to improve convergence.

    If the default parameters don't work for you, please let us know by opening an issue.

    For improved Pavito performance, MILP solver integrality tolerance and feasibility tolerances should typically be tightened, for example to 1e-8.

    Bug reports and support

    Please report any issues via the GitHub issue tracker. All types of issues are welcome and encouraged; this includes bug reports, documentation typos, feature requests, etc. The Optimization (Mathematical) category on Discourse is appropriate for general discussion.

    diff --git a/previews/PR3561/packages/Plasmo/index.html b/previews/PR3561/packages/Plasmo/index.html index 033d6ff189d..89f808ee974 100644 --- a/previews/PR3561/packages/Plasmo/index.html +++ b/previews/PR3561/packages/Plasmo/index.html @@ -46,4 +46,4 @@ eprint = {2006.05378}, archivePrefix = {arXiv}, primaryClass = {math.OC} -} +} diff --git a/previews/PR3561/packages/PolyJuMP/index.html b/previews/PR3561/packages/PolyJuMP/index.html index a1382e2d358..0bd9026b803 100644 --- a/previews/PR3561/packages/PolyJuMP/index.html +++ b/previews/PR3561/packages/PolyJuMP/index.html @@ -17,4 +17,4 @@ @constraint(model, a * x * y^2 + y^3 >= a * x)

    you need to specify how to interpret this nonnegativity constraint. To use Sum-of-Arithmetic-Geometric-Exponentials (SAGE), use

    import PolyJuMP
     PolyJuMP.setpolymodule!(model, PolyJuMP.SAGE)

    To use Sum-of-Squares (SOS), use

    import SumOfSquares
     PolyJuMP.setpolymodule!(model, SumOfSquares)

    or replace model = Model() by model = SOSModel().

    Alternatively, the nonnegativity constraint can be explicit:

    @constraint(model, a * x * y^2 + y^3 - a * x in PolyJuMP.SAGE.Polynomials())
    -@constraint(model, a * x * y^2 + y^3 - a * x in SumOfSquares.SOSCone())

    This allows mixing SAGE and SOS constraints in the same model.

    Documentation

    Documentation for PolyJuMP.jl is included in the documentation for SumOfSquares.jl.

    +@constraint(model, a * x * y^2 + y^3 - a * x in SumOfSquares.SOSCone())

    This allows mixing SAGE and SOS constraints in the same model.

    Documentation

    Documentation for PolyJuMP.jl is included in the documentation for SumOfSquares.jl.

    diff --git a/previews/PR3561/packages/ProxSDP/index.html b/previews/PR3561/packages/ProxSDP/index.html index 7fef764c30e..41be523ae98 100644 --- a/previews/PR3561/packages/ProxSDP/index.html +++ b/previews/PR3561/packages/ProxSDP/index.html @@ -56,4 +56,4 @@ publisher = {Taylor & Francis}, doi = {10.1080/02331934.2020.1823387}, URL = {https://doi.org/10.1080/02331934.2020.1823387} -}

    The preprint version of the paper can be found here.

    Disclaimer

    • ProxSDP is a research software, therefore it should not be used in production.
    • Please open an issue if you find any problems, developers will try to fix and find alternatives.
    • There is no continuous development for 32-bit systems, the package should work, but might reach some issues.
    • ProxSDP assumes primal and dual feasibility.

    ROAD MAP

    • Support for exponential and power cones
    • Warm start
    +}

    The preprint version of the paper can be found here.

    Disclaimer

    • ProxSDP is a research software, therefore it should not be used in production.
    • Please open an issue if you find any problems, developers will try to fix and find alternatives.
    • There is no continuous development for 32-bit systems, the package should work, but might reach some issues.
    • ProxSDP assumes primal and dual feasibility.

    ROAD MAP

    • Support for exponential and power cones
    • Warm start
    diff --git a/previews/PR3561/packages/SCIP/index.html b/previews/PR3561/packages/SCIP/index.html index 352aeffc331..7a411da7a26 100644 --- a/previews/PR3561/packages/SCIP/index.html +++ b/previews/PR3561/packages/SCIP/index.html @@ -10,4 +10,4 @@ Pkg.build("SCIP")

    Use with JuMP

    Use SCIP with JuMP as follows:

    using JuMP, SCIP
     model = Model(SCIP.Optimizer)
     set_attribute(model, "display/verblevel", 0)
    -set_attribute(model, "limits/gap", 0.05)

    Options

    See the SCIP documentation for a list of supported options.

    MathOptInterface API

    The SCIP optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Design considerations

    Wrapping the public API

    All of the public API methods are wrapped and available within the SCIP package. This includes the scip_*.h and pub_*.h headers that are collected in scip.h, as well as all default constraint handlers (cons_*.h.)

    The wrapped functions do not transform any data structures and work on the raw pointers (for example, SCIP* in C, Ptr{SCIP_} in Julia). Convenience wrapper functions based on Julia types are added as needed.

    Memory management

    Programming with SCIP requires dealing with variable and constraint objects that use reference counting for memory management.

    The SCIP.Optimizer wrapper type collects lists of SCIP_VAR* and SCIP_CONS* under the hood, and it releases all references when it is garbage collected itself (via finalize).

    When adding a variable (add_variable) or a constraint (add_linear_constraint), an integer index is returned. This index can be used to retrieve the SCIP_VAR* or SCIP_CONS* pointer via get_var and get_cons respectively.

    Supported nonlinear operators

    Supported operators in nonlinear expressions are as follows:

    • +
    • -
    • *
    • /
    • ^
    • sqrt
    • exp
    • log
    • abs
    • cos
    • sin
    +set_attribute(model, "limits/gap", 0.05)

    Options

    See the SCIP documentation for a list of supported options.

    MathOptInterface API

    The SCIP optimizer supports the following constraints and attributes.

    List of supported objective functions:

    List of supported variable types:

    List of supported constraint types:

    List of supported model attributes:

    Design considerations

    Wrapping the public API

    All of the public API methods are wrapped and available within the SCIP package. This includes the scip_*.h and pub_*.h headers that are collected in scip.h, as well as all default constraint handlers (cons_*.h.)

    The wrapped functions do not transform any data structures and work on the raw pointers (for example, SCIP* in C, Ptr{SCIP_} in Julia). Convenience wrapper functions based on Julia types are added as needed.

    Memory management

    Programming with SCIP requires dealing with variable and constraint objects that use reference counting for memory management.

    The SCIP.Optimizer wrapper type collects lists of SCIP_VAR* and SCIP_CONS* under the hood, and it releases all references when it is garbage collected itself (via finalize).

    When adding a variable (add_variable) or a constraint (add_linear_constraint), an integer index is returned. This index can be used to retrieve the SCIP_VAR* or SCIP_CONS* pointer via get_var and get_cons respectively.

    Supported nonlinear operators

    Supported operators in nonlinear expressions are as follows:

    • +
    • -
    • *
    • /
    • ^
    • sqrt
    • exp
    • log
    • abs
    • cos
    • sin
    diff --git a/previews/PR3561/packages/SCS/index.html b/previews/PR3561/packages/SCS/index.html index cd0378d1aaa..e503ba9870b 100644 --- a/previews/PR3561/packages/SCS/index.html +++ b/previews/PR3561/packages/SCS/index.html @@ -68,4 +68,4 @@ SCS.IndirectSolver SCS.GpuIndirectSolver

    The GpuIndirectSolver is available on Linux x86_64 platform only.

    Low-level wrapper

    SCS.jl provides a low-level interface to solve a problem directly, without interfacing through MathOptInterface.

    This is an advanced interface with a risk of incorrect usage. For new users, we recommend that you use the JuMP or Convex interfaces instead.

    SCS solves a problem of the form:

    minimize        1/2 * x' * P * x + c' * x
     subject to      A * x + s = b
    -                s in K

    where K is a product cone of:

    • zero cone
    • positive orthant { x | x ≥ 0 }
    • box cone { (t,x) | t*l ≤ x ≤ t*u}
    • second-order cone (SOC) { (t,x) | ||x||_2 ≤ t }
    • semi-definite cone (SDC) { X | X is psd }
    • exponential cone { (x,y,z) | y e^(x/y) ≤ z, y>0 }
    • power cone { (x,y,z) | x^a * y^(1-a) ≥ |z|, x ≥ 0, y ≥ 0 }
    • dual power cone { (u,v,w) | (u/a)^a * (v/(1-a))^(1-a) ≥ |w|, u ≥ 0, v ≥ 0 }.

    To solve this problem with SCS, call SCS.scs_solve; see the docstring for details.

    + s in K

    where K is a product cone of:

    • zero cone
    • positive orthant { x | x ≥ 0 }
    • box cone { (t,x) | t*l ≤ x ≤ t*u}
    • second-order cone (SOC) { (t,x) | ||x||_2 ≤ t }
    • semi-definite cone (SDC) { X | X is psd }
    • exponential cone { (x,y,z) | y e^(x/y) ≤ z, y>0 }
    • power cone { (x,y,z) | x^a * y^(1-a) ≥ |z|, x ≥ 0, y ≥ 0 }
    • dual power cone { (u,v,w) | (u/a)^a * (v/(1-a))^(1-a) ≥ |w|, u ≥ 0, v ≥ 0 }.

    To solve this problem with SCS, call SCS.scs_solve; see the docstring for details.

    diff --git a/previews/PR3561/packages/SDDP/index.html b/previews/PR3561/packages/SDDP/index.html index 09bcf5c0fc1..4ac1f347840 100644 --- a/previews/PR3561/packages/SDDP/index.html +++ b/previews/PR3561/packages/SDDP/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -
    +
    diff --git a/previews/PR3561/packages/SDPA/index.html b/previews/PR3561/packages/SDPA/index.html index f55cdf28394..fee6befada6 100644 --- a/previews/PR3561/packages/SDPA/index.html +++ b/previews/PR3561/packages/SDPA/index.html @@ -12,4 +12,4 @@ set_attribute(model, "Mode", SDPA.PARAMETER_STABLE_BUT_SLOW)

    Note that the parameters are set in the order they are given, so you can set a mode and then modify parameters from this mode.

    using JuMP, SDPA
     model = Model(SDPA.Optimizer)
     set_attribute(model, "Mode", SDPA.PARAMETER_STABLE_BUT_SLOW)
    -set_attribute(model, "MaxIteration", 100)

    The choice of parameter mode has a large impact on the performance and stability of SDPA, and not necessarily in the way implied by the names of the modes; for example, PARAMETER_UNSTABLE_BUT_FAST can be more stable than the other modes for some problems. You should try each mode to see how it performs on your specific problem. See SDPA.jl#17 for more details.

    +set_attribute(model, "MaxIteration", 100)

    The choice of parameter mode has a large impact on the performance and stability of SDPA, and not necessarily in the way implied by the names of the modes; for example, PARAMETER_UNSTABLE_BUT_FAST can be more stable than the other modes for some problems. You should try each mode to see how it performs on your specific problem. See SDPA.jl#17 for more details.

    diff --git a/previews/PR3561/packages/SDPNAL/index.html b/previews/PR3561/packages/SDPNAL/index.html index 1488811e062..b6e55b8cab1 100644 --- a/previews/PR3561/packages/SDPNAL/index.html +++ b/previews/PR3561/packages/SDPNAL/index.html @@ -18,4 +18,4 @@ '/path/to/SDPNALv1.0/solver:', ... '/path/to/SDPNALv1.0/solver_main_default:', ... '/path/to/SDPNALv1.0/util:', ... -% (...)

    If you have SDPT3 in addition to SDPNAL in the MATLAB path (that is, the toolbox/local/pathdef.m file) then you might have issues because both solvers define a validate function, and this might make SDPNAL call SDPT3's validate function instead of SDPT3's validate function.

    +% (...)

    If you have SDPT3 in addition to SDPNAL in the MATLAB path (that is, the toolbox/local/pathdef.m file) then you might have issues because both solvers define a validate function, and this might make SDPNAL call SDPT3's validate function instead of SDPT3's validate function.

    diff --git a/previews/PR3561/packages/SDPT3/index.html b/previews/PR3561/packages/SDPT3/index.html index b20a720eca4..4b8be048ea8 100644 --- a/previews/PR3561/packages/SDPT3/index.html +++ b/previews/PR3561/packages/SDPT3/index.html @@ -29,4 +29,4 @@ julia> MATLAB.restoredefaultpath() -julia> MATLAB.mat"savepath" +julia> MATLAB.mat"savepath" diff --git a/previews/PR3561/packages/SeDuMi/index.html b/previews/PR3561/packages/SeDuMi/index.html index 0a855d3bd75..809c7fa3c7f 100644 --- a/previews/PR3561/packages/SeDuMi/index.html +++ b/previews/PR3561/packages/SeDuMi/index.html @@ -17,4 +17,4 @@ MATLAB.mat"install_sedumi" end -julia> MATLAB.mat"savepath" +julia> MATLAB.mat"savepath" diff --git a/previews/PR3561/packages/SumOfSquares/index.html b/previews/PR3561/packages/SumOfSquares/index.html index 59402f87a23..1a604ceffd1 100644 --- a/previews/PR3561/packages/SumOfSquares/index.html +++ b/previews/PR3561/packages/SumOfSquares/index.html @@ -4,4 +4,4 @@ gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash});

    SumOfSquares.jl

    Build Status codecov

    SumOfSquares.jl is a JuMP extension that, when used in conjunction with MultivariatePolynomial and PolyJuMP, implements a sum of squares reformulation for polynomial optimization.

    License

    SumOfSquares.jl is licensed under the MIT license.

    Installation

    Install SumOfSquares using Pkg.add:

    import Pkg
    -Pkg.add("SumOfSquares")

    Documentation

    See https://jump.dev/SumOfSquares.jl/stable for the most recently tagged version of the documentation.

    See https://jump.dev/SumOfSquares.jl/dev for the in-development version of the documentation.

    Presentations

    Some presentations on, or using, SumOfSquares (see blegat/SumOfSquaresSlides for the source code of the presentations):

    Citing

    See CITATION.bib.

    +Pkg.add("SumOfSquares")

    Documentation

    See https://jump.dev/SumOfSquares.jl/stable for the most recently tagged version of the documentation.

    See https://jump.dev/SumOfSquares.jl/dev for the in-development version of the documentation.

    Presentations

    Some presentations on, or using, SumOfSquares (see blegat/SumOfSquaresSlides for the source code of the presentations):

    Citing

    See CITATION.bib.

    diff --git a/previews/PR3561/packages/Tulip/index.html b/previews/PR3561/packages/Tulip/index.html index 54e885018b8..2f7d4499fd4 100644 --- a/previews/PR3561/packages/Tulip/index.html +++ b/previews/PR3561/packages/Tulip/index.html @@ -28,4 +28,4 @@ language = {en}, url = {https://doi.org/10.1007/s12532-020-00200-8}, urldate = {2021-03-07}, -} +} diff --git a/previews/PR3561/packages/Xpress/index.html b/previews/PR3561/packages/Xpress/index.html index a77ac32fe81..7374e331e5e 100644 --- a/previews/PR3561/packages/Xpress/index.html +++ b/previews/PR3561/packages/Xpress/index.html @@ -8,4 +8,4 @@ import Pkg Pkg.add("Xpress")

    By default, building Xpress.jl will fail if the Xpress library is not found. This may not be desirable in certain cases, for example when part of a package's test suite uses Xpress as an optional test dependency, but Xpress cannot be installed on a CI server running the test suite. To support this use case, the XPRESS_JL_SKIP_LIB_CHECK environment variable may be set (to any value) to make Xpress.jl installable (but not usable).

    Use with JuMP

    To use Xpress with JuMP, use:

    using JuMP, Xpress
     model = Model(Xpress.Optimizer)
    -set_optimizer(model, "PRESOLVE", 0)

    Options

    For other parameters use Xpress Optimizer manual or type julia -e "using Xpress; println(keys(Xpress.XPRS_ATTRIBUTES))".

    If logfile is set to "", the log file is disabled and output is printed to the console (there might be issues with console output on windows (it is manually implemented with callbacks)). If logfile is set to a file's path, output is printed to that file. By default, logfile = "" (console).

    Callbacks

    Solver specific and solver independent callbacks are working in MathOptInterface and, consequently, in JuMP. However, the current implementation should be considered experimental.

    Environment variables

    • XPRESS_JL_SKIP_LIB_CHECK: Used to skip build lib check as previously described.
    • XPRESS_JL_NO_INFO: Disable license info log.
    • XPRESS_JL_NO_DEPS_ERROR: Disable error when do deps.jl file is found.
    • XPRESS_JL_NO_AUTO_INIT: Disable automatic run of Xpress.initialize().

    Specially useful for explicitly loading the dynamic library.

    Skipping Xpress.postsolve

    In older versions of Xpress, the command XPRSpostsolve throws an error in infeasible models. In these older versions the post solve should not be executed. To do this, one can use the MOI.RawOptimizerAttribute("MOI_POST_SOLVE") to skip this routine.

    C API

    The C API can be accessed via Xpress.Lib.XPRSxx functions, where the names and arguments are identical to the C API.

    See the Xpress documentation for details.

    Documentation

    For more information, consult the FICO optimizer manual.

    +set_optimizer(model, "PRESOLVE", 0)

    Options

    For other parameters use Xpress Optimizer manual or type julia -e "using Xpress; println(keys(Xpress.XPRS_ATTRIBUTES))".

    If logfile is set to "", the log file is disabled and output is printed to the console (there might be issues with console output on windows (it is manually implemented with callbacks)). If logfile is set to a file's path, output is printed to that file. By default, logfile = "" (console).

    Callbacks

    Solver specific and solver independent callbacks are working in MathOptInterface and, consequently, in JuMP. However, the current implementation should be considered experimental.

    Environment variables

    • XPRESS_JL_SKIP_LIB_CHECK: Used to skip build lib check as previously described.
    • XPRESS_JL_NO_INFO: Disable license info log.
    • XPRESS_JL_NO_DEPS_ERROR: Disable error when do deps.jl file is found.
    • XPRESS_JL_NO_AUTO_INIT: Disable automatic run of Xpress.initialize().

    Specially useful for explicitly loading the dynamic library.

    Skipping Xpress.postsolve

    In older versions of Xpress, the command XPRSpostsolve throws an error in infeasible models. In these older versions the post solve should not be executed. To do this, one can use the MOI.RawOptimizerAttribute("MOI_POST_SOLVE") to skip this routine.

    C API

    The C API can be accessed via Xpress.Lib.XPRSxx functions, where the names and arguments are identical to the C API.

    See the Xpress documentation for details.

    Documentation

    For more information, consult the FICO optimizer manual.

    diff --git a/previews/PR3561/packages/solvers/index.html b/previews/PR3561/packages/solvers/index.html index ceabdc8eac9..d7baa5d4110 100644 --- a/previews/PR3561/packages/solvers/index.html +++ b/previews/PR3561/packages/solvers/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-44252521-1', {'page_path': location.pathname + location.search + location.hash}); -

    Introduction

    This section of the documentation contains brief documentation for some of the solvers that JuMP supports. The list of solvers is not exhaustive, but instead is intended to help you discover commonly used solvers.

    Affiliation

    Packages beginning with jump-dev/ are developed and maintained by the JuMP developers. In many cases, these packages wrap external solvers that are not developed by the JuMP developers and, while the Julia packages are all open-source, in some cases the solvers themselves are closed source commercial products.

    Packages that do not begin with jump-dev/ are developed independently. The developers of these packages requested or consented to the inclusion of their README contents in the JuMP documentation for the benefit of users.

    Adding new solvers

    Written a solver? Add it to this section of the JuMP documentation by making a pull request to the docs/packages.toml file.

    +

    Introduction

    This section of the documentation contains brief documentation for some of the solvers that JuMP supports. The list of solvers is not exhaustive, but instead is intended to help you discover commonly used solvers.

    Affiliation

    Packages beginning with jump-dev/ are developed and maintained by the JuMP developers. In many cases, these packages wrap external solvers that are not developed by the JuMP developers and, while the Julia packages are all open-source, in some cases the solvers themselves are closed source commercial products.

    Packages that do not begin with jump-dev/ are developed independently. The developers of these packages requested or consented to the inclusion of their README contents in the JuMP documentation for the benefit of users.

    Adding new solvers

    Written a solver? Add it to this section of the JuMP documentation by making a pull request to the docs/packages.toml file.

    diff --git a/previews/PR3561/release_notes/index.html b/previews/PR3561/release_notes/index.html index a462d8c75d8..ce17b87cc05 100644 --- a/previews/PR3561/release_notes/index.html +++ b/previews/PR3561/release_notes/index.html @@ -12,4 +12,4 @@ new_b = backend(model)
  • All usages of @SDconstraint are deprecated. The new syntax is @constraint(model, X >= Y, PSDCone()).
  • Creating a DenseAxisArray with a Number as an axis will now display a warning. This catches a common error in which users write @variable(model, x[length(S)]) instead of @variable(model, x[1:length(S)]).
  • The caching_mode argument to Model, for example, Model(caching_mode = MOIU.MANUAL) mode has been removed. For more control over the optimizer, use direct_model instead.
  • The previously deprecated lp_objective_perturbation_range and lp_rhs_perturbation_range functions have been removed. Use lp_sensitivity_report instead.
  • The .m fields of NonlinearExpression and NonlinearParameter have been renamed to .model.
  • Infinite variable bounds are now ignored. Thus, @variable(model, x <= Inf) will show has_upper_bound(x) == false. Previously, these bounds were passed through to the solvers which caused numerical issues for solvers expecting finite bounds.
  • The variable_type and constraint_type functions were removed. This should only affect users who previously wrote JuMP extensions. The functions can be deleted without consequence.
  • The internal functions moi_mode, moi_bridge_constraints, moi_add_constraint, and moi_add_to_function_constant are no longer exported.
  • The un-used method Containers.generate_container has been deleted.
  • The Containers API has been refactored, and _build_ref_sets is now public as Containers.build_ref_sets.
  • The parse_constraint_ methods for extending @constraint at parse time have been refactored in a breaking way. Consult the Extensions documentation for more details and examples.
  • Added

    • The TerminationStatusCode and ResultStatusCode enums are now exported by JuMP. Prefer termination_status(model) == OPTIMAL instead of == MOI.OPTIMAL, although the MOI. prefix way still works.
    • Copy a x::DenseAxisArray to an Array by calling Array(x).
    • NonlinearExpression is now a subtype of AbstractJuMPScalar
    • Constraints such as @constraint(model, x + 1 in MOI.Integer()) are now supported.
    • primal_feasibility_report now accepts a function as the first argument.
    • Scalar variables @variable(model, x[1:2] in MOI.Integer()) creates two variables, both of which are constrained to be in the set MOI.Integer.
    • Conic constraints can now be specified as inequalities under a different partial ordering. So @constraint(model, x - y in MOI.Nonnegatives()) can now be written as @constraint(model, x >= y, MOI.Nonnegatives()).
    • Names are now set for vectorized constraints.

    Fixed

    • Fixed a performance issue when show was called on a SparseAxisArray with a large number of elements.
    • Fixed a bug displaying barrier and simplex iterations in solution_summary.
    • Fixed a bug by implementing hash for DenseAxisArray and SparseAxisArray.
    • Names are now only set if the solver supports them. Previously, this prevented solvers such as Ipopt from being used with direct_model.
    • MutableArithmetics.Zero is converted into a 0.0 before being returned to the user. Previously, some calls to @expression would return the undocumented MutableArithmetics.Zero() object. One example is summing over an empty set @expression(model, sum(x[i] for i in 1:0)). You will now get 0.0 instead.
    • AffExpr and QuadExpr can now be used with == 0 instead of iszero. This fixes a number of issues relating to Julia standard libraries such as LinearAlgebra and SparseArrays.
    • Fixed a bug when registering a user-defined function with splatting.

    Other

    • The documentation is now available as a PDF.
    • The documentation now includes a full copy of the MathOptInterface documentation to make it easy to link concepts between the docs. (The MathOptInterface documentation has also been significantly improved.)
    • The documentation contains a large number of improvements and clarifications on a range of topics. Thanks to @sshin23, @DilumAluthge, and @jlwether.
    • The documentation is now built with Julia 1.6 instead of 1.0.
    • Various error messages have been improved to be more readable.

    Version 0.21.10 (September 4, 2021)

    Added

    • Added add_NL_expression
    • add_NL_xxx functions now support AffExpr and QuadExpr as terms

    Fixed

    • Fixed a bug in solution_summary
    • Fixed a bug in relax_integrality

    Other

    • Improved error message in lp_sensitivity_report

    Version 0.21.9 (August 1, 2021)

    Added

    • Containers now support arbitrary container types by passing the type to the container keyword and overloading Containers.container.
    • is_valid now supports nonlinear constraints
    • Added unsafe_backend for querying the inner-most optimizer of a JuMP model.
    • Nonlinear parameters now support the plural @NLparameters macro.
    • Containers (for example, DenseAxisArray) can now be used in vector-valued constraints.

    Other

    • Various improvements to the documentation.

    Version 0.21.8 (May 8, 2021)

    Added

    • The @constraint macro is now extendable in the same way as @variable.
    • AffExpr and QuadExpr can now be used in nonlinear macros.

    Fixed

    • Fixed a bug in lp_sensitivity_report.
    • Fixed an inference issue when creating empty SparseAxisArrays.

    Version 0.21.7 (April 12, 2021)

    Added

    • Added primal_feasibility_report, which can be used to check whether a primal point satisfies primal feasibility.
    • Added coefficient, which returns the coefficient associated with a variable in affine and quadratic expressions.
    • Added copy_conflict, which returns the IIS of an infeasible model.
    • Added solution_summary, which returns (and prints) a struct containing a summary of the solution.
    • Allow AbstractVector in vector constraints instead of just Vector.
    • Added latex_formulation(model) which returns an object representing the latex formulation of a model. Use print(latex_formulation(model)) to print the formulation as a string.
    • User-defined functions in nonlinear expressions are now automatically registered to aid quick model prototyping. However, a warning is printed to encourage the manual registration.
    • DenseAxisArray's now support broadcasting over multiple arrays.
    • Container indices can now be iterators of Base.SizeUnknown.

    Fixed

    • Fixed bug in rad2deg and deg2rad in nonlinear expressions.
    • Fixed a MethodError bug in Containers when forcing container type.
    • Allow partial slicing of a DenseAxisArray, resolving an issue from 2014.
    • Fixed a bug printing variable names in IJulia.
    • Ending an IJulia cell with model now prints a summary of the model (like in the REPL) not the latex formulation. Use print(model) to print the latex formulation.
    • Fixed a bug when copying models containing nested arrays.

    Other

    • Tutorials are now part of the documentation, and more refactoring has taken place.
    • Added JuliaFormatter added as a code formatter.
    • Added some precompilation statements to reduce initial latency.
    • Various improvements to error messages to make them more helpful.
    • Improved performance of value(::NonlinearExpression).
    • Improved performance of fix(::VariableRef).

    Version 0.21.6 (January 29, 2021)

    Added

    • Added support for skew symmetric variables via @variable(model, X[1:2, 1:2] in SkewSymmetricMatrixSpace()).
    • lp_sensitivity_report has been added which significantly improves the performance of querying the sensitivity summary of an LP. lp_objective_perturbation_range and lp_rhs_perturbation_range are deprecated.
    • Dual warm-starts are now supported with set_dual_start_value and dual_start_value.
    • (\in<tab>) can now be used in macros instead of = or in.
    • Use haskey(model::Model, key::Symbol) to check if a name key is registered in a model.
    • Added unregister(model::Model, key::Symbol) to unregister a name key from model.
    • Added callback_node_status for use in callbacks.
    • Added print_bridge_graph to visualize the bridging graph generated by MathOptInterface.
    • Improved error message for containers with duplicate indices.

    Fixed

    • Various fixes to pass tests on Julia 1.6.
    • Fixed a bug in the printing of nonlinear expressions in IJulia.
    • Fixed a bug when nonlinear expressions are passed to user-defined functions.
    • Some internal functions that were previously exported are now no longer exported.
    • Fixed a bug when relaxing a fixed binary variable.
    • Fixed a StackOverflowError that occurred when SparseAxisArrays had a large number of elements.
    • Removed an unnecessary type assertion in list_of_constraint_types.
    • Fixed a bug when copying models with registered expressions.

    Other

    • The documentation has been significantly overhauled. It now has distinct sections for the manual, API reference, and examples. The existing examples in /examples have now been moved to /docs/src/examples and rewritten using Literate.jl, and they are now included in the documentation.
    • JuliaFormatter has been applied to most of the codebase. This will continue to roll out over time, as we fix upstream issues in the formatter, and will eventually become compulsory.
    • The root cause of a large number of method invalidations has been resolved.
    • We switched continuous integration from Travis and Appveyor to GitHub Actions.

    Version 0.21.5 (September 18, 2020)

    Fixed

    • Fixed deprecation warnings
    • Throw DimensionMismatch for incompatibly sized functions and sets
    • Unify treatment of keys(x) on JuMP containers

    Version 0.21.4 (September 14, 2020)

    Added

    • Add debug info when adding unsupported constraints
    • Add relax_integrality for solving continuous relaxation
    • Allow querying constraint conflicts

    Fixed

    • Dispatch on Real for MOI.submit
    • Implement copy for CustomSet in tests
    • Don't export private macros
    • Fix invalid assertion in nonlinear
    • Error if constraint has NaN right-hand side
    • Improve speed of tests
    • Lots of work modularizing files in /test
    • Improve line numbers in macro error messages
    • Print nonlinear subexpressions
    • Various documentation updates
    • Dependency updates:
      • Datastructures 0.18
      • MathOptFormat v0.5
      • Prep for MathOptInterface 0.9.15

    Version 0.21.3 (June 18, 2020)

    • Added Special Order Sets (SOS1 and SOS2) to JuMP with default weights to ease the creation of such constraints (#2212).
    • Added functions simplex_iterations, barrier_iterations and node_count (#2201).
    • Added function reduced_cost (#2205).
    • Implemented callback_value for affine and quadratic expressions (#2231).
    • Support MutableArithmetics.Zero in objective and constraints (#2219).
    • Documentation improvements:
      • Mention tutorials in the docs (#2223).
      • Update COIN-OR links (#2242).
      • Explicit link to the documentation of MOI.FileFormats (#2253).
      • Typo fixes (#2261).
    • Containers improvements:
      • Fix Base.map for DenseAxisArray (#2235).
      • Throw BoundsError if number of indices is incorrect for DenseAxisArray and SparseAxisArray (#2240).
    • Extensibility improvements:
      • Implement a set_objective method fallback that redirects to set_objective_sense and set_objective_function (#2247).
      • Add parse_constraint method with arbitrary number of arguments (#2051).
      • Add parse_constraint_expr and parse_constraint_head (#2228).

    Version 0.21.2 (April 2, 2020)

    • Added relative_gap() to access MOI.RelativeGap() attribute (#2199).
    • Documentation fixes:
      • Added link to source for docstrings in the documentation (#2207).
      • Added docstring for @variables macro (#2216).
      • Typo fixes (#2177, #2184, #2182).
    • Implementation of methods for Base functions:
      • Implemented Base.empty! for JuMP.Model (#2198).
      • Implemented Base.conj for JuMP scalar types (#2209).

    Fixed

    • Fixed sum of expression with scalar product in macro (#2178).
    • Fixed writing of nonlinear models to MathOptFormat (#2181).
    • Fixed construction of empty SparseAxisArray (#2179).
    • Fixed constraint with zero function (#2188).

    Version 0.21.1 (Feb 18, 2020)

    • Improved the clarity of the with_optimizer deprecation warning.

    Version 0.21.0 (Feb 16, 2020)

    Breaking

    • Deprecated with_optimizer (#2090, #2084, #2141). You can replace with_optimizer by either nothing, optimizer_with_attributes or a closure:

      • replace with_optimizer(Ipopt.Optimizer) by Ipopt.Optimizer.
      • replace with_optimizer(Ipopt.Optimizer, max_cpu_time=60.0) by optimizer_with_attributes(Ipopt.Optimizer, "max_cpu_time" => 60.0).
      • replace with_optimizer(Gurobi.Optimizer, env) by () -> Gurobi.Optimizer(env).
      • replace with_optimizer(Gurobi.Optimizer, env, Presolve=0) by optimizer_with_attributes(() -> Gurobi.Optimizer(env), "Presolve" => 0).

      alternatively to optimizer_with_attributes, you can also set the attributes separately with set_optimizer_attribute.

    • Renamed set_parameter and set_parameters to set_optimizer_attribute and set_optimizer_attributes (#2150).

    • Broadcast should now be explicit inside macros. @SDconstraint(model, x >= 1) and @constraint(model, x + 1 in SecondOrderCone()) now throw an error instead of broadcasting 1 along the dimension of x (#2107).

    • @SDconstraint(model, x >= 0) is now equivalent to @constraint(model, x in PSDCone()) instead of @constraint(model, (x .- 0) in PSDCone()) (#2107).

    • The macros now create the containers with map instead of for loops, as a consequence, containers created by @expression can now have any element type and containers of constraint references now have concrete element types when possible. This fixes a long-standing issue where @expression could only be used to generate a collection of linear expressions. Now it works for quadratic expressions as well (#2070).

    • Calling deepcopy(::AbstractModel) now throws an error.

    • The constraint name is now printed in the model string (#2108).

    Added

    • Added support for solver-independent and solver-specific callbacks (#2101).
    • Added write_to_file and read_from_file, supported formats are CBF, LP, MathOptFormat, MPS and SDPA (#2114).
    • Added support for complementarity constraints (#2132).
    • Added support for indicator constraints (#2092).
    • Added support for querying multiple solutions with the result keyword (#2100).
    • Added support for constraining variables on creation (#2128).
    • Added method delete that deletes a vector of variables at once if it is supported by the underlying solver (#2135).
    • The arithmetic between JuMP expression has be refactored into the MutableArithmetics package (#2107).
    • Improved error on complex values in NLP (#1978).
    • Added an example of column generation (#2010).

    Fixed

    • Incorrect coefficients generated when using Symmetric variables (#2102)

    Version 0.20.1 (Oct 18, 2019)

    • Add sections on @variables and @constraints in the documentation (#2062).
    • Fixed product of sparse matrices for Julia v1.3 (#2063).
    • Added set_objective_coefficient to modify the coefficient of a linear term of the objective function (#2008).
    • Added set_time_limit_sec, unset_time_limit_sec and time_limit_sec to set and query the time limit for the solver in seconds (#2053).

    Version 0.20.0 (Aug 24, 2019)

    • Documentation updates.
    • Numerous bug fixes.
    • Better error messages (#1977, #1978, #1997, #2017).
    • Performance improvements (#1947, #2032).
    • Added LP sensitivity summary functions lp_objective_perturbation_range and lp_rhs_perturbation_range (#1917).
    • Added functions dual_objective_value, raw_status and set_parameter.
    • Added function set_objective_coefficient to modify the coefficient of a linear term of the objective (#2008).
    • Added functions set_normalized_rhs, normalized_rhs, and add_to_function_constant to modify and get the constant part of a constraint (#1935, #1960).
    • Added functions set_normalized_coefficient and normalized_coefficient to modify and get the coefficient of a linear term of a constraint (#1935, #1960).
    • Numerous other improvements in MOI 0.9, see the NEWS.md file of MOI for more details.

    Version 0.19.2 (June 8, 2019)

    • Fix a bug in derivatives that could arise in models with nested nonlinear subexpressions.

    Version 0.19.1 (May 12, 2019)

    • Usability and performance improvements.
    • Bug fixes.

    Version 0.19.0 (February 15, 2019)

    JuMP 0.19 contains significant breaking changes.

    Breaking

    • JuMP's abstraction layer for communicating with solvers changed from MathProgBase (MPB) to MathOptInterface (MOI). MOI addresses many longstanding design issues. (See @mlubin's slides from JuMP-dev 2018.) JuMP 0.19 is compatible only with solvers that have been updated for MOI. See the installation guide for a list of solvers that have and have not yet been updated.

    • Most solvers have been renamed to PackageName.Optimizer. For example, GurobiSolver() is now Gurobi.Optimizer.

    • Solvers are no longer added to a model via Model(solver = XXX(kwargs...)). Instead use Model(with_optimizer(XXX, kwargs...)). For example, Model(with_optimizer(Gurobi.Optimizer, OutputFlag=0)).

    • JuMP containers (for example, the objects returned by @variable) have been redesigned. Containers.SparseAxisArray replaces JuMPDict, JuMPArray was rewritten (inspired by AxisArrays) and renamed Containers.DenseAxisArray, and you can now request a container type with the container= keyword to the macros. See the corresponding documentation for more details.

    • The statuses returned by solvers have changed. See the possible status values here. The MOI statuses are much richer than the MPB statuses and can be used to distinguish between previously indistinguishable cases (for example, did the solver have a feasible solution when it stopped because of the time limit?).

    • Starting values are separate from result values. Use value to query the value of a variable in a solution. Use start_value and set_start_value to get and set an initial starting point provided to the solver. The solutions from previous solves are no longer automatically set as the starting points for the next solve.

    • The data structures for affine and quadratic expressions AffExpr and QuadExpr have changed. Internally, terms are stored in dictionaries instead of lists. Duplicate coefficients can no longer exist. Accessors and iteration methods have changed.

    • JuMPNLPEvaluator no longer includes the linear and quadratic parts of the model in the evaluation calls. These are now handled separately to allow NLP solvers that support various types of constraints.

    • JuMP solver-independent callbacks have been replaced by solver-specific callbacks. See your favorite solver for more details. (See the note below: No solver-specific callbacks are implemented yet.)

    • The norm() syntax is no longer recognized inside macros. Use the SecondOrderCone() set instead.

    • JuMP no longer performs automatic transformation between special quadratic forms and second-order cone constraints. Support for these constraint classes depends on the solver.

    • The symbols :Min and :Max are no longer used as optimization senses. Instead, JuMP uses the OptimizationSense enum from MathOptInterface. @objective(model, Max, ...), @objective(model, Min, ...), @NLobjective(model, Max, ...), and @objective(model, Min, ...) remain valid, but @objective(m, :Max, ...) is no longer accepted.

    • The sign conventions for duals has changed in some cases for consistency with conic duality (see the documentation). The shadow_price helper method returns duals with signs that match conventional LP interpretations of dual values as sensitivities of the objective value to relaxations of constraints.

    • @constraintref is no longer defined. Instead, create the appropriate container to hold constraint references manually. For example,

      constraints = Dict() # Optionally, specify types for improved performance.
       for i in 1:N
         constraints[i] = @constraint(model, ...)
      -end
    • The lowerbound, upperbound, and basename keyword arguments to the @variable macro have been renamed to lower_bound, upper_bound, and base_name, for consistency with JuMP's new style recommendations.

    • We rely on broadcasting syntax to apply accessors to collections of variables, for example, value.(x) instead of getvalue(x) for collections. (Use value(x) when x is a scalar object.)

    Added

    • Splatting (like f(x...)) is recognized in restricted settings in nonlinear expressions.

    • Support for deleting constraints and variables.

    • The documentation has been completely rewritten using docstrings and Documenter.

    • Support for modeling mixed conic and quadratic models (for example, conic models with quadratic objectives and bi-linear matrix inequalities).

    • Significantly improved support for modeling new types of constraints and for extending JuMP's macros.

    • Support for providing dual warm starts.

    • Improved support for accessing solver-specific attributes (for example, the irreducible inconsistent subsystem).

    • Explicit control of whether symmetry-enforcing constraints are added to PSD constraints.

    • Support for modeling exponential cones.

    • Significant improvements in internal code quality and testing.

    • Style and naming guidelines.

    • Direct mode and manual mode provide explicit control over when copies of a model are stored or regenerated. See the corresponding documentation.

    Regressions

    There are known regressions from JuMP 0.18 that will be addressed in a future release (0.19.x or later):

    • Performance regressions in model generation (issue). Please file an issue anyway if you notice a significant performance regression. We have plans to address a number of performance issues, but we might not be aware of all of them.

    • Fast incremental NLP solves are not yet reimplemented (issue).

    • We do not yet have an implementation of solver-specific callbacks.

    • The column generation syntax in @variable has been removed (that is, the objective, coefficients, and inconstraints keyword arguments). Support for column generation will be re-introduced in a future release.

    • The ability to solve the continuous relaxation (that is, via solve(model; relaxation = true)) is not yet reimplemented (issue).

    Version 0.18.5 (December 1, 2018)

    • Support views in some derivative evaluation functions.
    • Improved compatibility with PackageCompiler.

    Version 0.18.4 (October 8, 2018)

    • Fix a bug in model printing on Julia 0.7 and 1.0.

    Version 0.18.3 (October 1, 2018)

    • Add support for Julia v1.0 (Thanks @ExpandingMan)
    • Fix matrix expressions with quadratic functions (#1508)

    Version 0.18.2 (June 10, 2018)

    • Fix a bug in second-order derivatives when expressions are present (#1319)
    • Fix a bug in @constraintref (#1330)

    Version 0.18.1 (April 9, 2018)

    • Fix for nested tuple destructuring (#1193)
    • Preserve internal model when relaxation=true (#1209)
    • Minor bug fixes and updates for example

    Version 0.18.0 (July 27, 2017)

    • Drop support for Julia 0.5.
    • Update for ForwardDiff 0.5.
    • Minor bug fixes.

    Version 0.17.1 (June 9, 2017)

    • Use of constructconstraint! in @SDconstraint.
    • Minor bug fixes.

    Version 0.17.0 (May 27, 2017)

    • Breaking change: Mixing quadratic and conic constraints is no longer supported.
    • Breaking change: The getvariable and getconstraint functions are replaced by indexing on the corresponding symbol. For instance, to access the variable with name x, one should now write m[:x] instead of getvariable(m, :x). As a consequence, creating a variable and constraint with the same name now triggers a warning, and accessing one of them afterwards throws an error. This change is breaking only in the latter case.
    • Addition of the getobjectivebound function that mirrors the functionality of the MathProgBase getobjbound function except that it takes into account transformations performed by JuMP.
    • Minor bug fixes.

    The following changes are primarily of interest to developers of JuMP extensions:

    • The new syntax @constraint(model, expr in Cone) creates the constraint ensuring that expr is inside Cone. The Cone argument is passed to constructconstraint! which enables the call to the dispatched to an extension.
    • The @variable macro now calls constructvariable! instead of directly calling the Variable constructor. Extra arguments and keyword arguments passed to @variable are passed to constructvariable! which enables the call to be dispatched to an extension.
    • Refactor the internal function conicdata (used build the MathProgBase conic model) into smaller sub-functions to make these parts reusable by extensions.

    Version 0.16.2 (March 28, 2017)

    • Minor bug fixes and printing tweaks
    • Address deprecation warnings for Julia 0.6

    Version 0.16.1 (March 7, 2017)

    • Better support for AbstractArray in JuMP (Thanks @tkoolen)
    • Minor bug fixes

    Version 0.16.0 (February 23, 2017)

    • Breaking change: JuMP no longer has a mechanism for selecting solvers by default (the previous mechanism was flawed and incompatible with Julia 0.6). Not specifying a solver before calling solve() will result in an error.
    • Breaking change: User-defined functions are no longer global. The first argument to JuMP.register is now a JuMP Model object within whose scope the function will be registered. Calling JuMP.register without a Model now produces an error.
    • Breaking change: Use the new JuMP.fix method to fix a variable to a value or to update the value to which a variable is fixed. Calling setvalue on a fixed variable now results in an error in order to avoid silent behavior changes. (Thanks @joaquimg)
    • Nonlinear expressions now print out similarly to linear/quadratic expressions (useful for debugging!)
    • New category keyword to @variable. Used for specifying categories of anonymous variables.
    • Compatibility with Julia 0.6-dev.
    • Minor fixes and improvements (Thanks @cossio, @ccoffrin, @blegat)

    Version 0.15.1 (January 31, 2017)

    • Bugfix for @LinearConstraints and friends

    Version 0.15.0 (December 22, 2016)

    • Julia 0.5.0 is the minimum required version for this release.
    • Document support for BARON solver
    • Enable info callbacks in more states than before, for example, for recording solutions. New when argument to addinfocallback (#814, thanks @yeesian)
    • Improved support for anonymous variables. This includes new warnings for potentially confusing use of the traditional non-anonymous syntax:
      • When multiple variables in a model are given the same name
      • When non-symbols are used as names, for example, @variable(m, x[1][1:N])
    • Improvements in iterating over JuMP containers (#836, thanks @IssamT)
    • Support for writing variable names in .lp file output (Thanks @leethargo)
    • Support for querying duals to SDP problems (Thanks @blegat)
    • The comprehension syntax with curly braces sum{}, prod{}, and norm2{} has been deprecated in favor of Julia's native comprehension syntax sum(), prod() and norm() as previously announced. (For early adopters of the new syntax, norm2() was renamed to norm() without deprecation.)
    • Unit tests rewritten to use Base.Test instead of FactCheck
    • Improved support for operations with matrices of JuMP types (Thanks @ExpandingMan)
    • The syntax to halt a solver from inside a callback has changed from throw(CallbackAbort()) to return JuMP.StopTheSolver
    • Minor bug fixes

    Version 0.14.2 (December 12, 2016)

    • Allow singleton anonymous variables (includes bugfix)

    Version 0.14.1 (September 12, 2016)

    • More consistent handling of states in informational callbacks, includes a new when parameter to addinfocallback for specifying in which state an informational callback should be called.

    Version 0.14.0 (August 7, 2016)

    • Compatibility with Julia 0.5 and ForwardDiff 0.2
    • Support for "anonymous" variables, constraints, expressions, and parameters, for example, x = @variable(m, [1:N]) instead of @variable(m, x[1:N])
    • Support for retrieving constraints from a model by name via getconstraint
    • @NLconstraint now returns constraint references (as expected).
    • Support for vectorized expressions within lazy constraints
    • On Julia 0.5, parse new comprehension syntax sum(x[i] for i in 1:N if isodd(i)) instead of sum{ x[i], i in 1:N; isodd(i) }. The old syntax with curly braces will be deprecated in JuMP 0.15.
    • Now possible to provide nonlinear expressions as "raw" Julia Expr objects instead of using JuMP's nonlinear macros. This input format is useful for programmatically generated expressions.
    • s/Mathematical Programming/Mathematical Optimization/
    • Support for local cuts (Thanks to @madanim, Mehdi Madani)
    • Document Xpress interface developed by @joaquimg, Joaquim Dias Garcia
    • Minor bug and deprecation fixes (Thanks @odow, @jrevels)

    Version 0.13.2 (May 16, 2016)

    • Compatibility update for MathProgBase

    Version 0.13.1 (May 3, 2016)

    • Fix broken deprecation for registerNLfunction.

    Version 0.13.0 (April 29, 2016)

    • Most exported methods and macros have been renamed to avoid camelCase. See the list of changes here. There is a 1-1 mapping from the old names to the new, and it is safe to simply replace the names to update existing models.
    • Specify variable lower/upper bounds in @variable using the lowerbound and upperbound keyword arguments.
    • Change name printed for variable using the basename keyword argument to @variable.
    • New @variables macro allows multi-line declaration of groups of variables.
    • A number of solver methods previously available only through MathProgBase are now exposed directly in JuMP. The fix was recorded live.
    • Compatibility fixes with Julia 0.5.
    • The "end" indexing syntax is no longer supported within JuMPArrays which do not use 1-based indexing until upstream issues are resolved, see here.

    Version 0.12.2 (March 9, 2016)

    • Small fixes for nonlinear optimization

    Version 0.12.1 (March 1, 2016)

    • Fix a regression in slicing for JuMPArrays (when not using 1-based indexing)

    Version 0.12.0 (February 27, 2016)

    • The automatic differentiation functionality has been completely rewritten with a number of user-facing changes:
      • @defExpr and @defNLExpr now take the model as the first argument. The previous one-argument version of @defExpr is deprecated; all expressions should be named. For example, replace @defExpr(2x+y) with @defExpr(jump_model, my_expr, 2x+y).
      • JuMP no longer uses Julia's variable binding rules for efficiently re-solving a sequence of nonlinear models. Instead, we have introduced nonlinear parameters. This is a breaking change, so we have added a warning message when we detect models that may depend on the old behavior.
      • Support for user-defined functions integrated within nonlinear JuMP expressions.
    • Replaced iteration over AffExpr with Number-like scalar iteration; previous iteration behavior is now available via linearterms(::AffExpr).
    • Stopping the solver via throw(CallbackAbort()) from a callback no longer triggers an exception. Instead, solve() returns UserLimit status.
    • getDual() now works for conic problems (Thanks @emreyamangil.)

    Version 0.11.3 (February 4, 2016)

    • Bug-fix for problems with quadratic objectives and semidefinite constraints

    Version 0.11.2 (January 14, 2016)

    • Compatibility update for Mosek

    Version 0.11.1 (December 1, 2015)

    • Remove usage of @compat in tests.
    • Fix updating quadratic objectives for nonlinear models.

    Version 0.11.0 (November 30, 2015)

    • Julia 0.4.0 is the minimum required version for this release.
    • Fix for scoping semantics of index variables in sum{}. Index variables no longer leak into the surrounding scope.
    • Addition of the solve(m::Model, relaxation=true) keyword argument to solve the standard continuous relaxation of model m
    • The getConstraintBounds() method allows access to the lower and upper bounds of all constraints in a (nonlinear) model.
    • Update for breaking changes in MathProgBase

    Version 0.10.3 (November 20, 2015)

    • Fix a rare error when parsing quadratic expressions
    • Fix Variable() constructor with default arguments
    • Detect unrecognized keywords in solve()

    Version 0.10.2 (September 28, 2015)

    • Fix for deprecation warnings

    Version 0.10.1 (September 3, 2015)

    • Fixes for ambiguity warnings.
    • Fix for breaking change in precompilation syntax in Julia 0.4-pre

    Version 0.10.0 (August 31, 2015)

    • Support (on Julia 0.4 and later) for conditions in indexing @defVar and @addConstraint constructs, for example, @defVar(m, x[i=1:5,j=1:5; i+j >= 3])
    • Support for vectorized operations on Variables and expressions. See the documentation for details.
    • New getVar() method to access variables in a model by name
    • Support for semidefinite programming.
    • Dual solutions are now available for general nonlinear problems. You may call getDual on a reference object for a nonlinear constraint, and getDual on a variable object for Lagrange multipliers from active bounds.
    • Introduce warnings for two common performance traps: too many calls to getValue() on a collection of variables and use of the + operator in a loop to sum expressions.
    • Second-order cone constraints can be written directly with the norm() and norm2{} syntax.
    • Implement MathProgBase interface for querying Hessian-vector products.
    • Iteration over JuMPContainers is deprecated; instead, use the keys and values functions, and zip(keys(d),values(d)) for the old behavior.
    • @defVar returns Array{Variable,N} when each of N index sets are of the form 1:nᵢ.
    • Module precompilation: on Julia 0.4 and later, using JuMP is now much faster.

    Version 0.9.3 (August 11, 2015)

    • Fixes for FactCheck testing on julia v0.4.

    Version 0.9.2 (June 27, 2015)

    • Fix bug in @addConstraints.

    Version 0.9.1 (April 25, 2015)

    • Fix for Julia 0.4-dev.
    • Small infrastructure improvements for extensions.

    Version 0.9.0 (April 18, 2015)

    • Comparison operators for constructing constraints (for example, 2x >= 1) have been deprecated. Instead, construct the constraints explicitly in the @addConstraint macro to add them to the model, or in the @LinearConstraint macro to create a stand-alone linear constraint instance.
    • getValue() method implemented to compute the value of a nonlinear subexpression
    • JuMP is now released under the Mozilla Public License version 2.0 (was previously LGPL). MPL is a copyleft license which is less restrictive than LGPL, especially for embedding JuMP within other applications.
    • A number of performance improvements in ReverseDiffSparse for computing derivatives.
    • MathProgBase.getsolvetime(m) now returns the solution time reported by the solver, if available. (Thanks @odow, Oscar Dowson)
    • Formatting fix for LP format output. (Thanks @sbebo, Leonardo Taccari).

    Version 0.8.0 (February 17, 2015)

    • Nonlinear subexpressions now supported with the @defNLExpr macro.
    • SCS supported for solving second-order conic problems.
    • setXXXCallback family deprecated in favor of addXXXCallback.
    • Multiple callbacks of the same type can be registered.
    • Added support for informational callbacks via addInfoCallback.
    • A CallbackAbort exception can be thrown from callback to safely exit optimization.

    Version 0.7.4 (February 4, 2015)

    • Reduced costs and linear constraint duals are now accessible when quadratic constraints are present.
    • Two-sided nonlinear constraints are supported.
    • Methods for accessing the number of variables and constraints in a model are renamed.
    • New default procedure for setting initial values in nonlinear optimization: project zero onto the variable bounds.
    • Small bug fixes.

    Version 0.7.3 (January 14, 2015)

    • Fix a method ambiguity conflict with Compose.jl (cosmetic fix)

    Version 0.7.2 (January 9, 2015)

    • Fix a bug in sum(::JuMPDict)
    • Added the setCategory function to change a variables category (for example, continuous or binary)

    after construction, and getCategory to retrieve the variable category.

    Version 0.7.1 (January 2, 2015)

    • Fix a bug in parsing linear expressions in macros. Affects only Julia 0.4 and later.

    Version 0.7.0 (December 29, 2014)

    Linear/quadratic/conic programming

    • Breaking change: The syntax for column-wise model generation has been changed to use keyword arguments in @defVar.
    • On Julia 0.4 and later, variables and coefficients may be multiplied in any order within macros. That is, variable*coefficient is now valid syntax.
    • ECOS supported for solving second-order conic problems.

    Nonlinear programming

    • Support for skipping model generation when solving a sequence of nonlinear models with changing data.
    • Fix a memory leak when solving a sequence of nonlinear models.
    • The @addNLConstraint macro now supports the three-argument version to define sets of nonlinear constraints.
    • KNITRO supported as a nonlinear solver.
    • Speed improvements for model generation.
    • The @addNLConstraints macro supports adding multiple (groups of) constraints at once. Syntax is similar to @addConstraints.
    • Discrete variables allowed in nonlinear problems for solvers which support them (currently only KNITRO).

    General

    • Starting values for variables may now be specified with @defVar(m, x, start=value).
    • The setSolver function allows users to change the solver subsequent to model creation.
    • Support for "fixed" variables via the @defVar(m, x == 1) syntax.
    • Unit tests rewritten to use FactCheck.jl, improved testing across solvers.

    Version 0.6.3 (October 19, 2014)

    • Fix a bug in multiplying two AffExpr objects.

    Version 0.6.2 (October 11, 2014)

    • Further improvements and bug fixes for printing.
    • Fixed a bug in @defExpr.
    • Support for accessing expression graphs through the MathProgBase NLP interface.

    Version 0.6.1 (September 19, 2014)

    • Improvements and bug fixes for printing.

    Version 0.6.0 (September 9, 2014)

    • Julia 0.3.0 is the minimum required version for this release.
    • buildInternalModel(m::Model) added to build solver-level model in memory without optimizing.
    • Deprecate load_model_only keyword argument to solve.
    • Add groups of constraints with @addConstraints macro.
    • Unicode operators now supported, including for sum, for prod, and /
    • Quadratic constraints supported in @addConstraint macro.
    • Quadratic objectives supported in @setObjective macro.
    • MathProgBase solver-independent interface replaces Ipopt-specific interface for nonlinear problems
      • Breaking change: IpoptOptions no longer supported to specify solver options, use m = Model(solver=IpoptSolver(options...)) instead.
    • New solver interfaces: ECOS, NLopt, and nonlinear support for MOSEK
    • New option to control whether the lazy constraint callback is executed at each node in the B&B tree or just when feasible solutions are found
    • Add support for semicontinuous and semi-integer variables for those solvers that support them.
    • Add support for index dependencies (for example, triangular indexing) in @defVar, @addConstraint, and @defExpr (for example, @defVar(m, x[i=1:10,j=i:10])).
      • This required some changes to the internal structure of JuMP containers, which may break code that explicitly stored JuMPDict objects.

    Version 0.5.8 (September 24, 2014)

    • Fix a bug with specifying solvers (affects Julia 0.2 only)

    Version 0.5.7 (September 5, 2014)

    • Fix a bug in printing models

    Version 0.5.6 (September 2, 2014)

    • Add support for semicontinuous and semi-integer variables for those solvers that support them.
      • Breaking change: Syntax for Variable() constructor has changed (use of this interface remains discouraged)
    • Update for breaking changes in MathProgBase

    Version 0.5.5 (July 6, 2014)

    • Fix bug with problem modification: adding variables that did not appear in existing constraints or objective.

    Version 0.5.4 (June 19, 2014)

    • Update for breaking change in MathProgBase which reduces loading times for using JuMP
    • Fix error when MIPs not solved to optimality

    Version 0.5.3 (May 21, 2014)

    • Update for breaking change in ReverseDiffSparse

    Version 0.5.2 (May 9, 2014)

    • Fix compatibility with Julia 0.3 prerelease

    Version 0.5.1 (May 5, 2014)

    • Fix a bug in coefficient handling inside lazy constraints and user cuts

    Version 0.5.0 (May 2, 2014)

    • Support for nonlinear optimization with exact, sparse second-order derivatives automatically computed. Ipopt is currently the only solver supported.
    • getValue for AffExpr and QuadExpr
    • Breaking change: getSolverModel replaced by getInternalModel, which returns the internal MathProgBase-level model
    • Groups of constraints can be specified with @addConstraint (see documentation for details). This is not a breaking change.
    • dot(::JuMPDict{Variable},::JuMPDict{Variable}) now returns the corresponding quadratic expression.

    Version 0.4.1 (March 24, 2014)

    • Fix bug where change in objective sense was ignored when re-solving a model.
    • Fix issue with handling zero coefficients in AffExpr.

    Version 0.4.0 (March 10, 2014)

    • Support for SOS1 and SOS2 constraints.
    • Solver-independent callback for user heuristics.
    • dot and sum implemented for JuMPDict objects. Now you can say @addConstraint(m, dot(a,x) <= b).
    • Developers: support for extensions to JuMP. See definition of Model in src/JuMP.jl for more details.
    • Option to construct the low-level model before optimizing.

    Version 0.3.2 (February 17, 2014)

    • Improved model printing
      • Preliminary support for IJulia output

    Version 0.3.1 (January 30, 2014)

    • Documentation updates
    • Support for MOSEK
    • CPLEXLink renamed to CPLEX

    Version 0.3.0 (January 21, 2014)

    • Unbounded/infeasibility rays: getValue() will return the corresponding components of an unbounded ray when a model is unbounded, if supported by the selected solver. getDual() will return an infeasibility ray (Farkas proof) if a model is infeasible and the selected solver supports this feature.
    • Solver-independent callbacks for user generated cuts.
    • Use new interface for solver-independent QCQP.
    • setlazycallback renamed to setLazyCallback for consistency.

    Version 0.2.0 (December 15, 2013)

    Breaking

    • Objective sense is specified in setObjective instead of in the Model constructor.
    • lpsolver and mipsolver merged into single solver option.

    Added

    • Problem modification with efficient LP restarts and MIP warm-starts.
    • Relatedly, column-wise modeling now supported.
    • Solver-independent callbacks supported. Currently we support only a "lazy constraint" callback, which works with Gurobi, CPLEX, and GLPK. More callbacks coming soon.

    Version 0.1.2 (November 16, 2013)

    • Bug fixes for printing, improved error messages.
    • Allow AffExpr to be used in macros; for example, ex = y + z; @addConstraint(m, x + 2*ex <= 3)

    Version 0.1.1 (October 23, 2013)

    • Update for solver specification API changes in MathProgBase.

    Version 0.1.0 (October 3, 2013)

    • Initial public release.
    +end
  • The lowerbound, upperbound, and basename keyword arguments to the @variable macro have been renamed to lower_bound, upper_bound, and base_name, for consistency with JuMP's new style recommendations.

  • We rely on broadcasting syntax to apply accessors to collections of variables, for example, value.(x) instead of getvalue(x) for collections. (Use value(x) when x is a scalar object.)

  • Added

    • Splatting (like f(x...)) is recognized in restricted settings in nonlinear expressions.

    • Support for deleting constraints and variables.

    • The documentation has been completely rewritten using docstrings and Documenter.

    • Support for modeling mixed conic and quadratic models (for example, conic models with quadratic objectives and bi-linear matrix inequalities).

    • Significantly improved support for modeling new types of constraints and for extending JuMP's macros.

    • Support for providing dual warm starts.

    • Improved support for accessing solver-specific attributes (for example, the irreducible inconsistent subsystem).

    • Explicit control of whether symmetry-enforcing constraints are added to PSD constraints.

    • Support for modeling exponential cones.

    • Significant improvements in internal code quality and testing.

    • Style and naming guidelines.

    • Direct mode and manual mode provide explicit control over when copies of a model are stored or regenerated. See the corresponding documentation.

    Regressions

    There are known regressions from JuMP 0.18 that will be addressed in a future release (0.19.x or later):

    • Performance regressions in model generation (issue). Please file an issue anyway if you notice a significant performance regression. We have plans to address a number of performance issues, but we might not be aware of all of them.

    • Fast incremental NLP solves are not yet reimplemented (issue).

    • We do not yet have an implementation of solver-specific callbacks.

    • The column generation syntax in @variable has been removed (that is, the objective, coefficients, and inconstraints keyword arguments). Support for column generation will be re-introduced in a future release.

    • The ability to solve the continuous relaxation (that is, via solve(model; relaxation = true)) is not yet reimplemented (issue).

    Version 0.18.5 (December 1, 2018)

    • Support views in some derivative evaluation functions.
    • Improved compatibility with PackageCompiler.

    Version 0.18.4 (October 8, 2018)

    • Fix a bug in model printing on Julia 0.7 and 1.0.

    Version 0.18.3 (October 1, 2018)

    • Add support for Julia v1.0 (Thanks @ExpandingMan)
    • Fix matrix expressions with quadratic functions (#1508)

    Version 0.18.2 (June 10, 2018)

    • Fix a bug in second-order derivatives when expressions are present (#1319)
    • Fix a bug in @constraintref (#1330)

    Version 0.18.1 (April 9, 2018)

    • Fix for nested tuple destructuring (#1193)
    • Preserve internal model when relaxation=true (#1209)
    • Minor bug fixes and updates for example

    Version 0.18.0 (July 27, 2017)

    • Drop support for Julia 0.5.
    • Update for ForwardDiff 0.5.
    • Minor bug fixes.

    Version 0.17.1 (June 9, 2017)

    • Use of constructconstraint! in @SDconstraint.
    • Minor bug fixes.

    Version 0.17.0 (May 27, 2017)

    • Breaking change: Mixing quadratic and conic constraints is no longer supported.
    • Breaking change: The getvariable and getconstraint functions are replaced by indexing on the corresponding symbol. For instance, to access the variable with name x, one should now write m[:x] instead of getvariable(m, :x). As a consequence, creating a variable and constraint with the same name now triggers a warning, and accessing one of them afterwards throws an error. This change is breaking only in the latter case.
    • Addition of the getobjectivebound function that mirrors the functionality of the MathProgBase getobjbound function except that it takes into account transformations performed by JuMP.
    • Minor bug fixes.

    The following changes are primarily of interest to developers of JuMP extensions:

    • The new syntax @constraint(model, expr in Cone) creates the constraint ensuring that expr is inside Cone. The Cone argument is passed to constructconstraint! which enables the call to the dispatched to an extension.
    • The @variable macro now calls constructvariable! instead of directly calling the Variable constructor. Extra arguments and keyword arguments passed to @variable are passed to constructvariable! which enables the call to be dispatched to an extension.
    • Refactor the internal function conicdata (used build the MathProgBase conic model) into smaller sub-functions to make these parts reusable by extensions.

    Version 0.16.2 (March 28, 2017)

    • Minor bug fixes and printing tweaks
    • Address deprecation warnings for Julia 0.6

    Version 0.16.1 (March 7, 2017)

    • Better support for AbstractArray in JuMP (Thanks @tkoolen)
    • Minor bug fixes

    Version 0.16.0 (February 23, 2017)

    • Breaking change: JuMP no longer has a mechanism for selecting solvers by default (the previous mechanism was flawed and incompatible with Julia 0.6). Not specifying a solver before calling solve() will result in an error.
    • Breaking change: User-defined functions are no longer global. The first argument to JuMP.register is now a JuMP Model object within whose scope the function will be registered. Calling JuMP.register without a Model now produces an error.
    • Breaking change: Use the new JuMP.fix method to fix a variable to a value or to update the value to which a variable is fixed. Calling setvalue on a fixed variable now results in an error in order to avoid silent behavior changes. (Thanks @joaquimg)
    • Nonlinear expressions now print out similarly to linear/quadratic expressions (useful for debugging!)
    • New category keyword to @variable. Used for specifying categories of anonymous variables.
    • Compatibility with Julia 0.6-dev.
    • Minor fixes and improvements (Thanks @cossio, @ccoffrin, @blegat)

    Version 0.15.1 (January 31, 2017)

    • Bugfix for @LinearConstraints and friends

    Version 0.15.0 (December 22, 2016)

    • Julia 0.5.0 is the minimum required version for this release.
    • Document support for BARON solver
    • Enable info callbacks in more states than before, for example, for recording solutions. New when argument to addinfocallback (#814, thanks @yeesian)
    • Improved support for anonymous variables. This includes new warnings for potentially confusing use of the traditional non-anonymous syntax:
      • When multiple variables in a model are given the same name
      • When non-symbols are used as names, for example, @variable(m, x[1][1:N])
    • Improvements in iterating over JuMP containers (#836, thanks @IssamT)
    • Support for writing variable names in .lp file output (Thanks @leethargo)
    • Support for querying duals to SDP problems (Thanks @blegat)
    • The comprehension syntax with curly braces sum{}, prod{}, and norm2{} has been deprecated in favor of Julia's native comprehension syntax sum(), prod() and norm() as previously announced. (For early adopters of the new syntax, norm2() was renamed to norm() without deprecation.)
    • Unit tests rewritten to use Base.Test instead of FactCheck
    • Improved support for operations with matrices of JuMP types (Thanks @ExpandingMan)
    • The syntax to halt a solver from inside a callback has changed from throw(CallbackAbort()) to return JuMP.StopTheSolver
    • Minor bug fixes

    Version 0.14.2 (December 12, 2016)

    • Allow singleton anonymous variables (includes bugfix)

    Version 0.14.1 (September 12, 2016)

    • More consistent handling of states in informational callbacks, includes a new when parameter to addinfocallback for specifying in which state an informational callback should be called.

    Version 0.14.0 (August 7, 2016)

    • Compatibility with Julia 0.5 and ForwardDiff 0.2
    • Support for "anonymous" variables, constraints, expressions, and parameters, for example, x = @variable(m, [1:N]) instead of @variable(m, x[1:N])
    • Support for retrieving constraints from a model by name via getconstraint
    • @NLconstraint now returns constraint references (as expected).
    • Support for vectorized expressions within lazy constraints
    • On Julia 0.5, parse new comprehension syntax sum(x[i] for i in 1:N if isodd(i)) instead of sum{ x[i], i in 1:N; isodd(i) }. The old syntax with curly braces will be deprecated in JuMP 0.15.
    • Now possible to provide nonlinear expressions as "raw" Julia Expr objects instead of using JuMP's nonlinear macros. This input format is useful for programmatically generated expressions.
    • s/Mathematical Programming/Mathematical Optimization/
    • Support for local cuts (Thanks to @madanim, Mehdi Madani)
    • Document Xpress interface developed by @joaquimg, Joaquim Dias Garcia
    • Minor bug and deprecation fixes (Thanks @odow, @jrevels)

    Version 0.13.2 (May 16, 2016)

    • Compatibility update for MathProgBase

    Version 0.13.1 (May 3, 2016)

    • Fix broken deprecation for registerNLfunction.

    Version 0.13.0 (April 29, 2016)

    • Most exported methods and macros have been renamed to avoid camelCase. See the list of changes here. There is a 1-1 mapping from the old names to the new, and it is safe to simply replace the names to update existing models.
    • Specify variable lower/upper bounds in @variable using the lowerbound and upperbound keyword arguments.
    • Change name printed for variable using the basename keyword argument to @variable.
    • New @variables macro allows multi-line declaration of groups of variables.
    • A number of solver methods previously available only through MathProgBase are now exposed directly in JuMP. The fix was recorded live.
    • Compatibility fixes with Julia 0.5.
    • The "end" indexing syntax is no longer supported within JuMPArrays which do not use 1-based indexing until upstream issues are resolved, see here.

    Version 0.12.2 (March 9, 2016)

    • Small fixes for nonlinear optimization

    Version 0.12.1 (March 1, 2016)

    • Fix a regression in slicing for JuMPArrays (when not using 1-based indexing)

    Version 0.12.0 (February 27, 2016)

    • The automatic differentiation functionality has been completely rewritten with a number of user-facing changes:
      • @defExpr and @defNLExpr now take the model as the first argument. The previous one-argument version of @defExpr is deprecated; all expressions should be named. For example, replace @defExpr(2x+y) with @defExpr(jump_model, my_expr, 2x+y).
      • JuMP no longer uses Julia's variable binding rules for efficiently re-solving a sequence of nonlinear models. Instead, we have introduced nonlinear parameters. This is a breaking change, so we have added a warning message when we detect models that may depend on the old behavior.
      • Support for user-defined functions integrated within nonlinear JuMP expressions.
    • Replaced iteration over AffExpr with Number-like scalar iteration; previous iteration behavior is now available via linearterms(::AffExpr).
    • Stopping the solver via throw(CallbackAbort()) from a callback no longer triggers an exception. Instead, solve() returns UserLimit status.
    • getDual() now works for conic problems (Thanks @emreyamangil.)

    Version 0.11.3 (February 4, 2016)

    • Bug-fix for problems with quadratic objectives and semidefinite constraints

    Version 0.11.2 (January 14, 2016)

    • Compatibility update for Mosek

    Version 0.11.1 (December 1, 2015)

    • Remove usage of @compat in tests.
    • Fix updating quadratic objectives for nonlinear models.

    Version 0.11.0 (November 30, 2015)

    • Julia 0.4.0 is the minimum required version for this release.
    • Fix for scoping semantics of index variables in sum{}. Index variables no longer leak into the surrounding scope.
    • Addition of the solve(m::Model, relaxation=true) keyword argument to solve the standard continuous relaxation of model m
    • The getConstraintBounds() method allows access to the lower and upper bounds of all constraints in a (nonlinear) model.
    • Update for breaking changes in MathProgBase

    Version 0.10.3 (November 20, 2015)

    • Fix a rare error when parsing quadratic expressions
    • Fix Variable() constructor with default arguments
    • Detect unrecognized keywords in solve()

    Version 0.10.2 (September 28, 2015)

    • Fix for deprecation warnings

    Version 0.10.1 (September 3, 2015)

    • Fixes for ambiguity warnings.
    • Fix for breaking change in precompilation syntax in Julia 0.4-pre

    Version 0.10.0 (August 31, 2015)

    • Support (on Julia 0.4 and later) for conditions in indexing @defVar and @addConstraint constructs, for example, @defVar(m, x[i=1:5,j=1:5; i+j >= 3])
    • Support for vectorized operations on Variables and expressions. See the documentation for details.
    • New getVar() method to access variables in a model by name
    • Support for semidefinite programming.
    • Dual solutions are now available for general nonlinear problems. You may call getDual on a reference object for a nonlinear constraint, and getDual on a variable object for Lagrange multipliers from active bounds.
    • Introduce warnings for two common performance traps: too many calls to getValue() on a collection of variables and use of the + operator in a loop to sum expressions.
    • Second-order cone constraints can be written directly with the norm() and norm2{} syntax.
    • Implement MathProgBase interface for querying Hessian-vector products.
    • Iteration over JuMPContainers is deprecated; instead, use the keys and values functions, and zip(keys(d),values(d)) for the old behavior.
    • @defVar returns Array{Variable,N} when each of N index sets are of the form 1:nᵢ.
    • Module precompilation: on Julia 0.4 and later, using JuMP is now much faster.

    Version 0.9.3 (August 11, 2015)

    • Fixes for FactCheck testing on julia v0.4.

    Version 0.9.2 (June 27, 2015)

    • Fix bug in @addConstraints.

    Version 0.9.1 (April 25, 2015)

    • Fix for Julia 0.4-dev.
    • Small infrastructure improvements for extensions.

    Version 0.9.0 (April 18, 2015)

    • Comparison operators for constructing constraints (for example, 2x >= 1) have been deprecated. Instead, construct the constraints explicitly in the @addConstraint macro to add them to the model, or in the @LinearConstraint macro to create a stand-alone linear constraint instance.
    • getValue() method implemented to compute the value of a nonlinear subexpression
    • JuMP is now released under the Mozilla Public License version 2.0 (was previously LGPL). MPL is a copyleft license which is less restrictive than LGPL, especially for embedding JuMP within other applications.
    • A number of performance improvements in ReverseDiffSparse for computing derivatives.
    • MathProgBase.getsolvetime(m) now returns the solution time reported by the solver, if available. (Thanks @odow, Oscar Dowson)
    • Formatting fix for LP format output. (Thanks @sbebo, Leonardo Taccari).

    Version 0.8.0 (February 17, 2015)

    • Nonlinear subexpressions now supported with the @defNLExpr macro.
    • SCS supported for solving second-order conic problems.
    • setXXXCallback family deprecated in favor of addXXXCallback.
    • Multiple callbacks of the same type can be registered.
    • Added support for informational callbacks via addInfoCallback.
    • A CallbackAbort exception can be thrown from callback to safely exit optimization.

    Version 0.7.4 (February 4, 2015)

    • Reduced costs and linear constraint duals are now accessible when quadratic constraints are present.
    • Two-sided nonlinear constraints are supported.
    • Methods for accessing the number of variables and constraints in a model are renamed.
    • New default procedure for setting initial values in nonlinear optimization: project zero onto the variable bounds.
    • Small bug fixes.

    Version 0.7.3 (January 14, 2015)

    • Fix a method ambiguity conflict with Compose.jl (cosmetic fix)

    Version 0.7.2 (January 9, 2015)

    • Fix a bug in sum(::JuMPDict)
    • Added the setCategory function to change a variables category (for example, continuous or binary)

    after construction, and getCategory to retrieve the variable category.

    Version 0.7.1 (January 2, 2015)

    • Fix a bug in parsing linear expressions in macros. Affects only Julia 0.4 and later.

    Version 0.7.0 (December 29, 2014)

    Linear/quadratic/conic programming

    • Breaking change: The syntax for column-wise model generation has been changed to use keyword arguments in @defVar.
    • On Julia 0.4 and later, variables and coefficients may be multiplied in any order within macros. That is, variable*coefficient is now valid syntax.
    • ECOS supported for solving second-order conic problems.

    Nonlinear programming

    • Support for skipping model generation when solving a sequence of nonlinear models with changing data.
    • Fix a memory leak when solving a sequence of nonlinear models.
    • The @addNLConstraint macro now supports the three-argument version to define sets of nonlinear constraints.
    • KNITRO supported as a nonlinear solver.
    • Speed improvements for model generation.
    • The @addNLConstraints macro supports adding multiple (groups of) constraints at once. Syntax is similar to @addConstraints.
    • Discrete variables allowed in nonlinear problems for solvers which support them (currently only KNITRO).

    General

    • Starting values for variables may now be specified with @defVar(m, x, start=value).
    • The setSolver function allows users to change the solver subsequent to model creation.
    • Support for "fixed" variables via the @defVar(m, x == 1) syntax.
    • Unit tests rewritten to use FactCheck.jl, improved testing across solvers.

    Version 0.6.3 (October 19, 2014)

    • Fix a bug in multiplying two AffExpr objects.

    Version 0.6.2 (October 11, 2014)

    • Further improvements and bug fixes for printing.
    • Fixed a bug in @defExpr.
    • Support for accessing expression graphs through the MathProgBase NLP interface.

    Version 0.6.1 (September 19, 2014)

    • Improvements and bug fixes for printing.

    Version 0.6.0 (September 9, 2014)

    • Julia 0.3.0 is the minimum required version for this release.
    • buildInternalModel(m::Model) added to build solver-level model in memory without optimizing.
    • Deprecate load_model_only keyword argument to solve.
    • Add groups of constraints with @addConstraints macro.
    • Unicode operators now supported, including for sum, for prod, and /
    • Quadratic constraints supported in @addConstraint macro.
    • Quadratic objectives supported in @setObjective macro.
    • MathProgBase solver-independent interface replaces Ipopt-specific interface for nonlinear problems
      • Breaking change: IpoptOptions no longer supported to specify solver options, use m = Model(solver=IpoptSolver(options...)) instead.
    • New solver interfaces: ECOS, NLopt, and nonlinear support for MOSEK
    • New option to control whether the lazy constraint callback is executed at each node in the B&B tree or just when feasible solutions are found
    • Add support for semicontinuous and semi-integer variables for those solvers that support them.
    • Add support for index dependencies (for example, triangular indexing) in @defVar, @addConstraint, and @defExpr (for example, @defVar(m, x[i=1:10,j=i:10])).
      • This required some changes to the internal structure of JuMP containers, which may break code that explicitly stored JuMPDict objects.

    Version 0.5.8 (September 24, 2014)

    • Fix a bug with specifying solvers (affects Julia 0.2 only)

    Version 0.5.7 (September 5, 2014)

    • Fix a bug in printing models

    Version 0.5.6 (September 2, 2014)

    • Add support for semicontinuous and semi-integer variables for those solvers that support them.
      • Breaking change: Syntax for Variable() constructor has changed (use of this interface remains discouraged)
    • Update for breaking changes in MathProgBase

    Version 0.5.5 (July 6, 2014)

    • Fix bug with problem modification: adding variables that did not appear in existing constraints or objective.

    Version 0.5.4 (June 19, 2014)

    • Update for breaking change in MathProgBase which reduces loading times for using JuMP
    • Fix error when MIPs not solved to optimality

    Version 0.5.3 (May 21, 2014)

    • Update for breaking change in ReverseDiffSparse

    Version 0.5.2 (May 9, 2014)

    • Fix compatibility with Julia 0.3 prerelease

    Version 0.5.1 (May 5, 2014)

    • Fix a bug in coefficient handling inside lazy constraints and user cuts

    Version 0.5.0 (May 2, 2014)

    • Support for nonlinear optimization with exact, sparse second-order derivatives automatically computed. Ipopt is currently the only solver supported.
    • getValue for AffExpr and QuadExpr
    • Breaking change: getSolverModel replaced by getInternalModel, which returns the internal MathProgBase-level model
    • Groups of constraints can be specified with @addConstraint (see documentation for details). This is not a breaking change.
    • dot(::JuMPDict{Variable},::JuMPDict{Variable}) now returns the corresponding quadratic expression.

    Version 0.4.1 (March 24, 2014)

    • Fix bug where change in objective sense was ignored when re-solving a model.
    • Fix issue with handling zero coefficients in AffExpr.

    Version 0.4.0 (March 10, 2014)

    • Support for SOS1 and SOS2 constraints.
    • Solver-independent callback for user heuristics.
    • dot and sum implemented for JuMPDict objects. Now you can say @addConstraint(m, dot(a,x) <= b).
    • Developers: support for extensions to JuMP. See definition of Model in src/JuMP.jl for more details.
    • Option to construct the low-level model before optimizing.

    Version 0.3.2 (February 17, 2014)

    • Improved model printing
      • Preliminary support for IJulia output

    Version 0.3.1 (January 30, 2014)

    • Documentation updates
    • Support for MOSEK
    • CPLEXLink renamed to CPLEX

    Version 0.3.0 (January 21, 2014)

    • Unbounded/infeasibility rays: getValue() will return the corresponding components of an unbounded ray when a model is unbounded, if supported by the selected solver. getDual() will return an infeasibility ray (Farkas proof) if a model is infeasible and the selected solver supports this feature.
    • Solver-independent callbacks for user generated cuts.
    • Use new interface for solver-independent QCQP.
    • setlazycallback renamed to setLazyCallback for consistency.

    Version 0.2.0 (December 15, 2013)

    Breaking

    • Objective sense is specified in setObjective instead of in the Model constructor.
    • lpsolver and mipsolver merged into single solver option.

    Added

    • Problem modification with efficient LP restarts and MIP warm-starts.
    • Relatedly, column-wise modeling now supported.
    • Solver-independent callbacks supported. Currently we support only a "lazy constraint" callback, which works with Gurobi, CPLEX, and GLPK. More callbacks coming soon.

    Version 0.1.2 (November 16, 2013)

    • Bug fixes for printing, improved error messages.
    • Allow AffExpr to be used in macros; for example, ex = y + z; @addConstraint(m, x + 2*ex <= 3)

    Version 0.1.1 (October 23, 2013)

    • Update for solver specification API changes in MathProgBase.

    Version 0.1.0 (October 3, 2013)

    • Initial public release.
    diff --git a/previews/PR3561/search_index.js b/previews/PR3561/search_index.js index e24f4d8099a..54566528ebe 100644 --- a/previews/PR3561/search_index.js +++ b/previews/PR3561/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"moi/reference/nonlinear/","page":"Nonlinear programming","title":"Nonlinear programming","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/reference/nonlinear.md\"","category":"page"},{"location":"moi/reference/nonlinear/","page":"Nonlinear programming","title":"Nonlinear programming","text":"CurrentModule = MathOptInterface\nDocTestSetup = quote\n import MathOptInterface as MOI\nend\nDocTestFilters = [r\"MathOptInterface|MOI\"]","category":"page"},{"location":"moi/reference/nonlinear/#Nonlinear-programming","page":"Nonlinear programming","title":"Nonlinear programming","text":"","category":"section"},{"location":"moi/reference/nonlinear/#Types","page":"Nonlinear programming","title":"Types","text":"","category":"section"},{"location":"moi/reference/nonlinear/","page":"Nonlinear programming","title":"Nonlinear programming","text":"AbstractNLPEvaluator\nNLPBoundsPair\nNLPBlockData","category":"page"},{"location":"moi/reference/nonlinear/#MathOptInterface.AbstractNLPEvaluator","page":"Nonlinear programming","title":"MathOptInterface.AbstractNLPEvaluator","text":"AbstractNLPEvaluator\n\nAbstract supertype for the callback object that is used to query function values, derivatives, and expression graphs.\n\nIt is used in NLPBlockData.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/nonlinear/#MathOptInterface.NLPBoundsPair","page":"Nonlinear programming","title":"MathOptInterface.NLPBoundsPair","text":"NLPBoundsPair(lower::Float64, upper::Float64)\n\nA struct holding a pair of lower and upper bounds.\n\n-Inf and Inf can be used to indicate no lower or upper bound, respectively.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/nonlinear/#MathOptInterface.NLPBlockData","page":"Nonlinear programming","title":"MathOptInterface.NLPBlockData","text":"struct NLPBlockData\n constraint_bounds::Vector{NLPBoundsPair}\n evaluator::AbstractNLPEvaluator\n has_objective::Bool\nend\n\nA struct encoding a set of nonlinear constraints of the form lb le g(x) le ub and, if has_objective == true, a nonlinear objective function f(x).\n\nNonlinear objectives override any objective set by using the ObjectiveFunction attribute.\n\nThe evaluator is a callback object that is used to query function values, derivatives, and expression graphs. If has_objective == false, then it is an error to query properties of the objective function, and in Hessian-of-the-Lagrangian queries, σ must be set to zero.\n\nnote: Note\nThroughout the evaluator, all variables are ordered according to ListOfVariableIndices. Hence, MOI copies of nonlinear problems must not re-order variables.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/nonlinear/#Attributes","page":"Nonlinear programming","title":"Attributes","text":"","category":"section"},{"location":"moi/reference/nonlinear/","page":"Nonlinear programming","title":"Nonlinear programming","text":"NLPBlock\nNLPBlockDual\nNLPBlockDualStart","category":"page"},{"location":"moi/reference/nonlinear/#MathOptInterface.NLPBlock","page":"Nonlinear programming","title":"MathOptInterface.NLPBlock","text":"NLPBlock()\n\nAn AbstractModelAttribute that stores an NLPBlockData, representing a set of nonlinear constraints, and optionally a nonlinear objective.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/nonlinear/#MathOptInterface.NLPBlockDual","page":"Nonlinear programming","title":"MathOptInterface.NLPBlockDual","text":"NLPBlockDual(result_index::Int = 1)\n\nAn AbstractModelAttribute for the Lagrange multipliers on the constraints from the NLPBlock in result result_index.\n\nIf result_index is omitted, it is 1 by default.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/nonlinear/#MathOptInterface.NLPBlockDualStart","page":"Nonlinear programming","title":"MathOptInterface.NLPBlockDualStart","text":"NLPBlockDualStart()\n\nAn AbstractModelAttribute for the initial assignment of the Lagrange multipliers on the constraints from the NLPBlock that the solver may use to warm-start the solve.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/nonlinear/#Functions","page":"Nonlinear programming","title":"Functions","text":"","category":"section"},{"location":"moi/reference/nonlinear/","page":"Nonlinear programming","title":"Nonlinear programming","text":"initialize\nfeatures_available\neval_objective\neval_constraint\neval_objective_gradient\njacobian_structure\neval_constraint_gradient\nconstraint_gradient_structure\neval_constraint_jacobian\neval_constraint_jacobian_product\neval_constraint_jacobian_transpose_product\nhessian_lagrangian_structure\nhessian_objective_structure\nhessian_constraint_structure\neval_hessian_objective\neval_hessian_constraint\neval_hessian_lagrangian\neval_hessian_lagrangian_product\nobjective_expr\nconstraint_expr","category":"page"},{"location":"moi/reference/nonlinear/#MathOptInterface.initialize","page":"Nonlinear programming","title":"MathOptInterface.initialize","text":"initialize(\n d::AbstractNLPEvaluator,\n requested_features::Vector{Symbol},\n)::Nothing\n\nInitialize d with the set of features in requested_features. Check features_available before calling initialize to see what features are supported by d.\n\nwarning: Warning\nThis method must be called before any other methods.\n\nFeatures\n\nThe following features are defined:\n\n:Grad: enables eval_objective_gradient\n:Jac: enables eval_constraint_jacobian\n:JacVec: enables eval_constraint_jacobian_product and eval_constraint_jacobian_transpose_product\n:Hess: enables eval_hessian_lagrangian\n:HessVec: enables eval_hessian_lagrangian_product\n:ExprGraph: enables objective_expr and constraint_expr.\n\nIn all cases, including when requested_features is empty, eval_objective and eval_constraint are supported.\n\nExamples\n\nMOI.initialize(d, Symbol[])\nMOI.initialize(d, [:ExprGraph])\nMOI.initialize(d, MOI.features_available(d))\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.features_available","page":"Nonlinear programming","title":"MathOptInterface.features_available","text":"features_available(d::AbstractNLPEvaluator)::Vector{Symbol}\n\nReturns the subset of features available for this problem instance.\n\nSee initialize for the list of defined features.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_objective","page":"Nonlinear programming","title":"MathOptInterface.eval_objective","text":"eval_objective(d::AbstractNLPEvaluator, x::AbstractVector{T})::T where {T}\n\nEvaluate the objective f(x), returning a scalar value.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_constraint","page":"Nonlinear programming","title":"MathOptInterface.eval_constraint","text":"eval_constraint(d::AbstractNLPEvaluator,\n g::AbstractVector{T},\n x::AbstractVector{T},\n)::Nothing where {T}\n\nGiven a set of vector-valued constraints l le g(x) le u, evaluate the constraint function g(x), storing the result in the vector g.\n\nImplementation notes\n\nWhen implementing this method, you must not assume that g is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_objective_gradient","page":"Nonlinear programming","title":"MathOptInterface.eval_objective_gradient","text":"eval_objective_gradient(\n d::AbstractNLPEvaluator,\n grad::AbstractVector{T},\n x::AbstractVector{T},\n)::Nothing where {T}\n\nEvaluate the gradient of the objective function grad = nabla f(x) as a dense vector, storing the result in the vector grad.\n\nImplementation notes\n\nWhen implementing this method, you must not assume that grad is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.jacobian_structure","page":"Nonlinear programming","title":"MathOptInterface.jacobian_structure","text":"jacobian_structure(d::AbstractNLPEvaluator)::Vector{Tuple{Int64,Int64}}\n\nReturns a vector of tuples, (row, column), where each indicates the position of a structurally nonzero element in the Jacobian matrix: J_g(x) = left beginarrayc nabla g_1(x) nabla g_2(x) vdots nabla g_m(x) endarrayright where g_i is the itextth component of the nonlinear constraints g(x).\n\nThe indices are not required to be sorted and can contain duplicates, in which case the solver should combine the corresponding elements by adding them together.\n\nThe sparsity structure is assumed to be independent of the point x.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_constraint_gradient","page":"Nonlinear programming","title":"MathOptInterface.eval_constraint_gradient","text":"eval_constraint_gradient(\n d::AbstractNLPEvaluator,\n ∇g::AbstractVector{T},\n x::AbstractVector{T},\n i::Int,\n)::Nothing where {T}\n\nEvaluate the gradient of constraint i, nabla g_i(x), and store the non-zero values in ∇g, corresponding to the structure returned by constraint_gradient_structure.\n\nImplementation notes\n\nWhen implementing this method, you must not assume that ∇g is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.constraint_gradient_structure","page":"Nonlinear programming","title":"MathOptInterface.constraint_gradient_structure","text":"constraint_gradient_structure(d::AbstractNLPEvaluator, i::Int)::Vector{Int64}\n\nReturns a vector of indices, where each element indicates the position of a structurally nonzero element in the gradient of constraint nabla g_i(x).\n\nThe indices are not required to be sorted and can contain duplicates, in which case the solver should combine the corresponding elements by adding them together.\n\nThe sparsity structure is assumed to be independent of the point x.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_constraint_jacobian","page":"Nonlinear programming","title":"MathOptInterface.eval_constraint_jacobian","text":"eval_constraint_jacobian(d::AbstractNLPEvaluator,\n J::AbstractVector{T},\n x::AbstractVector{T},\n)::Nothing where {T}\n\nEvaluates the sparse Jacobian matrix J_g(x) = left beginarrayc nabla g_1(x) nabla g_2(x) vdots nabla g_m(x) endarrayright.\n\nThe result is stored in the vector J in the same order as the indices returned by jacobian_structure.\n\nImplementation notes\n\nWhen implementing this method, you must not assume that J is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_constraint_jacobian_product","page":"Nonlinear programming","title":"MathOptInterface.eval_constraint_jacobian_product","text":"eval_constraint_jacobian_product(\n d::AbstractNLPEvaluator,\n y::AbstractVector{T},\n x::AbstractVector{T},\n w::AbstractVector{T},\n)::Nothing where {T}\n\nComputes the Jacobian-vector product y = J_g(x)w, storing the result in the vector y.\n\nThe vectors have dimensions such that length(w) == length(x), and length(y) is the number of nonlinear constraints.\n\nImplementation notes\n\nWhen implementing this method, you must not assume that y is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_constraint_jacobian_transpose_product","page":"Nonlinear programming","title":"MathOptInterface.eval_constraint_jacobian_transpose_product","text":"eval_constraint_jacobian_transpose_product(\n d::AbstractNLPEvaluator,\n y::AbstractVector{T},\n x::AbstractVector{T},\n w::AbstractVector{T},\n)::Nothing where {T}\n\nComputes the Jacobian-transpose-vector product y = J_g(x)^Tw, storing the result in the vector y.\n\nThe vectors have dimensions such that length(y) == length(x), and length(w) is the number of nonlinear constraints.\n\nImplementation notes\n\nWhen implementing this method, you must not assume that y is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.hessian_lagrangian_structure","page":"Nonlinear programming","title":"MathOptInterface.hessian_lagrangian_structure","text":"hessian_lagrangian_structure(\n d::AbstractNLPEvaluator,\n)::Vector{Tuple{Int64,Int64}}\n\nReturns a vector of tuples, (row, column), where each indicates the position of a structurally nonzero element in the Hessian-of-the-Lagrangian matrix: nabla^2 f(x) + sum_i=1^m nabla^2 g_i(x).\n\nThe indices are not required to be sorted and can contain duplicates, in which case the solver should combine the corresponding elements by adding them together.\n\nAny mix of lower and upper-triangular indices is valid. Elements (i,j) and (j,i), if both present, should be treated as duplicates.\n\nThe sparsity structure is assumed to be independent of the point x.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.hessian_objective_structure","page":"Nonlinear programming","title":"MathOptInterface.hessian_objective_structure","text":"hessian_objective_structure(\n d::AbstractNLPEvaluator,\n)::Vector{Tuple{Int64,Int64}}\n\nReturns a vector of tuples, (row, column), where each indicates the position of a structurally nonzero element in the Hessian matrix: nabla^2 f(x).\n\nThe indices are not required to be sorted and can contain duplicates, in which case the solver should combine the corresponding elements by adding them together.\n\nAny mix of lower and upper-triangular indices is valid. Elements (i,j) and (j,i), if both present, should be treated as duplicates.\n\nThe sparsity structure is assumed to be independent of the point x.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.hessian_constraint_structure","page":"Nonlinear programming","title":"MathOptInterface.hessian_constraint_structure","text":"hessian_constraint_structure(\n d::AbstractNLPEvaluator,\n i::Int64,\n)::Vector{Tuple{Int64,Int64}}\n\nReturns a vector of tuples, (row, column), where each indicates the position of a structurally nonzero element in the Hessian matrix: nabla^2 g_i(x).\n\nThe indices are not required to be sorted and can contain duplicates, in which case the solver should combine the corresponding elements by adding them together.\n\nAny mix of lower and upper-triangular indices is valid. Elements (i,j) and (j,i), if both present, should be treated as duplicates.\n\nThe sparsity structure is assumed to be independent of the point x.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_hessian_objective","page":"Nonlinear programming","title":"MathOptInterface.eval_hessian_objective","text":"eval_hessian_objective(\n d::AbstractNLPEvaluator,\n H::AbstractVector{T},\n x::AbstractVector{T},\n)::Nothing where {T}\n\nThis function computes the sparse Hessian matrix: nabla^2 f(x), storing the result in the vector H in the same order as the indices returned by hessian_objective_structure.\n\nImplementation notes\n\nWhen implementing this method, you must not assume that H is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_hessian_constraint","page":"Nonlinear programming","title":"MathOptInterface.eval_hessian_constraint","text":"eval_hessian_constraint(\n d::AbstractNLPEvaluator,\n H::AbstractVector{T},\n x::AbstractVector{T},\n i::Int64,\n)::Nothing where {T}\n\nThis function computes the sparse Hessian matrix: nabla^2 g_i(x), storing the result in the vector H in the same order as the indices returned by hessian_constraint_structure.\n\nImplementation notes\n\nWhen implementing this method, you must not assume that H is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_hessian_lagrangian","page":"Nonlinear programming","title":"MathOptInterface.eval_hessian_lagrangian","text":"eval_hessian_lagrangian(\n d::AbstractNLPEvaluator,\n H::AbstractVector{T},\n x::AbstractVector{T},\n σ::T,\n μ::AbstractVector{T},\n)::Nothing where {T}\n\nGiven scalar weight σ and vector of constraint weights μ, this function computes the sparse Hessian-of-the-Lagrangian matrix: sigmanabla^2 f(x) + sum_i=1^m mu_i nabla^2 g_i(x), storing the result in the vector H in the same order as the indices returned by hessian_lagrangian_structure.\n\nImplementation notes\n\nWhen implementing this method, you must not assume that H is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.eval_hessian_lagrangian_product","page":"Nonlinear programming","title":"MathOptInterface.eval_hessian_lagrangian_product","text":"eval_hessian_lagrangian_product(\n d::AbstractNLPEvaluator,\n h::AbstractVector{T},\n x::AbstractVector{T},\n v::AbstractVector{T},\n σ::T,\n μ::AbstractVector{T},\n)::Nothing where {T}\n\nGiven scalar weight σ and vector of constraint weights μ, computes the Hessian-of-the-Lagrangian-vector product h = left(sigmanabla^2 f(x) + sum_i=1^m mu_i nabla^2 g_i(x)right)v, storing the result in the vector h.\n\nThe vectors have dimensions such that length(h) == length(x) == length(v).\n\nImplementation notes\n\nWhen implementing this method, you must not assume that h is Vector{Float64}, but you may assume that it supports setindex! and length. For example, it may be the view of a vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.objective_expr","page":"Nonlinear programming","title":"MathOptInterface.objective_expr","text":"objective_expr(d::AbstractNLPEvaluator)::Expr\n\nReturns a Julia Expr object representing the expression graph of the objective function.\n\nFormat\n\nThe expression has a number of limitations, compared with arbitrary Julia expressions:\n\nAll sums and products are flattened out as simple Expr(:+, ...) and Expr(:*, ...) objects.\nAll decision variables must be of the form Expr(:ref, :x, MOI.VariableIndex(i)), where i is the ith variable in ListOfVariableIndices.\nThere are currently no restrictions on recognized functions; typically these will be built-in Julia functions like ^, exp, log, cos, tan, sqrt, etc., but modeling interfaces may choose to extend these basic functions, or error if they encounter unsupported functions.\n\nExamples\n\nThe expression x_1+sin(x_2exp(x_3)) is represented as\n\n:(x[MOI.VariableIndex(1)] + sin(x[MOI.VariableIndex(2)] / exp(x[MOI.VariableIndex[3]])))\n\nor equivalently\n\nExpr(\n :call,\n :+,\n Expr(:ref, :x, MOI.VariableIndex(1)),\n Expr(\n :call,\n :/,\n Expr(:call, :sin, Expr(:ref, :x, MOI.VariableIndex(2))),\n Expr(:call, :exp, Expr(:ref, :x, MOI.VariableIndex(3))),\n ),\n)\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/nonlinear/#MathOptInterface.constraint_expr","page":"Nonlinear programming","title":"MathOptInterface.constraint_expr","text":"constraint_expr(d::AbstractNLPEvaluator, i::Integer)::Expr\n\nReturns a Julia Expr object representing the expression graph for the itextth nonlinear constraint.\n\nFormat\n\nThe format is the same as objective_expr, with an additional comparison operator indicating the sense of and bounds on the constraint.\n\nFor single-sided comparisons, the body of the constraint must be on the left-hand side, and the right-hand side must be a constant.\n\nFor double-sided comparisons (that is, l le f(x) le u), the body of the constraint must be in the middle, and the left- and right-hand sides must be constants.\n\nThe bounds on the constraints must match the NLPBoundsPairs passed to NLPBlockData.\n\nExamples\n\n:(x[MOI.VariableIndex(1)]^2 <= 1.0)\n:(x[MOI.VariableIndex(1)]^2 >= 2.0)\n:(x[MOI.VariableIndex(1)]^2 == 3.0)\n:(4.0 <= x[MOI.VariableIndex(1)]^2 <= 5.0)\n\n\n\n\n\n","category":"function"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"EditURL = \"https://github.com/jump-dev/Cbc.jl/blob/v1.2.0/README.md\"","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"(Image: )","category":"page"},{"location":"packages/Cbc/#Cbc.jl","page":"jump-dev/Cbc.jl","title":"Cbc.jl","text":"","category":"section"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"(Image: Build Status) (Image: codecov)","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"Cbc.jl is a wrapper for the COIN-OR Branch and Cut (Cbc) solver.","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"The wrapper has two components:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"a thin wrapper around the complete C API\nan interface to MathOptInterface","category":"page"},{"location":"packages/Cbc/#Affiliation","page":"jump-dev/Cbc.jl","title":"Affiliation","text":"","category":"section"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"This wrapper is maintained by the JuMP community and is not a COIN-OR project.","category":"page"},{"location":"packages/Cbc/#License","page":"jump-dev/Cbc.jl","title":"License","text":"","category":"section"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"Cbc.jl is licensed under the MIT License.","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"The underlying solver, coin-or/Cbc, is licensed under the Eclipse public license.","category":"page"},{"location":"packages/Cbc/#Installation","page":"jump-dev/Cbc.jl","title":"Installation","text":"","category":"section"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"Install Cbc using Pkg.add:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"import Pkg\nPkg.add(\"Cbc\")","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"In addition to installing the Cbc.jl package, this will also download and install the Cbc binaries. You do not need to install Cbc separately.","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"To use a custom binary, read the Custom solver binaries section of the JuMP documentation.","category":"page"},{"location":"packages/Cbc/#Use-with-JuMP","page":"jump-dev/Cbc.jl","title":"Use with JuMP","text":"","category":"section"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"To use Cbc with JuMP, use Cbc.Optimizer:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"using JuMP, Cbc\nmodel = Model(Cbc.Optimizer)\nset_attribute(model, \"logLevel\", 1)","category":"page"},{"location":"packages/Cbc/#MathOptInterface-API","page":"jump-dev/Cbc.jl","title":"MathOptInterface API","text":"","category":"section"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"The COIN Branch-and-Cut (Cbc) optimizer supports the following constraints and attributes.","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"List of supported objective functions:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"List of supported variable types:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"MOI.Reals","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"List of supported constraint types:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"MOI.ScalarAffineFunction{Float64} in MOI.EqualTo{Float64}\nMOI.ScalarAffineFunction{Float64} in MOI.GreaterThan{Float64}\nMOI.ScalarAffineFunction{Float64} in MOI.Interval{Float64}\nMOI.ScalarAffineFunction{Float64} in MOI.LessThan{Float64}\nMOI.VariableIndex in MOI.EqualTo{Float64}\nMOI.VariableIndex in MOI.GreaterThan{Float64}\nMOI.VariableIndex in MOI.Integer\nMOI.VariableIndex in MOI.Interval{Float64}\nMOI.VariableIndex in MOI.LessThan{Float64}\nMOI.VariableIndex in MOI.ZeroOne\nMOI.VectorOfVariables in MOI.SOS1{Float64}\nMOI.VectorOfVariables in MOI.SOS2{Float64}","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"List of supported model attributes:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"Cbc.Status\nCbc.SecondaryStatus\nMOI.DualStatus\nMOI.NodeCount\nMOI.NumberOfVariables\nMOI.ObjectiveBound\nMOI.ObjectiveSense\nMOI.ObjectiveValue\nMOI.PrimalStatus\nMOI.RelativeGap\nMOI.ResultCount\nMOI.SolveTimeSec\nMOI.TerminationStatus","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"List of supported optimizer attributes:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"Cbc.SetVariableNames\nMOI.AbsoluteGapTolerance\nMOI.NumberOfThreads\nMOI.RawOptimizerAttribute\nMOI.RelativeGapTolerance\nMOI.Silent\nMOI.SolverName\nMOI.SolverVersion\nMOI.TimeLimitSec","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"List of supported variable attributes:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"MOI.VariablePrimal\nMOI.VariablePrimalStart\nMOI.VariableName","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"List of supported constraint attributes:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"MOI.ConstraintPrimal","category":"page"},{"location":"packages/Cbc/#Options","page":"jump-dev/Cbc.jl","title":"Options","text":"","category":"section"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"Options are, unfortunately, not well documented.","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"The following options are likely to be the most useful:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"Parameter Example Explanation\nseconds 60.0 Solution timeout limit\nlogLevel 2 Set to 0 to disable solution output\nmaxSolutions 1 Terminate after this many feasible solutions have been found\nmaxNodes 1 Terminate after this many branch-and-bound nodes have been evaluated\nallowableGap 0.05 Terminate after optimality gap is less than this value (on an absolute scale)\nratioGap 0.05 Terminate after optimality gap is smaller than this relative fraction\nthreads 1 Set the number of threads to use for parallel branch & bound","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"The complete list of parameters can be found by running the cbc executable and typing ? at the prompt.","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"Start the cbc executable from Julia as follows:","category":"page"},{"location":"packages/Cbc/","page":"jump-dev/Cbc.jl","title":"jump-dev/Cbc.jl","text":"using Cbc_jll\nCbc_jll.cbc() do exe\n run(`$(exe)`)\nend","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"EditURL = \"geographic_clustering.jl\"","category":"page"},{"location":"tutorials/linear/geographic_clustering/#Geographical-clustering","page":"Geographical clustering","title":"Geographical clustering","text":"","category":"section"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"This tutorial was originally contributed by Matthew Helm and Mathieu Tanneau.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"The goal of this exercise is to cluster n cities into k groups, minimizing the total pairwise distance between cities and ensuring that the variance in the total populations of each group is relatively small.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"This tutorial uses the following packages:","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"using JuMP\nimport DataFrames\nimport HiGHS\nimport LinearAlgebra","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"For this example, we'll use the 20 most populous cities in the United States.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"cities = DataFrames.DataFrame(\n Union{String,Float64}[\n \"New York, NY\" 8.405 40.7127 -74.0059\n \"Los Angeles, CA\" 3.884 34.0522 -118.2436\n \"Chicago, IL\" 2.718 41.8781 -87.6297\n \"Houston, TX\" 2.195 29.7604 -95.3698\n \"Philadelphia, PA\" 1.553 39.9525 -75.1652\n \"Phoenix, AZ\" 1.513 33.4483 -112.0740\n \"San Antonio, TX\" 1.409 29.4241 -98.4936\n \"San Diego, CA\" 1.355 32.7157 -117.1610\n \"Dallas, TX\" 1.257 32.7766 -96.7969\n \"San Jose, CA\" 0.998 37.3382 -121.8863\n \"Austin, TX\" 0.885 30.2671 -97.7430\n \"Indianapolis, IN\" 0.843 39.7684 -86.1580\n \"Jacksonville, FL\" 0.842 30.3321 -81.6556\n \"San Francisco, CA\" 0.837 37.7749 -122.4194\n \"Columbus, OH\" 0.822 39.9611 -82.9987\n \"Charlotte, NC\" 0.792 35.2270 -80.8431\n \"Fort Worth, TX\" 0.792 32.7554 -97.3307\n \"Detroit, MI\" 0.688 42.3314 -83.0457\n \"El Paso, TX\" 0.674 31.7775 -106.4424\n \"Memphis, TN\" 0.653 35.1495 -90.0489\n ],\n [\"city\", \"population\", \"lat\", \"lon\"],\n)","category":"page"},{"location":"tutorials/linear/geographic_clustering/#Model-Specifics","page":"Geographical clustering","title":"Model Specifics","text":"","category":"section"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"We will cluster these 20 cities into 3 different groups and we will assume that the ideal or target population P for a group is simply the total population of the 20 cities divided by 3:","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"n = size(cities, 1)\nk = 3\nP = sum(cities.population) / k","category":"page"},{"location":"tutorials/linear/geographic_clustering/#Obtaining-the-distances-between-each-city","page":"Geographical clustering","title":"Obtaining the distances between each city","text":"","category":"section"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"Let's compute the pairwise Haversine distance between each of the cities in our data set and store the result in a variable we'll call dm:","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"\"\"\"\n haversine(lat1, long1, lat2, long2, r = 6372.8)\n\nCompute the haversine distance between two points on a sphere of radius `r`,\nwhere the points are given by the latitude/longitude pairs `lat1/long1` and\n`lat2/long2` (in degrees).\n\"\"\"\nfunction haversine(lat1, long1, lat2, long2, r = 6372.8)\n lat1, long1 = deg2rad(lat1), deg2rad(long1)\n lat2, long2 = deg2rad(lat2), deg2rad(long2)\n hav(a, b) = sin((b - a) / 2)^2\n inner_term = hav(lat1, lat2) + cos(lat1) * cos(lat2) * hav(long1, long2)\n d = 2 * r * asin(sqrt(inner_term))\n # Round distance to nearest kilometer.\n return round(Int, d)\nend","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"Our distance matrix is symmetric so we'll convert it to a LowerTriangular matrix so that we can better interpret the objective value of our model:","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"dm = LinearAlgebra.LowerTriangular([\n haversine(cities.lat[i], cities.lon[i], cities.lat[j], cities.lon[j])\n for i in 1:n, j in 1:n\n])","category":"page"},{"location":"tutorials/linear/geographic_clustering/#Build-the-model","page":"Geographical clustering","title":"Build the model","text":"","category":"section"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"Now that we have the basics taken care of, we can set up our model, create decision variables, add constraints, and then solve.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"First, we'll set up a model that leverages the Cbc solver. Next, we'll set up a binary variable x_ik that takes the value 1 if city i is in group k and 0 otherwise. Each city must be in a group, so we'll add the constraint sum_k x_ik = 1 for every i.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"model = Model(HiGHS.Optimizer)\nset_silent(model)\n@variable(model, x[1:n, 1:k], Bin)\n@constraint(model, [i = 1:n], sum(x[i, :]) == 1);\n# To reduce symmetry, we fix the first city to belong to the first group.\nfix(x[1, 1], 1; force = true)","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"The total population of a group k is Q_k = sum_ix_ikq_i where q_i is simply the i-th value from the population column in our cities DataFrame. Let's add constraints so that alpha leq (Q_k - P) leq beta. We'll set alpha equal to -3 million and beta equal to 3. By adjusting these thresholds you'll find that there is a tradeoff between having relatively even populations between groups and having geographically close cities within each group. In other words, the larger the absolute values of alpha and beta, the closer together the cities in a group will be but the variance between the group populations will be higher.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"@variable(model, -3 <= population_diff[1:k] <= 3)\n@constraint(model, population_diff .== x' * cities.population .- P)","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"Now we need to add one last binary variable z_ij to our model that we'll use to compute the total distance between the cities in our groups, defined as sum_ijd_ijz_ij. Variable z_ij will equal 1 if cities i and j are in the same group, and 0 if they are not in the same group.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"To ensure that z_ij = 1 if and only if cities i and j are in the same group, we add the constraints z_ij geq x_ik + x_jk - 1 for every pair ij and every k:","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"@variable(model, z[i = 1:n, j = 1:i], Bin)\nfor k in 1:k, i in 1:n, j in 1:i\n @constraint(model, z[i, j] >= x[i, k] + x[j, k] - 1)\nend","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"We can now add an objective to our model which will simply be to minimize the dot product of z and our distance matrix, dm.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"@objective(model, Min, sum(dm[i, j] * z[i, j] for i in 1:n, j in 1:i));\nnothing #hide","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"We can then call optimize! and review the results.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"optimize!(model)","category":"page"},{"location":"tutorials/linear/geographic_clustering/#Reviewing-the-Results","page":"Geographical clustering","title":"Reviewing the Results","text":"","category":"section"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"Now that we have results, we can add a column to our cities DataFrame for the group and then loop through our x variable to assign each city to its group. Once we have that, we can look at the total population for each group and also look at the cities in each group to verify that they are grouped by geographic proximity.","category":"page"},{"location":"tutorials/linear/geographic_clustering/","page":"Geographical clustering","title":"Geographical clustering","text":"cities.group = zeros(n)\n\nfor i in 1:n, j in 1:k\n if round(Int, value(x[i, j])) == 1\n cities.group[i] = j\n end\nend\n\nfor group in DataFrames.groupby(cities, :group)\n @show group\n println(\"\")\n @show sum(group.population)\n println(\"\")\nend","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"CurrentModule = JuMP\nDocTestSetup = quote\n using JuMP\nend\nDocTestFilters = [r\"≤|<=\", r\"≥|>=\", r\" == | = \", r\" ∈ | in \", r\"MathOptInterface|MOI\"]","category":"page"},{"location":"manual/objective/#Objectives","page":"Objectives","title":"Objectives","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"This page describes macros and functions related to linear and quadratic objective functions only, unless otherwise indicated. For nonlinear objective functions, see Nonlinear Modeling.","category":"page"},{"location":"manual/objective/#Set-a-linear-objective","page":"Objectives","title":"Set a linear objective","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use the @objective macro to set a linear objective function.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use Min to create a minimization objective:","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Min, 2x + 1)\n2 x + 1","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use Max to create a maximization objective:","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Max, 2x + 1)\n2 x + 1","category":"page"},{"location":"manual/objective/#Set-a-quadratic-objective","page":"Objectives","title":"Set a quadratic objective","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use the @objective macro to set a quadratic objective function.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use ^2 to have a variable squared:","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Min, x^2 + 2x + 1)\nx² + 2 x + 1","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"You can also have bilinear terms between variables:","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> @objective(model, Max, x * y + x + y)\nx*y + x + y","category":"page"},{"location":"manual/objective/#Set-a-nonlinear-objective","page":"Objectives","title":"Set a nonlinear objective","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use the @objective macro to set a nonlinear objective function:","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x <= 1);\n\njulia> @objective(model, Max, log(x))\nlog(x)","category":"page"},{"location":"manual/objective/#Query-the-objective-function","page":"Objectives","title":"Query the objective function","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use objective_function to return the current objective function.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Min, 2x + 1)\n2 x + 1\n\njulia> objective_function(model)\n2 x + 1","category":"page"},{"location":"manual/objective/#Evaluate-the-objective-function-at-a-point","page":"Objectives","title":"Evaluate the objective function at a point","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use value to evaluate an objective function at a point specifying values for variables.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x[1:2]);\n\njulia> @objective(model, Min, 2x[1]^2 + x[1] + 0.5*x[2])\n2 x[1]² + x[1] + 0.5 x[2]\n\njulia> f = objective_function(model)\n2 x[1]² + x[1] + 0.5 x[2]\n\njulia> point = Dict(x[1] => 2.0, x[2] => 1.0);\n\njulia> value(z -> point[z], f)\n10.5","category":"page"},{"location":"manual/objective/#Query-the-objective-sense","page":"Objectives","title":"Query the objective sense","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use objective_sense to return the current objective sense.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Min, 2x + 1)\n2 x + 1\n\njulia> objective_sense(model)\nMIN_SENSE::OptimizationSense = 0","category":"page"},{"location":"manual/objective/#Modify-an-objective","page":"Objectives","title":"Modify an objective","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"To modify an objective, call @objective with the new objective function.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Min, 2x)\n2 x\n\njulia> @objective(model, Max, -2x)\n-2 x","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Alternatively, use set_objective_function.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Min, 2x)\n2 x\n\njulia> new_objective = @expression(model, -2 * x)\n-2 x\n\njulia> set_objective_function(model, new_objective)","category":"page"},{"location":"manual/objective/#Modify-an-objective-coefficient","page":"Objectives","title":"Modify an objective coefficient","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use set_objective_coefficient to modify an objective coefficient.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Min, 2x)\n2 x\n\njulia> set_objective_coefficient(model, x, 3)\n\njulia> objective_function(model)\n3 x","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"info: Info\nThere is no way to modify the coefficient of a quadratic term. Set a new objective instead.","category":"page"},{"location":"manual/objective/#Modify-the-objective-sense","page":"Objectives","title":"Modify the objective sense","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Use set_objective_sense to modify the objective sense.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Min, 2x)\n2 x\n\njulia> objective_sense(model)\nMIN_SENSE::OptimizationSense = 0\n\njulia> set_objective_sense(model, MAX_SENSE);\n\njulia> objective_sense(model)\nMAX_SENSE::OptimizationSense = 1","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Alternatively, call @objective and pass the existing objective function.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @objective(model, Min, 2x)\n2 x\n\njulia> @objective(model, Max, objective_function(model))\n2 x","category":"page"},{"location":"manual/objective/#Set-a-vector-valued-objective","page":"Objectives","title":"Set a vector-valued objective","text":"","category":"section"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Define a multi-objective optimization problem by passing a vector of objectives:","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x[1:2]);\n\njulia> @objective(model, Min, [1 + x[1], 2 * x[2]])\n2-element Vector{AffExpr}:\n x[1] + 1\n 2 x[2]\n\njulia> f = objective_function(model)\n2-element Vector{AffExpr}:\n x[1] + 1\n 2 x[2]","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"tip: Tip\nThe Multi-objective knapsack tutorial provides an example of solving a multi-objective integer program.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"In most cases, multi-objective optimization solvers will return multiple solutions, corresponding to points on the Pareto frontier. See Multiple solutions for information on how to query and work with multiple solutions.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Note that you must set a single objective sense, that is, you cannot have both minimization and maximization objectives. Work around this limitation by choosing Min and negating any objectives you want to maximize:","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x[1:2]);\n\njulia> @expression(model, obj1, 1 + x[1])\nx[1] + 1\n\njulia> @expression(model, obj2, 2 * x[1])\n2 x[1]\n\njulia> @objective(model, Min, [obj1, -obj2])\n2-element Vector{AffExpr}:\n x[1] + 1\n -2 x[1]","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"Defining your objectives as expressions allows flexibility in how you can solve variations of the same problem, with some objectives removed and constrained to be no worse that a fixed value.","category":"page"},{"location":"manual/objective/","page":"Objectives","title":"Objectives","text":"julia> model = Model();\n\njulia> @variable(model, x[1:2]);\n\njulia> @expression(model, obj1, 1 + x[1])\nx[1] + 1\n\njulia> @expression(model, obj2, 2 * x[1])\n2 x[1]\n\njulia> @expression(model, obj3, x[1] + x[2])\nx[1] + x[2]\n\njulia> @objective(model, Min, [obj1, obj2, obj3]) # Three-objective problem\n3-element Vector{AffExpr}:\n x[1] + 1\n 2 x[1]\n x[1] + x[2]\n\njulia> # optimize!(model), look at the solution, talk to stakeholders, then\n # decide you want to solve a new problem where the third objective is\n # removed and constrained to be better than 2.0.\n nothing\n\njulia> @objective(model, Min, [obj1, obj2]) # Two-objective problem\n2-element Vector{AffExpr}:\n x[1] + 1\n 2 x[1]\n\njulia> @constraint(model, obj3 <= 2.0)\nx[1] + x[2] ≤ 2","category":"page"},{"location":"moi/reference/callbacks/","page":"Callbacks","title":"Callbacks","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/reference/callbacks.md\"","category":"page"},{"location":"moi/reference/callbacks/","page":"Callbacks","title":"Callbacks","text":"CurrentModule = MathOptInterface\nDocTestSetup = quote\n import MathOptInterface as MOI\nend\nDocTestFilters = [r\"MathOptInterface|MOI\"]","category":"page"},{"location":"moi/reference/callbacks/#Callbacks","page":"Callbacks","title":"Callbacks","text":"","category":"section"},{"location":"moi/reference/callbacks/","page":"Callbacks","title":"Callbacks","text":"AbstractCallback\nAbstractSubmittable\nsubmit","category":"page"},{"location":"moi/reference/callbacks/#MathOptInterface.AbstractCallback","page":"Callbacks","title":"MathOptInterface.AbstractCallback","text":"abstract type AbstractCallback <: AbstractModelAttribute end\n\nAbstract type for a model attribute representing a callback function. The value set to subtypes of AbstractCallback is a function that may be called during optimize!. As optimize! is in progress, the result attributes (i.e, the attributes attr such that is_set_by_optimize(attr)) may not be accessible from the callback, hence trying to get result attributes might throw a OptimizeInProgress error.\n\nAt most one callback of each type can be registered. If an optimizer already has a function for a callback type, and the user registers a new function, then the old one is replaced.\n\nThe value of the attribute should be a function taking only one argument, commonly called callback_data, that can be used for instance in LazyConstraintCallback, HeuristicCallback and UserCutCallback.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.AbstractSubmittable","page":"Callbacks","title":"MathOptInterface.AbstractSubmittable","text":"AbstractSubmittable\n\nAbstract supertype for objects that can be submitted to the model.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.submit","page":"Callbacks","title":"MathOptInterface.submit","text":"submit(\n optimizer::AbstractOptimizer,\n sub::AbstractSubmittable,\n values...,\n)::Nothing\n\nSubmit values to the submittable sub of the optimizer optimizer.\n\nAn UnsupportedSubmittable error is thrown if model does not support the attribute attr (see supports) and a SubmitNotAllowed error is thrown if it supports the submittable sub but it cannot be submitted.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/callbacks/#Attributes","page":"Callbacks","title":"Attributes","text":"","category":"section"},{"location":"moi/reference/callbacks/","page":"Callbacks","title":"Callbacks","text":"CallbackNodeStatus\nCallbackVariablePrimal\nCallbackNodeStatusCode\nCALLBACK_NODE_STATUS_INTEGER\nCALLBACK_NODE_STATUS_FRACTIONAL\nCALLBACK_NODE_STATUS_UNKNOWN","category":"page"},{"location":"moi/reference/callbacks/#MathOptInterface.CallbackNodeStatus","page":"Callbacks","title":"MathOptInterface.CallbackNodeStatus","text":"CallbackNodeStatus(callback_data)\n\nAn optimizer attribute describing the (in)feasibility of the primal solution available from CallbackVariablePrimal during a callback identified by callback_data.\n\nReturns a CallbackNodeStatusCode Enum.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.CallbackVariablePrimal","page":"Callbacks","title":"MathOptInterface.CallbackVariablePrimal","text":"CallbackVariablePrimal(callback_data)\n\nA variable attribute for the assignment to some primal variable's value during the callback identified by callback_data.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.CallbackNodeStatusCode","page":"Callbacks","title":"MathOptInterface.CallbackNodeStatusCode","text":"CallbackNodeStatusCode\n\nAn Enum of possible return values from calling get with CallbackNodeStatus.\n\nValues\n\nPossible values are:\n\nCALLBACK_NODE_STATUS_INTEGER: the primal solution available from CallbackVariablePrimal is integer feasible.\nCALLBACK_NODE_STATUS_FRACTIONAL: the primal solution available from CallbackVariablePrimal is integer infeasible.\nCALLBACK_NODE_STATUS_UNKNOWN: the primal solution available from CallbackVariablePrimal might be integer feasible or infeasible.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.CALLBACK_NODE_STATUS_INTEGER","page":"Callbacks","title":"MathOptInterface.CALLBACK_NODE_STATUS_INTEGER","text":"CALLBACK_NODE_STATUS_INTEGER::CallbackNodeStatusCode\n\nAn instance of the CallbackNodeStatusCode enum.\n\nCALLBACK_NODE_STATUS_INTEGER: the primal solution available from CallbackVariablePrimal is integer feasible.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/callbacks/#MathOptInterface.CALLBACK_NODE_STATUS_FRACTIONAL","page":"Callbacks","title":"MathOptInterface.CALLBACK_NODE_STATUS_FRACTIONAL","text":"CALLBACK_NODE_STATUS_FRACTIONAL::CallbackNodeStatusCode\n\nAn instance of the CallbackNodeStatusCode enum.\n\nCALLBACK_NODE_STATUS_FRACTIONAL: the primal solution available from CallbackVariablePrimal is integer infeasible.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/callbacks/#MathOptInterface.CALLBACK_NODE_STATUS_UNKNOWN","page":"Callbacks","title":"MathOptInterface.CALLBACK_NODE_STATUS_UNKNOWN","text":"CALLBACK_NODE_STATUS_UNKNOWN::CallbackNodeStatusCode\n\nAn instance of the CallbackNodeStatusCode enum.\n\nCALLBACK_NODE_STATUS_UNKNOWN: the primal solution available from CallbackVariablePrimal might be integer feasible or infeasible.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/callbacks/#Lazy-constraints","page":"Callbacks","title":"Lazy constraints","text":"","category":"section"},{"location":"moi/reference/callbacks/","page":"Callbacks","title":"Callbacks","text":"LazyConstraintCallback\nLazyConstraint","category":"page"},{"location":"moi/reference/callbacks/#MathOptInterface.LazyConstraintCallback","page":"Callbacks","title":"MathOptInterface.LazyConstraintCallback","text":"LazyConstraintCallback() <: AbstractCallback\n\nThe callback can be used to reduce the feasible set given the current primal solution by submitting a LazyConstraint. For instance, it may be called at an incumbent of a mixed-integer problem. Note that there is no guarantee that the callback is called at every feasible primal solution.\n\nThe current primal solution is accessed through CallbackVariablePrimal. Trying to access other result attributes will throw OptimizeInProgress as discussed in AbstractCallback.\n\nExamples\n\nx = MOI.add_variables(optimizer, 8)\nMOI.set(optimizer, MOI.LazyConstraintCallback(), callback_data -> begin\n sol = MOI.get(optimizer, MOI.CallbackVariablePrimal(callback_data), x)\n if # should add a lazy constraint\n func = # computes function\n set = # computes set\n MOI.submit(optimizer, MOI.LazyConstraint(callback_data), func, set)\n end\nend)\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.LazyConstraint","page":"Callbacks","title":"MathOptInterface.LazyConstraint","text":"LazyConstraint(callback_data)\n\nLazy constraint func-in-set submitted as func, set. The optimal solution returned by VariablePrimal will satisfy all lazy constraints that have been submitted.\n\nThis can be submitted only from the LazyConstraintCallback. The field callback_data is a solver-specific callback type that is passed as the argument to the feasible solution callback.\n\nExamples\n\nSuppose x and y are VariableIndexs of optimizer. To add a LazyConstraint for 2x + 3y <= 1, write\n\nfunc = 2.0x + 3.0y\nset = MOI.LessThan(1.0)\nMOI.submit(optimizer, MOI.LazyConstraint(callback_data), func, set)\n\ninside a LazyConstraintCallback of data callback_data.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#User-cuts","page":"Callbacks","title":"User cuts","text":"","category":"section"},{"location":"moi/reference/callbacks/","page":"Callbacks","title":"Callbacks","text":"UserCutCallback\nUserCut","category":"page"},{"location":"moi/reference/callbacks/#MathOptInterface.UserCutCallback","page":"Callbacks","title":"MathOptInterface.UserCutCallback","text":"UserCutCallback() <: AbstractCallback\n\nThe callback can be used to submit UserCut given the current primal solution. For instance, it may be called at fractional (i.e., non-integer) nodes in the branch and bound tree of a mixed-integer problem. Note that there is not guarantee that the callback is called everytime the solver has an infeasible solution.\n\nThe infeasible solution is accessed through CallbackVariablePrimal. Trying to access other result attributes will throw OptimizeInProgress as discussed in AbstractCallback.\n\nExamples\n\nx = MOI.add_variables(optimizer, 8)\nMOI.set(optimizer, MOI.UserCutCallback(), callback_data -> begin\n sol = MOI.get(optimizer, MOI.CallbackVariablePrimal(callback_data), x)\n if # can find a user cut\n func = # computes function\n set = # computes set\n MOI.submit(optimizer, MOI.UserCut(callback_data), func, set)\n end\nend\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.UserCut","page":"Callbacks","title":"MathOptInterface.UserCut","text":"UserCut(callback_data)\n\nConstraint func-to-set suggested to help the solver detect the solution given by CallbackVariablePrimal as infeasible. The cut is submitted as func, set. Typically CallbackVariablePrimal will violate integrality constraints, and a cut would be of the form ScalarAffineFunction-in-LessThan or ScalarAffineFunction-in-GreaterThan. Note that, as opposed to LazyConstraint, the provided constraint cannot modify the feasible set, the constraint should be redundant, e.g., it may be a consequence of affine and integrality constraints.\n\nThis can be submitted only from the UserCutCallback. The field callback_data is a solver-specific callback type that is passed as the argument to the infeasible solution callback.\n\nNote that the solver may silently ignore the provided constraint.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#Heuristic-solutions","page":"Callbacks","title":"Heuristic solutions","text":"","category":"section"},{"location":"moi/reference/callbacks/","page":"Callbacks","title":"Callbacks","text":"HeuristicCallback\nHeuristicSolution\nHeuristicSolutionStatus\nHEURISTIC_SOLUTION_ACCEPTED\nHEURISTIC_SOLUTION_REJECTED\nHEURISTIC_SOLUTION_UNKNOWN","category":"page"},{"location":"moi/reference/callbacks/#MathOptInterface.HeuristicCallback","page":"Callbacks","title":"MathOptInterface.HeuristicCallback","text":"HeuristicCallback() <: AbstractCallback\n\nThe callback can be used to submit HeuristicSolution given the current primal solution. For example, it may be called at fractional (i.e., non-integer) nodes in the branch and bound tree of a mixed-integer problem. Note that there is no guarantee that the callback is called every time the solver has an infeasible solution.\n\nThe current primal solution is accessed through CallbackVariablePrimal. Trying to access other result attributes will throw OptimizeInProgress as discussed in AbstractCallback.\n\nExamples\n\nx = MOI.add_variables(optimizer, 8)\nMOI.set(optimizer, MOI.HeuristicCallback(), callback_data -> begin\n sol = MOI.get(optimizer, MOI.CallbackVariablePrimal(callback_data), x)\n if # can find a heuristic solution\n values = # computes heuristic solution\n MOI.submit(optimizer, MOI.HeuristicSolution(callback_data), x,\n values)\n end\nend\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.HeuristicSolution","page":"Callbacks","title":"MathOptInterface.HeuristicSolution","text":"HeuristicSolution(callback_data)\n\nHeuristically obtained feasible solution. The solution is submitted as variables, values where values[i] gives the value of variables[i], similarly to set. The submit call returns a HeuristicSolutionStatus indicating whether the provided solution was accepted or rejected.\n\nThis can be submitted only from the HeuristicCallback. The field callback_data is a solver-specific callback type that is passed as the argument to the heuristic callback.\n\nSome solvers require a complete solution, others only partial solutions.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.HeuristicSolutionStatus","page":"Callbacks","title":"MathOptInterface.HeuristicSolutionStatus","text":"HeuristicSolutionStatus\n\nAn Enum of possible return values for submit with HeuristicSolution. This informs whether the heuristic solution was accepted or rejected.\n\nValues\n\nPossible values are:\n\nHEURISTIC_SOLUTION_ACCEPTED: The heuristic solution was accepted\nHEURISTIC_SOLUTION_REJECTED: The heuristic solution was rejected\nHEURISTIC_SOLUTION_UNKNOWN: No information available on the acceptance\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/callbacks/#MathOptInterface.HEURISTIC_SOLUTION_ACCEPTED","page":"Callbacks","title":"MathOptInterface.HEURISTIC_SOLUTION_ACCEPTED","text":"HEURISTIC_SOLUTION_ACCEPTED::HeuristicSolutionStatus\n\nAn instance of the HeuristicSolutionStatus enum.\n\nHEURISTIC_SOLUTION_ACCEPTED: The heuristic solution was accepted\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/callbacks/#MathOptInterface.HEURISTIC_SOLUTION_REJECTED","page":"Callbacks","title":"MathOptInterface.HEURISTIC_SOLUTION_REJECTED","text":"HEURISTIC_SOLUTION_REJECTED::HeuristicSolutionStatus\n\nAn instance of the HeuristicSolutionStatus enum.\n\nHEURISTIC_SOLUTION_REJECTED: The heuristic solution was rejected\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/callbacks/#MathOptInterface.HEURISTIC_SOLUTION_UNKNOWN","page":"Callbacks","title":"MathOptInterface.HEURISTIC_SOLUTION_UNKNOWN","text":"HEURISTIC_SOLUTION_UNKNOWN::HeuristicSolutionStatus\n\nAn instance of the HeuristicSolutionStatus enum.\n\nHEURISTIC_SOLUTION_UNKNOWN: No information available on the acceptance\n\n\n\n\n\n","category":"constant"},{"location":"packages/SDDP/","page":"odow/SDDP.jl","title":"odow/SDDP.jl","text":"EditURL = \"https://github.com/odow/SDDP.jl/blob/v1.6.6/README.md\"","category":"page"},{"location":"packages/SDDP/","page":"odow/SDDP.jl","title":"odow/SDDP.jl","text":"\"logo\"","category":"page"},{"location":"packages/SDDP/#SDDP.jl","page":"odow/SDDP.jl","title":"SDDP.jl","text":"","category":"section"},{"location":"packages/SDDP/","page":"odow/SDDP.jl","title":"odow/SDDP.jl","text":"(Image: Build Status) (Image: codecov)","category":"page"},{"location":"packages/SDDP/","page":"odow/SDDP.jl","title":"odow/SDDP.jl","text":"SDDP.jl is a JuMP extension for solving large convex multistage stochastic programming problems using stochastic dual dynamic programming.","category":"page"},{"location":"packages/SDDP/#License","page":"odow/SDDP.jl","title":"License","text":"","category":"section"},{"location":"packages/SDDP/","page":"odow/SDDP.jl","title":"odow/SDDP.jl","text":"SDDP.jl is licensed under the MPL 2.0 license.","category":"page"},{"location":"packages/SDDP/#Documentation","page":"odow/SDDP.jl","title":"Documentation","text":"","category":"section"},{"location":"packages/SDDP/","page":"odow/SDDP.jl","title":"odow/SDDP.jl","text":"You can find the documentation at sddp.dev.","category":"page"},{"location":"packages/SDDP/#Help","page":"odow/SDDP.jl","title":"Help","text":"","category":"section"},{"location":"packages/SDDP/","page":"odow/SDDP.jl","title":"odow/SDDP.jl","text":"If you need help, please open a GitHub issue.","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"EditURL = \"https://github.com/plasmo-dev/Plasmo.jl/blob/v0.5.4/README.md\"","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"(Image: CI) (Image: codecov) (Image: ) (Image: DOI)","category":"page"},{"location":"packages/Plasmo/#Plasmo.jl","page":"plasmo-dev/Plasmo.jl","title":"Plasmo.jl","text":"","category":"section"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"Plasmo.jl (Platform for Scalable Modeling and Optimization) is a graph-based algebraic modeling framework that adopts a modular style to create mathematical optimization problems and manage distributed and hierarchical structures. The package has been developed as a JuMP extension and consequently supports most JuMP syntax and functions. ","category":"page"},{"location":"packages/Plasmo/#Overview","page":"plasmo-dev/Plasmo.jl","title":"Overview","text":"","category":"section"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"The core data structure in Plasmo.jl is the OptiGraph. The optigraph contains a set of optinodes which represent self-contained optimization problems and optiedges that represent coupling between optinodes (which produces an underlying hypergraph structure of optinodes and optiedges). Optigraphs can further be embedded within other optigraphs to create nested hierarchical graph structures. The graph structures obtained using Plasmo.jl can be used for simple model and data management, but they can also be used to perform graph partitioning or develop interfaces to structured optimization solvers.","category":"page"},{"location":"packages/Plasmo/#License","page":"plasmo-dev/Plasmo.jl","title":"License","text":"","category":"section"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"Plasmo is licensed under the MPL 2.0 license.","category":"page"},{"location":"packages/Plasmo/#Installation","page":"plasmo-dev/Plasmo.jl","title":"Installation","text":"","category":"section"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"Install Plasmo using Pkg.add:","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"import Pkg\nPkg.add(\"Plasmo\")","category":"page"},{"location":"packages/Plasmo/#Documentation","page":"plasmo-dev/Plasmo.jl","title":"Documentation","text":"","category":"section"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"The latest documentation is available through GitHub Pages. Additional examples can be found in the examples folder.","category":"page"},{"location":"packages/Plasmo/#Simple-Example","page":"plasmo-dev/Plasmo.jl","title":"Simple Example","text":"","category":"section"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"using Plasmo\nusing Ipopt\n\n#create an optigraph\ngraph = OptiGraph()\n\n#add nodes to an optigraph\n@optinode(graph, n1)\n@optinode(graph, n2)\n\n#add variables, constraints, and objective functions to nodes\n@variable(n1, 0 <= x <= 2)\n@variable(n1, 0 <= y <= 3)\n@constraint(n1, x+y <= 4)\n@objective(n1, Min, x)\n\n@variable(n2,x)\n@NLconstraint(n2, exp(x) >= 2)\n\n#add a linkconstraint to couple nodes\n@linkconstraint(graph, n1[:x] == n2[:x])\n\n#optimize with Ipopt\nset_optimizer(graph, Ipopt.Optimizer)\noptimize!(graph)\n\n#Print solution values\nprintln(\"n1[:x] = \", value(n1[:x]))\nprintln(\"n2[:x] = \", value(n2[:x]))","category":"page"},{"location":"packages/Plasmo/#Acknowledgments","page":"plasmo-dev/Plasmo.jl","title":"Acknowledgments","text":"","category":"section"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"This code is based on work supported by the following funding agencies:","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"U.S. Department of Energy (DOE), Office of Science, under Contract No. DE-AC02-06CH11357\nDOE Office of Electricity Delivery and Energy Reliability’s Advanced Grid Research and Development program at Argonne National Laboratory\nNational Science Foundation under award NSF-EECS-1609183 and under award CBET-1748516","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"The primary developer is Jordan Jalving (@jalving) with support from the following contributors. ","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"Victor Zavala (University of Wisconsin-Madison)\nYankai Cao (University of British Columbia)\nKibaek Kim (Argonne National Laboratory)\nSungho Shin (University of Wisconsin-Madison)","category":"page"},{"location":"packages/Plasmo/#Citing-Plasmo.jl","page":"plasmo-dev/Plasmo.jl","title":"Citing Plasmo.jl","text":"","category":"section"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"If you find Plasmo.jl useful for your work, you may cite the manuscript as:","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"@article{JalvingShinZavala2022,\n title={A Graph-Based Modeling Abstraction for Optimization: Concepts and Implementation in Plasmo.jl},\n author={Jordan Jalving and Sungho Shin and Victor M. Zavala},\n journal={Mathematical Programming Computation},\n year={2022},\n volume={14},\n pages={699 - 747}\n}","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"There is also a freely available pre-print:","category":"page"},{"location":"packages/Plasmo/","page":"plasmo-dev/Plasmo.jl","title":"plasmo-dev/Plasmo.jl","text":"@misc{JalvingShinZavala2020,\ntitle = {A Graph-Based Modeling Abstraction for Optimization: Concepts and Implementation in Plasmo.jl},\nauthor = {Jordan Jalving and Sungho Shin and Victor M. Zavala},\nyear = {2020},\neprint = {2006.05378},\narchivePrefix = {arXiv},\nprimaryClass = {math.OC}\n}","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"EditURL = \"https://github.com/jump-dev/MiniZinc.jl/blob/v0.3.4/README.md\"","category":"page"},{"location":"packages/MiniZinc/#MiniZinc.jl","page":"jump-dev/MiniZinc.jl","title":"MiniZinc.jl","text":"","category":"section"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"MiniZinc.jl is a wrapper for the MiniZinc constraint modeling language.","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"It provides a way to write MathOptInterface models to .mzn files, and a way to interact with libminizinc.","category":"page"},{"location":"packages/MiniZinc/#Affiliation","page":"jump-dev/MiniZinc.jl","title":"Affiliation","text":"","category":"section"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"This wrapper is maintained by the JuMP community and is not part of the MiniZinc project.","category":"page"},{"location":"packages/MiniZinc/#License","page":"jump-dev/MiniZinc.jl","title":"License","text":"","category":"section"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"MiniZinc.jl is licensed under the MIT License.","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"The underlying project, MiniZinc/libminizinc, is licensed under the MPL 2.0 license.","category":"page"},{"location":"packages/MiniZinc/#Install","page":"jump-dev/MiniZinc.jl","title":"Install","text":"","category":"section"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"Install MiniZinc.jl using the Julia package manager:","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"import Pkg\nPkg.add(\"MiniZinc\")","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"Windows","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"On Linux and macOS, this package automatically installs libminizinc. However, we're still working out problems with the install on Windows. To use MiniZinc.jl, you'll need to manually install a copy of libminizinc from minizinc.org or compile one yourself from MiniZinc/libminizinc.","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"To teach MiniZinc.jl where to look for libminizinc, set the JULIA_LIBMINIZINC_DIR environment variable. For example:","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"ENV[\"JULIA_LIBMINIZINC_DIR\"] = \"C:\\\\Program Files\\\\MiniZinc\"","category":"page"},{"location":"packages/MiniZinc/#Use-with-MathOptInterface","page":"jump-dev/MiniZinc.jl","title":"Use with MathOptInterface","text":"","category":"section"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"MiniZinc.jl supports the constraint programming sets defined in MathOptInterface, as well as (in)equality constraints.","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"The following example solves the following constraint program:","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"xᵢ ∈ {1, 2, 3} ∀i=1,2,3\nzⱼ ∈ {0, 1} ∀j=1,2\nz₁ <-> x₁ != x₂\nz₂ <-> x₂ != x₃\nz₁ + z₂ = 1","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"julia> import MiniZinc\n\njulia> import MathOptInterface as MOI\n\njulia> function main()\n model = MOI.Utilities.CachingOptimizer(\n MiniZinc.Model{Int}(),\n MiniZinc.Optimizer{Int}(\"chuffed\"),\n )\n # xᵢ ∈ {1, 2, 3} ∀i=1,2,3\n x = MOI.add_variables(model, 3)\n MOI.add_constraint.(model, x, MOI.Interval(1, 3))\n MOI.add_constraint.(model, x, MOI.Integer())\n # zⱼ ∈ {0, 1} ∀j=1,2\n z = MOI.add_variables(model, 2)\n MOI.add_constraint.(model, z, MOI.ZeroOne())\n # z₁ <-> x₁ != x₂\n MOI.add_constraint(\n model,\n MOI.VectorOfVariables([z[1], x[1], x[2]]),\n MOI.Reified(MOI.AllDifferent(2)),\n )\n # z₂ <-> x₂ != x₃\n MOI.add_constraint(\n model,\n MOI.VectorOfVariables([z[2], x[2], x[3]]),\n MOI.Reified(MOI.AllDifferent(2)),\n )\n # z₁ + z₂ = 1\n MOI.add_constraint(model, 1 * z[1] + x[2], MOI.EqualTo(1))\n MOI.optimize!(model)\n x_star = MOI.get(model, MOI.VariablePrimal(), x)\n z_star = MOI.get(model, MOI.VariablePrimal(), z)\n return x_star, z_star\n end\nmain (generic function with 1 method)\n\njulia> main()\n([1, 1, 3], [0, 1])","category":"page"},{"location":"packages/MiniZinc/#Use-with-JuMP","page":"jump-dev/MiniZinc.jl","title":"Use with JuMP","text":"","category":"section"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"You can also call MiniZinc from JuMP, using any solver that libminizinc supports. By default, MiniZinc.jl is compiled with \"highs\":","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"using JuMP\nimport MiniZinc\nmodel = Model(() -> MiniZinc.Optimizer{Float64}(\"highs\"))\n@variable(model, 1 <= x[1:3] <= 3, Int)\n@constraint(model, x in MOI.AllDifferent(3))\n@objective(model, Max, sum(i * x[i] for i in 1:3))\noptimize!(model)\n@show value.(x)","category":"page"},{"location":"packages/MiniZinc/#MathOptInterface-API","page":"jump-dev/MiniZinc.jl","title":"MathOptInterface API","text":"","category":"section"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"The MiniZinc Optimizer{T} supports the following constraints and attributes.","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"List of supported objective functions:","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"MOI.ObjectiveFunction{MOI.ScalarAffineFunction{T}}\nMOI.ObjectiveFunction{MOI.ScalarQuadraticFunction{T}}\nMOI.ObjectiveFunction{MOI.VariableIndex}","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"List of supported variable types:","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"MOI.Reals","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"List of supported constraint types:","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"MOI.ScalarAffineFunction{T} in MOI.EqualTo{T}\nMOI.ScalarAffineFunction{T} in MOI.GreaterThan{T}\nMOI.ScalarAffineFunction{T} in MOI.Integer\nMOI.ScalarAffineFunction{T} in MOI.Interval{T}\nMOI.ScalarAffineFunction{T} in MOI.LessThan{T}\nMOI.ScalarAffineFunction{T} in MOI.ZeroOne\nMOI.VariableIndex in MOI.EqualTo{T}\nMOI.VariableIndex in MOI.GreaterThan{T}\nMOI.VariableIndex in MOI.Integer\nMOI.VariableIndex in MOI.Interval{T}\nMOI.VariableIndex in MOI.LessThan{T}\nMOI.VariableIndex in MOI.Parameter{T}\nMOI.VariableIndex in MOI.Semicontinuous{T}\nMOI.VariableIndex in MOI.Semiinteger{T}\nMOI.VariableIndex in MOI.ZeroOne\nMOI.VectorOfVariables in MOI.AllDifferent\nMOI.VectorOfVariables in MOI.BinPacking{T}\nMOI.VectorOfVariables in MOI.Circuit\nMOI.VectorOfVariables in MOI.CountAtLeast\nMOI.VectorOfVariables in MOI.CountBelongs\nMOI.VectorOfVariables in MOI.CountDistinct\nMOI.VectorOfVariables in MOI.CountGreaterThan\nMOI.VectorOfVariables in MOI.Cumulative\nMOI.VectorOfVariables in MOI.Path\nMOI.VectorOfVariables in MOI.Table{T}","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"List of supported model attributes:","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"MOI.NLPBlock()\nMOI.Name()\nMOI.ObjectiveSense()","category":"page"},{"location":"packages/MiniZinc/#Options","page":"jump-dev/MiniZinc.jl","title":"Options","text":"","category":"section"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"Set options using MOI.RawOptimizerAttribute in MOI or set_attribute in JuMP.","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"MiniZinc.jl supports the following options:","category":"page"},{"location":"packages/MiniZinc/","page":"jump-dev/MiniZinc.jl","title":"jump-dev/MiniZinc.jl","text":"model_filename::String = \"\": the location at which to write out the .mzn file during optimization. This option can be helpful during debugging. If left empty, a temporary file will be used instead.","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"EditURL = \"transp.jl\"","category":"page"},{"location":"tutorials/linear/transp/#The-transportation-problem","page":"The transportation problem","title":"The transportation problem","text":"","category":"section"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"This tutorial was originally contributed by Louis Luangkesorn.","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"This tutorial is an adaptation of the transportation problem described in AMPL: A Modeling Language for Mathematical Programming, by R. Fourer, D.M. Gay and B.W. Kernighan.","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"The purpose of this tutorial is to demonstrate how to create a JuMP model from an ad-hoc structured text file.","category":"page"},{"location":"tutorials/linear/transp/#Required-packages","page":"The transportation problem","title":"Required packages","text":"","category":"section"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"This tutorial uses the following packages:","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"using JuMP\nimport DelimitedFiles\nimport HiGHS","category":"page"},{"location":"tutorials/linear/transp/#Formulation","page":"The transportation problem","title":"Formulation","text":"","category":"section"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"Suppose that we have a set of factories that produce pogo sticks, and a set of retail stores in which to sell them. Each factory has a maximum number of pogo sticks that it can produce, and each retail store has a demand of pogo sticks that it can sell.","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"In the transportation problem, we want to choose the number of pogo sticks to make and ship from each factory to each retail store that minimizes the total shipping cost.","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"Mathematically, we represent our set of factories by a set of origins i in O and our retail stores by a set of destinations j in D. The maximum supply at each factory is s_i and the demand from each retail store is d_j. The cost of shipping one pogo stick from i to j is c_ij.","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"With a little effort, we can model the transportation problem as the following linear program:","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"beginaligned\nmin sum_i in O j in D c_ij x_ij \nst sum_j in D x_i j le s_i forall i in O \n sum_i in O x_i j = d_j forall j in D \n x_i j ge 0 forall i in O j in D\nendaligned","category":"page"},{"location":"tutorials/linear/transp/#Data","page":"The transportation problem","title":"Data","text":"","category":"section"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"We assume our data is in the form of a text file that has the following form. In practice, we would obtain this text file from the user as input, but for the purpose of this tutorial we're going to create it from Julia.","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"open(joinpath(@__DIR__, \"transp.txt\"), \"w\") do io\n print(\n io,\n \"\"\"\n . FRA DET LAN WIN STL FRE LAF SUPPLY\n GARY 39 14 11 14 16 82 8 1400\n CLEV 27 . 12 . 26 95 17 2600\n PITT 24 14 17 13 28 99 20 2900\n DEMAND 900 1200 600 400 1700 1100 1000 0\n \"\"\",\n )\n return\nend","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"Here the rows are the origins, the columns are the destinations, and the values are the cost of shipping one pogo stick from the origin to the destination. If pogo stick cannot be transported from a source to a destination, then the value is .. The final row and final column are the demand and supply of each location respectively.","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"We didn't account for arcs which do not exist in our formulation, but we can make a small change and fix x_ij = 0 if c_ij = .","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"Our first step is to convert this text format into an appropriate Julia datastructure that we can work with. Since our data is tabular with named rows and columns, one option is JuMP's Containers.DenseAxisArray object:","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"function read_data(filename::String)\n data = DelimitedFiles.readdlm(filename)\n rows, columns = data[2:end, 1], data[1, 2:end]\n return Containers.DenseAxisArray(data[2:end, 2:end], rows, columns)\nend\n\ndata = read_data(joinpath(@__DIR__, \"transp.txt\"))","category":"page"},{"location":"tutorials/linear/transp/#JuMP-formulation","page":"The transportation problem","title":"JuMP formulation","text":"","category":"section"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"Following Design patterns for larger models, we code our JuMP model as a function which takes in an input. In this example, we print the output to stdout:","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"function solve_transportation_problem(data::Containers.DenseAxisArray)\n # Get the set of supplies and demands\n O, D = axes(data)\n # Drop the SUPPLY and DEMAND nodes from our sets\n O, D = setdiff(O, [\"DEMAND\"]), setdiff(D, [\"SUPPLY\"])\n model = Model(HiGHS.Optimizer)\n set_silent(model)\n @variable(model, x[o in O, d in D] >= 0)\n # Remove arcs with \".\" cost by fixing them to 0.0.\n for o in O, d in D\n if data[o, d] == \".\"\n fix(x[o, d], 0.0; force = true)\n end\n end\n @objective(\n model,\n Min,\n sum(data[o, d] * x[o, d] for o in O, d in D if data[o, d] != \".\"),\n )\n @constraint(model, [o in O], sum(x[o, :]) <= data[o, \"SUPPLY\"])\n @constraint(model, [d in D], sum(x[:, d]) == data[\"DEMAND\", d])\n optimize!(model)\n # Pretty print the solution in the format of the input\n print(\" \", join(lpad.(D, 7, ' ')))\n for o in O\n print(\"\\n\", o)\n for d in D\n if isapprox(value(x[o, d]), 0.0; atol = 1e-6)\n print(\" .\")\n else\n print(\" \", lpad(value(x[o, d]), 6, ' '))\n end\n end\n end\n return\nend","category":"page"},{"location":"tutorials/linear/transp/#Solution","page":"The transportation problem","title":"Solution","text":"","category":"section"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"Let's solve and view the solution:","category":"page"},{"location":"tutorials/linear/transp/","page":"The transportation problem","title":"The transportation problem","text":"solve_transportation_problem(data)","category":"page"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/developer/checklists.md\"","category":"page"},{"location":"moi/developer/checklists/#Checklists","page":"Checklists","title":"Checklists","text":"","category":"section"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"The purpose of this page is to collate a series of checklists for commonly performed changes to the source code of MathOptInterface.","category":"page"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"In each case, copy the checklist into the description of the pull request.","category":"page"},{"location":"moi/developer/checklists/#Making-a-release","page":"Checklists","title":"Making a release","text":"","category":"section"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"Use this checklist when making a release of the MathOptInterface repository.","category":"page"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"## Basic\n\n - [ ] `version` field of `Project.toml` has been updated\n - If a breaking change, increment the MAJOR field and reset others to 0\n - If adding new features, increment the MINOR field and reset PATCH to 0\n - If adding bug fixes or documentation changes, increment the PATCH field\n\n## Documentation\n\n - [ ] Add a new entry to `docs/src/changelog.md`, following existing style\n\n## Tests\n\n - [ ] The `solver-tests.yml` GitHub action does not have unexpected failures.\n To run the action, go to:\n https://github.com/jump-dev/MathOptInterface.jl/actions/workflows/solver-tests.yml\n and click \"Run workflow\"","category":"page"},{"location":"moi/developer/checklists/#Adding-a-new-set","page":"Checklists","title":"Adding a new set","text":"","category":"section"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"Use this checklist when adding a new set to the MathOptInterface repository.","category":"page"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"## Basic\n\n - [ ] Add a new `AbstractScalarSet` or `AbstractVectorSet` to `src/sets.jl`\n - [ ] If `isbitstype(S) == false`, implement `Base.copy(set::S)`\n - [ ] If `isbitstype(S) == false`, implement `Base.:(==)(x::S, y::S)`\n - [ ] If an `AbstractVectorSet`, implement `dimension(set::S)`, unless the\n dimension is given by `set.dimension`.\n\n## Utilities\n\n - [ ] If an `AbstractVectorSet`, implement `Utilities.set_dot`,\n unless the dot product between two vectors in the set is equivalent to\n `LinearAlgebra.dot`\n - [ ] If an `AbstractVectorSet`, implement `Utilities.set_with_dimension` in\n `src/Utilities/matrix_of_constraints.jl`\n - [ ] Add the set to the `@model` macro at the bottom of `src/Utilities.model.jl`\n\n## Documentation\n\n - [ ] Add a docstring, which gives the mathematical definition of the set,\n along with an `## Example` block containing a `jldoctest`\n - [ ] Add the docstring to `docs/src/reference/standard_form.md`\n - [ ] Add the set to the relevant table in `docs/src/manual/standard_form.md`\n\n## Tests\n\n - [ ] Define a new `_set(::Type{S})` method in `src/Test/test_basic_constraint.jl`\n and add the name of the set to the list at the bottom of that files\n - [ ] If the set has any checks in its constructor, add tests to `test/sets.jl`\n\n## MathOptFormat\n\n - [ ] Open an issue at `https://github.com/jump-dev/MathOptFormat` to add\n support for the new set {{ replace with link to the issue }}\n\n## Optional\n\n - [ ] Implement `dual_set(::S)` and `dual_set_type(::Type{S})`\n - [ ] Add new tests to the `Test` submodule exercising your new set\n - [ ] Add new bridges to convert your set into more commonly used sets","category":"page"},{"location":"moi/developer/checklists/#Adding-a-new-bridge","page":"Checklists","title":"Adding a new bridge","text":"","category":"section"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"Use this checklist when adding a new bridge to the MathOptInterface repository.","category":"page"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"The steps are mostly the same, but locations depend on whether the bridge is a Constraint, Objective, or Variable bridge. In each case below, replace XXX with the appropriate type of bridge.","category":"page"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"## Basic\n\n - [ ] Create a new file in `src/Bridges/XXX/bridges`\n - [ ] Define the bridge, following existing examples. The name of the bridge\n struct must end in `Bridge`\n - [ ] Check if your bridge can be a subtype of [`MOI.Bridges.Constraint.SetMapBridge`](@ref)\n - [ ] Define a new `const` that is a `SingleBridgeOptimizer` wrapping the\n new bridge. The name of the const must be the name of the bridge, less\n the `Bridge` suffix\n - [ ] `include` the file in `src/Bridges/XXX/bridges/XXX.jl`\n - [ ] If the bridge should be enabled by default, add the bridge to\n `add_all_bridges` at the bottom of `src/Bridges/XXX/XXX.jl`\n\n## Tests\n\n - [ ] Create a new file in the appropriate subdirectory of `tests/Bridges/XXX`\n - [ ] Use `MOI.Bridges.runtests` to test various inputs and outputs of the\n bridge\n - [ ] If, after opening the pull request to add the bridge, some lines are not\n covered by the tests, add additional bridge-specific tests to cover the\n untested lines.\n\n## Documentation\n\n - [ ] Add a docstring which uses the same template as existing bridges.\n - [ ] Add the docstring to `docs/src/submodules/Bridges/list_of_bridges.md`\n\n## Final touch\n\nIf the bridge depends on run-time values of other variables and constraints in\nthe model:\n\n - [ ] Implement `MOI.Utilities.needs_final_touch(::Bridge)`\n - [ ] Implement `MOI.Utilities.final_touch(::Bridge, ::MOI.ModelLike)`\n - [ ] Ensure that `final_touch` can be called multiple times in a row","category":"page"},{"location":"moi/developer/checklists/#Updating-MathOptFormat","page":"Checklists","title":"Updating MathOptFormat","text":"","category":"section"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"Use this checklist when updating the version of MathOptFormat.","category":"page"},{"location":"moi/developer/checklists/","page":"Checklists","title":"Checklists","text":"## Basic\n\n - [ ] The file at `src/FileFormats/MOF/mof.X.Y.schema.json` is updated\n - [ ] The constants `SCHEMA_PATH`, `VERSION`, and `SUPPORTED_VERSIONS` are\n updated in `src/FileFormats/MOF/MOF.jl`\n\n## New sets\n\n - [ ] New sets are added to the `@model` in `src/FileFormats/MOF/MOF.jl`\n - [ ] New sets are added to the `@enum` in `src/FileFormats/MOF/read.jl`\n - [ ] `set_to_moi` is defined for each set in `src/FileFormats/MOF/read.jl`\n - [ ] `head_name` is defined for each set in `src/FileFormats/MOF/write.jl`\n - [ ] A new unit test calling `_test_model_equality` is aded to\n `test/FileFormats/MOF/MOF.jl`\n\n## Tests\n\n - [ ] The version field in `test/FileFormats/MOF/nlp.mof.json` is updated\n\n## Documentation\n\n - [ ] The version fields are updated in `docs/src/submodules/FileFormats/overview.md`","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"DocTestSetup = quote\n using JuMP\nend","category":"page"},{"location":"manual/expressions/#Expressions","page":"Expressions","title":"Expressions","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"JuMP has three types of expressions: affine, quadratic, and nonlinear. These expressions can be inserted into constraints or into the objective. This is particularly useful if an expression is used in multiple places in the model.","category":"page"},{"location":"manual/expressions/#Affine-expressions","page":"Expressions","title":"Affine expressions","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"There are four ways of constructing an affine expression in JuMP: with the @expression macro, with operator overloading, with the AffExpr constructor, and with add_to_expression!.","category":"page"},{"location":"manual/expressions/#Macros","page":"Expressions","title":"Macros","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"The recommended way to create an affine expression is via the @expression macro.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> ex = @expression(model, 2x + y - 1)\n2 x + y - 1","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"This expression can be used in the objective or added to a constraint. For example:","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> @objective(model, Min, 2 * ex - 1)\n4 x + 2 y - 3\n\njulia> objective_function(model)\n4 x + 2 y - 3","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Just like variables and constraints, named expressions can also be created. For example","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x[i = 1:3]);\n\njulia> @expression(model, expr[i = 1:3], i * sum(x[j] for j in i:3));\n\njulia> expr\n3-element Vector{AffExpr}:\n x[1] + x[2] + x[3]\n 2 x[2] + 2 x[3]\n 3 x[3]","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"tip: Tip\nYou can read more about containers in the Containers section.","category":"page"},{"location":"manual/expressions/#Operator-overloading","page":"Expressions","title":"Operator overloading","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Expressions can also be created without macros. However, note that in some cases, this can be much slower that constructing an expression using macros.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> ex = 2x + y - 1\n2 x + y - 1","category":"page"},{"location":"manual/expressions/#Constructors","page":"Expressions","title":"Constructors","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"A third way to create an affine expression is by the AffExpr constructor. The first argument is the constant term, and the remaining arguments are variable-coefficient pairs.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> ex = AffExpr(-1.0, x => 2.0, y => 1.0)\n2 x + y - 1","category":"page"},{"location":"manual/expressions/#add_to_expression!","page":"Expressions","title":"add_to_expression!","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"The fourth way to create an affine expression is by using add_to_expression!. Compared to the operator overloading method, this approach is faster because it avoids constructing temporary objects. The @expression macro uses add_to_expression! behind-the-scenes.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> ex = AffExpr(-1.0)\n-1\n\njulia> add_to_expression!(ex, 2.0, x)\n2 x - 1\n\njulia> add_to_expression!(ex, 1.0, y)\n2 x + y - 1","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"warning: Warning\nRead the section Initializing arrays for some cases to be careful about when using add_to_expression!.","category":"page"},{"location":"manual/expressions/#Removing-zero-terms","page":"Expressions","title":"Removing zero terms","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Use drop_zeros! to remove terms from an affine expression with a 0 coefficient.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @expression(model, ex, x + 1 - x)\n0 x + 1\n\njulia> drop_zeros!(ex)\n\njulia> ex\n1","category":"page"},{"location":"manual/expressions/#Coefficients","page":"Expressions","title":"Coefficients","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Use coefficient to return the coefficient associated with a variable in an affine expression.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> @expression(model, ex, 2x + 1)\n2 x + 1\n\njulia> coefficient(ex, x)\n2.0\n\njulia> coefficient(ex, y)\n0.0","category":"page"},{"location":"manual/expressions/#Quadratic-expressions","page":"Expressions","title":"Quadratic expressions","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Like affine expressions, there are four ways of constructing a quadratic expression in JuMP: macros, operator overloading, constructors, and add_to_expression!.","category":"page"},{"location":"manual/expressions/#Macros-2","page":"Expressions","title":"Macros","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"The @expression macro can be used to create quadratic expressions by including quadratic terms.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> ex = @expression(model, x^2 + 2 * x * y + y^2 + x + y - 1)\nx² + 2 x*y + y² + x + y - 1","category":"page"},{"location":"manual/expressions/#Operator-overloading-2","page":"Expressions","title":"Operator overloading","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Operator overloading can also be used to create quadratic expressions. The same performance warning (discussed in the affine expression section) applies.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> ex = x^2 + 2 * x * y + y^2 + x + y - 1\nx² + 2 x*y + y² + x + y - 1","category":"page"},{"location":"manual/expressions/#Constructors-2","page":"Expressions","title":"Constructors","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Quadratic expressions can also be created using the QuadExpr constructor. The first argument is an affine expression, and the remaining arguments are pairs, where the first term is a JuMP.UnorderedPair and the second term is the coefficient.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> aff_expr = AffExpr(-1.0, x => 1.0, y => 1.0)\nx + y - 1\n\njulia> quad_expr = QuadExpr(\n aff_expr,\n UnorderedPair(x, x) => 1.0,\n UnorderedPair(x, y) => 2.0,\n UnorderedPair(y, y) => 1.0,\n )\nx² + 2 x*y + y² + x + y - 1","category":"page"},{"location":"manual/expressions/#add_to_expression!-2","page":"Expressions","title":"add_to_expression!","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Finally, add_to_expression! can also be used to add quadratic terms.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> ex = QuadExpr(x + y - 1.0)\nx + y - 1\n\njulia> add_to_expression!(ex, 1.0, x, x)\nx² + x + y - 1\n\njulia> add_to_expression!(ex, 2.0, x, y)\nx² + 2 x*y + x + y - 1\n\njulia> add_to_expression!(ex, 1.0, y, y)\nx² + 2 x*y + y² + x + y - 1","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"warning: Warning\nRead the section Initializing arrays for some cases to be careful about when using add_to_expression!.","category":"page"},{"location":"manual/expressions/#Removing-zero-terms-2","page":"Expressions","title":"Removing zero terms","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Use drop_zeros! to remove terms from a quadratic expression with a 0 coefficient.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @expression(model, ex, x^2 + x + 1 - x^2)\n0 x² + x + 1\n\njulia> drop_zeros!(ex)\n\njulia> ex\nx + 1","category":"page"},{"location":"manual/expressions/#Coefficients-2","page":"Expressions","title":"Coefficients","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Use coefficient to return the coefficient associated with a pair of variables in a quadratic expression.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> @expression(model, ex, 2*x*y + 3*x)\n2 x*y + 3 x\n\njulia> coefficient(ex, x, y)\n2.0\n\njulia> coefficient(ex, x, x)\n0.0\n\njulia> coefficient(ex, y, x)\n2.0\n\njulia> coefficient(ex, x)\n3.0","category":"page"},{"location":"manual/expressions/#Nonlinear-expressions","page":"Expressions","title":"Nonlinear expressions","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Nonlinear expressions in JuMP are represented by a NonlinearExpr object. See Nonlinear expressions in detail for more details.","category":"page"},{"location":"manual/expressions/#Initializing-arrays","page":"Expressions","title":"Initializing arrays","text":"","category":"section"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"JuMP implements zero(AffExpr) and one(AffExpr) to support various functions in LinearAlgebra (for example, accessing the off-diagonal of a Diagonal matrix).","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> zero(AffExpr)\n0\n\njulia> one(AffExpr)\n1","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"However, this can result in a subtle bug if you call add_to_expression! or the MutableArithmetics API on an element created by zeros or ones:","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> x = zeros(AffExpr, 2)\n2-element Vector{AffExpr}:\n 0\n 0\n\njulia> add_to_expression!(x[1], 1.1)\n1.1\n\njulia> x\n2-element Vector{AffExpr}:\n 1.1\n 1.1","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Notice how we modified x[1], but we also changed x[2]!","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"This happened because zeros(AffExpr, 2) calls zero(AffExpr) once to obtain a zero element, and then creates an appropriately sized array filled with the same element.","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"This also happens with broadcasting calls containing a conversion of 0 or 1:","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> x = Vector{AffExpr}(undef, 2)\n2-element Vector{AffExpr}:\n #undef\n #undef\n\njulia> x .= 0\n2-element Vector{AffExpr}:\n 0\n 0\n\njulia> add_to_expression!(x[1], 1.1)\n1.1\n\njulia> x\n2-element Vector{AffExpr}:\n 1.1\n 1.1","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"The recommended way to create an array of empty expressions is as follows:","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> x = Vector{AffExpr}(undef, 2)\n2-element Vector{AffExpr}:\n #undef\n #undef\n\njulia> for i in eachindex(x)\n x[i] = AffExpr(0.0)\n end\n\njulia> add_to_expression!(x[1], 1.1)\n1.1\n\njulia> x\n2-element Vector{AffExpr}:\n 1.1\n 0","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Alternatively, use non-mutating operation to avoid updating x[1] in-place:","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"julia> x = zeros(AffExpr, 2)\n2-element Vector{AffExpr}:\n 0\n 0\n\njulia> x[1] += 1.1\n1.1\n\njulia> x\n2-element Vector{AffExpr}:\n 1.1\n 0","category":"page"},{"location":"manual/expressions/","page":"Expressions","title":"Expressions","text":"Note that for large expressions this will be slower due to the allocation of additional temporary objects.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"EditURL = \"factory_schedule.jl\"","category":"page"},{"location":"tutorials/linear/factory_schedule/#The-factory-schedule-example","page":"The factory schedule example","title":"The factory schedule example","text":"","category":"section"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"This tutorial was originally contributed by @Crghilardi.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"This tutorial is a Julia translation of Part 5 from Introduction to Linear Programming with Python.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"The purpose of this tutorial is to demonstrate how to use DataFrames and delimited files, and to structure your code that is robust to infeasibilities and permits running with different datasets.","category":"page"},{"location":"tutorials/linear/factory_schedule/#Required-packages","page":"The factory schedule example","title":"Required packages","text":"","category":"section"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"This tutorial requires the following packages:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"using JuMP\nimport CSV\nimport DataFrames\nimport HiGHS\nimport StatsPlots","category":"page"},{"location":"tutorials/linear/factory_schedule/#Formulation","page":"The factory schedule example","title":"Formulation","text":"","category":"section"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"The Factory Scheduling Problem assumes we are optimizing the production of a good from factories f in F over the course of 12 months m in M.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"If a factory f runs during a month m, a fixed cost of a_f is incurred, the factory must produce x_mf units that is within some minimum and maximum production levels l_f and u_f respectively, and each unit of production incurs a variable cost c_f. Otherwise, the factory can be shut for the month with zero production and no fixed-cost is incurred. We denote the run/not-run decision by z_mf in 0 1, where z_mf is 1 if factory f runs in month m. The factory must produce enough units to satisfy demand d_m.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"With a little effort, we can formulate our problem as the following linear program:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"beginaligned\nmin sumlimits_f in F m in M a_f z_mf + c_f x_mf \ntextst x_mf le u_f z_mf forall f in F m in M \n x_mf ge l_f z_mf forall f in F m in M \n sumlimits_fin F x_mf = d_m forall f in F m in M \n z_mf in 0 1 forall f in F m in M\nendaligned","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"However, this formulation has a problem: if demand is too high, we may be unable to satisfy the demand constraint, and the problem will be infeasible.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"tip: Tip\nWhen modeling, consider ways to formulate your model such that it always has a feasible solution. This greatly simplifies debugging data errors that would otherwise result in an infeasible solution. In practice, most practical decisions have a feasible solution. In our case, we could satisfy demand (at a high cost) by buying replacement items for the buyer, or running the factories in overtime to make up the difference.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"We can improve our model by adding a new variable, delta_m, which represents the quantity of unmet demand in each month m. We penalize delta_m by an arbitrarily large value of $10,000/unit in the objective.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"beginaligned\nmin sumlimits_f in F m in M a_f z_mf + c_f x_mf + sumlimits_m in M10000 delta_m \ntextst x_mf le u_f z_mf forall f in F m in M \n x_mf ge l_f z_mf forall f in F m in M \n sumlimits_fin F x_mf - delta_m = d_m forall f in F m in M \n z_mf in 0 1 forall f in F m in M \n delta_m ge 0 forall m in M\nendaligned","category":"page"},{"location":"tutorials/linear/factory_schedule/#Data","page":"The factory schedule example","title":"Data","text":"","category":"section"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"The JuMP GitHub repository contains two text files with the data we need for this tutorial.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"The first file contains a dataset of our factories, A and B, with their production and cost levels for each month. For the documentation, the file is located at:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"factories_filename = joinpath(@__DIR__, \"factory_schedule_factories.txt\");\nnothing #hide","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"To run locally, download factory_schedule_factories.txt and update factories_filename appropriately.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"The file has the following contents:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"print(read(factories_filename, String))","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"We use the CSV and DataFrames packages to read it into Julia:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"factory_df = CSV.read(\n factories_filename,\n DataFrames.DataFrame;\n delim = ' ',\n ignorerepeated = true,\n)","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"The second file contains the demand data by month:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"demand_filename = joinpath(@__DIR__, \"factory_schedule_demand.txt\");\nnothing #hide","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"To run locally, download factory_schedule_demand.txt and update demand_filename appropriately.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"demand_df = CSV.read(\n demand_filename,\n DataFrames.DataFrame;\n delim = ' ',\n ignorerepeated = true,\n)","category":"page"},{"location":"tutorials/linear/factory_schedule/#Data-validation","page":"The factory schedule example","title":"Data validation","text":"","category":"section"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Before moving on, it's always good practice to validate the data you read from external sources. The more effort you spend here, the fewer issues you will have later. The following function contains a few simple checks, but we could add more. For example, you might want to check that none of the values are too large (or too small), which might indicate a typo or a unit conversion issue (perhaps the variable costs are in $/1000 units instead of $/unit).","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"function valiate_data(\n demand_df::DataFrames.DataFrame,\n factory_df::DataFrames.DataFrame,\n)\n # Minimum production must not exceed maximum production.\n @assert all(factory_df.min_production .<= factory_df.max_production)\n # Demand, minimum production, fixed costs, and variable costs must all be\n # non-negative.\n @assert all(demand_df.demand .>= 0)\n @assert all(factory_df.min_production .>= 0)\n @assert all(factory_df.fixed_cost .>= 0)\n @assert all(factory_df.variable_cost .>= 0)\n return\nend\n\nvaliate_data(demand_df, factory_df)","category":"page"},{"location":"tutorials/linear/factory_schedule/#JuMP-formulation","page":"The factory schedule example","title":"JuMP formulation","text":"","category":"section"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Next, we need to code our JuMP formulation. As shown in Design patterns for larger models, it's always good practice to code your model in a function that accepts well-defined input and returns well-defined output.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"function solve_factory_scheduling(\n demand_df::DataFrames.DataFrame,\n factory_df::DataFrames.DataFrame,\n)\n # Even though we validated the data above, it's good practice to do it here\n # too.\n valiate_data(demand_df, factory_df)\n months, factories = unique(factory_df.month), unique(factory_df.factory)\n model = Model(HiGHS.Optimizer)\n set_silent(model)\n @variable(model, status[months, factories], Bin)\n @variable(model, production[months, factories], Int)\n @variable(model, unmet_demand[months] >= 0)\n # We use `eachrow` to loop through the rows of the dataframe and add the\n # relevant constraints.\n for r in eachrow(factory_df)\n m, f = r.month, r.factory\n @constraint(model, production[m, f] <= r.max_production * status[m, f])\n @constraint(model, production[m, f] >= r.min_production * status[m, f])\n end\n @constraint(\n model,\n [r in eachrow(demand_df)],\n sum(production[r.month, :]) + unmet_demand[r.month] == r.demand,\n )\n @objective(\n model,\n Min,\n 10_000 * sum(unmet_demand) + sum(\n r.fixed_cost * status[r.month, r.factory] +\n r.variable_cost * production[r.month, r.factory] for\n r in eachrow(factory_df)\n )\n )\n optimize!(model)\n schedules = Dict{Symbol,Vector{Float64}}(\n Symbol(f) => value.(production[:, f]) for f in factories\n )\n schedules[:unmet_demand] = value.(unmet_demand)\n return (\n termination_status = termination_status(model),\n cost = objective_value(model),\n # This `select` statement re-orders the columns in the DataFrame.\n schedules = DataFrames.select(\n DataFrames.DataFrame(schedules),\n [:unmet_demand, :A, :B],\n ),\n )\nend","category":"page"},{"location":"tutorials/linear/factory_schedule/#Solution","page":"The factory schedule example","title":"Solution","text":"","category":"section"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Now we can call our solve_factory_scheduling function using the data we read in above.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"solution = solve_factory_scheduling(demand_df, factory_df);\nnothing #hide","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Let's see what solution contains:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"solution.termination_status","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"solution.cost","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"solution.schedules","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"These schedules will be easier to visualize as a graph:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"StatsPlots.groupedbar(\n Matrix(solution.schedules);\n bar_position = :stack,\n labels = [\"unmet demand\" \"A\" \"B\"],\n xlabel = \"Month\",\n ylabel = \"Production\",\n legend = :topleft,\n color = [\"#20326c\" \"#4063d8\" \"#a0b1ec\"],\n)","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Note that we don't have any unmet demand.","category":"page"},{"location":"tutorials/linear/factory_schedule/#What-happens-if-demand-increases?","page":"The factory schedule example","title":"What happens if demand increases?","text":"","category":"section"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Let's run an experiment by increasing the demand by 50% in all time periods:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"demand_df.demand .*= 1.5","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Now we resolve the problem:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"high_demand_solution = solve_factory_scheduling(demand_df, factory_df);\nnothing #hide","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"and visualize the solution:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"StatsPlots.groupedbar(\n Matrix(high_demand_solution.schedules);\n bar_position = :stack,\n labels = [\"unmet demand\" \"A\" \"B\"],\n xlabel = \"Month\",\n ylabel = \"Production\",\n legend = :topleft,\n color = [\"#20326c\" \"#4063d8\" \"#a0b1ec\"],\n)","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Uh oh, we can't satisfy all of the demand.","category":"page"},{"location":"tutorials/linear/factory_schedule/#How-sensitive-is-the-solution-to-changes-in-variable-cost?","page":"The factory schedule example","title":"How sensitive is the solution to changes in variable cost?","text":"","category":"section"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Let's run another experiment, this time seeing how the optimal objective value changes as we vary the variable costs of each factory.","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"First though, let's reset the demand to it's original level:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"demand_df.demand ./= 1.5;\nnothing #hide","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"For our experiment, we're going to scale the variable costs of both factories by a set of values from 0.0 to 1.5:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"scale_factors = 0:0.1:1.5","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"At a high level, we're going to loop over the scale factors for A, then the scale factors for B, rescale the input data, call our solve_factory_scheduling example, and then store the optimal objective value in the following cost matrix:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"cost = zeros(length(scale_factors), length(scale_factors));\nnothing #hide","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Because we're modifying factory_df in-place, we need to store the original variable costs in a new column:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"factory_df[!, :old_variable_cost] = copy(factory_df.variable_cost);\nnothing #hide","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Then, we need a function to scale the :variable_cost column for a particular factory by a value scale:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"function scale_variable_cost(df, factory, scale)\n rows = df.factory .== factory\n df[rows, :variable_cost] .=\n round.(Int, df[rows, :old_variable_cost] .* scale)\n return\nend","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Our experiment is just a nested for-loop, modifying A and B and storing the cost:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"for (j, a) in enumerate(scale_factors)\n scale_variable_cost(factory_df, \"A\", a)\n for (i, b) in enumerate(scale_factors)\n scale_variable_cost(factory_df, \"B\", b)\n cost[i, j] = solve_factory_scheduling(demand_df, factory_df).cost\n end\nend","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"Let's visualize the cost matrix:","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"StatsPlots.contour(\n scale_factors,\n scale_factors,\n cost;\n xlabel = \"Scale of factory A\",\n ylabel = \"Scale of factory B\",\n)","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"What can you infer from the solution?","category":"page"},{"location":"tutorials/linear/factory_schedule/","page":"The factory schedule example","title":"The factory schedule example","text":"info: Info\nThe Power Systems tutorial explains a number of other ways you can structure a problem to perform a parametric analysis of the solution. In particular, you can use in-place modification to reduce the time it takes to build and solve the resulting models.","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"EditURL = \"changelog.md\"","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"CurrentModule = JuMP","category":"page"},{"location":"release_notes/#Release-notes","page":"Release notes","title":"Release notes","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.","category":"page"},{"location":"release_notes/#[Version-1.16.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.16.0)-(October-24,-2023)","page":"Release notes","title":"Version 1.16.0 (October 24, 2023)","text":"","category":"section"},{"location":"release_notes/#Added","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added := operator for Boolean satisfiability problems (#3530)","category":"page"},{"location":"release_notes/#Fixed","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed text/latex printing of MOI.Interval sets (#3537)\nFixed tests with duplicate function names (#3539)","category":"page"},{"location":"release_notes/#Other","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Updated documentation list of supported solvers (#3527) (#3529) (#3538) (#3542) (#3545) (#3546)\nUpdated to Documenter@1.1 (#3528)\nFixed various tutorials (#3534) (#3532)\nFixed Project.toml compat bounds for standard libraries (#3544)","category":"page"},{"location":"release_notes/#[Version-1.15.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.15.1)-(September-24,-2023)","page":"Release notes","title":"Version 1.15.1 (September 24, 2023)","text":"","category":"section"},{"location":"release_notes/#Fixed-2","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed support for single argument min and max operators (#3522)\nFixed error message for add_to_expression! when called with a GenericNonlinearExpr (#3506)\nFixed constraint tags with broadcasted constraints (#3515)\nFixed MethodError in MA.scaling (#3518)\nFixed support for arrays of Parameter variables (#3524)","category":"page"},{"location":"release_notes/#Other-2","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Updated to Documenter@1 (#3501)\nFixed links to data in tutorials (#3512)\nFixed typo in TSP tutorial (#3516)\nImproved error message for VariableNotOwned errors (#3520)\nFixed various JET errors (#3519)","category":"page"},{"location":"release_notes/#[Version-1.15.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.15.0)-(September-15,-2023)","page":"Release notes","title":"Version 1.15.0 (September 15, 2023)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"This is a large minor release because it adds an entirely new data structure and API path for working with nonlinear programs. The previous nonlinear interface remains unchanged and is documented at Nonlinear Modeling (Legacy). The new interface is a treated as a non-breaking feature addition and is documented at Nonlinear Modeling.","category":"page"},{"location":"release_notes/#Breaking","page":"Release notes","title":"Breaking","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Although the new nonlinear interface is a feature addition, there are two changes which might be breaking for a very small number of users.","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The syntax inside JuMP macros is parsed using a different code path, even for linear and quadratic expressions. We made this change to unify how we parse linear, quadratic, and nonlinear expressions. In all cases, the new code returns equivalent expressions, but because of the different order of operations, there are three changes to be aware of when updating:\nThe printed form of the expression may change, for example from x * y to y * x. This can cause tests which test the String representation of a model to fail.\nSome coefficients may change slightly due to floating point round-off error.\nParticularly when working with a JuMP extension, you may encounter a MethodError due to a missing or ambiguous method. These errors are due to previously existing bugs that were not triggered by the previous parsing code. If you encounter such an error, please open a GitHub issue.\nThe methods for Base.:^(x::VariableRef, n::Integer) and Base.:^(x::AffExpr, n::Integer) have changed. Previously, these methods supported only n = 0, 1, 2 and they always returned a QuadExpr, even for the case when n = 0 or n = 1. Now:\nx^0 returns one(T), where T is the value_type of the model (defaults to Float64)\nx^1 returns x\nx^2 returns a QuadExpr\nx^n where !(0 <= n <= 2) returns a NonlinearExpr.\nWe made this change to support nonlinear expressions and to align the mathematical definition of the operation with their return type. (Previously, users were surprised that x^1 returned a QuadExpr.) As a consequence of this change, the methods are now not type-stable. This means that the compiler cannot prove that x^2 returns a QuadExpr. If benchmarking shows that this is a performance problem, you can use the type-stable x * x instead of x^2.","category":"page"},{"location":"release_notes/#Added-2","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added triangle_vec which simplifies adding MOI.LogDetConeTriangle and MOI.RootDetConeTriangle constraints (#3456)\nAdded the new nonlinear interface. This is a very large change. See the documentation at Nonlinear Modeling and the (long) discussion in JuMP.jl#3106. Related PRs are (#3468) (#3472) (#3475) (#3483) (#3487) (#3488) (#3489) (#3504) (#3509)","category":"page"},{"location":"release_notes/#Fixed-3","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed uses of @nospecialize which cause precompilation failures in Julia v1.6.0 and v1.6.1. (#3464)\nFixed adding a container of Parameter (#3473)\nFixed return type of x^0 and x^1 to no longer return QuadExpr (see note in Breaking section above) (#3474)\nFixed error messages in LowerBoundRef, UpperBoundRef, FixRef, IntegerRef, BinaryRef, ParameterRef and related functions (#3494)\nFixed type inference of empty containers in JuMP macros (#3500)","category":"page"},{"location":"release_notes/#Other-3","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added GAMS to solver documentation (#3357)\nUpdated various tutorials (#3459) (#3460) (#3462) (#3463) (#3465) (#3490) (#3492) (#3503)\nAdded The network multi-commodity flow problem tutorial (#3491)\nAdded Two-stage stochastic programs tutorial (#3466)\nAdded better error messages for unsupported operations in LinearAlgebra (#3476)\nUpdated to the latest version of Documenter (#3484) (#3495) (#3497)\nUpdated GitHub action versions (#3507)","category":"page"},{"location":"release_notes/#[Version-1.14.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.14.1)-(September-2,-2023)","page":"Release notes","title":"Version 1.14.1 (September 2, 2023)","text":"","category":"section"},{"location":"release_notes/#Fixed-4","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix links in Documentation (#3478)","category":"page"},{"location":"release_notes/#[Version-1.14.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.14.0)-(August-27,-2023)","page":"Release notes","title":"Version 1.14.0 (August 27, 2023)","text":"","category":"section"},{"location":"release_notes/#Added-3","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added DimensionalData.jl extension (#3413)\nAdded syntactic sugar for the MOI.Parameter set (#3443)\nParameter\nParameterRef\nis_parameter\nparameter_value\nset_parameter_value","category":"page"},{"location":"release_notes/#Fixed-5","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed model_convert for BridgeableConstraint (#3437)\nFixed printing models with integer coefficients larger than typemax(Int) (#3447)\nFixed support for constant left-hand side functions in a complementarity constraint (#3452)","category":"page"},{"location":"release_notes/#Other-4","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Updated packages used in documentation (#3444) (#3455)\nFixed docstring tests (#3445)\nFixed printing change for MathOptInterface (#3446)\nFixed typos in documentation (#3448) (#3457)\nAdded SCIP to callback documentation (#3449)","category":"page"},{"location":"release_notes/#[Version-1.13.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.13.0)-(July-27,-2023)","page":"Release notes","title":"Version 1.13.0 (July 27, 2023)","text":"","category":"section"},{"location":"release_notes/#Added-4","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added support for generic number types (#3377) (#3385)\nAdded fallback for MOI.AbstractSymmetricMatrixSetTriangle and MOI.AbstractSymmetricMatrixSetSquare (#3424)","category":"page"},{"location":"release_notes/#Fixed-6","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed set_start_values with MOI.Bridges.Objective.SlackBridge (#3422)\nFixed flakey doctest in variables.md (#3425)\nFixed names on CITATION.bib (#3423)","category":"page"},{"location":"release_notes/#Other-5","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added Loraine.jl to the installation table (#3426)\nRemoved Penopt.jl from packages.toml (#3428)\nImproved problem statement in cannery example of tutorial (#3430)\nMinor cleanups in Containers.DenseAxisArray implementation (#3429)\nChanged nested_problems.jl: outer/inner to upper/lower (#3433)\nRemoved second SDP relaxation in OPF tutorial (#3432)","category":"page"},{"location":"release_notes/#[Version-1.12.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.12.0)-(June-19,-2023)","page":"Release notes","title":"Version 1.12.0 (June 19, 2023)","text":"","category":"section"},{"location":"release_notes/#Added-5","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added coefficient_type keyword argument to add_bridge and remove_bridge (#3394)","category":"page"},{"location":"release_notes/#Fixed-7","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed error message for matrix in HermitianPSDCone (#3369)\nFixed EditURL for custom documentation pages (#3373)\nFixed return type annotations for MOI.ConstraintPrimal and MOI.ConstraintDual (#3381)\nFixed printing change in Julia nightly (#3391)\nFixed printing of Complex coefficients (#3397)\nFixed printing of constraints in text/latex mode (#3405)\nFixed performance issue in Containers.rowtable (#3410)\nFixed bug when variables added to set of wrong dimension (#3411)","category":"page"},{"location":"release_notes/#Other-6","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added more solver READMEs to the documentation (#3358) (#3360) (#3364) (#3365) (#3366) (#3368) (#3372) (#3374) (#3376) (#3379) (#3387) (#3389)\nAdded StatusSwitchingQP.jl to the installation table (#3354)\nUpdated checklist for adding a new solver (#3370)\nUpdated extension-tests.yml action (#3371) (#3375)\nColor logs in GitHub actions (#3392)\nAdded new tutorials\nOptimal power flow (#3395) (#3412)\nLovász numbers (#3399)\nDualization (#3402)\nUpdated JuMP paper citation (#3400)\nChanged GitHub action to upload LaTeX logs when building documentation (#3403)\nFixed printing of SCS log in documentation (#3406)\nUpdated solver versions (#3407)\nUpdated documentation to use Julia v1.9 (#3398)\nReplaced _value_type with MOI.Utilities.value_type (#3414)\nFixed a typo in docstring (#3415)\nRefactored API documentation (#3386)\nUpdated SCIP license (#3420)","category":"page"},{"location":"release_notes/#[Version-1.11.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.11.1)-(May-19,-2023)","page":"Release notes","title":"Version 1.11.1 (May 19, 2023)","text":"","category":"section"},{"location":"release_notes/#Fixed-8","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a poor error message when sum(::DenseAxisArray; dims) was called (#3338)\nFixed support for dependent sets in the @variable macro (#3344)\nFixed a performance bug in constraints with sparse symmetric matrices (#3349)","category":"page"},{"location":"release_notes/#Other-7","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Improved the printing of complex numbers (#3332)\nWhen printing, sets which contain constants ending in .0 now print as integers. This follows the behavior of constants in functions (#3341)\nAdded InfiniteOpt to the extensions documentation (#3343)\nAdded more documentation for the exponential cone (#3345) (#3347)\nAdded checklists for developers (#3346) (#3355)\nFixed test support upcoming Julia nightly (#3351)\nFixed extension-tests.yml action (#3353)\nAdd more solvers to the documentation (#3359) (#3361) (#3362)","category":"page"},{"location":"release_notes/#[Version-1.11.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.11.0)-(May-3,-2023)","page":"Release notes","title":"Version 1.11.0 (May 3, 2023)","text":"","category":"section"},{"location":"release_notes/#Added-6","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added new methods to print_active_bridges for printing a particular objective, constraint, or variable (#3316)","category":"page"},{"location":"release_notes/#Fixed-9","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed tests for MOI v1.14.0 release (#3312)\nFixed indexing containers when an axis is Vector{Any} that contains a Vector{Any} element (#3280)\nFixed getindex(::AbstractJuMPScalar) which is called for an expression like x[] (#3314)\nFixed bug in set_string_names_on_creation with a vector of variables (#3322)\nFixed bug in memoize function in nonlinear documentation (#3337)","category":"page"},{"location":"release_notes/#Other-8","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed typos in the documentation (#3317) (#3318) (#3328)\nAdded a test for the order of setting start values (#3315)\nAdded READMEs of solvers and extensions to the docs (#3309) (#3320) (#3327) (#3329) (#3333)\nStyle improvements to src/variables.jl (#3324)\nClarify that column generation does not find global optimum (#3325)\nAdd a GitHub actions workflow for testing extensions prior to release (#3331)\nDocument the release process for JuMP (#3334)\nFix links to discourse and chatroom (#3335)","category":"page"},{"location":"release_notes/#[Version-1.10.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.10.0)-(April-3,-2023)","page":"Release notes","title":"Version 1.10.0 (April 3, 2023)","text":"","category":"section"},{"location":"release_notes/#Added-7","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added Nonnegatives, Nonpositives and Zeros, and support vector-valued inequality syntax in the JuMP macros (#3273)\nAdded special support for LinearAlgebra.Symmetric and LinearAlgebra.Hermitian matrices in Zeros constraints (#3281) (#3296)\nAdded HermitianMatrixSpace and the Hermitian tag for generating a matrix of variables that is Hermitian (#3292) (#3293)\nAdded Semicontinuous and Semiinteger (#3302)\nAdded support for keyword indexing of containers (#3237)","category":"page"},{"location":"release_notes/#Fixed-10","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed [compat] bound for MathOptInterface in Project.toml (#3272)","category":"page"},{"location":"release_notes/#Other-9","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Split out the Nested optimization problems tutorial (#3274)\nUpdated doctests to ensure none have hidden state (#3275) (#3276)\nClarified how lazy constraints may revisit points (#3278)\nAdded P-Norm example (#3282)\nClarified docs that macros create new bindings (#3284)\nFixed threading example (#3283)\nAdded plot to The minimum distortion problem (#3288)\nAdded Google style rules for Vale and fixed warnings (#3285)\nAdded citation for the JuMP 1.0 paper (#3294)\nUpdated package versions in the documentation (#3298)\nAdded comment for the order in which start values must be set (#3303)\nImproved error message for unrecognized constraint operators (#3311)","category":"page"},{"location":"release_notes/#[Version-1.9.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.9.0)-(March-7,-2023)","page":"Release notes","title":"Version 1.9.0 (March 7, 2023)","text":"","category":"section"},{"location":"release_notes/#Added-8","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added get_attribute and set_attribute. These replace get_optimizer_attribute and set_optimizer_attribute, although the _optimizer_ functions remain for backward compatibility. (#3219)\nAdded set_start_values for setting all supported start values in a model (#3238)\nAdd remove_bridge and print_active_bridges (#3259)","category":"page"},{"location":"release_notes/#Fixed-11","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The matrix returned by a variable in HermitianPSDCone is now a LinearAlgebra.Hermitian matrix. This is potentially breaking if you have written code to assume the return is a Matrix. (#3245) (#3246)\nFixed missing support for Base.isreal of expressions (#3252)","category":"page"},{"location":"release_notes/#Other-10","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a thread safety issue in the Parallelism tutorial (#3240) (#3243)\nImproved the error message when unsupported operators are used in @NL macros (#3236)\nClarified the documentation to say that matrices in HermitianPSDCone must be LinearAlgebra.Hermitian (#3241)\nMinor style fixes to internal macro code (#3247)\nAdd Quantum state discrimination tutorial (#3250)\nImprove error message when begin...end not passed to plural macros (#3255)\nDocument how to register function with varying number of input arguments (#3258)\nTidy tests by removing unneeded JuMP. prefixes (#3260)\nClarified the introduction to the Complex number support tutorial (#3262)\nFixed typos in the Documentation (#3263) (#3266) (#3268) (#3269)","category":"page"},{"location":"release_notes/#[Version-1.8.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.8.2)-(February-27,-2023)","page":"Release notes","title":"Version 1.8.2 (February 27, 2023)","text":"","category":"section"},{"location":"release_notes/#Fixed-12","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed dot product between complex JuMP expression and number (#3244)","category":"page"},{"location":"release_notes/#Other-11","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Polish simple SDP examples (#3232)","category":"page"},{"location":"release_notes/#[Version-1.8.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.8.1)-(February-23,-2023)","page":"Release notes","title":"Version 1.8.1 (February 23, 2023)","text":"","category":"section"},{"location":"release_notes/#Fixed-13","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed support for init in nonlinear generator expressions (#3226)","category":"page"},{"location":"release_notes/#Other-12","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Use and document import MathOptInterface as MOI (#3222)\nRemoved references in documentation to multiobjective optimization being unsupported (#3223)\nAdded tutorial on multi-objective portfolio optimization (#3227)\nRefactored some of the conic tutorials (#3229)\nFixed typos in the documentation (#3230)\nAdded tutorial on parallelism (#3231)","category":"page"},{"location":"release_notes/#[Version-1.8.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.8.0)-(February-16,-2023)","page":"Release notes","title":"Version 1.8.0 (February 16, 2023)","text":"","category":"section"},{"location":"release_notes/#Added-9","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added --> syntax support for indicator constraints. The old syntax of => remains supported (#3207)\nAdded <--> syntax for reified constraints. For now, few solvers support reified constraints (#3206)\nAdded fix_discrete_variables. This is most useful for computing the dual of a mixed-integer program (#3208)\nAdded support for vector-valued objectives. For details, see the Multi-objective knapsack tutorial (#3176)","category":"page"},{"location":"release_notes/#Fixed-14","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug in lp_sensitivity_report by switching to an explicit LU factorization of the basis matrix (#3182)\nFixed a bug that prevented [; kwarg] arguments in macros (#3220)","category":"page"},{"location":"release_notes/#Other-13","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Minor fixes to the documentation (#3200) (#3201) (#3203) (#3210)\nAdded tutorial Constraint programming (#3202)\nAdded more examples to Tips and Tricks\nRemove _distance_to_set in favor of MOI.Utilities.distance_to_set (#3209)\nImprove The diet problem tutorial by adding the variable as a column in the dataframe (#3213)\nImprove The knapsack problem example tutorial (#3216) (#3217)\nAdded the Ellipsoid approximation tutorial (#3218)","category":"page"},{"location":"release_notes/#[Version-1.7.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.7.0)-(January-25,-2023)","page":"Release notes","title":"Version 1.7.0 (January 25, 2023)","text":"","category":"section"},{"location":"release_notes/#Added-10","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added support for view of a Containers.DenseAxisArray (#3152) (#3180)\nAdded support for containers of variables in ComplexPlane (#3184)\nAdded support for minimum and maximum generators in nonlinear expressions (#3189)\nAdded SnoopPrecompile statements that reduce the time-to-first-solve in Julia 1.9 (#3193) (#3195) (#3196) (#3197)","category":"page"},{"location":"release_notes/#Other-14","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Large refactoring of the tests (#3166) (#3167) (#3168) (#3169) (#3170) (#3171)\nRemove unreachable code due to VERSION checks (#3172)\nDocument how to test JuMP extensions (#3174)\nFix method ambiguities in Containers (#3173)\nImprove error message that is thrown when = is used instead of == in the @constraint macro (#3178)\nImprove the error message when Bool is used instead of Bin in the @variable macro (#3180)\nUpdate versions of the documentation (#3185)\nTidy the import of packages and remove unnecessary prefixes (#3186) (#3187)\nRefactor src/JuMP.jl by moving methods into more relevant files (#3188)\nFix docstring of Model not appearing in the documentation (#3198)","category":"page"},{"location":"release_notes/#[Version-1.6.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.6.0)-(January-1,-2023)","page":"Release notes","title":"Version 1.6.0 (January 1, 2023)","text":"","category":"section"},{"location":"release_notes/#Added-11","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added a result keyword argument to solution_summary to allow summarizing models with multiple solutions (#3138)\nAdded relax_with_penalty!, which is a useful tool when debugging infeasible models (#3140)\nAdded has_start_value (#3157)\nAdded support for HermitianPSDCone in constraints (#3154)","category":"page"},{"location":"release_notes/#Fixed-15","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed promotion of complex expressions (#3150) (#3164)","category":"page"},{"location":"release_notes/#Other-15","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added Benders tutorial with in-place resolves (#3145)\nAdded more Tips and tricks for linear programs (#3144) (#3163)\nClarified documentation that start can depend on the indices of a variable container (#3148)\nReplace instances of length and size by the recommended eachindex and axes (#3149)\nAdded a warning explaining why the model is dirty when accessing solution results from a modified model (#3156)\nClarify documentation that PSD ensures a symmetric matrix (#3159)\nMaintenance of the JuMP test suite (#3146) (#3158) (#3162)","category":"page"},{"location":"release_notes/#[Version-1.5.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.5.0)-(December-8,-2022)","page":"Release notes","title":"Version 1.5.0 (December 8, 2022)","text":"","category":"section"},{"location":"release_notes/#Added-12","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Add support for complex-valued variables:\nHermitianPSDCone (#3109)\nComplexPlane and ComplexVariable (#3134)\nAdd support for MOI.OptimizerWithAttributes in set_optimizer_attribute and get_optimizer_attribute (#3129)","category":"page"},{"location":"release_notes/#Fixed-16","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed error message for vectorized interval constraints (#3123)\nFixed passing AbstractString to set_optimizer_attribute (#3127)","category":"page"},{"location":"release_notes/#Other-16","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Update package versions used in docs (#3119) (#3133) (#3139)\nFixed output of diet tutorial (#3120)\nExplain how to use Dates.period in set_time_limit_sec (#3121)\nUpdate to JuliaFormatter v1.0.15 (#3130)\nFixed HTTP server example in web_app.jl (#3131)\nUpdate docs to build with Documenter#master (#3094)\nAdd tests for LinearAlgebra operations (#3132)\nTidy these release notes (#3135)\nAdded documentation for Complex number support (#3141)\nRemoved the \"workforce scheduling\" and \"steelT3\" tutorials (#3143)","category":"page"},{"location":"release_notes/#[Version-1.4.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.4.0)-(October-29,-2022)","page":"Release notes","title":"Version 1.4.0 (October 29, 2022)","text":"","category":"section"},{"location":"release_notes/#Added-13","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added Containers.rowtable which converts a container into a vector of NamedTuples to support the Tables.jl interface. This simplifies converting Containers.DenseAxisArray and Containers.SparseAxisArray objects into tabular forms such as a DataFrame (#3104)\nAdded a new method to Containers.container so that index names are passed to the container (#3088)","category":"page"},{"location":"release_notes/#Fixed-17","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug in copy_to(dest::Model, src::MOI.ModelLike) when src has nonlinear components (#3101)\nFixed the printing of (-1.0 + 0.0im) coefficients in complex expressions (#3112)\nFixed a parsing bug in nonlinear expressions with generator statements that contain multiple for statements (#3116)","category":"page"},{"location":"release_notes/#Other-17","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Converted the multi-commodity flow tutorial to use an SQLite database (#3098)\nFixed a number of typos in the documentation (#3103) (#3107) (#3018)\nImproved various style aspects of the PDF documentation (#3095) (#3098) (#3102)","category":"page"},{"location":"release_notes/#[Version-1.3.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.3.1)-(September-28,-2022)","page":"Release notes","title":"Version 1.3.1 (September 28, 2022)","text":"","category":"section"},{"location":"release_notes/#Fixed-18","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a performance issue in relax_integrality (#3087)\nFixed the type stability of operators with Complex arguments (#3072)\nFixed a bug which added additional +() terms to some nonlinear expressions (#3091)\nFixed potential method ambiguities with AffExpr and QuadExpr objects (#3092)","category":"page"},{"location":"release_notes/#Other-18","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added vale as a linter for the documentation (#3080)\nAdded a tutorial on debugging JuMP models (#3043)\nFixed a number of typos in the documentation (#3079) (#3083)\nMany other small tweaks to the documentation (#3068) (#3073) (#3074) (#3075) (#3076) (#3077) (#3078) (#3081) (#3082) (#3084) (#3085) (#3089)","category":"page"},{"location":"release_notes/#[Version-1.3.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.3.0)-(September-5,-2022)","page":"Release notes","title":"Version 1.3.0 (September 5, 2022)","text":"","category":"section"},{"location":"release_notes/#Added-14","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Support slicing in SparseAxisArray (#3031)","category":"page"},{"location":"release_notes/#Fixed-19","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug introduced in v1.2.0 that prevented DenseAxisArrays with Vector keys (#3064)","category":"page"},{"location":"release_notes/#Other-19","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Released the JuMP logos under the CC BY 4.0 license (#3063)\nMinor tweaks to the documentation (#3054) (#3056) (#3057) (#3060) (#3061) (#3065)\nImproved code coverage of a number of files (#3048) (#3049) (#3050) (#3051) (#3052) (#3053) (#3058) (#3059)","category":"page"},{"location":"release_notes/#[Version-1.2.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.2.1)-(August-22,-2022)","page":"Release notes","title":"Version 1.2.1 (August 22, 2022)","text":"","category":"section"},{"location":"release_notes/#Fixed-20","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug when parsing two-sided nonlinear constraints (#3045)","category":"page"},{"location":"release_notes/#[Version-1.2.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.2.0)-(August-16,-2022)","page":"Release notes","title":"Version 1.2.0 (August 16, 2022)","text":"","category":"section"},{"location":"release_notes/#Breaking-2","page":"Release notes","title":"Breaking","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"This is a large minor release because it significantly refactors the internal code for handling nonlinear programs to use the MathOptInterface.Nonlinear submodule that was introduced in MathOptInterface v1.3.0. As a consequence, the internal datastructure in model.nlp_data has been removed, as has the JuMP._Derivatives submodule. Despite the changes, the public API for nonlinear programming has not changed, and any code that uses only the public API and that worked with v1.1.1 will continue to work with v1.2.0.","category":"page"},{"location":"release_notes/#Added-15","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added all_constraints(model; include_variable_in_set_constraints) which simplifies returning a list of all constraint indices in the model.\nAdded the ability to delete nonlinear constraints via delete(::Model, ::NonlinearConstraintRef).\nAdded the ability to provide an explicit Hessian for a multivariate user-defined function.\nAdded support for querying the primal value of a nonlinear constraint via value(::NonlinearConstraintRef)","category":"page"},{"location":"release_notes/#Fixed-21","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug in Containers.DenseAxisArray so that it now supports indexing with keys that hash to the same value, even if they are different types, for example, Int32 and Int64.\nFixed a bug printing the model when the solver does not support MOI.Name.","category":"page"},{"location":"release_notes/#Other-20","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added a constraint programming formulation to the Sudoku tutorial.\nAdded newly supported solvers Pajarito, Clarabel, and COPT to the installation table.\nFixed a variety of other miscellaneous issues in the documentation.","category":"page"},{"location":"release_notes/#[Version-1.1.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.1.1)-(June-14,-2022)","page":"Release notes","title":"Version 1.1.1 (June 14, 2022)","text":"","category":"section"},{"location":"release_notes/#Other-21","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed problem displaying LaTeX in the documentation\nMinor updates to the style guide\nUpdated to MOI v1.4.0 in the documentation","category":"page"},{"location":"release_notes/#[Version-1.1.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.1.0)-(May-25,-2022)","page":"Release notes","title":"Version 1.1.0 (May 25, 2022)","text":"","category":"section"},{"location":"release_notes/#Added-16","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added num_constraints(::Model; count_variable_in_set_constraints) to simplify the process of counting the number of constraints in a model\nAdded VariableRef(::ConstraintRef) for querying the variable associated with a bound or integrality constraint.\nAdded set_normalized_coefficients for modifying the variable coefficients of a vector-valued constraint.\nAdded set_string_names_on_creation to disable creating String names for variables and constraints. This can improve performance.","category":"page"},{"location":"release_notes/#Fixed-22","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug passing nothing to the start keyword of @variable","category":"page"},{"location":"release_notes/#Other-22","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"New tutorials:\nSensitivity analysis of a linear program\nServing web apps\nMinimal ellipse SDP tutorial refactored and improved\nDocs updated to the latest version of each package\nLots of minor fixes and improvements to the documentation","category":"page"},{"location":"release_notes/#[Version-1.0.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v1.0.0)-(March-24,-2022)","page":"Release notes","title":"Version 1.0.0 (March 24, 2022)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Read more about this release, along with an acknowledgement of all the contributors in our JuMP 1.0.0 is released blog post.","category":"page"},{"location":"release_notes/#Breaking-3","page":"Release notes","title":"Breaking","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The previously deprecated functions (v0.23.0, v0.23.1) have been removed. Deprecation was to improve consistency of function names:\nnum_nl_constraints (see num_nonlinear_constraints)\nall_nl_constraints (see all_nonlinear_constraints)\nadd_NL_expression (see add_nonlinear_expression)\nset_NL_objective (see set_nonlinear_objective)\nadd_NL_constraint (see add_nonlinear_constraint)\nnl_expr_string (see nonlinear_expr_string)\nnl_constraint_string (see nonlinear_constraint_string)\nSymMatrixSpace (see SymmetricMatrixSpace)\nThe unintentionally exported variable JuMP.op_hint has been renamed to the unexported JuMP._OP_HINT","category":"page"},{"location":"release_notes/#Fixed-23","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug writing .nl files\nFixed a bug broadcasting SparseAxisArrays","category":"page"},{"location":"release_notes/#[Version-0.23.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.23.2)-(March-14,-2022)","page":"Release notes","title":"Version 0.23.2 (March 14, 2022)","text":"","category":"section"},{"location":"release_notes/#Added-17","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added relative_gap to solution_summary\nregister now throws an informative error if the function is not differentiable using ForwardDiff. In some cases, the check in register will encounter a false negative, and the informative error will be thrown at run-time. This usually happens when the function is non-differentiable in a subset of the domain.","category":"page"},{"location":"release_notes/#Fixed-24","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a scoping issue when extending the container keyword of containers","category":"page"},{"location":"release_notes/#Other-23","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Docs updated to the latest version of each package","category":"page"},{"location":"release_notes/#[Version-0.23.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.23.1)-(March-2,-2022)","page":"Release notes","title":"Version 0.23.1 (March 2, 2022)","text":"","category":"section"},{"location":"release_notes/#Deprecated","page":"Release notes","title":"Deprecated","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"nl_expr_string and nl_constraint_string have been renamed to nonlinear_expr_string and nonlinear_constraint_string. The old methods still exist with deprecation warnings. This change should impact very few users because to call them you must rely on private internals of the nonlinear API. Users are encouraged to use sprint(show, x) instead, where x is the nonlinear expression or constraint of interest.","category":"page"},{"location":"release_notes/#Added-18","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added support for Base.abs2(x) where x is a variable or affine expression. This is mainly useful for complex-valued constraints.","category":"page"},{"location":"release_notes/#Fixed-25","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed addition of complex and real affine expressions\nFixed arithmetic for Complex-valued quadratic expressions\nFixed variable bounds passed as Rational{Int}(Inf)\nFixed printing of the coefficient (0 + 1im)\nFixed a bug when solution_summary is called prior to optimize!","category":"page"},{"location":"release_notes/#[Version-0.23.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.23.0)-(February-25,-2022)","page":"Release notes","title":"Version 0.23.0 (February 25, 2022)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"JuMP v0.23.0 is a breaking release. It is also a release-candidate for JuMP v1.0.0. That is, if no issues are found with the v0.23.0 release, then it will be re-tagged as v1.0.0.","category":"page"},{"location":"release_notes/#Breaking-4","page":"Release notes","title":"Breaking","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Julia 1.6 is now the minimum supported version\nMathOptInterface has been updated to v1.0.0\nAll previously deprecated functionality has been removed\nPrintMode, REPLMode and IJuliaMode have been removed in favor of the MIME types MIME\"text/plain\" and MIME\"text/latex\". Replace instances of ::Type{REPLMode} with ::MIME\"text/plain\", REPLMode with MIME(\"text/plain\"), ::Type{IJuliaMode} with ::MIME\"text/latex\", and IJuliaMode with MIME(\"text/latex\").\nFunctions containing the nl_ acronym have been renamed to the more explicit nonlinear_. For example, num_nl_constraints is now num_nonlinear_constraints and set_NL_objective is now set_nonlinear_objective. Calls to the old functions throw an error explaining the new name.\nSymMatrixSpace has been renamed to SymmetricMatrixSpace","category":"page"},{"location":"release_notes/#Added-19","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added nonlinear_dual_start_value and set_nonlinear_dual_start_value\nAdded preliminary support for Complex coefficient types","category":"page"},{"location":"release_notes/#Fixed-26","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug in solution_summary","category":"page"},{"location":"release_notes/#Other-24","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"MILP examples have been migrated from GLPK to HiGHS\nFixed various typos\nImproved section on setting constraint start values","category":"page"},{"location":"release_notes/#Troubleshooting-problems-when-updating","page":"Release notes","title":"Troubleshooting problems when updating","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"If you experience problems when updating, you are likely using previously deprecated functionality. (By default, Julia does not warn when you use deprecated features.)","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"To find the deprecated features you are using, start Julia with --depwarn=yes:","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"$ julia --depwarn=yes","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Then install JuMP v0.22.3:","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"julia> using Pkg\njulia> pkg\"add JuMP@0.22.3\"","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"And then run your code. Apply any suggestions, or search the release notes below for advice on updating a specific deprecated feature.","category":"page"},{"location":"release_notes/#[Version-0.22.3](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.22.3)-(February-10,-2022)","page":"Release notes","title":"Version 0.22.3 (February 10, 2022)","text":"","category":"section"},{"location":"release_notes/#Fixed-27","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a reproducibility issue in the TSP tutorial\nFixed a reproducibility issue in the max_cut_sdp tutorial\nFixed a bug broadcasting an empty SparseAxisArray","category":"page"},{"location":"release_notes/#Other-25","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added a warning and improved documentation for the modify-then-query case\nFixed a typo in the docstring of RotatedSecondOrderCone\nAdded Aqua.jl as a check for code health\nAdded introductions to each section of the tutorials\nImproved the column generation and Benders decomposition tutorials\nUpdated documentation to MOI v0.10.8\nUpdated JuliaFormatter to v0.22.2","category":"page"},{"location":"release_notes/#[Version-0.22.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.22.2)-(January-10,-2022)","page":"Release notes","title":"Version 0.22.2 (January 10, 2022)","text":"","category":"section"},{"location":"release_notes/#Added-20","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The function all_nl_constraints now returns all nonlinear constraints in a model\nstart_value and set_start_value can now be used to get and set the primal start for constraint references\nPlural macros now return a tuple containing the elements that were defined instead of nothing\nAnonymous variables are now printed as _[i] where i is the index of the variable instead of noname. Calling name(x) still returns \"\" so this is non-breaking.","category":"page"},{"location":"release_notes/#Fixed-28","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed handling of min and max in nonlinear expressions\nCartesianIndex is no longer allowed as a key for DenseAxisArrays.","category":"page"},{"location":"release_notes/#Other-26","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Improved the performance of GenericAffExpr\nAdded a tutorial on the Travelling Salesperson Problem\nAdded a tutorial on querying the Hessian of a nonlinear program\nAdded documentation on using custom solver binaries.","category":"page"},{"location":"release_notes/#[Version-0.22.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.22.1)-(November-29,-2021)","page":"Release notes","title":"Version 0.22.1 (November 29, 2021)","text":"","category":"section"},{"location":"release_notes/#Added-21","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Export OptimizationSense enum, with instances: MIN_SENSE, MAX_SENSE, and FEASIBILITY_SENSE\nAdd Base.isempty(::Model) to match Base.empty(::Model)","category":"page"},{"location":"release_notes/#Fixed-29","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix bug in container with tuples as indices\nFix bug in set_time_limit_sec","category":"page"},{"location":"release_notes/#Other-27","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Add tutorial \"Design patterns for larger models\"\nRemove release notes section from PDF\nGeneral edits of the documentation and error messages","category":"page"},{"location":"release_notes/#[Version-0.22.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.22.0)-(November-10,-2021)","page":"Release notes","title":"Version 0.22.0 (November 10, 2021)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"JuMP v0.22 is a breaking release","category":"page"},{"location":"release_notes/#Breaking-5","page":"Release notes","title":"Breaking","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"JuMP 0.22 contains a number of breaking changes. However, these should be invisible for the majority of users. You will mostly encounter these breaking changes if you: wrote a JuMP extension, accessed backend(model), or called @SDconstraint.","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The breaking changes are as follows:","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"MathOptInterface has been updated to v0.10.4. For users who have interacted with the MOI backend, this contains a large number of breaking changes. Read the MathOptInterface release notes for more details.\nThe bridge_constraints keyword argument to Model and set_optimizer has been renamed add_bridges to reflect that more thing were bridged than just constraints.\nThe backend(model) field now contains a concrete instance of a MOI.Utilities.CachingOptimizer instead of one with an abstractly typed optimizer field. In most cases, this will lead to improved performance. However, calling set_optimizer after backend invalidates the old backend. For example:\nmodel = Model()\nb = backend(model)\nset_optimizer(model, GLPK.Optimizer)\n@variable(model, x)\n# b is not updated with `x`! Get a new b by calling `backend` again.\nnew_b = backend(model)\nAll usages of @SDconstraint are deprecated. The new syntax is @constraint(model, X >= Y, PSDCone()).\nCreating a DenseAxisArray with a Number as an axis will now display a warning. This catches a common error in which users write @variable(model, x[length(S)]) instead of @variable(model, x[1:length(S)]).\nThe caching_mode argument to Model, for example, Model(caching_mode = MOIU.MANUAL) mode has been removed. For more control over the optimizer, use direct_model instead.\nThe previously deprecated lp_objective_perturbation_range and lp_rhs_perturbation_range functions have been removed. Use lp_sensitivity_report instead.\nThe .m fields of NonlinearExpression and NonlinearParameter have been renamed to .model.\nInfinite variable bounds are now ignored. Thus, @variable(model, x <= Inf) will show has_upper_bound(x) == false. Previously, these bounds were passed through to the solvers which caused numerical issues for solvers expecting finite bounds.\nThe variable_type and constraint_type functions were removed. This should only affect users who previously wrote JuMP extensions. The functions can be deleted without consequence.\nThe internal functions moi_mode, moi_bridge_constraints, moi_add_constraint, and moi_add_to_function_constant are no longer exported.\nThe un-used method Containers.generate_container has been deleted.\nThe Containers API has been refactored, and _build_ref_sets is now public as Containers.build_ref_sets.\nThe parse_constraint_ methods for extending @constraint at parse time have been refactored in a breaking way. Consult the Extensions documentation for more details and examples.","category":"page"},{"location":"release_notes/#Added-22","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The TerminationStatusCode and ResultStatusCode enums are now exported by JuMP. Prefer termination_status(model) == OPTIMAL instead of == MOI.OPTIMAL, although the MOI. prefix way still works.\nCopy a x::DenseAxisArray to an Array by calling Array(x).\nNonlinearExpression is now a subtype of AbstractJuMPScalar\nConstraints such as @constraint(model, x + 1 in MOI.Integer()) are now supported.\nprimal_feasibility_report now accepts a function as the first argument.\nScalar variables @variable(model, x[1:2] in MOI.Integer()) creates two variables, both of which are constrained to be in the set MOI.Integer.\nConic constraints can now be specified as inequalities under a different partial ordering. So @constraint(model, x - y in MOI.Nonnegatives()) can now be written as @constraint(model, x >= y, MOI.Nonnegatives()).\nNames are now set for vectorized constraints.","category":"page"},{"location":"release_notes/#Fixed-30","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a performance issue when show was called on a SparseAxisArray with a large number of elements.\nFixed a bug displaying barrier and simplex iterations in solution_summary.\nFixed a bug by implementing hash for DenseAxisArray and SparseAxisArray.\nNames are now only set if the solver supports them. Previously, this prevented solvers such as Ipopt from being used with direct_model.\nMutableArithmetics.Zero is converted into a 0.0 before being returned to the user. Previously, some calls to @expression would return the undocumented MutableArithmetics.Zero() object. One example is summing over an empty set @expression(model, sum(x[i] for i in 1:0)). You will now get 0.0 instead.\nAffExpr and QuadExpr can now be used with == 0 instead of iszero. This fixes a number of issues relating to Julia standard libraries such as LinearAlgebra and SparseArrays.\nFixed a bug when registering a user-defined function with splatting.","category":"page"},{"location":"release_notes/#Other-28","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The documentation is now available as a PDF.\nThe documentation now includes a full copy of the MathOptInterface documentation to make it easy to link concepts between the docs. (The MathOptInterface documentation has also been significantly improved.)\nThe documentation contains a large number of improvements and clarifications on a range of topics. Thanks to @sshin23, @DilumAluthge, and @jlwether.\nThe documentation is now built with Julia 1.6 instead of 1.0.\nVarious error messages have been improved to be more readable.","category":"page"},{"location":"release_notes/#[Version-0.21.10](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.10)-(September-4,-2021)","page":"Release notes","title":"Version 0.21.10 (September 4, 2021)","text":"","category":"section"},{"location":"release_notes/#Added-23","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added add_NL_expression\nadd_NL_xxx functions now support AffExpr and QuadExpr as terms","category":"page"},{"location":"release_notes/#Fixed-31","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug in solution_summary\nFixed a bug in relax_integrality","category":"page"},{"location":"release_notes/#Other-29","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Improved error message in lp_sensitivity_report","category":"page"},{"location":"release_notes/#[Version-0.21.9](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.9)-(August-1,-2021)","page":"Release notes","title":"Version 0.21.9 (August 1, 2021)","text":"","category":"section"},{"location":"release_notes/#Added-24","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Containers now support arbitrary container types by passing the type to the container keyword and overloading Containers.container.\nis_valid now supports nonlinear constraints\nAdded unsafe_backend for querying the inner-most optimizer of a JuMP model.\nNonlinear parameters now support the plural @NLparameters macro.\nContainers (for example, DenseAxisArray) can now be used in vector-valued constraints.","category":"page"},{"location":"release_notes/#Other-30","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Various improvements to the documentation.","category":"page"},{"location":"release_notes/#[Version-0.21.8](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.8)-(May-8,-2021)","page":"Release notes","title":"Version 0.21.8 (May 8, 2021)","text":"","category":"section"},{"location":"release_notes/#Added-25","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The @constraint macro is now extendable in the same way as @variable.\nAffExpr and QuadExpr can now be used in nonlinear macros.","category":"page"},{"location":"release_notes/#Fixed-32","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed a bug in lp_sensitivity_report.\nFixed an inference issue when creating empty SparseAxisArrays.","category":"page"},{"location":"release_notes/#[Version-0.21.7](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.7)-(April-12,-2021)","page":"Release notes","title":"Version 0.21.7 (April 12, 2021)","text":"","category":"section"},{"location":"release_notes/#Added-26","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added primal_feasibility_report, which can be used to check whether a primal point satisfies primal feasibility.\nAdded coefficient, which returns the coefficient associated with a variable in affine and quadratic expressions.\nAdded copy_conflict, which returns the IIS of an infeasible model.\nAdded solution_summary, which returns (and prints) a struct containing a summary of the solution.\nAllow AbstractVector in vector constraints instead of just Vector.\nAdded latex_formulation(model) which returns an object representing the latex formulation of a model. Use print(latex_formulation(model)) to print the formulation as a string.\nUser-defined functions in nonlinear expressions are now automatically registered to aid quick model prototyping. However, a warning is printed to encourage the manual registration.\nDenseAxisArray's now support broadcasting over multiple arrays.\nContainer indices can now be iterators of Base.SizeUnknown.","category":"page"},{"location":"release_notes/#Fixed-33","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed bug in rad2deg and deg2rad in nonlinear expressions.\nFixed a MethodError bug in Containers when forcing container type.\nAllow partial slicing of a DenseAxisArray, resolving an issue from 2014.\nFixed a bug printing variable names in IJulia.\nEnding an IJulia cell with model now prints a summary of the model (like in the REPL) not the latex formulation. Use print(model) to print the latex formulation.\nFixed a bug when copying models containing nested arrays.","category":"page"},{"location":"release_notes/#Other-31","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Tutorials are now part of the documentation, and more refactoring has taken place.\nAdded JuliaFormatter added as a code formatter.\nAdded some precompilation statements to reduce initial latency.\nVarious improvements to error messages to make them more helpful.\nImproved performance of value(::NonlinearExpression).\nImproved performance of fix(::VariableRef).","category":"page"},{"location":"release_notes/#[Version-0.21.6](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.6)-(January-29,-2021)","page":"Release notes","title":"Version 0.21.6 (January 29, 2021)","text":"","category":"section"},{"location":"release_notes/#Added-27","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added support for skew symmetric variables via @variable(model, X[1:2, 1:2] in SkewSymmetricMatrixSpace()).\nlp_sensitivity_report has been added which significantly improves the performance of querying the sensitivity summary of an LP. lp_objective_perturbation_range and lp_rhs_perturbation_range are deprecated.\nDual warm-starts are now supported with set_dual_start_value and dual_start_value.\n∈ (\\in) can now be used in macros instead of = or in.\nUse haskey(model::Model, key::Symbol) to check if a name key is registered in a model.\nAdded unregister(model::Model, key::Symbol) to unregister a name key from model.\nAdded callback_node_status for use in callbacks.\nAdded print_bridge_graph to visualize the bridging graph generated by MathOptInterface.\nImproved error message for containers with duplicate indices.","category":"page"},{"location":"release_notes/#Fixed-34","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Various fixes to pass tests on Julia 1.6.\nFixed a bug in the printing of nonlinear expressions in IJulia.\nFixed a bug when nonlinear expressions are passed to user-defined functions.\nSome internal functions that were previously exported are now no longer exported.\nFixed a bug when relaxing a fixed binary variable.\nFixed a StackOverflowError that occurred when SparseAxisArrays had a large number of elements.\nRemoved an unnecessary type assertion in list_of_constraint_types.\nFixed a bug when copying models with registered expressions.","category":"page"},{"location":"release_notes/#Other-32","page":"Release notes","title":"Other","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The documentation has been significantly overhauled. It now has distinct sections for the manual, API reference, and examples. The existing examples in /examples have now been moved to /docs/src/examples and rewritten using Literate.jl, and they are now included in the documentation.\nJuliaFormatter has been applied to most of the codebase. This will continue to roll out over time, as we fix upstream issues in the formatter, and will eventually become compulsory.\nThe root cause of a large number of method invalidations has been resolved.\nWe switched continuous integration from Travis and Appveyor to GitHub Actions.","category":"page"},{"location":"release_notes/#[Version-0.21.5](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.5)-(September-18,-2020)","page":"Release notes","title":"Version 0.21.5 (September 18, 2020)","text":"","category":"section"},{"location":"release_notes/#Fixed-35","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed deprecation warnings\nThrow DimensionMismatch for incompatibly sized functions and sets\nUnify treatment of keys(x) on JuMP containers","category":"page"},{"location":"release_notes/#[Version-0.21.4](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.4)-(September-14,-2020)","page":"Release notes","title":"Version 0.21.4 (September 14, 2020)","text":"","category":"section"},{"location":"release_notes/#Added-28","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Add debug info when adding unsupported constraints\nAdd relax_integrality for solving continuous relaxation\nAllow querying constraint conflicts","category":"page"},{"location":"release_notes/#Fixed-36","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Dispatch on Real for MOI.submit\nImplement copy for CustomSet in tests\nDon't export private macros\nFix invalid assertion in nonlinear\nError if constraint has NaN right-hand side\nImprove speed of tests\nLots of work modularizing files in /test\nImprove line numbers in macro error messages\nPrint nonlinear subexpressions\nVarious documentation updates\nDependency updates:\nDatastructures 0.18\nMathOptFormat v0.5\nPrep for MathOptInterface 0.9.15","category":"page"},{"location":"release_notes/#[Version-0.21.3](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.3)-(June-18,-2020)","page":"Release notes","title":"Version 0.21.3 (June 18, 2020)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added Special Order Sets (SOS1 and SOS2) to JuMP with default weights to ease the creation of such constraints (#2212).\nAdded functions simplex_iterations, barrier_iterations and node_count (#2201).\nAdded function reduced_cost (#2205).\nImplemented callback_value for affine and quadratic expressions (#2231).\nSupport MutableArithmetics.Zero in objective and constraints (#2219).\nDocumentation improvements:\nMention tutorials in the docs (#2223).\nUpdate COIN-OR links (#2242).\nExplicit link to the documentation of MOI.FileFormats (#2253).\nTypo fixes (#2261).\nContainers improvements:\nFix Base.map for DenseAxisArray (#2235).\nThrow BoundsError if number of indices is incorrect for DenseAxisArray and SparseAxisArray (#2240).\nExtensibility improvements:\nImplement a set_objective method fallback that redirects to set_objective_sense and set_objective_function (#2247).\nAdd parse_constraint method with arbitrary number of arguments (#2051).\nAdd parse_constraint_expr and parse_constraint_head (#2228).","category":"page"},{"location":"release_notes/#[Version-0.21.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.2)-(April-2,-2020)","page":"Release notes","title":"Version 0.21.2 (April 2, 2020)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added relative_gap() to access MOI.RelativeGap() attribute (#2199).\nDocumentation fixes:\nAdded link to source for docstrings in the documentation (#2207).\nAdded docstring for @variables macro (#2216).\nTypo fixes (#2177, #2184, #2182).\nImplementation of methods for Base functions:\nImplemented Base.empty! for JuMP.Model (#2198).\nImplemented Base.conj for JuMP scalar types (#2209).","category":"page"},{"location":"release_notes/#Fixed-37","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixed sum of expression with scalar product in macro (#2178).\nFixed writing of nonlinear models to MathOptFormat (#2181).\nFixed construction of empty SparseAxisArray (#2179).\nFixed constraint with zero function (#2188).","category":"page"},{"location":"release_notes/#[Version-0.21.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.1)-(Feb-18,-2020)","page":"Release notes","title":"Version 0.21.1 (Feb 18, 2020)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Improved the clarity of the with_optimizer deprecation warning.","category":"page"},{"location":"release_notes/#[Version-0.21.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.0)-(Feb-16,-2020)","page":"Release notes","title":"Version 0.21.0 (Feb 16, 2020)","text":"","category":"section"},{"location":"release_notes/#Breaking-6","page":"Release notes","title":"Breaking","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Deprecated with_optimizer (#2090, #2084, #2141). You can replace with_optimizer by either nothing, optimizer_with_attributes or a closure:\nreplace with_optimizer(Ipopt.Optimizer) by Ipopt.Optimizer.\nreplace with_optimizer(Ipopt.Optimizer, max_cpu_time=60.0) by optimizer_with_attributes(Ipopt.Optimizer, \"max_cpu_time\" => 60.0).\nreplace with_optimizer(Gurobi.Optimizer, env) by () -> Gurobi.Optimizer(env).\nreplace with_optimizer(Gurobi.Optimizer, env, Presolve=0) by optimizer_with_attributes(() -> Gurobi.Optimizer(env), \"Presolve\" => 0).\nalternatively to optimizer_with_attributes, you can also set the attributes separately with set_optimizer_attribute.\nRenamed set_parameter and set_parameters to set_optimizer_attribute and set_optimizer_attributes (#2150).\nBroadcast should now be explicit inside macros. @SDconstraint(model, x >= 1) and @constraint(model, x + 1 in SecondOrderCone()) now throw an error instead of broadcasting 1 along the dimension of x (#2107).\n@SDconstraint(model, x >= 0) is now equivalent to @constraint(model, x in PSDCone()) instead of @constraint(model, (x .- 0) in PSDCone()) (#2107).\nThe macros now create the containers with map instead of for loops, as a consequence, containers created by @expression can now have any element type and containers of constraint references now have concrete element types when possible. This fixes a long-standing issue where @expression could only be used to generate a collection of linear expressions. Now it works for quadratic expressions as well (#2070).\nCalling deepcopy(::AbstractModel) now throws an error.\nThe constraint name is now printed in the model string (#2108).","category":"page"},{"location":"release_notes/#Added-29","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Added support for solver-independent and solver-specific callbacks (#2101).\nAdded write_to_file and read_from_file, supported formats are CBF, LP, MathOptFormat, MPS and SDPA (#2114).\nAdded support for complementarity constraints (#2132).\nAdded support for indicator constraints (#2092).\nAdded support for querying multiple solutions with the result keyword (#2100).\nAdded support for constraining variables on creation (#2128).\nAdded method delete that deletes a vector of variables at once if it is supported by the underlying solver (#2135).\nThe arithmetic between JuMP expression has be refactored into the MutableArithmetics package (#2107).\nImproved error on complex values in NLP (#1978).\nAdded an example of column generation (#2010).","category":"page"},{"location":"release_notes/#Fixed-38","page":"Release notes","title":"Fixed","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Incorrect coefficients generated when using Symmetric variables (#2102)","category":"page"},{"location":"release_notes/#[Version-0.20.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.20.1)-(Oct-18,-2019)","page":"Release notes","title":"Version 0.20.1 (Oct 18, 2019)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Add sections on @variables and @constraints in the documentation (#2062).\nFixed product of sparse matrices for Julia v1.3 (#2063).\nAdded set_objective_coefficient to modify the coefficient of a linear term of the objective function (#2008).\nAdded set_time_limit_sec, unset_time_limit_sec and time_limit_sec to set and query the time limit for the solver in seconds (#2053).","category":"page"},{"location":"release_notes/#[Version-0.20.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.20.0)-(Aug-24,-2019)","page":"Release notes","title":"Version 0.20.0 (Aug 24, 2019)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Documentation updates.\nNumerous bug fixes.\nBetter error messages (#1977, #1978, #1997, #2017).\nPerformance improvements (#1947, #2032).\nAdded LP sensitivity summary functions lp_objective_perturbation_range and lp_rhs_perturbation_range (#1917).\nAdded functions dual_objective_value, raw_status and set_parameter.\nAdded function set_objective_coefficient to modify the coefficient of a linear term of the objective (#2008).\nAdded functions set_normalized_rhs, normalized_rhs, and add_to_function_constant to modify and get the constant part of a constraint (#1935, #1960).\nAdded functions set_normalized_coefficient and normalized_coefficient to modify and get the coefficient of a linear term of a constraint (#1935, #1960).\nNumerous other improvements in MOI 0.9, see the NEWS.md file of MOI for more details.","category":"page"},{"location":"release_notes/#[Version-0.19.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.19.2)-(June-8,-2019)","page":"Release notes","title":"Version 0.19.2 (June 8, 2019)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a bug in derivatives that could arise in models with nested nonlinear subexpressions.","category":"page"},{"location":"release_notes/#[Version-0.19.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.19.1)-(May-12,-2019)","page":"Release notes","title":"Version 0.19.1 (May 12, 2019)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Usability and performance improvements.\nBug fixes.","category":"page"},{"location":"release_notes/#[Version-0.19.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.19.0)-(February-15,-2019)","page":"Release notes","title":"Version 0.19.0 (February 15, 2019)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"JuMP 0.19 contains significant breaking changes.","category":"page"},{"location":"release_notes/#Breaking-7","page":"Release notes","title":"Breaking","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"JuMP's abstraction layer for communicating with solvers changed from MathProgBase (MPB) to MathOptInterface (MOI). MOI addresses many longstanding design issues. (See @mlubin's slides from JuMP-dev 2018.) JuMP 0.19 is compatible only with solvers that have been updated for MOI. See the installation guide for a list of solvers that have and have not yet been updated.\nMost solvers have been renamed to PackageName.Optimizer. For example, GurobiSolver() is now Gurobi.Optimizer.\nSolvers are no longer added to a model via Model(solver = XXX(kwargs...)). Instead use Model(with_optimizer(XXX, kwargs...)). For example, Model(with_optimizer(Gurobi.Optimizer, OutputFlag=0)).\nJuMP containers (for example, the objects returned by @variable) have been redesigned. Containers.SparseAxisArray replaces JuMPDict, JuMPArray was rewritten (inspired by AxisArrays) and renamed Containers.DenseAxisArray, and you can now request a container type with the container= keyword to the macros. See the corresponding documentation for more details.\nThe statuses returned by solvers have changed. See the possible status values here. The MOI statuses are much richer than the MPB statuses and can be used to distinguish between previously indistinguishable cases (for example, did the solver have a feasible solution when it stopped because of the time limit?).\nStarting values are separate from result values. Use value to query the value of a variable in a solution. Use start_value and set_start_value to get and set an initial starting point provided to the solver. The solutions from previous solves are no longer automatically set as the starting points for the next solve.\nThe data structures for affine and quadratic expressions AffExpr and QuadExpr have changed. Internally, terms are stored in dictionaries instead of lists. Duplicate coefficients can no longer exist. Accessors and iteration methods have changed.\nJuMPNLPEvaluator no longer includes the linear and quadratic parts of the model in the evaluation calls. These are now handled separately to allow NLP solvers that support various types of constraints.\nJuMP solver-independent callbacks have been replaced by solver-specific callbacks. See your favorite solver for more details. (See the note below: No solver-specific callbacks are implemented yet.)\nThe norm() syntax is no longer recognized inside macros. Use the SecondOrderCone() set instead.\nJuMP no longer performs automatic transformation between special quadratic forms and second-order cone constraints. Support for these constraint classes depends on the solver.\nThe symbols :Min and :Max are no longer used as optimization senses. Instead, JuMP uses the OptimizationSense enum from MathOptInterface. @objective(model, Max, ...), @objective(model, Min, ...), @NLobjective(model, Max, ...), and @objective(model, Min, ...) remain valid, but @objective(m, :Max, ...) is no longer accepted.\nThe sign conventions for duals has changed in some cases for consistency with conic duality (see the documentation). The shadow_price helper method returns duals with signs that match conventional LP interpretations of dual values as sensitivities of the objective value to relaxations of constraints.\n@constraintref is no longer defined. Instead, create the appropriate container to hold constraint references manually. For example,\nconstraints = Dict() # Optionally, specify types for improved performance.\nfor i in 1:N\n constraints[i] = @constraint(model, ...)\nend\nThe lowerbound, upperbound, and basename keyword arguments to the @variable macro have been renamed to lower_bound, upper_bound, and base_name, for consistency with JuMP's new style recommendations.\nWe rely on broadcasting syntax to apply accessors to collections of variables, for example, value.(x) instead of getvalue(x) for collections. (Use value(x) when x is a scalar object.)","category":"page"},{"location":"release_notes/#Added-30","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Splatting (like f(x...)) is recognized in restricted settings in nonlinear expressions.\nSupport for deleting constraints and variables.\nThe documentation has been completely rewritten using docstrings and Documenter.\nSupport for modeling mixed conic and quadratic models (for example, conic models with quadratic objectives and bi-linear matrix inequalities).\nSignificantly improved support for modeling new types of constraints and for extending JuMP's macros.\nSupport for providing dual warm starts.\nImproved support for accessing solver-specific attributes (for example, the irreducible inconsistent subsystem).\nExplicit control of whether symmetry-enforcing constraints are added to PSD constraints.\nSupport for modeling exponential cones.\nSignificant improvements in internal code quality and testing.\nStyle and naming guidelines.\nDirect mode and manual mode provide explicit control over when copies of a model are stored or regenerated. See the corresponding documentation.","category":"page"},{"location":"release_notes/#Regressions","page":"Release notes","title":"Regressions","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"There are known regressions from JuMP 0.18 that will be addressed in a future release (0.19.x or later):","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Performance regressions in model generation (issue). Please file an issue anyway if you notice a significant performance regression. We have plans to address a number of performance issues, but we might not be aware of all of them.\nFast incremental NLP solves are not yet reimplemented (issue).\nWe do not yet have an implementation of solver-specific callbacks.\nThe column generation syntax in @variable has been removed (that is, the objective, coefficients, and inconstraints keyword arguments). Support for column generation will be re-introduced in a future release.\nThe ability to solve the continuous relaxation (that is, via solve(model; relaxation = true)) is not yet reimplemented (issue).","category":"page"},{"location":"release_notes/#[Version-0.18.5](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.18.5)-(December-1,-2018)","page":"Release notes","title":"Version 0.18.5 (December 1, 2018)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Support views in some derivative evaluation functions.\nImproved compatibility with PackageCompiler.","category":"page"},{"location":"release_notes/#[Version-0.18.4](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.18.4)-(October-8,-2018)","page":"Release notes","title":"Version 0.18.4 (October 8, 2018)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a bug in model printing on Julia 0.7 and 1.0.","category":"page"},{"location":"release_notes/#[Version-0.18.3](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.18.3)-(October-1,-2018)","page":"Release notes","title":"Version 0.18.3 (October 1, 2018)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Add support for Julia v1.0 (Thanks @ExpandingMan)\nFix matrix expressions with quadratic functions (#1508)","category":"page"},{"location":"release_notes/#[Version-0.18.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.18.2)-(June-10,-2018)","page":"Release notes","title":"Version 0.18.2 (June 10, 2018)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a bug in second-order derivatives when expressions are present (#1319)\nFix a bug in @constraintref (#1330)","category":"page"},{"location":"release_notes/#[Version-0.18.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.18.1)-(April-9,-2018)","page":"Release notes","title":"Version 0.18.1 (April 9, 2018)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix for nested tuple destructuring (#1193)\nPreserve internal model when relaxation=true (#1209)\nMinor bug fixes and updates for example","category":"page"},{"location":"release_notes/#[Version-0.18.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.18.0)-(July-27,-2017)","page":"Release notes","title":"Version 0.18.0 (July 27, 2017)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Drop support for Julia 0.5.\nUpdate for ForwardDiff 0.5.\nMinor bug fixes.","category":"page"},{"location":"release_notes/#[Version-0.17.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.17.1)-(June-9,-2017)","page":"Release notes","title":"Version 0.17.1 (June 9, 2017)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Use of constructconstraint! in @SDconstraint.\nMinor bug fixes.","category":"page"},{"location":"release_notes/#[Version-0.17.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.17.0)-(May-27,-2017)","page":"Release notes","title":"Version 0.17.0 (May 27, 2017)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Breaking change: Mixing quadratic and conic constraints is no longer supported.\nBreaking change: The getvariable and getconstraint functions are replaced by indexing on the corresponding symbol. For instance, to access the variable with name x, one should now write m[:x] instead of getvariable(m, :x). As a consequence, creating a variable and constraint with the same name now triggers a warning, and accessing one of them afterwards throws an error. This change is breaking only in the latter case.\nAddition of the getobjectivebound function that mirrors the functionality of the MathProgBase getobjbound function except that it takes into account transformations performed by JuMP.\nMinor bug fixes.","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The following changes are primarily of interest to developers of JuMP extensions:","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The new syntax @constraint(model, expr in Cone) creates the constraint ensuring that expr is inside Cone. The Cone argument is passed to constructconstraint! which enables the call to the dispatched to an extension.\nThe @variable macro now calls constructvariable! instead of directly calling the Variable constructor. Extra arguments and keyword arguments passed to @variable are passed to constructvariable! which enables the call to be dispatched to an extension.\nRefactor the internal function conicdata (used build the MathProgBase conic model) into smaller sub-functions to make these parts reusable by extensions.","category":"page"},{"location":"release_notes/#[Version-0.16.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.16.2)-(March-28,-2017)","page":"Release notes","title":"Version 0.16.2 (March 28, 2017)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Minor bug fixes and printing tweaks\nAddress deprecation warnings for Julia 0.6","category":"page"},{"location":"release_notes/#[Version-0.16.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.16.1)-(March-7,-2017)","page":"Release notes","title":"Version 0.16.1 (March 7, 2017)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Better support for AbstractArray in JuMP (Thanks @tkoolen)\nMinor bug fixes","category":"page"},{"location":"release_notes/#[Version-0.16.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.16.0)-(February-23,-2017)","page":"Release notes","title":"Version 0.16.0 (February 23, 2017)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Breaking change: JuMP no longer has a mechanism for selecting solvers by default (the previous mechanism was flawed and incompatible with Julia 0.6). Not specifying a solver before calling solve() will result in an error.\nBreaking change: User-defined functions are no longer global. The first argument to JuMP.register is now a JuMP Model object within whose scope the function will be registered. Calling JuMP.register without a Model now produces an error.\nBreaking change: Use the new JuMP.fix method to fix a variable to a value or to update the value to which a variable is fixed. Calling setvalue on a fixed variable now results in an error in order to avoid silent behavior changes. (Thanks @joaquimg)\nNonlinear expressions now print out similarly to linear/quadratic expressions (useful for debugging!)\nNew category keyword to @variable. Used for specifying categories of anonymous variables.\nCompatibility with Julia 0.6-dev.\nMinor fixes and improvements (Thanks @cossio, @ccoffrin, @blegat)","category":"page"},{"location":"release_notes/#[Version-0.15.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.15.1)-(January-31,-2017)","page":"Release notes","title":"Version 0.15.1 (January 31, 2017)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Bugfix for @LinearConstraints and friends","category":"page"},{"location":"release_notes/#[Version-0.15.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.15.0)-(December-22,-2016)","page":"Release notes","title":"Version 0.15.0 (December 22, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Julia 0.5.0 is the minimum required version for this release.\nDocument support for BARON solver\nEnable info callbacks in more states than before, for example, for recording solutions. New when argument to addinfocallback (#814, thanks @yeesian)\nImproved support for anonymous variables. This includes new warnings for potentially confusing use of the traditional non-anonymous syntax:\nWhen multiple variables in a model are given the same name\nWhen non-symbols are used as names, for example, @variable(m, x[1][1:N])\nImprovements in iterating over JuMP containers (#836, thanks @IssamT)\nSupport for writing variable names in .lp file output (Thanks @leethargo)\nSupport for querying duals to SDP problems (Thanks @blegat)\nThe comprehension syntax with curly braces sum{}, prod{}, and norm2{} has been deprecated in favor of Julia's native comprehension syntax sum(), prod() and norm() as previously announced. (For early adopters of the new syntax, norm2() was renamed to norm() without deprecation.)\nUnit tests rewritten to use Base.Test instead of FactCheck\nImproved support for operations with matrices of JuMP types (Thanks @ExpandingMan)\nThe syntax to halt a solver from inside a callback has changed from throw(CallbackAbort()) to return JuMP.StopTheSolver\nMinor bug fixes","category":"page"},{"location":"release_notes/#[Version-0.14.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.14.2)-(December-12,-2016)","page":"Release notes","title":"Version 0.14.2 (December 12, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Allow singleton anonymous variables (includes bugfix)","category":"page"},{"location":"release_notes/#[Version-0.14.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.14.1)-(September-12,-2016)","page":"Release notes","title":"Version 0.14.1 (September 12, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"More consistent handling of states in informational callbacks, includes a new when parameter to addinfocallback for specifying in which state an informational callback should be called.","category":"page"},{"location":"release_notes/#[Version-0.14.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.14.0)-(August-7,-2016)","page":"Release notes","title":"Version 0.14.0 (August 7, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Compatibility with Julia 0.5 and ForwardDiff 0.2\nSupport for \"anonymous\" variables, constraints, expressions, and parameters, for example, x = @variable(m, [1:N]) instead of @variable(m, x[1:N])\nSupport for retrieving constraints from a model by name via getconstraint\n@NLconstraint now returns constraint references (as expected).\nSupport for vectorized expressions within lazy constraints\nOn Julia 0.5, parse new comprehension syntax sum(x[i] for i in 1:N if isodd(i)) instead of sum{ x[i], i in 1:N; isodd(i) }. The old syntax with curly braces will be deprecated in JuMP 0.15.\nNow possible to provide nonlinear expressions as \"raw\" Julia Expr objects instead of using JuMP's nonlinear macros. This input format is useful for programmatically generated expressions.\ns/Mathematical Programming/Mathematical Optimization/\nSupport for local cuts (Thanks to @madanim, Mehdi Madani)\nDocument Xpress interface developed by @joaquimg, Joaquim Dias Garcia\nMinor bug and deprecation fixes (Thanks @odow, @jrevels)","category":"page"},{"location":"release_notes/#[Version-0.13.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.13.2)-(May-16,-2016)","page":"Release notes","title":"Version 0.13.2 (May 16, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Compatibility update for MathProgBase","category":"page"},{"location":"release_notes/#[Version-0.13.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.13.1)-(May-3,-2016)","page":"Release notes","title":"Version 0.13.1 (May 3, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix broken deprecation for registerNLfunction.","category":"page"},{"location":"release_notes/#[Version-0.13.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.13.0)-(April-29,-2016)","page":"Release notes","title":"Version 0.13.0 (April 29, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Most exported methods and macros have been renamed to avoid camelCase. See the list of changes here. There is a 1-1 mapping from the old names to the new, and it is safe to simply replace the names to update existing models.\nSpecify variable lower/upper bounds in @variable using the lowerbound and upperbound keyword arguments.\nChange name printed for variable using the basename keyword argument to @variable.\nNew @variables macro allows multi-line declaration of groups of variables.\nA number of solver methods previously available only through MathProgBase are now exposed directly in JuMP. The fix was recorded live.\nCompatibility fixes with Julia 0.5.\nThe \"end\" indexing syntax is no longer supported within JuMPArrays which do not use 1-based indexing until upstream issues are resolved, see here.","category":"page"},{"location":"release_notes/#[Version-0.12.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.12.2)-(March-9,-2016)","page":"Release notes","title":"Version 0.12.2 (March 9, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Small fixes for nonlinear optimization","category":"page"},{"location":"release_notes/#[Version-0.12.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.12.1)-(March-1,-2016)","page":"Release notes","title":"Version 0.12.1 (March 1, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a regression in slicing for JuMPArrays (when not using 1-based indexing)","category":"page"},{"location":"release_notes/#[Version-0.12.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.12.0)-(February-27,-2016)","page":"Release notes","title":"Version 0.12.0 (February 27, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"The automatic differentiation functionality has been completely rewritten with a number of user-facing changes:\n@defExpr and @defNLExpr now take the model as the first argument. The previous one-argument version of @defExpr is deprecated; all expressions should be named. For example, replace @defExpr(2x+y) with @defExpr(jump_model, my_expr, 2x+y).\nJuMP no longer uses Julia's variable binding rules for efficiently re-solving a sequence of nonlinear models. Instead, we have introduced nonlinear parameters. This is a breaking change, so we have added a warning message when we detect models that may depend on the old behavior.\nSupport for user-defined functions integrated within nonlinear JuMP expressions.\nReplaced iteration over AffExpr with Number-like scalar iteration; previous iteration behavior is now available via linearterms(::AffExpr).\nStopping the solver via throw(CallbackAbort()) from a callback no longer triggers an exception. Instead, solve() returns UserLimit status.\ngetDual() now works for conic problems (Thanks @emreyamangil.)","category":"page"},{"location":"release_notes/#[Version-0.11.3](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.11.3)-(February-4,-2016)","page":"Release notes","title":"Version 0.11.3 (February 4, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Bug-fix for problems with quadratic objectives and semidefinite constraints","category":"page"},{"location":"release_notes/#[Version-0.11.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.11.2)-(January-14,-2016)","page":"Release notes","title":"Version 0.11.2 (January 14, 2016)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Compatibility update for Mosek","category":"page"},{"location":"release_notes/#[Version-0.11.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.11.1)-(December-1,-2015)","page":"Release notes","title":"Version 0.11.1 (December 1, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Remove usage of @compat in tests.\nFix updating quadratic objectives for nonlinear models.","category":"page"},{"location":"release_notes/#[Version-0.11.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.11.0)-(November-30,-2015)","page":"Release notes","title":"Version 0.11.0 (November 30, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Julia 0.4.0 is the minimum required version for this release.\nFix for scoping semantics of index variables in sum{}. Index variables no longer leak into the surrounding scope.\nAddition of the solve(m::Model, relaxation=true) keyword argument to solve the standard continuous relaxation of model m\nThe getConstraintBounds() method allows access to the lower and upper bounds of all constraints in a (nonlinear) model.\nUpdate for breaking changes in MathProgBase","category":"page"},{"location":"release_notes/#[Version-0.10.3](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.10.3)-(November-20,-2015)","page":"Release notes","title":"Version 0.10.3 (November 20, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a rare error when parsing quadratic expressions\nFix Variable() constructor with default arguments\nDetect unrecognized keywords in solve()","category":"page"},{"location":"release_notes/#[Version-0.10.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.10.2)-(September-28,-2015)","page":"Release notes","title":"Version 0.10.2 (September 28, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix for deprecation warnings","category":"page"},{"location":"release_notes/#[Version-0.10.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.10.1)-(September-3,-2015)","page":"Release notes","title":"Version 0.10.1 (September 3, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixes for ambiguity warnings.\nFix for breaking change in precompilation syntax in Julia 0.4-pre","category":"page"},{"location":"release_notes/#[Version-0.10.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.10.0)-(August-31,-2015)","page":"Release notes","title":"Version 0.10.0 (August 31, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Support (on Julia 0.4 and later) for conditions in indexing @defVar and @addConstraint constructs, for example, @defVar(m, x[i=1:5,j=1:5; i+j >= 3])\nSupport for vectorized operations on Variables and expressions. See the documentation for details.\nNew getVar() method to access variables in a model by name\nSupport for semidefinite programming.\nDual solutions are now available for general nonlinear problems. You may call getDual on a reference object for a nonlinear constraint, and getDual on a variable object for Lagrange multipliers from active bounds.\nIntroduce warnings for two common performance traps: too many calls to getValue() on a collection of variables and use of the + operator in a loop to sum expressions.\nSecond-order cone constraints can be written directly with the norm() and norm2{} syntax.\nImplement MathProgBase interface for querying Hessian-vector products.\nIteration over JuMPContainers is deprecated; instead, use the keys and values functions, and zip(keys(d),values(d)) for the old behavior.\n@defVar returns Array{Variable,N} when each of N index sets are of the form 1:nᵢ.\nModule precompilation: on Julia 0.4 and later, using JuMP is now much faster.","category":"page"},{"location":"release_notes/#[Version-0.9.3](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.9.3)-(August-11,-2015)","page":"Release notes","title":"Version 0.9.3 (August 11, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fixes for FactCheck testing on julia v0.4.","category":"page"},{"location":"release_notes/#[Version-0.9.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.9.2)-(June-27,-2015)","page":"Release notes","title":"Version 0.9.2 (June 27, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix bug in @addConstraints.","category":"page"},{"location":"release_notes/#[Version-0.9.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.9.1)-(April-25,-2015)","page":"Release notes","title":"Version 0.9.1 (April 25, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix for Julia 0.4-dev.\nSmall infrastructure improvements for extensions.","category":"page"},{"location":"release_notes/#[Version-0.9.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.9.0)-(April-18,-2015)","page":"Release notes","title":"Version 0.9.0 (April 18, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Comparison operators for constructing constraints (for example, 2x >= 1) have been deprecated. Instead, construct the constraints explicitly in the @addConstraint macro to add them to the model, or in the @LinearConstraint macro to create a stand-alone linear constraint instance.\ngetValue() method implemented to compute the value of a nonlinear subexpression\nJuMP is now released under the Mozilla Public License version 2.0 (was previously LGPL). MPL is a copyleft license which is less restrictive than LGPL, especially for embedding JuMP within other applications.\nA number of performance improvements in ReverseDiffSparse for computing derivatives.\nMathProgBase.getsolvetime(m) now returns the solution time reported by the solver, if available. (Thanks @odow, Oscar Dowson)\nFormatting fix for LP format output. (Thanks @sbebo, Leonardo Taccari).","category":"page"},{"location":"release_notes/#[Version-0.8.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.8.0)-(February-17,-2015)","page":"Release notes","title":"Version 0.8.0 (February 17, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Nonlinear subexpressions now supported with the @defNLExpr macro.\nSCS supported for solving second-order conic problems.\nsetXXXCallback family deprecated in favor of addXXXCallback.\nMultiple callbacks of the same type can be registered.\nAdded support for informational callbacks via addInfoCallback.\nA CallbackAbort exception can be thrown from callback to safely exit optimization.","category":"page"},{"location":"release_notes/#[Version-0.7.4](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.7.4)-(February-4,-2015)","page":"Release notes","title":"Version 0.7.4 (February 4, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Reduced costs and linear constraint duals are now accessible when quadratic constraints are present.\nTwo-sided nonlinear constraints are supported.\nMethods for accessing the number of variables and constraints in a model are renamed.\nNew default procedure for setting initial values in nonlinear optimization: project zero onto the variable bounds.\nSmall bug fixes.","category":"page"},{"location":"release_notes/#[Version-0.7.3](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.7.3)-(January-14,-2015)","page":"Release notes","title":"Version 0.7.3 (January 14, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a method ambiguity conflict with Compose.jl (cosmetic fix)","category":"page"},{"location":"release_notes/#[Version-0.7.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.7.2)-(January-9,-2015)","page":"Release notes","title":"Version 0.7.2 (January 9, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a bug in sum(::JuMPDict)\nAdded the setCategory function to change a variables category (for example, continuous or binary)","category":"page"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"after construction, and getCategory to retrieve the variable category.","category":"page"},{"location":"release_notes/#[Version-0.7.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.7.1)-(January-2,-2015)","page":"Release notes","title":"Version 0.7.1 (January 2, 2015)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a bug in parsing linear expressions in macros. Affects only Julia 0.4 and later.","category":"page"},{"location":"release_notes/#[Version-0.7.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.7.0)-(December-29,-2014)","page":"Release notes","title":"Version 0.7.0 (December 29, 2014)","text":"","category":"section"},{"location":"release_notes/#Linear/quadratic/conic-programming","page":"Release notes","title":"Linear/quadratic/conic programming","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Breaking change: The syntax for column-wise model generation has been changed to use keyword arguments in @defVar.\nOn Julia 0.4 and later, variables and coefficients may be multiplied in any order within macros. That is, variable*coefficient is now valid syntax.\nECOS supported for solving second-order conic problems.","category":"page"},{"location":"release_notes/#_nonlinear_programming_release_notes","page":"Release notes","title":"Nonlinear programming","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Support for skipping model generation when solving a sequence of nonlinear models with changing data.\nFix a memory leak when solving a sequence of nonlinear models.\nThe @addNLConstraint macro now supports the three-argument version to define sets of nonlinear constraints.\nKNITRO supported as a nonlinear solver.\nSpeed improvements for model generation.\nThe @addNLConstraints macro supports adding multiple (groups of) constraints at once. Syntax is similar to @addConstraints.\nDiscrete variables allowed in nonlinear problems for solvers which support them (currently only KNITRO).","category":"page"},{"location":"release_notes/#General","page":"Release notes","title":"General","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Starting values for variables may now be specified with @defVar(m, x, start=value).\nThe setSolver function allows users to change the solver subsequent to model creation.\nSupport for \"fixed\" variables via the @defVar(m, x == 1) syntax.\nUnit tests rewritten to use FactCheck.jl, improved testing across solvers.","category":"page"},{"location":"release_notes/#[Version-0.6.3](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.6.3)-(October-19,-2014)","page":"Release notes","title":"Version 0.6.3 (October 19, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a bug in multiplying two AffExpr objects.","category":"page"},{"location":"release_notes/#[Version-0.6.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.6.2)-(October-11,-2014)","page":"Release notes","title":"Version 0.6.2 (October 11, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Further improvements and bug fixes for printing.\nFixed a bug in @defExpr.\nSupport for accessing expression graphs through the MathProgBase NLP interface.","category":"page"},{"location":"release_notes/#[Version-0.6.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.6.1)-(September-19,-2014)","page":"Release notes","title":"Version 0.6.1 (September 19, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Improvements and bug fixes for printing.","category":"page"},{"location":"release_notes/#[Version-0.6.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.6.0)-(September-9,-2014)","page":"Release notes","title":"Version 0.6.0 (September 9, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Julia 0.3.0 is the minimum required version for this release.\nbuildInternalModel(m::Model) added to build solver-level model in memory without optimizing.\nDeprecate load_model_only keyword argument to solve.\nAdd groups of constraints with @addConstraints macro.\nUnicode operators now supported, including ∑ for sum, ∏ for prod, and ≤/≥\nQuadratic constraints supported in @addConstraint macro.\nQuadratic objectives supported in @setObjective macro.\nMathProgBase solver-independent interface replaces Ipopt-specific interface for nonlinear problems\nBreaking change: IpoptOptions no longer supported to specify solver options, use m = Model(solver=IpoptSolver(options...)) instead.\nNew solver interfaces: ECOS, NLopt, and nonlinear support for MOSEK\nNew option to control whether the lazy constraint callback is executed at each node in the B&B tree or just when feasible solutions are found\nAdd support for semicontinuous and semi-integer variables for those solvers that support them.\nAdd support for index dependencies (for example, triangular indexing) in @defVar, @addConstraint, and @defExpr (for example, @defVar(m, x[i=1:10,j=i:10])).\nThis required some changes to the internal structure of JuMP containers, which may break code that explicitly stored JuMPDict objects.","category":"page"},{"location":"release_notes/#[Version-0.5.8](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.5.8)-(September-24,-2014)","page":"Release notes","title":"Version 0.5.8 (September 24, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a bug with specifying solvers (affects Julia 0.2 only)","category":"page"},{"location":"release_notes/#[Version-0.5.7](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.5.7)-(September-5,-2014)","page":"Release notes","title":"Version 0.5.7 (September 5, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a bug in printing models","category":"page"},{"location":"release_notes/#[Version-0.5.6](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.5.6)-(September-2,-2014)","page":"Release notes","title":"Version 0.5.6 (September 2, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Add support for semicontinuous and semi-integer variables for those solvers that support them.\nBreaking change: Syntax for Variable() constructor has changed (use of this interface remains discouraged)\nUpdate for breaking changes in MathProgBase","category":"page"},{"location":"release_notes/#[Version-0.5.5](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.5.5)-(July-6,-2014)","page":"Release notes","title":"Version 0.5.5 (July 6, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix bug with problem modification: adding variables that did not appear in existing constraints or objective.","category":"page"},{"location":"release_notes/#[Version-0.5.4](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.5.4)-(June-19,-2014)","page":"Release notes","title":"Version 0.5.4 (June 19, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Update for breaking change in MathProgBase which reduces loading times for using JuMP\nFix error when MIPs not solved to optimality","category":"page"},{"location":"release_notes/#[Version-0.5.3](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.5.3)-(May-21,-2014)","page":"Release notes","title":"Version 0.5.3 (May 21, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Update for breaking change in ReverseDiffSparse","category":"page"},{"location":"release_notes/#[Version-0.5.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.5.2)-(May-9,-2014)","page":"Release notes","title":"Version 0.5.2 (May 9, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix compatibility with Julia 0.3 prerelease","category":"page"},{"location":"release_notes/#[Version-0.5.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.5.1)-(May-5,-2014)","page":"Release notes","title":"Version 0.5.1 (May 5, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix a bug in coefficient handling inside lazy constraints and user cuts","category":"page"},{"location":"release_notes/#[Version-0.5.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.5.0)-(May-2,-2014)","page":"Release notes","title":"Version 0.5.0 (May 2, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Support for nonlinear optimization with exact, sparse second-order derivatives automatically computed. Ipopt is currently the only solver supported.\ngetValue for AffExpr and QuadExpr\nBreaking change: getSolverModel replaced by getInternalModel, which returns the internal MathProgBase-level model\nGroups of constraints can be specified with @addConstraint (see documentation for details). This is not a breaking change.\ndot(::JuMPDict{Variable},::JuMPDict{Variable}) now returns the corresponding quadratic expression.","category":"page"},{"location":"release_notes/#[Version-0.4.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.4.1)-(March-24,-2014)","page":"Release notes","title":"Version 0.4.1 (March 24, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Fix bug where change in objective sense was ignored when re-solving a model.\nFix issue with handling zero coefficients in AffExpr.","category":"page"},{"location":"release_notes/#[Version-0.4.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.4.0)-(March-10,-2014)","page":"Release notes","title":"Version 0.4.0 (March 10, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Support for SOS1 and SOS2 constraints.\nSolver-independent callback for user heuristics.\ndot and sum implemented for JuMPDict objects. Now you can say @addConstraint(m, dot(a,x) <= b).\nDevelopers: support for extensions to JuMP. See definition of Model in src/JuMP.jl for more details.\nOption to construct the low-level model before optimizing.","category":"page"},{"location":"release_notes/#[Version-0.3.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.3.2)-(February-17,-2014)","page":"Release notes","title":"Version 0.3.2 (February 17, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Improved model printing\nPreliminary support for IJulia output","category":"page"},{"location":"release_notes/#[Version-0.3.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.3.1)-(January-30,-2014)","page":"Release notes","title":"Version 0.3.1 (January 30, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Documentation updates\nSupport for MOSEK\nCPLEXLink renamed to CPLEX","category":"page"},{"location":"release_notes/#[Version-0.3.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.3.0)-(January-21,-2014)","page":"Release notes","title":"Version 0.3.0 (January 21, 2014)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Unbounded/infeasibility rays: getValue() will return the corresponding components of an unbounded ray when a model is unbounded, if supported by the selected solver. getDual() will return an infeasibility ray (Farkas proof) if a model is infeasible and the selected solver supports this feature.\nSolver-independent callbacks for user generated cuts.\nUse new interface for solver-independent QCQP.\nsetlazycallback renamed to setLazyCallback for consistency.","category":"page"},{"location":"release_notes/#[Version-0.2.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.2.0)-(December-15,-2013)","page":"Release notes","title":"Version 0.2.0 (December 15, 2013)","text":"","category":"section"},{"location":"release_notes/#Breaking-8","page":"Release notes","title":"Breaking","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Objective sense is specified in setObjective instead of in the Model constructor.\nlpsolver and mipsolver merged into single solver option.","category":"page"},{"location":"release_notes/#Added-31","page":"Release notes","title":"Added","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Problem modification with efficient LP restarts and MIP warm-starts.\nRelatedly, column-wise modeling now supported.\nSolver-independent callbacks supported. Currently we support only a \"lazy constraint\" callback, which works with Gurobi, CPLEX, and GLPK. More callbacks coming soon.","category":"page"},{"location":"release_notes/#[Version-0.1.2](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.1.2)-(November-16,-2013)","page":"Release notes","title":"Version 0.1.2 (November 16, 2013)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Bug fixes for printing, improved error messages.\nAllow AffExpr to be used in macros; for example, ex = y + z; @addConstraint(m, x + 2*ex <= 3)","category":"page"},{"location":"release_notes/#[Version-0.1.1](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.1.1)-(October-23,-2013)","page":"Release notes","title":"Version 0.1.1 (October 23, 2013)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Update for solver specification API changes in MathProgBase.","category":"page"},{"location":"release_notes/#[Version-0.1.0](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.1.0)-(October-3,-2013)","page":"Release notes","title":"Version 0.1.0 (October 3, 2013)","text":"","category":"section"},{"location":"release_notes/","page":"Release notes","title":"Release notes","text":"Initial public release.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"CurrentModule = JuMP\nDocTestSetup = quote\n using JuMP\n import HiGHS\nend\nDocTestFilters = [r\"≤|<=\", r\"≥|>=\", r\" == | = \", r\" ∈ | in \", r\"MathOptInterface|MOI\"]","category":"page"},{"location":"manual/constraints/#jump_constraints","page":"Constraints","title":"Constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"JuMP is based on the MathOptInterface (MOI) API. Because of this, JuMP uses the following standard form to represent problems:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"beginalign\n min_x in mathbbR^n f_0(x)\n \n textst f_i(x) in mathcalS_i i = 1 ldots m\nendalign","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Each constraint, f_i(x) in mathcalS_i, is composed of a function and a set. For example, instead of calling a^top x le b a less-than-or-equal-to constraint, we say that it is a scalar-affine-in-less-than constraint, where the function a^top x belongs to the less-than set (-infty b. We use the shorthand function-in-set to refer to constraints composed of different types of functions and sets.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"This page explains how to write various types of constraints in JuMP. For nonlinear constraints, see Nonlinear Modeling instead.","category":"page"},{"location":"manual/constraints/#Add-a-constraint","page":"Constraints","title":"Add a constraint","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Add a constraint to a JuMP model using the @constraint macro. The syntax to use depends on the type of constraint you wish to add.","category":"page"},{"location":"manual/constraints/#Add-a-linear-constraint","page":"Constraints","title":"Add a linear constraint","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Create linear constraints using the @constraint macro:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:3]);\n\njulia> @constraint(model, c1, sum(x) <= 1)\nc1 : x[1] + x[2] + x[3] ≤ 1\n\njulia> @constraint(model, c2, x[1] + 2 * x[3] >= 2)\nc2 : x[1] + 2 x[3] ≥ 2\n\njulia> @constraint(model, c3, sum(i * x[i] for i in 1:3) == 3)\nc3 : x[1] + 2 x[2] + 3 x[3] = 3\n\njulia> @constraint(model, c4, 4 <= 2 * x[2] <= 5)\nc4 : 2 x[2] ∈ [4, 5]","category":"page"},{"location":"manual/constraints/#Normalization","page":"Constraints","title":"Normalization","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"JuMP normalizes constraints by moving all of the terms containing variables to the left-hand side and all of the constant terms to the right-hand side. Thus, we get:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraint(model, c, 2x + 1 <= 4x + 4)\nc : -2 x ≤ 3","category":"page"},{"location":"manual/constraints/#quad_constraints","page":"Constraints","title":"Add a quadratic constraint","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"In addition to affine functions, JuMP also supports constraints with quadratic terms. For example:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[i=1:2])\n2-element Vector{VariableRef}:\n x[1]\n x[2]\n\njulia> @variable(model, t >= 0)\nt\n\njulia> @constraint(model, my_q, x[1]^2 + x[2]^2 <= t^2)\nmy_q : x[1]² + x[2]² - t² ≤ 0","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"tip: Tip\nBecause solvers can take advantage of the knowledge that a constraint is quadratic, prefer adding quadratic constraints using @constraint, rather than @NLconstraint.","category":"page"},{"location":"manual/constraints/#Vectorized-constraints","page":"Constraints","title":"Vectorized constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"You can also add constraints to JuMP using vectorized linear algebra. For example:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[i=1:2])\n2-element Vector{VariableRef}:\n x[1]\n x[2]\n\njulia> A = [1 2; 3 4]\n2×2 Matrix{Int64}:\n 1 2\n 3 4\n\njulia> b = [5, 6]\n2-element Vector{Int64}:\n 5\n 6\n\njulia> @constraint(model, con_vector, A * x == b)\ncon_vector : [x[1] + 2 x[2] - 5, 3 x[1] + 4 x[2] - 6] ∈ MathOptInterface.Zeros(2)\n\njulia> @constraint(model, con_scalar, A * x .== b)\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.EqualTo{Float64}}, ScalarShape}}:\n con_scalar : x[1] + 2 x[2] = 5\n con_scalar : 3 x[1] + 4 x[2] = 6","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The two constraints, == and .== are similar, but subtly different. The first creates a single constraint that is a MOI.VectorAffineFunction in MOI.Zeros constraint. The second creates a vector of MOI.ScalarAffineFunction in MOI.EqualTo constraints.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Which formulation to choose depends on the solver, and what you want to do with the constraint object con_vector or con_scalar.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"If you are using a conic solver, expect the dual of con_vector to be a Vector{Float64}, and do not intend to delete a row in the constraint, choose the == formulation.\nIf you are using a solver that expects a list of scalar constraints, for example HiGHS, or you wish to delete part of the constraint or access a single row of the constraint, for example, dual(con_scalar[2]), then use the broadcast .==.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"JuMP reformulates both constraints into the other form if needed by the solver, but choosing the right format for a particular solver is more efficient.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"You can also use <=, .<= , >=, and .>= as comparison operators in the constraint.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, A * x <= b)\n[x[1] + 2 x[2] - 5, 3 x[1] + 4 x[2] - 6] ∈ MathOptInterface.Nonpositives(2)\n\njulia> @constraint(model, A * x .<= b)\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n x[1] + 2 x[2] ≤ 5\n 3 x[1] + 4 x[2] ≤ 6\n\njulia> @constraint(model, A * x >= b)\n[x[1] + 2 x[2] - 5, 3 x[1] + 4 x[2] - 6] ∈ MathOptInterface.Nonnegatives(2)\n\njulia> @constraint(model, A * x .>= b)\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.GreaterThan{Float64}}, ScalarShape}}:\n x[1] + 2 x[2] ≥ 5\n 3 x[1] + 4 x[2] ≥ 6","category":"page"},{"location":"manual/constraints/#Vectorized-matrix-constraints","page":"Constraints","title":"Vectorized matrix constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"In most cases, you cannot use the non-broadcasting syntax for general matrices. For example:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, X[1:2, 1:2])\n2×2 Matrix{VariableRef}:\n X[1,1] X[1,2]\n X[2,1] X[2,2]\n\njulia> @constraint(model, X >= 0)\nERROR: At none:1: `@constraint(model, X >= 0)`: Unsupported matrix in vector-valued set. Did you mean to use the broadcasting syntax `.>=` instead? Alternatively, perhaps you are missing a set argument like `@constraint(model, X >= 0, PSDCone())` or `@constraint(model, X >= 0, HermmitianPSDCone())`.\nStacktrace:\n[...]","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Instead, to represent matrix inequalities you must always use the element-wise broadcasting .==, .>=, or .<=, or use the Set inequality syntax.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"There are two exceptions: if the result of the left-hand side minus the right-hand side is a LinearAlgebra.Symmetric matrix or a LinearAlgebra.Hermitian matrix, you may use the non-broadcasting equality syntax:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> using LinearAlgebra\n\njulia> model = Model();\n\njulia> @variable(model, X[1:2, 1:2], Symmetric)\n2×2 Symmetric{VariableRef, Matrix{VariableRef}}:\n X[1,1] X[1,2]\n X[1,2] X[2,2]\n\njulia> @constraint(model, X == LinearAlgebra.I)\n[X[1,1] - 1 X[1,2];\n X[1,2] X[2,2] - 1] ∈ Zeros()","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Despite the model showing the matrix in Zeros, this will add only three rows to the constraint matrix because the symmetric constraints are redundant. In contrast, the broadcasting syntax adds four linear constraints:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, X .== LinearAlgebra.I)\n2×2 Matrix{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.EqualTo{Float64}}, ScalarShape}}:\n X[1,1] = 1 X[1,2] = 0\n X[1,2] = 0 X[2,2] = 1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The same holds for LinearAlgebra.Hermitian matrices:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> using LinearAlgebra\n\njulia> model = Model();\n\njulia> @variable(model, X[1:2, 1:2] in HermitianPSDCone())\n2×2 Hermitian{GenericAffExpr{ComplexF64, VariableRef}, Matrix{GenericAffExpr{ComplexF64, VariableRef}}}:\n real(X[1,1]) real(X[1,2]) + imag(X[1,2]) im\n real(X[1,2]) - imag(X[1,2]) im real(X[2,2])\n\njulia> @constraint(model, X == LinearAlgebra.I)\n[real(X[1,1]) - 1 real(X[1,2]) + imag(X[1,2]) im;\n real(X[1,2]) - imag(X[1,2]) im real(X[2,2]) - 1] ∈ Zeros()\n\njulia> @constraint(model, X .== LinearAlgebra.I)\n2×2 Matrix{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{ComplexF64}, MathOptInterface.EqualTo{ComplexF64}}, ScalarShape}}:\n real(X[1,1]) = 1 real(X[1,2]) + imag(X[1,2]) im = 0\n real(X[1,2]) - imag(X[1,2]) im = 0 real(X[2,2]) = 1","category":"page"},{"location":"manual/constraints/#Containers-of-constraints","page":"Constraints","title":"Containers of constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The @constraint macro supports creating collections of constraints. We'll cover some brief syntax here; read the Constraint containers section for more details:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Create arrays of constraints:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:3]);\n\njulia> @constraint(model, c[i=1:3], x[i] <= i^2)\n3-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n c[1] : x[1] ≤ 1\n c[2] : x[2] ≤ 4\n c[3] : x[3] ≤ 9\n\njulia> c[2]\nc[2] : x[2] ≤ 4","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Sets can be any Julia type that supports iteration:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:3]);\n\njulia> @constraint(model, c[i=2:3, [\"red\", \"blue\"]], x[i] <= i^2)\n2-dimensional DenseAxisArray{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape},2,...} with index sets:\n Dimension 1, 2:3\n Dimension 2, [\"red\", \"blue\"]\nAnd data, a 2×2 Matrix{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n c[2,red] : x[2] ≤ 4 c[2,blue] : x[2] ≤ 4\n c[3,red] : x[3] ≤ 9 c[3,blue] : x[3] ≤ 9\n\njulia> c[2, \"red\"]\nc[2,red] : x[2] ≤ 4","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Sets can depend upon previous indices:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:3]);\n\njulia> @constraint(model, c[i=1:3, j=i:3], x[i] <= j)\nJuMP.Containers.SparseAxisArray{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}, 2, Tuple{Int64, Int64}} with 6 entries:\n [1, 1] = c[1,1] : x[1] ≤ 1\n [1, 2] = c[1,2] : x[1] ≤ 2\n [1, 3] = c[1,3] : x[1] ≤ 3\n [2, 2] = c[2,2] : x[2] ≤ 2\n [2, 3] = c[2,3] : x[2] ≤ 3\n [3, 3] = c[3,3] : x[3] ≤ 3","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"and you can filter elements in the sets using the ; syntax:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:9]);\n\njulia> @constraint(model, c[i=1:9; mod(i, 3) == 0], x[i] <= i)\nJuMP.Containers.SparseAxisArray{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}, 1, Tuple{Int64}} with 3 entries:\n [3] = c[3] : x[3] ≤ 3\n [6] = c[6] : x[6] ≤ 6\n [9] = c[9] : x[9] ≤ 9","category":"page"},{"location":"manual/constraints/#Registered-constraints","page":"Constraints","title":"Registered constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"When you create constraints, JuMP registers them inside the model using their corresponding symbol. Get a registered name using model[:key]:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model()\nA JuMP Model\nFeasibility problem with:\nVariables: 0\nModel mode: AUTOMATIC\nCachingOptimizer state: NO_OPTIMIZER\nSolver name: No optimizer attached.\n\njulia> @variable(model, x)\nx\n\njulia> @constraint(model, my_c, 2x <= 1)\nmy_c : 2 x ≤ 1\n\njulia> model\nA JuMP Model\nFeasibility problem with:\nVariable: 1\n`AffExpr`-in-`MathOptInterface.LessThan{Float64}`: 1 constraint\nModel mode: AUTOMATIC\nCachingOptimizer state: NO_OPTIMIZER\nSolver name: No optimizer attached.\nNames registered in the model: my_c, x\n\njulia> model[:my_c] === my_c\ntrue","category":"page"},{"location":"manual/constraints/#Anonymous-constraints","page":"Constraints","title":"Anonymous constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"To reduce the likelihood of accidental bugs, and because JuMP registers constraints inside a model, creating two constraints with the same name is an error:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @constraint(model, c, 2x <= 1)\nc : 2 x ≤ 1\n\njulia> @constraint(model, c, 2x <= 1)\nERROR: An object of name c is already attached to this model. If this\n is intended, consider using the anonymous construction syntax, e.g.,\n `x = @variable(model, [1:N], ...)` where the name of the object does\n not appear inside the macro.\n\n Alternatively, use `unregister(model, :c)` to first unregister\n the existing name from the model. Note that this will not delete the\n object; it will just remove the reference at `model[:c]`.\n[...]","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"A common reason for encountering this error is adding constraints in a loop.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"As a work-around, JuMP provides anonymous constraints. Create an anonymous constraint by omitting the name argument:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> c = @constraint(model, 2x <= 1)\n2 x ≤ 1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Create a container of anonymous constraints by dropping the name in front of the [:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:3]);\n\njulia> c = @constraint(model, [i = 1:3], x[i] <= i)\n3-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n x[1] ≤ 1\n x[2] ≤ 2\n x[3] ≤ 3","category":"page"},{"location":"manual/constraints/#Constraint-names","page":"Constraints","title":"Constraint names","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"In addition to the symbol that constraints are registered with, constraints have a String name that is used for printing and writing to file formats.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Get and set the name of a constraint using name(::JuMP.ConstraintRef) and set_name(::JuMP.ConstraintRef, ::String):","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model(); @variable(model, x);\n\njulia> @constraint(model, con, x <= 1)\ncon : x ≤ 1\n\njulia> name(con)\n\"con\"\n\njulia> set_name(con, \"my_con_name\")\n\njulia> con\nmy_con_name : x ≤ 1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Override the default choice of name using the base_name keyword:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model(); @variable(model, x);\n\njulia> con = @constraint(model, [i=1:2], x <= i, base_name = \"my_con\")\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n my_con[1] : x ≤ 1\n my_con[2] : x ≤ 2","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Note that names apply to each element of the container, not to the container of constraints:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> name(con[1])\n\"my_con[1]\"\n\njulia> set_name(con[1], \"c\")\n\njulia> con\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n c : x ≤ 1\n my_con[2] : x ≤ 2","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"tip: Tip\nFor some models, setting the string name of each constraint can take a non-trivial portion of the total time required to build the model. Turn off String names by passing set_string_name = false to @constraint:julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraint(model, con, x <= 2, set_string_name = false)\nx ≤ 2See Disable string names for more information.","category":"page"},{"location":"manual/constraints/#Retrieve-a-constraint-by-name","page":"Constraints","title":"Retrieve a constraint by name","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Retrieve a constraint from a model using constraint_by_name:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> constraint_by_name(model, \"c\")\nc : x ≤ 1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"If the name is not present, nothing will be returned:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> constraint_by_name(model, \"bad_name\")","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"You can only look up individual constraints using constraint_by_name. Something like this will not work:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model(); @variable(model, x);\n\njulia> con = @constraint(model, [i=1:2], x <= i, base_name = \"my_con\")\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n my_con[1] : x ≤ 1\n my_con[2] : x ≤ 2\n\njulia> constraint_by_name(model, \"my_con\")","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"To look up a collection of constraints, do not use constraint_by_name. Instead, register them using the model[:key] = value syntax:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model(); @variable(model, x);\n\njulia> model[:con] = @constraint(model, [i=1:2], x <= i, base_name = \"my_con\")\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n my_con[1] : x ≤ 1\n my_con[2] : x ≤ 2\n\njulia> model[:con]\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n my_con[1] : x ≤ 1\n my_con[2] : x ≤ 2","category":"page"},{"location":"manual/constraints/#String-names,-symbolic-names,-and-bindings","page":"Constraints","title":"String names, symbolic names, and bindings","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"It's common for new users to experience confusion relating to constraints. Part of the problem is the difference between the name that a constraint is registered under and the String name used for printing.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Here's a summary of the differences:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Constraints are created using @constraint.\nConstraints can be named or anonymous.\nNamed constraints have the form @constraint(model, c, expr). For named constraints:\nThe String name of the constraint is set to \"c\".\nA Julia variable c is created that binds c to the JuMP constraint.\nThe name :c is registered as a key in the model with the value c.\nAnonymous constraints have the form c = @constraint(model, expr). For anonymous constraints:\nThe String name of the constraint is set to \"\".\nYou control the name of the Julia variable used as the binding.\nNo name is registered as a key in the model.\nThe base_name keyword can override the String name of the constraint.\nYou can manually register names in the model via model[:key] = value.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Here's an example of the differences:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> c_binding = @constraint(model, 2x <= 1, base_name = \"c\")\nc : 2 x ≤ 1\n\njulia> model\nA JuMP Model\nFeasibility problem with:\nVariable: 1\n`AffExpr`-in-`MathOptInterface.LessThan{Float64}`: 1 constraint\nModel mode: AUTOMATIC\nCachingOptimizer state: NO_OPTIMIZER\nSolver name: No optimizer attached.\nNames registered in the model: x\n\njulia> c\nERROR: UndefVarError: `c` not defined\n\njulia> c_binding\nc : 2 x ≤ 1\n\njulia> name(c_binding)\n\"c\"\n\njulia> model[:c_register] = c_binding\nc : 2 x ≤ 1\n\njulia> model\nA JuMP Model\nFeasibility problem with:\nVariable: 1\n`AffExpr`-in-`MathOptInterface.LessThan{Float64}`: 1 constraint\nModel mode: AUTOMATIC\nCachingOptimizer state: NO_OPTIMIZER\nSolver name: No optimizer attached.\nNames registered in the model: c_register, x\n\njulia> model[:c_register]\nc : 2 x ≤ 1\n\njulia> model[:c_register] === c_binding\ntrue\n\njulia> c\nERROR: UndefVarError: `c` not defined","category":"page"},{"location":"manual/constraints/#The-@constraints-macro","page":"Constraints","title":"The @constraints macro","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"If you have many @constraint calls, use the @constraints macro to improve readability:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraints(model, begin\n 2x <= 1\n c, x >= -1\n end)\n(2 x ≤ 1, c : x ≥ -1)\n\njulia> print(model)\nFeasibility\nSubject to\n c : x ≥ -1\n 2 x ≤ 1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The @constraints macro returns a tuple of the constraints that were defined.","category":"page"},{"location":"manual/constraints/#constraint_duality","page":"Constraints","title":"Duality","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"JuMP adopts the notion of conic duality from MathOptInterface. For linear programs, a feasible dual on a >= constraint is nonnegative and a feasible dual on a <= constraint is nonpositive. If the constraint is an equality constraint, it depends on which direction is binding.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"warning: Warning\nJuMP's definition of duality is independent of the objective sense. That is, the sign of feasible duals associated with a constraint depends on the direction of the constraint and not whether the problem is maximization or minimization. This is a different convention from linear programming duality in some common textbooks. If you have a linear program, and you want the textbook definition, you probably want to use shadow_price and reduced_cost instead.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The dual value associated with a constraint in the most recent solution can be accessed using the dual function. Use has_duals to check if the model has a dual solution available to query. For example:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model(HiGHS.Optimizer);\n\njulia> set_silent(model)\n\njulia> @variable(model, x)\nx\n\njulia> @constraint(model, con, x <= 1)\ncon : x ≤ 1\n\njulia> @objective(model, Min, -2x)\n-2 x\n\njulia> has_duals(model)\nfalse\n\njulia> optimize!(model)\n\njulia> has_duals(model)\ntrue\n\njulia> dual(con)\n-2.0\n\njulia> @objective(model, Max, 2x)\n2 x\n\njulia> optimize!(model)\n\njulia> dual(con)\n-2.0","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"To help users who may be less familiar with conic duality, JuMP provides shadow_price, which returns a value that can be interpreted as the improvement in the objective in response to an infinitesimal relaxation (on the scale of one unit) in the right-hand side of the constraint. shadow_price can be used only on linear constraints with a <=, >=, or == comparison operator.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"In the example above, dual(con) returned -2.0 regardless of the optimization sense. However, in the second case when the optimization sense is Max, shadow_price returns:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> shadow_price(con)\n2.0","category":"page"},{"location":"manual/constraints/#Duals-of-variable-bounds","page":"Constraints","title":"Duals of variable bounds","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"To query the dual variables associated with a variable bound, first obtain a constraint reference using one of UpperBoundRef, LowerBoundRef, or FixRef, and then call dual on the returned constraint reference. The reduced_cost function may simplify this process as it returns the shadow price of an active bound of a variable (or zero, if no active bound exists).","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model(HiGHS.Optimizer);\n\njulia> set_silent(model)\n\njulia> @variable(model, x <= 1)\nx\n\njulia> @objective(model, Min, -2x)\n-2 x\n\njulia> optimize!(model)\n\njulia> dual(UpperBoundRef(x))\n-2.0\n\njulia> reduced_cost(x)\n-2.0","category":"page"},{"location":"manual/constraints/#Modify-a-constant-term","page":"Constraints","title":"Modify a constant term","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"This section explains how to modify the constant term in a constraint. There are multiple ways to achieve this goal; we explain three options.","category":"page"},{"location":"manual/constraints/#Option-1:-change-the-right-hand-side","page":"Constraints","title":"Option 1: change the right-hand side","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Use set_normalized_rhs to modify the right-hand side (constant) term of a linear or quadratic constraint. Use normalized_rhs to query the right-hand side term.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraint(model, con, 2x <= 1)\ncon : 2 x ≤ 1\n\njulia> set_normalized_rhs(con, 3)\n\njulia> con\ncon : 2 x ≤ 3\n\njulia> normalized_rhs(con)\n3.0","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"warning: Warning\nset_normalized_rhs sets the right-hand side term of the normalized constraint. See Normalization for more details.","category":"page"},{"location":"manual/constraints/#Option-2:-use-fixed-variables","page":"Constraints","title":"Option 2: use fixed variables","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"If constraints are complicated, for example, they are composed of a number of components, each of which has a constant term, then it may be difficult to calculate what the right-hand side term is in the standard form.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"For this situation, JuMP includes the ability to fix variables to a value using the fix function. Fixing a variable sets its lower and upper bound to the same value. Thus, changes in a constant term can be simulated by adding a new variable and fixing it to different values. Here is an example:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @variable(model, const_term)\nconst_term\n\njulia> @constraint(model, con, 2x <= const_term + 1)\ncon : 2 x - const_term ≤ 1\n\njulia> fix(const_term, 1.0)","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The constraint con is now equivalent to 2x <= 2.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"warning: Warning\nFixed variables are not replaced with constants when communicating the problem to a solver. Therefore, even though const_term is fixed, it is still a decision variable, and so const_term * x is bilinear.","category":"page"},{"location":"manual/constraints/#Option-3:-modify-the-function's-constant-term","page":"Constraints","title":"Option 3: modify the function's constant term","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The third option is to use add_to_function_constant. The constant given is added to the function of a func-in-set constraint. In the following example, adding 2 to the function has the effect of removing 2 to the right-hand side:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraint(model, con, 2x <= 1)\ncon : 2 x ≤ 1\n\njulia> add_to_function_constant(con, 2)\n\njulia> con\ncon : 2 x ≤ -1\n\njulia> normalized_rhs(con)\n-1.0","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"In the case of interval constraints, the constant is removed from each bound:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraint(model, con, 0 <= 2x + 1 <= 2)\ncon : 2 x ∈ [-1, 1]\n\njulia> add_to_function_constant(con, 3)\n\njulia> con\ncon : 2 x ∈ [-4, -2]","category":"page"},{"location":"manual/constraints/#Modify-a-variable-coefficient","page":"Constraints","title":"Modify a variable coefficient","text":"","category":"section"},{"location":"manual/constraints/#Scalar-constraints","page":"Constraints","title":"Scalar constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"To modify the coefficients for a linear term (modifying the coefficient of a quadratic term is not supported) in a constraint, use set_normalized_coefficient. To query the current coefficient, use normalized_coefficient.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:2]);\n\njulia> @constraint(model, con, 2x[1] + x[2] <= 1)\ncon : 2 x[1] + x[2] ≤ 1\n\njulia> set_normalized_coefficient(con, x[2], 0)\n\njulia> con\ncon : 2 x[1] ≤ 1\n\njulia> normalized_coefficient(con, x[2])\n0.0","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"warning: Warning\nset_normalized_coefficient sets the coefficient of the normalized constraint. See Normalization for more details.","category":"page"},{"location":"manual/constraints/#Vector-constraints","page":"Constraints","title":"Vector constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"To modify the coefficients of a vector-valued constraint, use set_normalized_coefficients.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @constraint(model, con, [2x + 3x, 4x] in MOI.Nonnegatives(2))\ncon : [5 x, 4 x] ∈ MathOptInterface.Nonnegatives(2)\n\njulia> set_normalized_coefficients(con, x, [(1, 3.0)])\n\njulia> con\ncon : [3 x, 4 x] ∈ MathOptInterface.Nonnegatives(2)\n\njulia> set_normalized_coefficients(con, x, [(1, 2.0), (2, 5.0)])\n\njulia> con\ncon : [2 x, 5 x] ∈ MathOptInterface.Nonnegatives(2)","category":"page"},{"location":"manual/constraints/#Delete-a-constraint","page":"Constraints","title":"Delete a constraint","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Use delete to delete a constraint from a model. Use is_valid to check if a constraint belongs to a model and has not been deleted.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraint(model, con, 2x <= 1)\ncon : 2 x ≤ 1\n\njulia> is_valid(model, con)\ntrue\n\njulia> delete(model, con)\n\njulia> is_valid(model, con)\nfalse","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Deleting a constraint does not unregister the symbolic reference from the model. Therefore, creating a new constraint of the same name will throw an error:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, con, 2x <= 1)\nERROR: An object of name con is already attached to this model. If this\n is intended, consider using the anonymous construction syntax, e.g.,\n `x = @variable(model, [1:N], ...)` where the name of the object does\n not appear inside the macro.\n\n Alternatively, use `unregister(model, :con)` to first unregister\n the existing name from the model. Note that this will not delete the\n object; it will just remove the reference at `model[:con]`.\n[...]","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"After calling delete, call unregister to remove the symbolic reference:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> unregister(model, :con)\n\njulia> @constraint(model, con, 2x <= 1)\ncon : 2 x ≤ 1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"info: Info\ndelete does not automatically unregister because we do not distinguish between names that are automatically registered by JuMP macros, and names that are manually registered by the user by setting values in object_dictionary. In addition, deleting a constraint and then adding a new constraint of the same name is an easy way to introduce bugs into your code.","category":"page"},{"location":"manual/constraints/#Start-values","page":"Constraints","title":"Start values","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Provide a starting value (also called warmstart) for a constraint's primal and dual solutions using set_start_value and set_dual_start_value.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Query the starting value for a constraint's primal and dual solution using start_value and dual_start_value. If no start value has been set, the methods will return nothing.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @constraint(model, con, x >= 10)\ncon : x ≥ 10\n\njulia> start_value(con)\n\njulia> set_start_value(con, 10.0)\n\njulia> start_value(con)\n10.0\n\njulia> dual_start_value(con)\n\njulia> set_dual_start_value(con, 2)\n\njulia> dual_start_value(con)\n2.0","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Vector-valued constraints require a vector:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:3])\n3-element Vector{VariableRef}:\n x[1]\n x[2]\n x[3]\n\njulia> @constraint(model, con, x in SecondOrderCone())\ncon : [x[1], x[2], x[3]] in MathOptInterface.SecondOrderCone(3)\n\njulia> dual_start_value(con)\n\njulia> set_dual_start_value(con, [1.0, 2.0, 3.0])\n\njulia> dual_start_value(con)\n3-element Vector{Float64}:\n 1.0\n 2.0\n 3.0","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"tip: Tip\nTo simplify setting start values for all variables and constraints in a model, see set_start_values. The Primal and dual warm-starts tutorial also gives a detailed description of how to iterate over constraints in the model to set custom start values.","category":"page"},{"location":"manual/constraints/#Constraint-containers","page":"Constraints","title":"Constraint containers","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Like Variable containers, JuMP provides a mechanism for building groups of constraints compactly. References to these groups of constraints are returned in containers. Three types of constraint containers are supported: Arrays, DenseAxisArrays, and SparseAxisArrays. We explain each of these in the following.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"tip: Tip\nYou can read more about containers in the Containers section.","category":"page"},{"location":"manual/constraints/#constraint_arrays","page":"Constraints","title":"Arrays","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"One way of adding a group of constraints compactly is the following:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraint(model, con[i = 1:3], i * x <= i + 1)\n3-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n con[1] : x ≤ 2\n con[2] : 2 x ≤ 3\n con[3] : 3 x ≤ 4","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"JuMP returns references to the three constraints in an Array that is bound to the Julia variable con. This array can be accessed and sliced as you would with any Julia array:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> con[1]\ncon[1] : x ≤ 2\n\njulia> con[2:3]\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n con[2] : 2 x ≤ 3\n con[3] : 3 x ≤ 4","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Anonymous containers can also be constructed by dropping the name (for example, con) before the square brackets:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> con = @constraint(model, [i = 1:2], i * x <= i + 1)\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n x ≤ 2\n 2 x ≤ 3","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Just like @variable, JuMP will form an Array of constraints when it can determine at parse time that the indices are one-based integer ranges. Therefore con[1:b] will create an Array, but con[a:b] will not. A special case is con[Base.OneTo(n)] which will produce an Array. If JuMP cannot determine that the indices are one-based integer ranges (for example, in the case of con[a:b]), JuMP will create a DenseAxisArray instead.","category":"page"},{"location":"manual/constraints/#DenseAxisArrays","page":"Constraints","title":"DenseAxisArrays","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The syntax for constructing a DenseAxisArray of constraints is very similar to the syntax for constructing a DenseAxisArray of variables.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraint(model, con[i = 1:2, j = 2:3], i * x <= j + 1)\n2-dimensional DenseAxisArray{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape},2,...} with index sets:\n Dimension 1, Base.OneTo(2)\n Dimension 2, 2:3\nAnd data, a 2×2 Matrix{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}}:\n con[1,2] : x ≤ 3 con[1,3] : x ≤ 4\n con[2,2] : 2 x ≤ 3 con[2,3] : 2 x ≤ 4","category":"page"},{"location":"manual/constraints/#SparseAxisArrays","page":"Constraints","title":"SparseAxisArrays","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The syntax for constructing a SparseAxisArray of constraints is very similar to the syntax for constructing a SparseAxisArray of variables.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x);\n\njulia> @constraint(model, con[i = 1:2, j = 1:2; i != j], i * x <= j + 1)\nJuMP.Containers.SparseAxisArray{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.LessThan{Float64}}, ScalarShape}, 2, Tuple{Int64, Int64}} with 2 entries:\n [1, 2] = con[1,2] : x ≤ 3\n [2, 1] = con[2,1] : 2 x ≤ 2","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"warning: Warning\nIf you have many index dimensions and a large amount of sparsity, read Performance considerations.","category":"page"},{"location":"manual/constraints/#Forcing-the-container-type","page":"Constraints","title":"Forcing the container type","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"When creating a container of constraints, JuMP will attempt to choose the tightest container type that can store the constraints. However, because this happens at parse time, it does not always make the best choice. Just like in @variable, you can force the type of container using the container keyword. For syntax and the reason behind this, take a look at the variable docs.","category":"page"},{"location":"manual/constraints/#Constraints-with-similar-indices","page":"Constraints","title":"Constraints with similar indices","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Containers are often used to create constraints over a set of indices. However, you'll often have cases in which you are repeating the indices:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:2]);\n\njulia> @variable(model, y[1:2]);\n\njulia> @constraints(model, begin\n [i=1:2, j=1:2, k=1:2], i * x[j] <= k\n [i=1:2, j=1:2, k=1:2], i * y[j] <= k\n end);","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"This is hard to read and leads to a lot of copy-paste. A more readable way is to use a for-loop:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> for i=1:2, j=1:2, k=1:2\n @constraints(model, begin\n i * x[j] <= k\n i * y[j] <= k\n end)\n end","category":"page"},{"location":"manual/constraints/#Accessing-constraints-from-a-model","page":"Constraints","title":"Accessing constraints from a model","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Query the types of function-in-set constraints in a model using list_of_constraint_types:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[i=1:2] >= i, Int);\n\njulia> @constraint(model, x[1] + x[2] <= 1);\n\njulia> list_of_constraint_types(model)\n3-element Vector{Tuple{Type, Type}}:\n (AffExpr, MathOptInterface.LessThan{Float64})\n (VariableRef, MathOptInterface.GreaterThan{Float64})\n (VariableRef, MathOptInterface.Integer)","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"For a given combination of function and set type, use num_constraints to access the number of constraints and all_constraints to access a list of their references:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> num_constraints(model, VariableRef, MOI.Integer)\n2\n\njulia> cons = all_constraints(model, VariableRef, MOI.Integer)\n2-element Vector{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}, ScalarShape}}:\n x[1] integer\n x[2] integer","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"You can also count the total number of constraints in the model, but you must explicitly choose whether to count VariableRef constraints such as bound and integrality constraints:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> num_constraints(model; count_variable_in_set_constraints = true)\n5\n\njulia> num_constraints(model; count_variable_in_set_constraints = false)\n1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The same also applies for all_constraints:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> all_constraints(model; include_variable_in_set_constraints = true)\n5-element Vector{ConstraintRef}:\n x[1] + x[2] ≤ 1\n x[1] ≥ 1\n x[2] ≥ 2\n x[1] integer\n x[2] integer\n\njulia> all_constraints(model; include_variable_in_set_constraints = false)\n1-element Vector{ConstraintRef}:\n x[1] + x[2] ≤ 1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"If you need finer-grained control on which constraints to include, use a variant of:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> sum(\n num_constraints(model, F, S) for\n (F, S) in list_of_constraint_types(model) if F != VariableRef\n )\n1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Use constraint_object to get an instance of an AbstractConstraint object that stores the constraint data:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> con = constraint_object(cons[1])\nScalarConstraint{VariableRef, MathOptInterface.Integer}(x[1], MathOptInterface.Integer())\n\njulia> con.func\nx[1]\n\njulia> con.set\nMathOptInterface.Integer()","category":"page"},{"location":"manual/constraints/#MathOptInterface-constraints","page":"Constraints","title":"MathOptInterface constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Because JuMP is based on MathOptInterface, you can add any constraints supported by MathOptInterface using the function-in-set syntax. For a list of supported functions and sets, read Standard form problem.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"note: Note\nWe use MOI as an alias for the MathOptInterface module. This alias is defined by using JuMP. You may also define it in your code as follows:import MathOptInterface as MOI","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"For example, the following two constraints are equivalent:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:3]);\n\njulia> @constraint(model, 2 * x[1] <= 1)\n2 x[1] ≤ 1\n\njulia> @constraint(model, 2 * x[1] in MOI.LessThan(1.0))\n2 x[1] ≤ 1","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"You can also use any set defined by MathOptInterface:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, x - [1; 2; 3] in MOI.Nonnegatives(3))\n[x[1] - 1, x[2] - 2, x[3] - 3] ∈ MathOptInterface.Nonnegatives(3)\n\njulia> @constraint(model, x in MOI.ExponentialCone())\n[x[1], x[2], x[3]] ∈ MathOptInterface.ExponentialCone()","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"info: Info\nSimilar to how JuMP defines the <= and >= syntax as a convenience way to specify MOI.LessThan and MOI.GreaterThan constraints, the remaining sections in this page describe functions and syntax that have been added for the convenience of common modeling situations.","category":"page"},{"location":"manual/constraints/#Set-inequality-syntax","page":"Constraints","title":"Set inequality syntax","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"For modeling convenience, the syntax @constraint(model, x >= y, Set()) is short-hand for @constraint(model, x - y in Set()). Therefore, the following calls are equivalent:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:2]);\n\njulia> y = [0.5, 0.75];\n\njulia> @constraint(model, x >= y, MOI.Nonnegatives(2))\n[x[1] - 0.5, x[2] - 0.75] ∈ MathOptInterface.Nonnegatives(2)\n\njulia> @constraint(model, y <= x, MOI.Nonnegatives(2))\n[x[1] - 0.5, x[2] - 0.75] ∈ MathOptInterface.Nonnegatives(2)\n\njulia> @constraint(model, x - y in MOI.Nonnegatives(2))\n[x[1] - 0.5, x[2] - 0.75] ∈ MathOptInterface.Nonnegatives(2)","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Non-zero constants are not supported in this syntax:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, x >= 1, MOI.Nonnegatives(2))\nERROR: Operation `sub_mul` between `Vector{VariableRef}` and `Int64` is not allowed. This most often happens when you write a constraint like `x >= y` where `x` is an array and `y` is a constant. Use the broadcast syntax `x .- y >= 0` instead.\nStacktrace:\n[...]","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Use instead:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, x .- 1 >= 0, MOI.Nonnegatives(2))\n[x[1] - 1, x[2] - 1] ∈ MathOptInterface.Nonnegatives(2)","category":"page"},{"location":"manual/constraints/#Second-order-cone-constraints","page":"Constraints","title":"Second-order cone constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"A SecondOrderCone constrains the variables t and x to the set:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"x_2 le t","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"and t ge 0. It can be added as follows:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, t)\nt\n\njulia> @variable(model, x[1:2])\n2-element Vector{VariableRef}:\n x[1]\n x[2]\n\njulia> @constraint(model, [t; x] in SecondOrderCone())\n[t, x[1], x[2]] ∈ MathOptInterface.SecondOrderCone(3)","category":"page"},{"location":"manual/constraints/#Rotated-second-order-cone-constraints","page":"Constraints","title":"Rotated second-order cone constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"A RotatedSecondOrderCone constrains the variables t, u, and x to the set:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"x_2^2 le 2 t cdot u","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"and t u ge 0. It can be added as follows:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, t)\nt\n\njulia> @variable(model, u)\nu\n\njulia> @variable(model, x[1:2])\n2-element Vector{VariableRef}:\n x[1]\n x[2]\n\njulia> @constraint(model, [t; u; x] in RotatedSecondOrderCone())\n[t, u, x[1], x[2]] ∈ MathOptInterface.RotatedSecondOrderCone(4)","category":"page"},{"location":"manual/constraints/#Special-Ordered-Sets-of-Type-1","page":"Constraints","title":"Special Ordered Sets of Type 1","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"In a Special Ordered Set of Type 1 (often denoted SOS-I or SOS1), at most one element can take a non-zero value.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Construct SOS-I constraints using the SOS1 set:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:3])\n3-element Vector{VariableRef}:\n x[1]\n x[2]\n x[3]\n\njulia> @constraint(model, x in SOS1())\n[x[1], x[2], x[3]] in MathOptInterface.SOS1{Float64}([1.0, 2.0, 3.0])","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Although not required for feasibility, solvers can benefit from an ordering of the variables (for example, the variables represent different factories to build, at most one factory can be built, and the factories can be ordered according to cost). To induce an ordering, a vector of weights can be provided, and the variables are ordered according to their corresponding weight.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"For example, in the constraint:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, x in SOS1([3.1, 1.2, 2.3]))\n[x[1], x[2], x[3]] in MathOptInterface.SOS1{Float64}([3.1, 1.2, 2.3])","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"the variables x have precedence x[2], x[3], x[1].","category":"page"},{"location":"manual/constraints/#Special-Ordered-Sets-of-Type-2","page":"Constraints","title":"Special Ordered Sets of Type 2","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"In a Special Ordered Set of Type 2 (SOS-II), at most two elements can be non-zero, and if there are two non-zeros, they must be consecutive according to the ordering induced by a weight vector.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Construct SOS-II constraints using the SOS2 set:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, x in SOS2([3.0, 1.0, 2.0]))\n[x[1], x[2], x[3]] in MathOptInterface.SOS2{Float64}([3.0, 1.0, 2.0])","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The possible non-zero pairs are (x[1], x[3]) and (x[2], x[3]):","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"If the weight vector is omitted, JuMP induces an ordering from 1:length(x):","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, x in SOS2())\n[x[1], x[2], x[3]] in MathOptInterface.SOS2{Float64}([1.0, 2.0, 3.0])","category":"page"},{"location":"manual/constraints/#Indicator-constraints","page":"Constraints","title":"Indicator constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Indicator constraints consist of a binary variable and a linear constraint. The constraint holds when the binary variable takes the value 1. The constraint may or may not hold when the binary variable takes the value 0.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"To enforce the constraint x + y <= 1 when the binary variable a is 1, use:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x)\nx\n\njulia> @variable(model, y)\ny\n\njulia> @variable(model, a, Bin)\na\n\njulia> @constraint(model, a => {x + y <= 1})\na => {x + y ≤ 1}","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"If the constraint must hold when a is zero, add ! or ¬ before the binary variable;","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, !a => {x + y <= 1})\n!a => {x + y ≤ 1}","category":"page"},{"location":"manual/constraints/#Semidefinite-constraints","page":"Constraints","title":"Semidefinite constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"To constrain a matrix to be positive semidefinite (PSD), use PSDCone:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, X[1:2, 1:2])\n2×2 Matrix{VariableRef}:\n X[1,1] X[1,2]\n X[2,1] X[2,2]\n\njulia> @constraint(model, X >= 0, PSDCone())\n[X[1,1] X[1,2];\n X[2,1] X[2,2]] ∈ PSDCone()","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"tip: Tip\nWhere possible, prefer constructing a matrix of Semidefinite variables using the @variable macro, rather than adding a constraint like @constraint(model, X >= 0, PSDCone()). In some solvers, adding the constraint via @constraint is less efficient, and can result in additional intermediate variables and constraints being added to the model.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The inequality X >= Y between two square matrices X and Y is understood as constraining X - Y to be positive semidefinite.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> Y = [1 2; 2 1]\n2×2 Matrix{Int64}:\n 1 2\n 2 1\n\njulia> @constraint(model, X >= Y, PSDCone())\n[X[1,1] - 1 X[1,2] - 2;\n X[2,1] - 2 X[2,2] - 1] ∈ PSDCone()","category":"page"},{"location":"manual/constraints/#Symmetry","page":"Constraints","title":"Symmetry","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Solvers supporting PSD constraints usually expect to be given a matrix that is symbolically symmetric, that is, for which the expression in corresponding off-diagonal entries are the same. In our example, the expressions of entries (1, 2) and (2, 1) are respectively X[1,2] - 2 and X[2,1] - 2 which are different.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"To bridge the gap between the constraint modeled and what the solver expects, solvers may add an equality constraint X[1,2] - 2 == X[2,1] - 2 to force symmetry. Use LinearAlgebra.Symmetric to explicitly tell the solver that the matrix is symmetric:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> import LinearAlgebra\n\njulia> Z = [X[1, 1] X[1, 2]; X[1, 2] X[2, 2]]\n2×2 Matrix{VariableRef}:\n X[1,1] X[1,2]\n X[1,2] X[2,2]\n\njulia> @constraint(model, LinearAlgebra.Symmetric(Z) >= 0, PSDCone())\n[X[1,1] X[1,2];\n X[1,2] X[2,2]] ∈ PSDCone()","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Note that the lower triangular entries are ignored even if they are different so use it with caution:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, LinearAlgebra.Symmetric(X) >= 0, PSDCone())\n[X[1,1] X[1,2];\n X[1,2] X[2,2]] ∈ PSDCone()","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"(Note the (2, 1) element of the constraint is X[1,2], not X[2,1].)","category":"page"},{"location":"manual/constraints/#Complementarity-constraints","page":"Constraints","title":"Complementarity constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"A mixed complementarity constraint F(x) ⟂ x consists of finding x in the interval [lb, ub], such that the following holds:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"F(x) == 0 if lb < x < ub\nF(x) >= 0 if lb == x\nF(x) <= 0 if x == ub","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"JuMP supports mixed complementarity constraints via complements(F(x), x) or F(x) ⟂ x in the @constraint macro. The interval set [lb, ub] is obtained from the variable bounds on x.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"For example, to define the problem 2x - 1 ⟂ x with x ∈ [0, ∞), do:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x >= 0)\nx\n\njulia> @constraint(model, 2x - 1 ⟂ x)\n[2 x - 1, x] ∈ MathOptInterface.Complements(2)","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"This problem has a unique solution at x = 0.5.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"The perp operator ⟂ can be entered in most editors (and the Julia REPL) by typing \\perp.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"An alternative approach that does not require the ⟂ symbol uses the complements function as follows:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @constraint(model, complements(2x - 1, x))\n[2 x - 1, x] ∈ MathOptInterface.Complements(2)","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"In both cases, the mapping F(x) is supplied as the first argument, and the matching variable x is supplied as the second.","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Vector-valued complementarity constraints are also supported:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> @variable(model, -2 <= y[1:2] <= 2)\n2-element Vector{VariableRef}:\n y[1]\n y[2]\n\njulia> M = [1 2; 3 4]\n2×2 Matrix{Int64}:\n 1 2\n 3 4\n\njulia> q = [5, 6]\n2-element Vector{Int64}:\n 5\n 6\n\njulia> @constraint(model, M * y + q ⟂ y)\n[y[1] + 2 y[2] + 5, 3 y[1] + 4 y[2] + 6, y[1], y[2]] ∈ MathOptInterface.Complements(4)","category":"page"},{"location":"manual/constraints/#Boolean-constraints","page":"Constraints","title":"Boolean constraints","text":"","category":"section"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Add a Boolean constraint (a MOI.EqualTo{Bool} set) using the := operator with a Bool right-hand side term:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = GenericModel{Bool}();\n\njulia> @variable(model, x[1:2]);\n\njulia> @constraint(model, x[1] || x[2] := true)\nx[1] || x[2] = true\n\njulia> @constraint(model, x[1] && x[2] := false)\nx[1] && x[2] = false\n\njulia> model\nA JuMP Model\nFeasibility problem with:\nVariables: 2\n`GenericNonlinearExpr{GenericVariableRef{Bool}}`-in-`MathOptInterface.EqualTo{Bool}`: 2 constraints\nModel mode: AUTOMATIC\nCachingOptimizer state: NO_OPTIMIZER\nSolver name: No optimizer attached.\nNames registered in the model: x","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"Boolean constraints should not be added using the == operator because JuMP will rewrite the constraint as lhs - rhs = 0, and because constraints like a == b == c require parentheses to disambiguate between (a == b) == c and a == (b == c). In contrast, a == b := c is equivalent to (a == b) := c:","category":"page"},{"location":"manual/constraints/","page":"Constraints","title":"Constraints","text":"julia> model = Model();\n\njulia> @variable(model, x[1:2]);\n\njulia> rhs = false\nfalse\n\njulia> @constraint(model, (x[1] == x[2]) == rhs)\n(x[1] == x[2]) - 0.0 = 0\n\njulia> @constraint(model, x[1] == x[2] := rhs)\nx[1] == x[2] = false","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"EditURL = \"power_systems.jl\"","category":"page"},{"location":"tutorials/applications/power_systems/#Power-Systems","page":"Power Systems","title":"Power Systems","text":"","category":"section"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"This tutorial was originally contributed by Yury Dvorkin and Miles Lubin.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"This tutorial demonstrates how to formulate basic power systems engineering models in JuMP.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"We will consider basic \"economic dispatch\" and \"unit commitment\" models without taking into account transmission constraints.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"For this tutorial, we use the following packages:","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"using JuMP\nimport DataFrames\nimport HiGHS\nimport Plots\nimport StatsPlots","category":"page"},{"location":"tutorials/applications/power_systems/#Economic-dispatch","page":"Power Systems","title":"Economic dispatch","text":"","category":"section"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Economic dispatch (ED) is an optimization problem that minimizes the cost of supplying energy demand subject to operational constraints on power system assets. In its simplest modification, ED is an LP problem solved for an aggregated load and wind forecast and for a single infinitesimal moment.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Mathematically, the ED problem can be written as follows:","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"min sum_i in I c^g_i cdot g_i + c^w cdot w","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"where c_i and g_i are the incremental cost ($/MWh) and power output (MW) of the i^th generator, respectively, and c^w and w are the incremental cost ($/MWh) and wind power injection (MW), respectively.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Subject to the constraints:","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Minimum (g^min) and maximum (g^max) limits on power outputs of generators: g^min_i leq g_i leq g^max_i\nConstraint on the wind power injection: 0 leq w leq w^f where w and w^f are the wind power injection and wind power forecast, respectively.\nPower balance constraint: sum_i in I g_i + w = d^f where d^f is the demand forecast.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Further reading on ED models can be found in A. J. Wood, B. F. Wollenberg, and G. B. Sheblé, \"Power Generation, Operation and Control,\" Wiley, 2013.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Define some input data about the test system.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"We define some thermal generators:","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"function ThermalGenerator(\n min::Float64,\n max::Float64,\n fixed_cost::Float64,\n variable_cost::Float64,\n)\n return (\n min = min,\n max = max,\n fixed_cost = fixed_cost,\n variable_cost = variable_cost,\n )\nend\n\ngenerators = [\n ThermalGenerator(0.0, 1000.0, 1000.0, 50.0),\n ThermalGenerator(300.0, 1000.0, 0.0, 100.0),\n]","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"A wind generator","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"WindGenerator(variable_cost::Float64) = (variable_cost = variable_cost,)\n\nwind_generator = WindGenerator(50.0)","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"And a scenario","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"function Scenario(demand::Float64, wind::Float64)\n return (demand = demand, wind = wind)\nend\n\nscenario = Scenario(1500.0, 200.0)","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Create a function solve_economic_dispatch, which solves the economic dispatch problem for a given set of input parameters.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"function solve_economic_dispatch(generators::Vector, wind, scenario)\n # Define the economic dispatch (ED) model\n model = Model(HiGHS.Optimizer)\n set_silent(model)\n # Define decision variables\n # power output of generators\n N = length(generators)\n @variable(model, generators[i].min <= g[i = 1:N] <= generators[i].max)\n # wind power injection\n @variable(model, 0 <= w <= scenario.wind)\n # Define the objective function\n @objective(\n model,\n Min,\n sum(generators[i].variable_cost * g[i] for i in 1:N) +\n wind.variable_cost * w,\n )\n # Define the power balance constraint\n @constraint(model, sum(g[i] for i in 1:N) + w == scenario.demand)\n # Solve statement\n optimize!(model)\n # return the optimal value of the objective function and its minimizers\n return (\n g = value.(g),\n w = value(w),\n wind_spill = scenario.wind - value(w),\n total_cost = objective_value(model),\n )\nend","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Solve the economic dispatch problem","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"solution = solve_economic_dispatch(generators, wind_generator, scenario);\n\nprintln(\"Dispatch of Generators: \", solution.g, \" MW\")\nprintln(\"Dispatch of Wind: \", solution.w, \" MW\")\nprintln(\"Wind spillage: \", solution.wind_spill, \" MW\")\nprintln(\"Total cost: \\$\", solution.total_cost)","category":"page"},{"location":"tutorials/applications/power_systems/#Economic-dispatch-with-adjustable-incremental-costs","page":"Power Systems","title":"Economic dispatch with adjustable incremental costs","text":"","category":"section"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"In the following exercise we adjust the incremental cost of generator G1 and observe its impact on the total cost.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"function scale_generator_cost(g, scale)\n return ThermalGenerator(g.min, g.max, g.fixed_cost, scale * g.variable_cost)\nend\n\nstart = time()\nc_g_scale_df = DataFrames.DataFrame(;\n # Scale factor\n scale = Float64[],\n # Dispatch of Generator 1 [MW]\n dispatch_G1 = Float64[],\n # Dispatch of Generator 2 [MW]\n dispatch_G2 = Float64[],\n # Dispatch of Wind [MW]\n dispatch_wind = Float64[],\n # Spillage of Wind [MW]\n spillage_wind = Float64[],\n # Total cost [$]\n total_cost = Float64[],\n)\nfor c_g1_scale in 0.5:0.1:3.0\n # Update the incremental cost of the first generator at every iteration.\n new_generators = scale_generator_cost.(generators, [c_g1_scale, 1.0])\n # Solve the economic-dispatch problem with the updated incremental cost\n sol = solve_economic_dispatch(new_generators, wind_generator, scenario)\n push!(\n c_g_scale_df,\n (c_g1_scale, sol.g[1], sol.g[2], sol.w, sol.wind_spill, sol.total_cost),\n )\nend\nprint(string(\"elapsed time: \", time() - start, \" seconds\"))","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"c_g_scale_df","category":"page"},{"location":"tutorials/applications/power_systems/#Modifying-the-JuMP-model-in-place","page":"Power Systems","title":"Modifying the JuMP model in-place","text":"","category":"section"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Note that in the previous exercise we entirely rebuilt the optimization model at every iteration of the internal loop, which incurs an additional computational burden. This burden can be alleviated if instead of re-building the entire model, we modify the constraints or objective function, as it shown in the example below.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Compare the computing time in case of the above and below models.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"function solve_economic_dispatch_inplace(\n generators::Vector,\n wind,\n scenario,\n scale::AbstractVector{Float64},\n)\n obj_out = Float64[]\n w_out = Float64[]\n g1_out = Float64[]\n g2_out = Float64[]\n # This function only works for two generators\n @assert length(generators) == 2\n model = Model(HiGHS.Optimizer)\n set_silent(model)\n N = length(generators)\n @variable(model, generators[i].min <= g[i = 1:N] <= generators[i].max)\n @variable(model, 0 <= w <= scenario.wind)\n @objective(\n model,\n Min,\n sum(generators[i].variable_cost * g[i] for i in 1:N) +\n wind.variable_cost * w,\n )\n @constraint(model, sum(g[i] for i in 1:N) + w == scenario.demand)\n for c_g1_scale in scale\n @objective(\n model,\n Min,\n c_g1_scale * generators[1].variable_cost * g[1] +\n generators[2].variable_cost * g[2] +\n wind.variable_cost * w,\n )\n optimize!(model)\n push!(obj_out, objective_value(model))\n push!(w_out, value(w))\n push!(g1_out, value(g[1]))\n push!(g2_out, value(g[2]))\n end\n df = DataFrames.DataFrame(;\n scale = scale,\n dispatch_G1 = g1_out,\n dispatch_G2 = g2_out,\n dispatch_wind = w_out,\n spillage_wind = scenario.wind .- w_out,\n total_cost = obj_out,\n )\n return df\nend\n\nstart = time()\ninplace_df = solve_economic_dispatch_inplace(\n generators,\n wind_generator,\n scenario,\n 0.5:0.1:3.0,\n)\nprint(string(\"elapsed time: \", time() - start, \" seconds\"))","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"For small models, adjusting specific constraints or the objective function is sometimes faster and sometimes slower than re-building the entire model. However, as the problem size increases, updating the model in-place is usually faster.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"inplace_df","category":"page"},{"location":"tutorials/applications/power_systems/#Inefficient-usage-of-wind-generators","page":"Power Systems","title":"Inefficient usage of wind generators","text":"","category":"section"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"The economic dispatch problem does not perform commitment decisions and, thus, assumes that all generators must be dispatched at least at their minimum power output limit. This approach is not cost efficient and may lead to absurd decisions. For example, if d = sum_i in I g^min_i, the wind power injection must be zero, that is, all available wind generation is spilled, to meet the minimum power output constraints on generators.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"In the following example, we adjust the total demand and observed how it affects wind spillage.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"demand_scale_df = DataFrames.DataFrame(;\n demand = Float64[],\n dispatch_G1 = Float64[],\n dispatch_G2 = Float64[],\n dispatch_wind = Float64[],\n spillage_wind = Float64[],\n total_cost = Float64[],\n)\n\nfunction scale_demand(scenario, scale)\n return Scenario(scale * scenario.demand, scenario.wind)\nend\n\nfor demand_scale in 0.2:0.1:1.4\n new_scenario = scale_demand(scenario, demand_scale)\n sol = solve_economic_dispatch(generators, wind_generator, new_scenario)\n push!(\n demand_scale_df,\n (\n new_scenario.demand,\n sol.g[1],\n sol.g[2],\n sol.w,\n sol.wind_spill,\n sol.total_cost,\n ),\n )\nend\n\ndemand_scale_df","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"dispatch_plot = StatsPlots.@df(\n demand_scale_df,\n Plots.plot(\n :demand,\n [:dispatch_G1, :dispatch_G2],\n labels = [\"G1\" \"G2\"],\n title = \"Thermal Dispatch\",\n legend = :bottomright,\n linewidth = 3,\n xlabel = \"Demand\",\n ylabel = \"Dispatch [MW]\",\n ),\n)\n\nwind_plot = StatsPlots.@df(\n demand_scale_df,\n Plots.plot(\n :demand,\n [:dispatch_wind, :spillage_wind],\n labels = [\"Dispatch\" \"Spillage\"],\n title = \"Wind\",\n legend = :bottomright,\n linewidth = 3,\n xlabel = \"Demand [MW]\",\n ylabel = \"Energy [MW]\",\n ),\n)\n\nPlots.plot(dispatch_plot, wind_plot)","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"This particular drawback can be overcome by introducing binary decisions on the \"on/off\" status of generators. This model is called unit commitment and considered later in these notes.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"For further reading on the interplay between wind generation and the minimum power output constraints of generators, we refer interested readers to R. Baldick, \"Wind and energy markets: a case study of Texas,\" IEEE Systems Journal, vol. 6, pp. 27-34, 2012.","category":"page"},{"location":"tutorials/applications/power_systems/#Unit-commitment","page":"Power Systems","title":"Unit commitment","text":"","category":"section"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"The Unit Commitment (UC) model can be obtained from ED model by introducing binary variable associated with each generator. This binary variable can attain two values: if it is \"1,\" the generator is synchronized and, thus, can be dispatched, otherwise, that is, if the binary variable is \"0,\" that generator is not synchronized and its power output is set to 0.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"To obtain the mathematical formulation of the UC model, we will modify the constraints of the ED model as follows:","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"g^min_i cdot u_ti leq g_i leq g^max_i cdot u_ti","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"where u_i in 01 In this constraint, if u_i = 0, then g_i = 0. On the other hand, if u_i = 1, then g^min_i leq g_i leq g^max_i.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"For further reading on the UC problem we refer interested readers to G. Morales-Espana, J. M. Latorre, and A. Ramos, \"Tight and Compact MILP Formulation for the Thermal Unit Commitment Problem,\" IEEE Transactions on Power Systems, vol. 28, pp. 4897-4908, 2013.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"In the following example we convert the ED model explained above to the UC model.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"function solve_unit_commitment(generators::Vector, wind, scenario)\n model = Model(HiGHS.Optimizer)\n set_silent(model)\n N = length(generators)\n @variable(model, 0 <= g[i = 1:N] <= generators[i].max)\n @variable(model, 0 <= w <= scenario.wind)\n @constraint(model, sum(g[i] for i in 1:N) + w == scenario.demand)\n # !!! New: add binary on-off variables for each generator\n @variable(model, u[i = 1:N], Bin)\n @constraint(model, [i = 1:N], g[i] <= generators[i].max * u[i])\n @constraint(model, [i = 1:N], g[i] >= generators[i].min * u[i])\n @objective(\n model,\n Min,\n sum(generators[i].variable_cost * g[i] for i in 1:N) +\n wind.variable_cost * w +\n # !!! new\n sum(generators[i].fixed_cost * u[i] for i in 1:N)\n )\n optimize!(model)\n status = termination_status(model)\n if status != OPTIMAL\n return (status = status,)\n end\n return (\n status = status,\n g = value.(g),\n w = value(w),\n wind_spill = scenario.wind - value(w),\n u = value.(u),\n total_cost = objective_value(model),\n )\nend","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Solve the unit commitment problem","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"solution = solve_unit_commitment(generators, wind_generator, scenario)\n\nprintln(\"Dispatch of Generators: \", solution.g, \" MW\")\nprintln(\"Commitments of Generators: \", solution.u)\nprintln(\"Dispatch of Wind: \", solution.w, \" MW\")\nprintln(\"Wind spillage: \", solution.wind_spill, \" MW\")\nprintln(\"Total cost: \\$\", solution.total_cost)","category":"page"},{"location":"tutorials/applications/power_systems/#Unit-commitment-as-a-function-of-demand","page":"Power Systems","title":"Unit commitment as a function of demand","text":"","category":"section"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"After implementing the unit commitment model, we can now assess the interplay between the minimum power output constraints on generators and wind generation.","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"uc_df = DataFrames.DataFrame(;\n demand = Float64[],\n commitment_G1 = Float64[],\n commitment_G2 = Float64[],\n dispatch_G1 = Float64[],\n dispatch_G2 = Float64[],\n dispatch_wind = Float64[],\n spillage_wind = Float64[],\n total_cost = Float64[],\n)\n\nfor demand_scale in 0.2:0.1:1.4\n new_scenario = scale_demand(scenario, demand_scale)\n sol = solve_unit_commitment(generators, wind_generator, new_scenario)\n if sol.status == OPTIMAL\n push!(\n uc_df,\n (\n new_scenario.demand,\n sol.u[1],\n sol.u[2],\n sol.g[1],\n sol.g[2],\n sol.w,\n sol.wind_spill,\n sol.total_cost,\n ),\n )\n end\n println(\"Status: $(sol.status) for demand_scale = $(demand_scale)\")\nend","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"uc_df","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"commitment_plot = StatsPlots.@df(\n uc_df,\n Plots.plot(\n :demand,\n [:commitment_G1, :commitment_G2],\n labels = [\"G1\" \"G2\"],\n title = \"Commitment\",\n legend = :bottomright,\n linewidth = 3,\n xlabel = \"Demand [MW]\",\n ylabel = \"Commitment decision {0, 1}\",\n ),\n)\n\ndispatch_plot = StatsPlots.@df(\n uc_df,\n Plots.plot(\n :demand,\n [:dispatch_G1, :dispatch_G2, :dispatch_wind],\n labels = [\"G1\" \"G2\" \"Wind\"],\n title = \"Dispatch [MW]\",\n legend = :bottomright,\n linewidth = 3,\n xlabel = \"Demand\",\n ylabel = \"Dispatch [MW]\",\n ),\n)\n\nPlots.plot(commitment_plot, dispatch_plot)","category":"page"},{"location":"tutorials/applications/power_systems/#Nonlinear-economic-dispatch","page":"Power Systems","title":"Nonlinear economic dispatch","text":"","category":"section"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"As a final example, we modify our economic dispatch problem in two ways:","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"The thermal cost function is user-defined\nThe output of the wind is only the square-root of the dispatch","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"import Ipopt\n\n\"\"\"\n thermal_cost_function(g)\n\nA user-defined thermal cost function in pure-Julia! You can include\nnonlinearities, and even things like control flow.\n\n!!! warning\n It's still up to you to make sure that the function has a meaningful\n derivative.\n\"\"\"\nfunction thermal_cost_function(g)\n if g <= 500\n return g\n else\n return g + 1e-2 * (g - 500)^2\n end\nend\n\nfunction solve_nonlinear_economic_dispatch(\n generators::Vector,\n wind,\n scenario;\n silent::Bool = false,\n)\n model = Model(Ipopt.Optimizer)\n if silent\n set_silent(model)\n end\n @operator(model, op_tcf, 1, thermal_cost_function)\n N = length(generators)\n @variable(model, generators[i].min <= g[i = 1:N] <= generators[i].max)\n @variable(model, 0 <= w <= scenario.wind)\n @objective(\n model,\n Min,\n sum(generators[i].variable_cost * op_tcf(g[i]) for i in 1:N) +\n wind.variable_cost * w,\n )\n @constraint(model, sum(g[i] for i in 1:N) + sqrt(w) == scenario.demand)\n optimize!(model)\n return (\n g = value.(g),\n w = value(w),\n wind_spill = scenario.wind - value(w),\n total_cost = objective_value(model),\n )\nend\n\nsolution =\n solve_nonlinear_economic_dispatch(generators, wind_generator, scenario)","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"Now let's see how the wind is dispatched as a function of the cost:","category":"page"},{"location":"tutorials/applications/power_systems/","page":"Power Systems","title":"Power Systems","text":"wind_cost = 0.0:1:100\nwind_dispatch = Float64[]\nfor c in wind_cost\n sol = solve_nonlinear_economic_dispatch(\n generators,\n WindGenerator(c),\n scenario;\n silent = true,\n )\n push!(wind_dispatch, sol.w)\nend\n\nPlots.plot(\n wind_cost,\n wind_dispatch;\n xlabel = \"Cost\",\n ylabel = \"Dispatch [MW]\",\n label = false,\n)","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"EditURL = \"logistic_regression.jl\"","category":"page"},{"location":"tutorials/conic/logistic_regression/#Logistic-regression","page":"Logistic regression","title":"Logistic regression","text":"","category":"section"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"This tutorial was originally contributed by François Pacaud.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"This tutorial shows how to solve a logistic regression problem with JuMP. Logistic regression is a well known method in machine learning, useful when we want to classify binary variables with the help of a given set of features. To this goal, we find the optimal combination of features maximizing the (log)-likelihood onto a training set. From a modern optimization glance, the resulting problem is convex and differentiable. On a modern optimization glance, it is even conic representable.","category":"page"},{"location":"tutorials/conic/logistic_regression/#Formulating-the-logistic-regression-problem","page":"Logistic regression","title":"Formulating the logistic regression problem","text":"","category":"section"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"Suppose we have a set of training data-point i = 1 cdots n, where for each i we have a vector of features x_i in mathbbR^p and a categorical observation y_i in -1 1.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"The log-likelihood is given by","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"l(theta) = sum_i=1^n log(dfrac11 + exp(-y_i theta^top x_i))","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"and the optimal theta minimizes the logistic loss function:","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"min_theta sum_i=1^n log(1 + exp(-y_i theta^top x_i))","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"Most of the time, instead of solving directly the previous optimization problem, we prefer to add a regularization term:","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"min_theta sum_i=1^n log(1 + exp(-y_i theta^top x_i)) + lambda theta ","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"with lambda in mathbbR_+ a penalty and a norm function. By adding such a regularization term, we avoid overfitting on the training set and usually achieve a greater score in cross-validation.","category":"page"},{"location":"tutorials/conic/logistic_regression/#Reformulation-as-a-conic-optimization-problem","page":"Logistic regression","title":"Reformulation as a conic optimization problem","text":"","category":"section"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"By introducing auxiliary variables t_1 cdots t_n and r, the optimization problem is equivalent to","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"beginaligned\nmin_t r theta sum_i=1^n t_i + lambda r \ntextsubject to quad t_i geq log(1 + exp(- y_i theta^top x_i)) \n quad r geq theta\nendaligned","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"Now, the trick is to reformulate the constraints t_i geq log(1 + exp(- y_i theta^top x_i)) with the help of the exponential cone","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"K_exp = (x y z) in mathbbR^3 y exp(x y) leq z ","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"Indeed, by passing to the exponential, we see that for all i=1 cdots n, the constraint t_i geq log(1 + exp(- y_i theta^top x_i)) is equivalent to","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"exp(-t_i) + exp(u_i - t_i) leq 1","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"with u_i = -y_i theta^top x_i. Then, by adding two auxiliary variables z_i1 and z_i2 such that z_i1 geq exp(u_i-t_i) and z_i2 geq exp(-t_i), we get the equivalent formulation","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"left\nbeginaligned\n(u_i -t_i 1 z_i1) in K_exp \n(-t_i 1 z_i2) in K_exp \nz_i1 + z_i2 leq 1\nendaligned\nright","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"In this setting, the conic version of the logistic regression problems writes out","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"beginaligned\nmin_t z r theta sum_i=1^n t_i + lambda r \ntextsubject to quad (u_i -t_i 1 z_i1) in K_exp \n quad (-t_i 1 z_i2) in K_exp \n quad z_i1 + z_i2 leq 1 \n quad u_i = -y_i x_i^top theta \n quad r geq theta\nendaligned","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"and thus encompasses 3n + p + 1 variables and 3n + 1 constraints (u_i = -y_i theta^top x_i is only a virtual constraint used to clarify the notation). Thus, if n gg 1, we get a large number of variables and constraints.","category":"page"},{"location":"tutorials/conic/logistic_regression/#Fitting-logistic-regression-with-a-conic-solver","page":"Logistic regression","title":"Fitting logistic regression with a conic solver","text":"","category":"section"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"It is now time to pass to the implementation. We choose SCS as a conic solver.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"using JuMP\nimport Random\nimport SCS","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"info: Info\nThis tutorial uses sets from MathOptInterface. By default, JuMP exports the MOI symbol as an alias for the MathOptInterface.jl package. We recommend making this more explicit in your code by adding the following lines:import MathOptInterface as MOI","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"Random.seed!(2713);\nnothing #hide","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"We start by implementing a function to generate a fake dataset, and where we could tune the correlation between the feature variables. The function is a direct transcription of the one used in this blog post.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"function generate_dataset(n_samples = 100, n_features = 10; shift = 0.0)\n X = randn(n_samples, n_features)\n w = randn(n_features)\n y = sign.(X * w)\n X .+= 0.8 * randn(n_samples, n_features) # add noise\n X .+= shift # shift the points in the feature space\n X = hcat(X, ones(n_samples, 1))\n return X, y\nend","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"We write a softplus function to formulate each constraint t geq log(1 + exp(u)) with two exponential cones.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"function softplus(model, t, u)\n z = @variable(model, [1:2], lower_bound = 0.0)\n @constraint(model, sum(z) <= 1.0)\n @constraint(model, [u - t, 1, z[1]] in MOI.ExponentialCone())\n @constraint(model, [-t, 1, z[2]] in MOI.ExponentialCone())\nend","category":"page"},{"location":"tutorials/conic/logistic_regression/#\\ell_2-regularized-logistic-regression","page":"Logistic regression","title":"ell_2 regularized logistic regression","text":"","category":"section"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"Then, with the help of the softplus function, we could write our optimization model. In the ell_2 regularization case, the constraint r geq theta_2 rewrites as a second order cone constraint.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"function build_logit_model(X, y, λ)\n n, p = size(X)\n model = Model()\n @variable(model, θ[1:p])\n @variable(model, t[1:n])\n for i in 1:n\n u = -(X[i, :]' * θ) * y[i]\n softplus(model, t[i], u)\n end\n # Add ℓ2 regularization\n @variable(model, 0.0 <= reg)\n @constraint(model, [reg; θ] in SecondOrderCone())\n # Define objective\n @objective(model, Min, sum(t) + λ * reg)\n return model\nend","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"We generate the dataset.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"warning: Warning\nBe careful here, for large n and p SCS could fail to converge.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"n, p = 200, 10\nX, y = generate_dataset(n, p; shift = 10.0);\n\n# We could now solve the logistic regression problem\nλ = 10.0\nmodel = build_logit_model(X, y, λ)\nset_optimizer(model, SCS.Optimizer)\nset_silent(model)\nJuMP.optimize!(model)","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"θ♯ = JuMP.value.(model[:θ])","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"It appears that the speed of convergence is not that impacted by the correlation of the dataset, nor by the penalty lambda.","category":"page"},{"location":"tutorials/conic/logistic_regression/#\\ell_1-regularized-logistic-regression","page":"Logistic regression","title":"ell_1 regularized logistic regression","text":"","category":"section"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"We now formulate the logistic problem with a ell_1 regularization term. The ell_1 regularization ensures sparsity in the optimal solution of the resulting optimization problem. Luckily, the ell_1 norm is implemented as a set in MathOptInterface. Thus, we could formulate the sparse logistic regression problem with the help of a MOI.NormOneCone set.","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"function build_sparse_logit_model(X, y, λ)\n n, p = size(X)\n model = Model()\n @variable(model, θ[1:p])\n @variable(model, t[1:n])\n for i in 1:n\n u = -(X[i, :]' * θ) * y[i]\n softplus(model, t[i], u)\n end\n # Add ℓ1 regularization\n @variable(model, 0.0 <= reg)\n @constraint(model, [reg; θ] in MOI.NormOneCone(p + 1))\n # Define objective\n @objective(model, Min, sum(t) + λ * reg)\n return model\nend\n\n# Auxiliary function to count non-null components:\ncount_nonzero(v::Vector; tol = 1e-6) = sum(abs.(v) .>= tol)\n\n# We solve the sparse logistic regression problem on the same dataset as before.\nλ = 10.0\nsparse_model = build_sparse_logit_model(X, y, λ)\nset_optimizer(sparse_model, SCS.Optimizer)\nset_silent(sparse_model)\nJuMP.optimize!(sparse_model)","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"θ♯ = JuMP.value.(sparse_model[:θ])\nprintln(\n \"Number of non-zero components: \",\n count_nonzero(θ♯),\n \" (out of \",\n p,\n \" features)\",\n)","category":"page"},{"location":"tutorials/conic/logistic_regression/#Extensions","page":"Logistic regression","title":"Extensions","text":"","category":"section"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"A direct extension would be to consider the sparse logistic regression with hard thresholding, which, on contrary to the soft version using a ell_1 regularization, adds an explicit cardinality constraint in its formulation:","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"beginaligned\nmin_theta sum_i=1^n log(1 + exp(-y_i theta^top x_i)) + lambda theta _2^2 \ntextsubject to quad theta _0 = k\nendaligned","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"where k is the maximum number of non-zero components in the vector theta, and _0 is the ell_0 pseudo-norm:","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":" x_0 = i x_i neq 0","category":"page"},{"location":"tutorials/conic/logistic_regression/","page":"Logistic regression","title":"Logistic regression","text":"The cardinality constraint theta_0 leq k could be reformulated with binary variables. Thus the hard sparse regression problem could be solved by any solver supporting mixed integer conic problems.","category":"page"},{"location":"moi/background/motivation/","page":"Motivation","title":"Motivation","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/background/motivation.md\"","category":"page"},{"location":"moi/background/motivation/#Motivation","page":"Motivation","title":"Motivation","text":"","category":"section"},{"location":"moi/background/motivation/","page":"Motivation","title":"Motivation","text":"MathOptInterface (MOI) is a replacement for MathProgBase, the first-generation abstraction layer for mathematical optimization previously used by JuMP and Convex.jl.","category":"page"},{"location":"moi/background/motivation/","page":"Motivation","title":"Motivation","text":"To address a number of limitations of MathProgBase, MOI is designed to:","category":"page"},{"location":"moi/background/motivation/","page":"Motivation","title":"Motivation","text":"Be simple and extensible\nunifying linear, quadratic, and conic optimization,\nseamlessly facilitating extensions to essentially arbitrary constraints and functions (for example, indicator constraints, complementarity constraints, and piecewise-linear functions)\nBe fast\nby allowing access to a solver's in-memory representation of a problem without writing intermediate files (when possible)\nby using multiple dispatch and avoiding requiring containers of non-concrete types\nAllow a solver to return multiple results (for example, a pool of solutions)\nAllow a solver to return extra arbitrary information via attributes (for example, variable- and constraint-wise membership in an irreducible inconsistent subset for infeasibility analysis)\nProvide a greatly expanded set of status codes explaining what happened during the optimization procedure\nEnable a solver to more precisely specify which problem classes it supports\nEnable both primal and dual warm starts\nEnable adding and removing both variables and constraints by indices that are not required to be consecutive\nEnable any modification that the solver supports to an existing model\nAvoid requiring the solver wrapper to store an additional copy of the problem data","category":"page"},{"location":"tutorials/conic/introduction/#Introduction","page":"Introduction","title":"Introduction","text":"","category":"section"},{"location":"tutorials/conic/introduction/","page":"Introduction","title":"Introduction","text":"Conic programs are a class of convex nonlinear optimization problems which use cones to represent the nonlinearities. They have the form:","category":"page"},{"location":"tutorials/conic/introduction/","page":"Introduction","title":"Introduction","text":"beginalign\n min_x in mathbbR^n f_0(x) \n textst f_j(x) in mathcalS_j j = 1 ldots m\nendalign","category":"page"},{"location":"tutorials/conic/introduction/","page":"Introduction","title":"Introduction","text":"Mixed-integer conic programs (MICPs) are extensions of conic programs in which some (or all) of the decision variables take discrete values.","category":"page"},{"location":"tutorials/conic/introduction/#How-to-choose-a-solver","page":"Introduction","title":"How to choose a solver","text":"","category":"section"},{"location":"tutorials/conic/introduction/","page":"Introduction","title":"Introduction","text":"JuMP supports a range of conic solvers, although support differs on what types of cones each solver supports. In the list of Supported solvers, \"SOCP\" denotes solvers supporting second-order cones and \"SDP\" denotes solvers supporting semidefinite cones. In addition, solvers such as SCS and Mosek have support for the exponential cone. Moreover, due to the bridging system in MathOptInterface, many of these solvers support a much wider range of exotic cones than they natively support. Solvers supporting discrete variables start with \"(MI)\" in the list of Supported solvers.","category":"page"},{"location":"tutorials/conic/introduction/","page":"Introduction","title":"Introduction","text":"tip: Tip\nDuality plays a large role in solving conic optimization models. Depending on the solver, it can be more efficient to solve the dual instead of the primal. If performance is an issue, see the Dualization tutorial for more details.","category":"page"},{"location":"tutorials/conic/introduction/#How-these-tutorials-are-structured","page":"Introduction","title":"How these tutorials are structured","text":"","category":"section"},{"location":"tutorials/conic/introduction/","page":"Introduction","title":"Introduction","text":"Having a high-level overview of how this part of the documentation is structured will help you know where to look for certain things.","category":"page"},{"location":"tutorials/conic/introduction/","page":"Introduction","title":"Introduction","text":"The following tutorials are worked examples that present a problem in words, then formulate it in mathematics, and then solve it in JuMP. This usually involves some sort of visualization of the solution. Start here if you are new to JuMP.\nExperiment design\nLogistic regression\nThe Tips and tricks tutorial contains a number of helpful reformulations and tricks you can use when modeling conic programs. Look here if you are stuck trying to formulate a problem as a conic program.\nThe remaining tutorials are less verbose and styled in the form of short code examples. These tutorials have less explanation, but may contain useful code snippets, particularly if they are similar to a problem you are trying to solve.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/tutorials/manipulating_expressions.md\"","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"CurrentModule = MathOptInterface\nDocTestSetup = quote\n import MathOptInterface as MOI\nend\nDocTestFilters = [r\"MathOptInterface|MOI\"]","category":"page"},{"location":"moi/tutorials/manipulating_expressions/#Manipulating-expressions","page":"Manipulating expressions","title":"Manipulating expressions","text":"","category":"section"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"This guide highlights a syntactically appealing way to build expressions at the MOI level, but also to look at their contents. It may be especially useful when writing models or bridge code.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/#Creating-functions","page":"Manipulating expressions","title":"Creating functions","text":"","category":"section"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"This section details the ways to create functions with MathOptInterface.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/#Creating-scalar-affine-functions","page":"Manipulating expressions","title":"Creating scalar affine functions","text":"","category":"section"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"The simplest scalar function is simply a variable:","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"julia> x = MOI.add_variable(model) # Create the variable x\nMOI.VariableIndex(1)","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"This type of function is extremely simple; to express more complex functions, other types must be used. For instance, a ScalarAffineFunction is a sum of linear terms (a factor times a variable) and a constant. Such an object can be built using the standard constructor:","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"julia> f = MOI.ScalarAffineFunction([MOI.ScalarAffineTerm(1, x)], 2) # x + 2\n(2) + (1) MOI.VariableIndex(1)","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"However, you can also use operators to build the same scalar function:","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"julia> f = x + 2\n(2) + (1) MOI.VariableIndex(1)","category":"page"},{"location":"moi/tutorials/manipulating_expressions/#Creating-scalar-quadratic-functions","page":"Manipulating expressions","title":"Creating scalar quadratic functions","text":"","category":"section"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"Scalar quadratic functions are stored in ScalarQuadraticFunction objects, in a way that is highly similar to scalar affine functions. You can obtain a quadratic function as a product of affine functions:","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"julia> 1 * x * x\n(0) + 1.0 MOI.VariableIndex(1)²\n\njulia> f * f # (x + 2)²\n(4) + (2) MOI.VariableIndex(1) + (2) MOI.VariableIndex(1) + 1.0 MOI.VariableIndex(1)²\n\njulia> f^2 # (x + 2)² too\n(4) + (2) MOI.VariableIndex(1) + (2) MOI.VariableIndex(1) + 1.0 MOI.VariableIndex(1)²","category":"page"},{"location":"moi/tutorials/manipulating_expressions/#Creating-vector-functions","page":"Manipulating expressions","title":"Creating vector functions","text":"","category":"section"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"A vector function is a function with several values, irrespective of the number of input variables. Similarly to scalar functions, there are three main types of vector functions: VectorOfVariables, VectorAffineFunction, and VectorQuadraticFunction.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"The easiest way to create a vector function is to stack several scalar functions using Utilities.vectorize. It takes a vector as input, and the generated vector function (of the most appropriate type) has each dimension corresponding to a dimension of the vector.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"julia> g = MOI.Utilities.vectorize([f, 2 * f])\n┌ ┐\n│(2) + (1) MOI.VariableIndex(1)│\n│(4) + (2) MOI.VariableIndex(1)│\n└ ┘","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"warning: Warning\nUtilities.vectorize only takes a vector of similar scalar functions: you cannot mix VariableIndex and ScalarAffineFunction, for instance. In practice, it means that Utilities.vectorize([x, f]) does not work; you should rather use Utilities.vectorize([1 * x, f]) instead to only have ScalarAffineFunction objects.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/#Canonicalizing-functions","page":"Manipulating expressions","title":"Canonicalizing functions","text":"","category":"section"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"In more advanced use cases, you might need to ensure that a function is \"canonical.\" Functions are stored as an array of terms, but there is no check that these terms are redundant: a ScalarAffineFunction object might have two terms with the same variable, like x + x + 1. These terms could be merged without changing the semantics of the function: 2x + 1.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"Working with these objects might be cumbersome. Canonicalization helps maintain redundancy to zero.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"Utilities.is_canonical checks whether a function is already in its canonical form:","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"julia> MOI.Utilities.is_canonical(f + f) # (x + 2) + (x + 2) is stored as x + x + 4\nfalse","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"Utilities.canonical returns the equivalent canonical version of the function:","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"julia> MOI.Utilities.canonical(f + f) # Returns 2x + 4\n(4) + (2) MOI.VariableIndex(1)","category":"page"},{"location":"moi/tutorials/manipulating_expressions/#Exploring-functions","page":"Manipulating expressions","title":"Exploring functions","text":"","category":"section"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"At some point, you might need to dig into a function, for instance to map it into solver constructs.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/#Vector-functions","page":"Manipulating expressions","title":"Vector functions","text":"","category":"section"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"Utilities.scalarize returns a vector of scalar functions from a vector function:","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"julia> MOI.Utilities.scalarize(g) # Returns a vector [f, 2 * f].\n2-element Vector{MathOptInterface.ScalarAffineFunction{Int64}}:\n (2) + (1) MOI.VariableIndex(1)\n (4) + (2) MOI.VariableIndex(1)","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"note: Note\nUtilities.eachscalar returns an iterator on the dimensions, which serves the same purpose as Utilities.scalarize.","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"output_dimension returns the number of dimensions of the output of a function:","category":"page"},{"location":"moi/tutorials/manipulating_expressions/","page":"Manipulating expressions","title":"Manipulating expressions","text":"julia> MOI.output_dimension(g)\n2","category":"page"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"EditURL = \"https://github.com/jump-dev/MosekTools.jl/blob/v0.15.1/README.md\"","category":"page"},{"location":"packages/MosekTools/#MosekTools.jl","page":"jump-dev/MosekTools.jl","title":"MosekTools.jl","text":"","category":"section"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"MosekTools.jl is the MathOptInterface.jl implementation for the MOSEK solver.","category":"page"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"The low-level solver API for MOSEK is found in the package Mosek.jl.","category":"page"},{"location":"packages/MosekTools/#Affiliation","page":"jump-dev/MosekTools.jl","title":"Affiliation","text":"","category":"section"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"MosekTools.jl is maintained by the JuMP community and is not officially supported by MOSEK. However, Mosek.jl is an officially supported product of MOSEK.","category":"page"},{"location":"packages/MosekTools/#License","page":"jump-dev/MosekTools.jl","title":"License","text":"","category":"section"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"MosekTools.jl is licensed under the MIT License.","category":"page"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"The underlying solver is a closed-source commercial product for which you must obtain a license.","category":"page"},{"location":"packages/MosekTools/#Installation","page":"jump-dev/MosekTools.jl","title":"Installation","text":"","category":"section"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"The latest release of this package and the master branch are to be used with the latest release of Mosek.jl (which uses MOSEK v10).","category":"page"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"To use MOSEK v9 (resp. v8), use the v0.12.x (resp. v0.7.x) releases of this package, and the mosekv9 (resp. mosekv8) branch and v1.2.x (resp. v0.9.x) releases of Mosek.jl.","category":"page"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"See the following table for a summary:","category":"page"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"MOSEK Mosek.jl MosekTools.jl release MosekTools.jl branch\nv10 v10 v0.13 master\nv9 v0.12 v0.12 mosekv9\nv8 v0.9 v0.7 mosekv8","category":"page"},{"location":"packages/MosekTools/#Use-with-JuMP","page":"jump-dev/MosekTools.jl","title":"Use with JuMP","text":"","category":"section"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"using JuMP\nusing MosekTools\nmodel = Model(Mosek.Optimizer)\nset_attribute(model, \"QUIET\", true)\nset_attribute(model, \"INTPNT_CO_TOL_DFEAS\", 1e-7)","category":"page"},{"location":"packages/MosekTools/#Options","page":"jump-dev/MosekTools.jl","title":"Options","text":"","category":"section"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"The parameter QUIET is a special parameter that when set to true disables all Mosek printing output.","category":"page"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"All other parameters can be found in the Mosek documentation.","category":"page"},{"location":"packages/MosekTools/","page":"jump-dev/MosekTools.jl","title":"jump-dev/MosekTools.jl","text":"Note that the prefix MSK_IPAR_ (for integer parameters), MSK_DPAR_ (for floating point parameters) or MSK_SPAR_ (for string parameters) are optional. If they are not given, they are inferred from the type of the value. For example, in the example above, as 1e-7 is a floating point number, the parameters name used is MSK_DPAR_INTPNT_CO_TOL_DFEAS.","category":"page"},{"location":"developers/style/#Style-guide-and-design-principles","page":"Style Guide","title":"Style guide and design principles","text":"","category":"section"},{"location":"developers/style/#Style-guide","page":"Style Guide","title":"Style guide","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"This section describes the coding style rules that apply to JuMP code and that we recommend for JuMP models and surrounding Julia code. The motivations for a style guide include:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"conveying best practices for writing readable and maintainable code\nreducing the amount of time spent on bike-shedding by establishing basic naming and formatting conventions\nlowering the barrier for new contributors by codifying the existing practices (for example, you can be more confident your code will pass review if you follow the style guide)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"In some cases, the JuMP style guide diverges from the Julia style guide. All such cases will be explicitly noted and justified.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"The JuMP style guide adopts many recommendations from the Google style guides.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"info: Info\nThe style guide is always a work in progress, and not all JuMP code follows the rules. When modifying JuMP, please fix the style violations of the surrounding code (that is, leave the code tidier than when you started). If large changes are needed, consider separating them into another PR.","category":"page"},{"location":"developers/style/#JuliaFormatter","page":"Style Guide","title":"JuliaFormatter","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"JuMP uses JuliaFormatter.jl as an auto-formatting tool.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"We use the options contained in .JuliaFormatter.toml.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"To format code, cd to the JuMP directory, then run:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"] add JuliaFormatter@1\nusing JuliaFormatter\nformat(\"docs\")\nformat(\"src\")\nformat(\"test\")","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"info: Info\nA continuous integration check verifies that all PRs made to JuMP have passed the formatter.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"The following sections outline extra style guide points that are not fixed automatically by JuliaFormatter.","category":"page"},{"location":"developers/style/#Abstract-types-and-composition","page":"Style Guide","title":"Abstract types and composition","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Specifying types for method arguments is mostly optional in Julia. The benefit of abstract method arguments is that it enables functions and types from one package to be used with functions and types from another package via multiple dispatch.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"However, abstractly typed methods have two main drawbacks:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"It's possible to find out that you are working with unexpected types deep in the call chain, potentially leading to hard-to-diagnose MethodErrors.\nUntyped function arguments can lead to correctness problems if the user's choice of input type does not satisfy the assumptions made by the author of the function.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"As a motivating example, consider the following function:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> function my_sum(x)\n y = 0.0\n for i in 1:length(x)\n y += x[i]\n end\n return y\n end\nmy_sum (generic function with 1 method)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"This function contains a number of implicit assumptions about the type of x:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"x supports 1-based getindex and implements length\nThe element type of x supports addition with 0.0, and then with the result of x + 0.0.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"info: Info\nAs a motivating example for the second point, VariableRef plus Float64 produces an AffExpr. Do not assume that +(::A, ::B) produces an instance of the type A or B.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"my_sum works as expected if the user passes in Vector{Float64}:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> my_sum([1.0, 2.0, 3.0])\n6.0","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"but it doesn't respect input types, for example returning a Float64 if the user passes Vector{Int}:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> my_sum([1, 2, 3])\n6.0","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"but it throws a MethodError if the user passes String:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> my_sum(\"abc\")\nERROR: MethodError: no method matching +(::Float64, ::Char)\n[...]","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"This particular MethodError is hard to debug, particularly for new users, because it mentions +, Float64, and Char, none of which were called or passed by the user.","category":"page"},{"location":"developers/style/#Dealing-with-MethodErrors","page":"Style Guide","title":"Dealing with MethodErrors","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"This section diverges from the Julia style guide, as well as other common guides like SciML. The following suggestions are intended to provide a friendlier experience for novice Julia programmers, at the cost of limiting the power and flexibility of advanced Julia programmers.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Code should follow the MethodError principle:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"info: The MethodError principle\nA user should see a MethodError only for methods that they called directly.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"_internal_function(x::Integer) = x + 1\n# The user sees a MethodError for _internal_function when calling\n# public_function(\"a string\"). This is not very helpful.\npublic_function(x) = _internal_function(x)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"_internal_function(x::Integer) = x + 1\n# The user sees a MethodError for public_function when calling\n# public_function(\"a string\"). This is easy to understand.\npublic_function(x::Integer) = _internal_function(x)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"If it is hard to provide an error message at the top of the call chain, then the following pattern is also ok:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"_internal_function(x::Integer) = x + 1\nfunction _internal_function(x)\n error(\n \"Internal error. This probably means that you called \" *\n \"`public_function()`s with the wrong type.\",\n )\nend\npublic_function(x) = _internal_function(x)","category":"page"},{"location":"developers/style/#Dealing-with-correctness","page":"Style Guide","title":"Dealing with correctness","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Dealing with correctness is harder, because Julia has no way of formally specifying interfaces that abstract types must implement. Instead, here are two options that you can use when writing and interacting with generic code:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Option 1: use concrete types and let users extend new methods.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"In this option, explicitly restrict input arguments to concrete types that are tested and have been validated for correctness. For example:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> function my_sum_option_1(x::Vector{Float64})\n y = 0.0\n for i in 1:length(x)\n y += x[i]\n end\n return y\n end\nmy_sum_option_1 (generic function with 1 method)\n\njulia> my_sum_option_1([1.0, 2.0, 3.0])\n6.0","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Using concrete types satisfies the MethodError principle:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> my_sum_option_1(\"abc\")\nERROR: MethodError: no method matching my_sum_option_1(::String)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"and it allows other types to be supported in future by defining new methods:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> function my_sum_option_1(x::Array{T,N}) where {T<:Number,N}\n y = zero(T)\n for i in eachindex(x)\n y += x[i]\n end\n return y\n end\nmy_sum_option_1 (generic function with 2 methods)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Importantly, these methods do not have to be defined in the original package.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"info: Info\nSome usage of abstract types is okay. For example, in my_sum_option_1, we allowed the element type, T, to be a subtype of Number. This is fairly safe, but it still has an implicit assumption that T supports zero(T) and +(::T, ::T).","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Option 2: program defensively, and validate all assumptions.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"An alternative is to program defensively, and to rigorously document and validate all assumptions that the code makes. In particular:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"All assumptions on abstract types that aren't guaranteed by the definition of the abstract type (for example, optional methods without a fallback) should be documented.\nIf practical, the assumptions should be checked in code, and informative error messages should be provided to the user if the assumptions are not met. In general, these checks may be expensive, so you should prefer to do this once, at the highest level of the call-chain.\nTests should cover for a range of corner cases and argument types.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"For example:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"\"\"\"\n test_my_sum_defensive_assumptions(x::AbstractArray{T}) where {T}\n\nTest the assumptions made by `my_sum_defensive`.\n\"\"\"\nfunction test_my_sum_defensive_assumptions(x::AbstractArray{T}) where {T}\n try\n # Some types may not define zero.\n @assert zero(T) isa T\n # Check iteration supported\n @assert iterate(x) isa Union{Nothing,Tuple{T,Int}}\n # Check that + is defined\n @assert +(zero(T), zero(T)) isa Any\n catch err\n error(\n \"Unable to call my_sum_defensive(::$(typeof(x))) because \" *\n \"it failed an internal assumption\",\n )\n end\n return\nend\n\n\"\"\"\n my_sum_defensive(x::AbstractArray{T}) where {T}\n\nReturn the sum of the elements in the abstract array `x`.\n\n## Assumptions\n\nThis function makes the following assumptions:\n\n * That `zero(T)` is defined\n * That `x` supports the iteration interface\n * That `+(::T, ::T)` is defined\n\"\"\"\nfunction my_sum_defensive(x::AbstractArray{T}) where {T}\n test_my_sum_defensive_assumptions(x)\n y = zero(T)\n for xi in x\n y += xi\n end\n return y\nend\n\n# output\n\nmy_sum_defensive","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"This function works on Vector{Float64}:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> my_sum_defensive([1.0, 2.0, 3.0])\n6.0","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"as well as Matrix{Rational{Int}}:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> my_sum_defensive([(1//2) + (4//3)im; (6//5) + (7//11)im])\n17//10 + 65//33*im","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"and it throws an error when the assumptions aren't met:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"julia> my_sum_defensive(['a', 'b', 'c'])\nERROR: Unable to call my_sum_defensive(::Vector{Char}) because it failed an internal assumption\n[...]","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"As an alternative, you may choose not to call test_my_sum_defensive_assumptions within my_sum_defensive, and instead ask users of my_sum_defensive to call it in their tests.","category":"page"},{"location":"developers/style/#Juxtaposed-multiplication","page":"Style Guide","title":"Juxtaposed multiplication","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Only use juxtaposed multiplication when the right-hand side is a symbol.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"2x # Acceptable if there are space constraints.\n2 * x # This is preferred if space is not an issue.\n2 * (x + 1)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"2(x + 1)","category":"page"},{"location":"developers/style/#Empty-vectors","page":"Style Guide","title":"Empty vectors","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"For a type T, T[] and Vector{T}() are equivalent ways to create an empty vector with element type T. Prefer T[] because it is more concise.","category":"page"},{"location":"developers/style/#Comments","page":"Style Guide","title":"Comments","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"For non-native speakers and for general clarity, comments in code must be proper English sentences with appropriate punctuation.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"# This is a comment demonstrating a good comment.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"# a bad comment","category":"page"},{"location":"developers/style/#JuMP-macro-syntax","page":"Style Guide","title":"JuMP macro syntax","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"For consistency, always use parentheses.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"@variable(model, x >= 0)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"@variable model x >= 0","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"For consistency, always use constant * variable as opposed to variable * constant. This makes it easier to read models in ambiguous cases like a * x.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"a = 4\n@constraint(model, 3 * x <= 1)\n@constraint(model, a * x <= 1)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"a = 4\n@constraint(model, x * 3 <= 1)\n@constraint(model, x * a <= 1)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"In order to reduce boilerplate code, prefer the plural form of macros over lots of repeated calls to singular forms.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"@variables(model, begin\n x >= 0\n y >= 1\n z <= 2\nend)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"@variable(model, x >= 0)\n@variable(model, y >= 1)\n@variable(model, z <= 2)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"An exception is made for calls with many keyword arguments, since these need to be enclosed in parentheses in order to parse properly.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Acceptable:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"@variable(model, x >= 0, start = 0.0, base_name = \"my_x\")\n@variable(model, y >= 1, start = 2.0)\n@variable(model, z <= 2, start = -1.0)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Also acceptable:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"@variables(model, begin\n x >= 0, (start = 0.0, base_name = \"my_x\")\n y >= 1, (start = 2.0)\n z <= 2, (start = -1.0)\nend)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"While we always use in for for-loops, it is acceptable to use = in the container declarations of JuMP macros.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Okay:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"@variable(model, x[i=1:3])","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Also okay:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"@variable(model, x[i in 1:3])","category":"page"},{"location":"developers/style/#Naming","page":"Style Guide","title":"Naming","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"module SomeModule end\nfunction some_function end\nconst SOME_CONSTANT = ...\nstruct SomeStruct\n some_field::SomeType\nend\n@enum SomeEnum ENUM_VALUE_A ENUM_VALUE_B\nsome_local_variable = ...\nsome_file.jl # Except for ModuleName.jl.","category":"page"},{"location":"developers/style/#Exported-and-non-exported-names","page":"Style Guide","title":"Exported and non-exported names","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Begin private module level functions and constants with an underscore. All other objects in the scope of a module should be exported. (See JuMP.jl for an example of how to do this.)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Names beginning with an underscore should only be used for distinguishing between exported (public) and non-exported (private) objects. Therefore, never begin the name of a local variable with an underscore.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"module MyModule\n\nexport public_function, PUBLIC_CONSTANT\n\nfunction _private_function()\n local_variable = 1\n return\nend\n\nfunction public_function end\n\nconst _PRIVATE_CONSTANT = 3.14159\nconst PUBLIC_CONSTANT = 1.41421\n\nend","category":"page"},{"location":"developers/style/#Use-of-underscores-within-names","page":"Style Guide","title":"Use of underscores within names","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"The Julia style guide recommends avoiding underscores \"when readable,\" for example, haskey, isequal, remotecall, and remotecall_fetch. This convention creates the potential for unnecessary bikeshedding and also forces the user to recall the presence/absence of an underscore, for example, \"was that argument named basename or base_name?\". For consistency, always use underscores in variable names and function names to separate words.","category":"page"},{"location":"developers/style/#Use-of-!","page":"Style Guide","title":"Use of !","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Julia has a convention of appending ! to a function name if the function modifies its arguments. We recommend to:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Omit ! when the name itself makes it clear that modification is taking place, for example, add_constraint and set_name. We depart from the Julia style guide because ! does not provide a reader with any additional information in this case, and adherence to this convention is not uniform even in base Julia itself (consider Base.println and Base.finalize).\nUse ! in all other cases. In particular it can be used to distinguish between modifying and non-modifying variants of the same function like scale and scale!.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Note that ! is not a self-documenting feature because it is still ambiguous which arguments are modified when multiple arguments are present. Be sure to document which arguments are modified in the method's docstring.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"See also the Julia style guide recommendations for ordering of function arguments.","category":"page"},{"location":"developers/style/#Abbreviations","page":"Style Guide","title":"Abbreviations","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Abbreviate names to make the code more readable, not to save typing. Don't arbitrarily delete letters from a word to abbreviate it (for example, indx). Use abbreviations consistently within a body of code (for example, do not mix con and constr, idx and indx).","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Common abbreviations:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"num for number\ncon for constraint","category":"page"},{"location":"developers/style/#No-one-letter-variable-names","page":"Style Guide","title":"No one-letter variable names","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Where possible, avoid one-letter variable names.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Use model = Model() instead of m = Model()","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Exceptions are made for indices in loops.","category":"page"},{"location":"developers/style/#@enum-vs.-Symbol","page":"Style Guide","title":"@enum vs. Symbol","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"The @enum macro lets you define types with a finite number of values that are explicitly enumerated (like enum in C/C++). Symbols are lightweight strings that are used to represent identifiers in Julia (for example, :x).","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"@enum provides type safety and can have docstrings attached to explain the possible values. Use @enums when applicable, for example, for reporting statuses. Use strings to provide long-form additional information like error messages.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Use of Symbol should typically be reserved for identifiers, for example, for lookup in the JuMP model (model[:my_variable]).","category":"page"},{"location":"developers/style/#using-vs.-import","page":"Style Guide","title":"using vs. import","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"using ModuleName brings all symbols exported by the module ModuleName into scope, while import ModuleName brings only the module itself into scope. (See the Julia manual) for examples and more details.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"For the same reason that from import * is not recommended in python (PEP 8), avoid using ModuleName except in throw-away scripts or at the REPL. The using statement makes it harder to track where symbols come from and exposes the code to ambiguities when two modules export the same symbol.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Prefer using ModuleName: x, p to import ModuleName.x, ModuleName.p and import MyModule: x, p because the import versions allow method extension without qualifying with the module name.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Similarly, using ModuleName: ModuleName is an acceptable substitute for import ModuleName, because it does not bring all symbols exported by ModuleName into scope. However, we prefer import ModuleName for consistency.","category":"page"},{"location":"developers/style/#Documentation","page":"Style Guide","title":"Documentation","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"This section describes the writing style that should be used when writing documentation for JuMP (and supporting packages).","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"We can recommend the documentation style guides by Divio, Google, and Write the Docs as general reading for those writing documentation. This guide delegates a thorough handling of the topic to those guides and instead elaborates on the points more specific to Julia and documentation that use Documenter.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Be concise\nUse lists instead of long sentences\nUse numbered lists when describing a sequence, for example, (1) do X, (2) then Y\nUse bullet points when the items are not ordered\nExample code should be covered by doctests\nWhen a word is a Julia symbol and not an English word, enclose it with backticks. In addition, if it has a docstring in this doc add a link using @ref. If it is a plural, add the \"s\" after the closing backtick. For example,\n[`VariableRef`](@ref)s\nUse @meta blocks for TODOs and other comments that shouldn't be visible to readers. For example,\n```@meta\n# TODO: Mention also X, Y, and Z.\n```","category":"page"},{"location":"developers/style/#Docstrings","page":"Style Guide","title":"Docstrings","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Every exported object needs a docstring\nAll examples in docstrings should be jldoctests\nAlways use complete English sentences with proper punctuation\nDo not terminate lists with punctuation (for example, as in this doc)","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Here is an example:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"\"\"\"\n signature(args; kwargs...)\n\nShort sentence describing the function.\n\nOptional: add a slightly longer paragraph describing the function.\n\n## Notes\n\n - List any notes that the user should be aware of\n\n## Examples\n\n```jldoctest\njulia> 1 + 1\n2\n```\n\"\"\"","category":"page"},{"location":"developers/style/#Testing","page":"Style Guide","title":"Testing","text":"","category":"section"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Use a module to encapsulate tests, and structure all tests as functions. This avoids leaking local variables between tests.","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Here is a basic skeleton:","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"module TestPkg\n\nusing Test\n\nfunction runtests()\n for name in names(@__MODULE__; all = true)\n if startswith(\"$(name)\", \"test_\")\n @testset \"$(name)\" begin\n getfield(@__MODULE__, name)()\n end\n end\n end\n return\nend\n\n_helper_function() = 2\n\nfunction test_addition()\n @test 1 + 1 == _helper_function()\n return\nend\n\nend # module TestPkg\n\nTestPkg.runtests()","category":"page"},{"location":"developers/style/","page":"Style Guide","title":"Style Guide","text":"Break the tests into multiple files, with one module per file, so that subsets of the codebase can be tested by calling include with the relevant file.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/submodules/Test/overview.md\"","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"CurrentModule = MathOptInterface\nDocTestSetup = quote\n import MathOptInterface as MOI\nend\nDocTestFilters = [r\"MathOptInterface|MOI\"]","category":"page"},{"location":"moi/submodules/Test/overview/#test_module","page":"Overview","title":"The Test submodule","text":"","category":"section"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"The Test submodule provides tools to help solvers implement unit tests in order to ensure they implement the MathOptInterface API correctly, and to check for solver-correctness.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"We use a centralized repository of tests, so that if we find a bug in one solver, instead of adding a test to that particular repository, we add it here so that all solvers can benefit.","category":"page"},{"location":"moi/submodules/Test/overview/#How-to-test-a-solver","page":"Overview","title":"How to test a solver","text":"","category":"section"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"The skeleton below can be used for the wrapper test file of a solver named FooBar.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"# ============================ /test/MOI_wrapper.jl ============================\nmodule TestFooBar\n\nimport FooBar\nusing Test\n\nimport MathOptInterface as MOI\n\nconst OPTIMIZER = MOI.instantiate(\n MOI.OptimizerWithAttributes(FooBar.Optimizer, MOI.Silent() => true),\n)\n\nconst BRIDGED = MOI.instantiate(\n MOI.OptimizerWithAttributes(FooBar.Optimizer, MOI.Silent() => true),\n with_bridge_type = Float64,\n)\n\n# See the docstring of MOI.Test.Config for other arguments.\nconst CONFIG = MOI.Test.Config(\n # Modify tolerances as necessary.\n atol = 1e-6,\n rtol = 1e-6,\n # Use MOI.LOCALLY_SOLVED for local solvers.\n optimal_status = MOI.OPTIMAL,\n # Pass attributes or MOI functions to `exclude` to skip tests that\n # rely on this functionality.\n exclude = Any[MOI.VariableName, MOI.delete],\n)\n\n\"\"\"\n runtests()\n\nThis function runs all functions in the this Module starting with `test_`.\n\"\"\"\nfunction runtests()\n for name in names(@__MODULE__; all = true)\n if startswith(\"$(name)\", \"test_\")\n @testset \"$(name)\" begin\n getfield(@__MODULE__, name)()\n end\n end\n end\nend\n\n\"\"\"\n test_runtests()\n\nThis function runs all the tests in MathOptInterface.Test.\n\nPass arguments to `exclude` to skip tests for functionality that is not\nimplemented or that your solver doesn't support.\n\"\"\"\nfunction test_runtests()\n MOI.Test.runtests(\n BRIDGED,\n CONFIG,\n exclude = [\n \"test_attribute_NumberOfThreads\",\n \"test_quadratic_\",\n ],\n # This argument is useful to prevent tests from failing on future\n # releases of MOI that add new tests. Don't let this number get too far\n # behind the current MOI release though. You should periodically check\n # for new tests to fix bugs and implement new features.\n exclude_tests_after = v\"0.10.5\",\n )\n return\nend\n\n\"\"\"\n test_SolverName()\n\nYou can also write new tests for solver-specific functionality. Write each new\ntest as a function with a name beginning with `test_`.\n\"\"\"\nfunction test_SolverName()\n @test MOI.get(FooBar.Optimizer(), MOI.SolverName()) == \"FooBar\"\n return\nend\n\nend # module TestFooBar\n\n# This line at tne end of the file runs all the tests!\nTestFooBar.runtests()","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Then modify your runtests.jl file to include the MOI_wrapper.jl file:","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"# ============================ /test/runtests.jl ============================\n\nusing Test\n\n@testset \"MOI\" begin\n include(\"test/MOI_wrapper.jl\")\nend","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"info: Info\nThe optimizer BRIDGED constructed with instantiate automatically bridges constraints that are not supported by OPTIMIZER using the bridges listed in Bridges. It is recommended for an implementation of MOI to only support constraints that are natively supported by the solver and let bridges transform the constraint to the appropriate form. For this reason it is expected that tests may not pass if OPTIMIZER is used instead of BRIDGED.","category":"page"},{"location":"moi/submodules/Test/overview/#How-to-debug-a-failing-test","page":"Overview","title":"How to debug a failing test","text":"","category":"section"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"When writing a solver, it's likely that you will initially fail many tests. Some failures will be bugs, but other failures you may choose to exclude.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"There are two ways to exclude tests:","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Exclude tests whose names contain a string using:\nMOI.Test.runtests(\n model,\n config;\n exclude = String[\"test_to_exclude\", \"test_conic_\"],\n)\nThis will exclude tests whose name contains either of the two strings provided.\nExclude tests which rely on specific functionality using:\nMOI.Test.Config(exclude = Any[MOI.VariableName, MOI.optimize!])\nThis will exclude tests which use the MOI.VariableName attribute, or which call MOI.optimize!.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Each test that fails can be independently called as:","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"model = FooBar.Optimizer()\nconfig = MOI.Test.Config()\nMOI.empty!(model)\nMOI.Test.test_category_name_that_failed(model, config)","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"You can look-up the source code of the test that failed by searching for it in the src/Test/test_category.jl file.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"tip: Tip\nEach test function also has a docstring that explains what the test is for. Use ? MOI.Test.test_category_name_that_failed from the REPL to read it.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Periodically, you should re-run excluded tests to see if they now pass. The easiest way to do this is to swap the exclude keyword argument of runtests to include. For example:","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"MOI.Test.runtests(\n model,\n config;\n exclude = String[\"test_to_exclude\", \"test_conic_\"],\n)","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"becomes","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"MOI.Test.runtests(\n model,\n config;\n include = String[\"test_to_exclude\", \"test_conic_\"],\n)","category":"page"},{"location":"moi/submodules/Test/overview/#How-to-add-a-test","page":"Overview","title":"How to add a test","text":"","category":"section"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"To detect bugs in solvers, we add new tests to MOI.Test.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"As an example, ECOS errored calling optimize! twice in a row. (See ECOS.jl PR #72.) We could add a test to ECOS.jl, but that would only stop us from re-introducing the bug to ECOS.jl in the future, but it would not catch other solvers in the ecosystem with the same bug. Instead, if we add a test to MOI.Test, then all solvers will also check that they handle a double optimize call.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"For this test, we care about correctness, rather than performance. therefore, we don't expect solvers to efficiently decide that they have already solved the problem, only that calling optimize! twice doesn't throw an error or give the wrong answer.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Step 1","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Install the MathOptInterface julia package in dev mode:","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"julia> ]\n(@v1.6) pkg> dev MathOptInterface","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Step 2","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"From here on, proceed with making the following changes in the ~/.julia/dev/MathOptInterface folder (or equivalent dev path on your machine).","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Step 3","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Since the double-optimize error involves solving an optimization problem, add a new test to src/Test/test_solve.jl:","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"\"\"\"\n test_unit_optimize!_twice(model::MOI.ModelLike, config::Config)\n\nTest that calling `MOI.optimize!` twice does not error.\n\nThis problem was first detected in ECOS.jl PR#72:\nhttps://github.com/jump-dev/ECOS.jl/pull/72\n\"\"\"\nfunction test_unit_optimize!_twice(\n model::MOI.ModelLike,\n config::Config{T},\n) where {T}\n # Use the `@requires` macro to check conditions that the test function\n # requires to run. Models failing this `@requires` check will silently skip\n # the test.\n @requires MOI.supports_constraint(\n model,\n MOI.VariableIndex,\n MOI.GreaterThan{Float64},\n )\n @requires _supports(config, MOI.optimize!)\n # If needed, you can test that the model is empty at the start of the test.\n # You can assume that this will be the case for tests run via `runtests`.\n # User's calling tests individually need to call `MOI.empty!` themselves.\n @test MOI.is_empty(model)\n # Create a simple model. Try to make this as simple as possible so that the\n # majority of solvers can run the test.\n x = MOI.add_variable(model)\n MOI.add_constraint(model, x, MOI.GreaterThan(one(T)))\n MOI.set(model, MOI.ObjectiveSense(), MOI.MIN_SENSE)\n MOI.set(\n model,\n MOI.ObjectiveFunction{MOI.VariableIndex}(),\n x,\n )\n # The main component of the test: does calling `optimize!` twice error?\n MOI.optimize!(model)\n MOI.optimize!(model)\n # Check we have a solution.\n @test MOI.get(model, MOI.TerminationStatus()) == MOI.OPTIMAL\n # There is a three-argument version of `Base.isapprox` for checking\n # approximate equality based on the tolerances defined in `config`:\n @test isapprox(MOI.get(model, MOI.VariablePrimal(), x), one(T), config)\n # For code-style, these tests should always `return` `nothing`.\n return\nend","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"info: Info\nMake sure the function is agnostic to the number type T; don't assume it is a Float64 capable solver.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"We also need to write a test for the test. Place this function immediately below the test you just wrote in the same file:","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"function setup_test(\n ::typeof(test_unit_optimize!_twice),\n model::MOI.Utilities.MockOptimizer,\n ::Config,\n)\n MOI.Utilities.set_mock_optimize!(\n model,\n (mock::MOI.Utilities.MockOptimizer) -> MOIU.mock_optimize!(\n mock,\n MOI.OPTIMAL,\n (MOI.FEASIBLE_POINT, [1.0]),\n ),\n )\n return\nend","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Finally, you also need to implement Test.version_added. If we added this test when the latest released version of MOI was v0.10.5, define:","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"version_added(::typeof(test_unit_optimize!_twice)) = v\"0.10.6\"","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Step 6","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"Commit the changes to git from ~/.julia/dev/MathOptInterface and submit the PR for review.","category":"page"},{"location":"moi/submodules/Test/overview/","page":"Overview","title":"Overview","text":"tip: Tip\nIf you need help writing a test, open an issue on GitHub, or ask the Developer Chatroom.","category":"page"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/submodules/Utilities/reference.md\"","category":"page"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"CurrentModule = MathOptInterface\nDocTestSetup = quote\n import MathOptInterface as MOI\nend\nDocTestFilters = [r\"MathOptInterface|MOI\"]","category":"page"},{"location":"moi/submodules/Utilities/reference/#Utilities.Model","page":"API Reference","title":"Utilities.Model","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.Model","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.Model","page":"API Reference","title":"MathOptInterface.Utilities.Model","text":"MOI.Utilities.Model{T}() where {T}\n\nAn implementation of ModelLike that supports all functions and sets defined in MOI. It is parameterized by the coefficient type.\n\nExamples\n\njulia> import MathOptInterface as MOI\n\njulia> model = MOI.Utilities.Model{Float64}()\nMOIU.Model{Float64}\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#Utilities.UniversalFallback","page":"API Reference","title":"Utilities.UniversalFallback","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.UniversalFallback","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.UniversalFallback","page":"API Reference","title":"MathOptInterface.Utilities.UniversalFallback","text":"UniversalFallback\n\nThe UniversalFallback can be applied on a MOI.ModelLike model to create the model UniversalFallback(model) supporting any constraint and attribute. This allows to have a specialized implementation in model for performance critical constraints and attributes while still supporting other attributes with a small performance penalty. Note that model is unaware of constraints and attributes stored by UniversalFallback so this is not appropriate if model is an optimizer (for this reason, MOI.optimize! has not been implemented). In that case, optimizer bridges should be used instead.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#Utilities.@model","page":"API Reference","title":"Utilities.@model","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.@model\nUtilities.GenericModel\nUtilities.GenericOptimizer","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.@model","page":"API Reference","title":"MathOptInterface.Utilities.@model","text":"macro model(\n model_name,\n scalar_sets,\n typed_scalar_sets,\n vector_sets,\n typed_vector_sets,\n scalar_functions,\n typed_scalar_functions,\n vector_functions,\n typed_vector_functions,\n is_optimizer = false\n)\n\nCreates a type model_name implementing the MOI model interface and supporting all combinations of the provided functions and sets.\n\nEach typed_ scalar/vector sets/functions argument is a tuple of types. A type is \"typed\" if it has a coefficient {T} as the first type parameter.\n\nTuple syntax\n\nTo give no set/function, write (). To give one set or function X, write (X,).\n\nis_optimizer\n\nIf is_optimizer = true, the resulting struct is a of GenericOptimizer, which is a subtype of MOI.AbstractOptimizer, otherwise, it is a GenericModel, which is a subtype of MOI.ModelLike.\n\nVariableIndex\n\nThe function MOI.VariableIndex must not be given in scalar_functions.\nThe model supports MOI.VariableIndex-in-S constraints where S is MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval, MOI.Integer, MOI.ZeroOne, MOI.Semicontinuous or MOI.Semiinteger.\nThe sets supported with MOI.VariableIndex cannot be controlled from the macro; use UniversalFallback to support more sets.\n\nExamples\n\nThe model describing a linear program would be:\n\n@model(\n LPModel, # model_name\n (), # untyped scalar sets\n (MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval), # typed scalar sets\n (MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives), # untyped vector sets\n (), # typed vector sets\n (), # untyped scalar functions\n (MOI.ScalarAffineFunction,), # typed scalar functions\n (MOI.VectorOfVariables,), # untyped vector functions\n (MOI.VectorAffineFunction,), # typed vector functions\n false, # is_optimizer\n)\n\n\n\n\n\n","category":"macro"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.GenericModel","page":"API Reference","title":"MathOptInterface.Utilities.GenericModel","text":"mutable struct GenericModel{T,O,V,C} <: AbstractModelLike{T}\n\nImplements a model supporting coefficients of type T and:\n\nAn objective function stored in .objective::O\nVariables and VariableIndex constraints stored in .variable_bounds::V\nF-in-S constraints (excluding VariableIndex constraints) stored in .constraints::C\n\nAll interactions take place via the MOI interface, so the types O, V, and C must implement the API as needed for their functionality.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.GenericOptimizer","page":"API Reference","title":"MathOptInterface.Utilities.GenericOptimizer","text":"mutable struct GenericOptimizer{T,O,V,C} <: AbstractOptimizer{T}\n\nImplements a model supporting coefficients of type T and:\n\nAn objective function stored in .objective::O\nVariables and VariableIndex constraints stored in .variable_bounds::V\nF-in-S constraints (excluding VariableIndex constraints) stored in .constraints::C\n\nAll interactions take place via the MOI interface, so the types O, V, and C must implement the API as needed for their functionality.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#.objective","page":"API Reference","title":".objective","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.ObjectiveContainer","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.ObjectiveContainer","page":"API Reference","title":"MathOptInterface.Utilities.ObjectiveContainer","text":"ObjectiveContainer{T}\n\nA helper struct to simplify the handling of objective functions in Utilities.Model.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#.variables","page":"API Reference","title":".variables","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.VariablesContainer\nUtilities.FreeVariables","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.VariablesContainer","page":"API Reference","title":"MathOptInterface.Utilities.VariablesContainer","text":"struct VariablesContainer{T} <: AbstractVectorBounds\n set_mask::Vector{UInt16}\n lower::Vector{T}\n upper::Vector{T}\nend\n\nA struct for storing variables and VariableIndex-related constraints. Used in MOI.Utilities.Model by default.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.FreeVariables","page":"API Reference","title":"MathOptInterface.Utilities.FreeVariables","text":"mutable struct FreeVariables <: MOI.ModelLike\n n::Int64\n FreeVariables() = new(0)\nend\n\nA struct for storing free variables that can be used as the variables field of GenericModel or GenericModel. It represents a model that does not support any constraint nor objective function.\n\nExample\n\nThe following model type represents a conic model in geometric form. As opposed to VariablesContainer, FreeVariables does not support constraint bounds so they are bridged into an affine constraint in the MOI.Nonnegatives cone as expected for the geometric conic form.\n\njulia> MOI.Utilities.@product_of_sets(\n Cones,\n MOI.Zeros,\n MOI.Nonnegatives,\n MOI.SecondOrderCone,\n MOI.PositiveSemidefiniteConeTriangle,\n);\n\njulia> const ConicModel{T} = MOI.Utilities.GenericOptimizer{\n T,\n MOI.Utilities.ObjectiveContainer{T},\n MOI.Utilities.FreeVariables,\n MOI.Utilities.MatrixOfConstraints{\n T,\n MOI.Utilities.MutableSparseMatrixCSC{\n T,\n Int,\n MOI.Utilities.OneBasedIndexing,\n },\n Vector{T},\n Cones{T},\n },\n};\n\njulia> model = MOI.instantiate(ConicModel{Float64}, with_bridge_type=Float64);\n\njulia> x = MOI.add_variable(model)\nMathOptInterface.VariableIndex(1)\n\njulia> c = MOI.add_constraint(model, x, MOI.GreaterThan(1.0))\nMathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.GreaterThan{Float64}}(1)\n\njulia> MOI.Bridges.is_bridged(model, c)\ntrue\n\njulia> bridge = MOI.Bridges.bridge(model, c)\nMathOptInterface.Bridges.Constraint.VectorizeBridge{Float64, MathOptInterface.VectorAffineFunction{Float64}, MathOptInterface.Nonnegatives, MathOptInterface.VariableIndex}(MathOptInterface.ConstraintIndex{MathOptInterface.VectorAffineFunction{Float64}, MathOptInterface.Nonnegatives}(1), 1.0)\n\njulia> bridge.vector_constraint\nMathOptInterface.ConstraintIndex{MathOptInterface.VectorAffineFunction{Float64}, MathOptInterface.Nonnegatives}(1)\n\njulia> MOI.Bridges.is_bridged(model, bridge.vector_constraint)\nfalse\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#.constraints","page":"API Reference","title":".constraints","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.VectorOfConstraints\nUtilities.StructOfConstraints\nUtilities.@struct_of_constraints_by_function_types\nUtilities.@struct_of_constraints_by_set_types\nUtilities.struct_of_constraint_code","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.VectorOfConstraints","page":"API Reference","title":"MathOptInterface.Utilities.VectorOfConstraints","text":"mutable struct VectorOfConstraints{\n F<:MOI.AbstractFunction,\n S<:MOI.AbstractSet,\n} <: MOI.ModelLike\n constraints::CleverDicts.CleverDict{\n MOI.ConstraintIndex{F,S},\n Tuple{F,S},\n typeof(CleverDicts.key_to_index),\n typeof(CleverDicts.index_to_key),\n }\nend\n\nA struct storing F-in-S constraints as a mapping between the constraint indices to the corresponding tuple of function and set.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.StructOfConstraints","page":"API Reference","title":"MathOptInterface.Utilities.StructOfConstraints","text":"abstract type StructOfConstraints <: MOI.ModelLike end\n\nA struct storing a subfields other structs storing constraints of different types.\n\nSee Utilities.@struct_of_constraints_by_function_types and Utilities.@struct_of_constraints_by_set_types.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.@struct_of_constraints_by_function_types","page":"API Reference","title":"MathOptInterface.Utilities.@struct_of_constraints_by_function_types","text":"Utilities.@struct_of_constraints_by_function_types(name, func_types...)\n\nGiven a vector of n function types (F1, F2,..., Fn) in func_types, defines a subtype of StructOfConstraints of name name and which type parameters {T, C1, C2, ..., Cn}. It contains n field where the ith field has type Ci and stores the constraints of function type Fi.\n\nThe expression Fi can also be a union in which case any constraint for which the function type is in the union is stored in the field with type Ci.\n\n\n\n\n\n","category":"macro"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.@struct_of_constraints_by_set_types","page":"API Reference","title":"MathOptInterface.Utilities.@struct_of_constraints_by_set_types","text":"Utilities.@struct_of_constraints_by_set_types(name, func_types...)\n\nGiven a vector of n set types (S1, S2,..., Sn) in func_types, defines a subtype of StructOfConstraints of name name and which type parameters {T, C1, C2, ..., Cn}. It contains n field where the ith field has type Ci and stores the constraints of set type Si. The expression Si can also be a union in which case any constraint for which the set type is in the union is stored in the field with type Ci. This can be useful if Ci is a MatrixOfConstraints in order to concatenate the coefficients of constraints of several different set types in the same matrix.\n\n\n\n\n\n","category":"macro"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.struct_of_constraint_code","page":"API Reference","title":"MathOptInterface.Utilities.struct_of_constraint_code","text":"struct_of_constraint_code(struct_name, types, field_types = nothing)\n\nGiven a vector of n Union{SymbolFun,_UnionSymbolFS{SymbolFun}} or Union{SymbolSet,_UnionSymbolFS{SymbolSet}} in types, defines a subtype of StructOfConstraints of name name and which type parameters {T, F1, F2, ..., Fn} if field_types is nothing and a {T} otherwise. It contains n field where the ith field has type Ci if field_types is nothing and type field_types[i] otherwise. If types is vector of Union{SymbolFun,_UnionSymbolFS{SymbolFun}} (resp. Union{SymbolSet,_UnionSymbolFS{SymbolSet}}) then the constraints of that function (resp. set) type are stored in the corresponding field.\n\nThis function is used by the macros @model, @struct_of_constraints_by_function_types and @struct_of_constraints_by_set_types.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#Caching-optimizer","page":"API Reference","title":"Caching optimizer","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.CachingOptimizer\nUtilities.attach_optimizer\nUtilities.reset_optimizer\nUtilities.drop_optimizer\nUtilities.state\nUtilities.mode","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.CachingOptimizer","page":"API Reference","title":"MathOptInterface.Utilities.CachingOptimizer","text":"CachingOptimizer\n\nCachingOptimizer is an intermediate layer that stores a cache of the model and links it with an optimizer. It supports incremental model construction and modification even when the optimizer doesn't.\n\nConstructors\n\n CachingOptimizer(cache::MOI.ModelLike, optimizer::AbstractOptimizer)\n\nCreates a CachingOptimizer in AUTOMATIC mode, with the optimizer optimizer.\n\nThe type of the optimizer returned is CachingOptimizer{typeof(optimizer), typeof(cache)} so it does not support the function reset_optimizer(::CachingOptimizer, new_optimizer) if the type of new_optimizer is different from the type of optimizer.\n\n CachingOptimizer(cache::MOI.ModelLike, mode::CachingOptimizerMode)\n\nCreates a CachingOptimizer in the NO_OPTIMIZER state and mode mode.\n\nThe type of the optimizer returned is CachingOptimizer{MOI.AbstractOptimizer,typeof(cache)} so it does support the function reset_optimizer(::CachingOptimizer, new_optimizer) if the type of new_optimizer is different from the type of optimizer.\n\nAbout the type\n\nStates\n\nA CachingOptimizer may be in one of three possible states (CachingOptimizerState):\n\nNO_OPTIMIZER: The CachingOptimizer does not have any optimizer.\nEMPTY_OPTIMIZER: The CachingOptimizer has an empty optimizer. The optimizer is not synchronized with the cached model.\nATTACHED_OPTIMIZER: The CachingOptimizer has an optimizer, and it is synchronized with the cached model.\n\nModes\n\nA CachingOptimizer has two modes of operation (CachingOptimizerMode):\n\nMANUAL: The only methods that change the state of the CachingOptimizer are Utilities.reset_optimizer, Utilities.drop_optimizer, and Utilities.attach_optimizer. Attempting to perform an operation in the incorrect state results in an error.\nAUTOMATIC: The CachingOptimizer changes its state when necessary. For example, optimize! will automatically call attach_optimizer (an optimizer must have been previously set). Attempting to add a constraint or perform a modification not supported by the optimizer results in a drop to EMPTY_OPTIMIZER mode.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.attach_optimizer","page":"API Reference","title":"MathOptInterface.Utilities.attach_optimizer","text":"attach_optimizer(model::CachingOptimizer)\n\nAttaches the optimizer to model, copying all model data into it. Can be called only from the EMPTY_OPTIMIZER state. If the copy succeeds, the CachingOptimizer will be in state ATTACHED_OPTIMIZER after the call, otherwise an error is thrown; see MOI.copy_to for more details on which errors can be thrown.\n\n\n\n\n\nMOIU.attach_optimizer(model::GenericModel)\n\nCall MOIU.attach_optimizer on the backend of model.\n\nCannot be called in direct mode.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.reset_optimizer","page":"API Reference","title":"MathOptInterface.Utilities.reset_optimizer","text":"reset_optimizer(m::CachingOptimizer, optimizer::MOI.AbstractOptimizer)\n\nSets or resets m to have the given empty optimizer optimizer.\n\nCan be called from any state. An assertion error will be thrown if optimizer is not empty.\n\nThe CachingOptimizer m will be in state EMPTY_OPTIMIZER after the call.\n\n\n\n\n\nreset_optimizer(m::CachingOptimizer)\n\nDetaches and empties the current optimizer. Can be called from ATTACHED_OPTIMIZER or EMPTY_OPTIMIZER state. The CachingOptimizer will be in state EMPTY_OPTIMIZER after the call.\n\n\n\n\n\nMOIU.reset_optimizer(model::GenericModel, optimizer::MOI.AbstractOptimizer)\n\nCall MOIU.reset_optimizer on the backend of model.\n\nCannot be called in direct mode.\n\n\n\n\n\nMOIU.reset_optimizer(model::GenericModel)\n\nCall MOIU.reset_optimizer on the backend of model.\n\nCannot be called in direct mode.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.drop_optimizer","page":"API Reference","title":"MathOptInterface.Utilities.drop_optimizer","text":"drop_optimizer(m::CachingOptimizer)\n\nDrops the optimizer, if one is present. Can be called from any state. The CachingOptimizer will be in state NO_OPTIMIZER after the call.\n\n\n\n\n\nMOIU.drop_optimizer(model::GenericModel)\n\nCall MOIU.drop_optimizer on the backend of model.\n\nCannot be called in direct mode.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.state","page":"API Reference","title":"MathOptInterface.Utilities.state","text":"state(m::CachingOptimizer)::CachingOptimizerState\n\nReturns the state of the CachingOptimizer m. See Utilities.CachingOptimizer.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.mode","page":"API Reference","title":"MathOptInterface.Utilities.mode","text":"mode(m::CachingOptimizer)::CachingOptimizerMode\n\nReturns the operating mode of the CachingOptimizer m. See Utilities.CachingOptimizer.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#Mock-optimizer","page":"API Reference","title":"Mock optimizer","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.MockOptimizer","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.MockOptimizer","page":"API Reference","title":"MathOptInterface.Utilities.MockOptimizer","text":"MockOptimizer\n\nMockOptimizer is a fake optimizer especially useful for testing. Its main feature is that it can store the values that should be returned for each attribute.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#Printing","page":"API Reference","title":"Printing","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.latex_formulation","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.latex_formulation","page":"API Reference","title":"MathOptInterface.Utilities.latex_formulation","text":"latex_formulation(model::MOI.ModelLike; kwargs...)\n\nWrap model in a type so that it can be pretty-printed as text/latex in a notebook like IJulia, or in Documenter.\n\nTo render the model, end the cell with latex_formulation(model), or call display(latex_formulation(model)) in to force the display of the model from inside a function.\n\nPossible keyword arguments are:\n\nsimplify_coefficients : Simplify coefficients if possible by omitting them or removing trailing zeros.\ndefault_name : The name given to variables with an empty name.\nprint_types : Print the MOI type of each function and set for clarity.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#Copy-utilities","page":"API Reference","title":"Copy utilities","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.default_copy_to\nUtilities.IndexMap\nUtilities.identity_index_map\nUtilities.ModelFilter","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.default_copy_to","page":"API Reference","title":"MathOptInterface.Utilities.default_copy_to","text":"default_copy_to(dest::MOI.ModelLike, src::MOI.ModelLike)\n\nA default implementation of MOI.copy_to(dest, src) for models that implement the incremental interface, i.e., MOI.supports_incremental_interface returns true.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.IndexMap","page":"API Reference","title":"MathOptInterface.Utilities.IndexMap","text":"IndexMap()\n\nThe dictionary-like object returned by MOI.copy_to.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.identity_index_map","page":"API Reference","title":"MathOptInterface.Utilities.identity_index_map","text":"identity_index_map(model::MOI.ModelLike)\n\nReturn an IndexMap that maps all variable and constraint indices of model to themselves.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.ModelFilter","page":"API Reference","title":"MathOptInterface.Utilities.ModelFilter","text":"ModelFilter(filter::Function, model::MOI.ModelLike)\n\nA layer to filter out various components of model.\n\nThe filter function takes a single argument, which is each element from the list returned by the attributes below. It returns true if the element should be visible in the filtered model and false otherwise.\n\nThe components that are filtered are:\n\nEntire constraint types via:\nMOI.ListOfConstraintTypesPresent\nIndividual constraints via:\nMOI.ListOfConstraintIndices{F,S}\nSpecific attributes via:\nMOI.ListOfModelAttributesSet\nMOI.ListOfConstraintAttributesSet\nMOI.ListOfVariableAttributesSet\n\nwarning: Warning\nThe list of attributes filtered may change in a future release. You should write functions that are generic and not limited to the five types listed above. Thus, you should probably define a fallback filter(::Any) = true.\n\nSee below for examples of how this works.\n\nnote: Note\nThis layer has a limited scope. It is intended by be used in conjunction with MOI.copy_to.\n\nExample: copy model excluding integer constraints\n\nUse the do syntax to provide a single function.\n\nfiltered_src = MOI.Utilities.ModelFilter(src) do item\n return item != (MOI.VariableIndex, MOI.Integer)\nend\nMOI.copy_to(dest, filtered_src)\n\nExample: copy model excluding names\n\nUse type dispatch to simplify the implementation:\n\nmy_filter(::Any) = true # Note the generic fallback!\nmy_filter(::MOI.VariableName) = false\nmy_filter(::MOI.ConstraintName) = false\nfiltered_src = MOI.Utilities.ModelFilter(my_filter, src)\nMOI.copy_to(dest, filtered_src)\n\nExample: copy irreducible infeasible subsystem\n\nmy_filter(::Any) = true # Note the generic fallback!\nfunction my_filter(ci::MOI.ConstraintIndex)\n status = MOI.get(dest, MOI.ConstraintConflictStatus(), ci)\n return status != MOI.NOT_IN_CONFLICT\nend\nfiltered_src = MOI.Utilities.ModelFilter(my_filter, src)\nMOI.copy_to(dest, filtered_src)\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#Penalty-relaxation","page":"API Reference","title":"Penalty relaxation","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.PenaltyRelaxation\nUtilities.ScalarPenaltyRelaxation","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.PenaltyRelaxation","page":"API Reference","title":"MathOptInterface.Utilities.PenaltyRelaxation","text":"PenaltyRelaxation(\n penalties = Dict{MOI.ConstraintIndex,Float64}();\n default::Union{Nothing,T} = 1.0,\n)\n\nA problem modifier that, when passed to MOI.modify, destructively modifies the model in-place to create a penalized relaxation of the constraints.\n\nwarning: Warning\nThis is a destructive routine that modifies the model in-place. If you don't want to modify the original model, use JuMP.copy_model to create a copy before calling MOI.modify.\n\nReformulation\n\nSee Utilities.ScalarPenaltyRelaxation for details of the reformulation.\n\nFor each constraint ci, the penalty passed to Utilities.ScalarPenaltyRelaxation is get(penalties, ci, default). If the value is nothing, because ci does not exist in penalties and default = nothing, then the constraint is skipped.\n\nReturn value\n\nMOI.modify(model, PenaltyRelaxation()) returns a Dict{MOI.ConstraintIndex,MOI.ScalarAffineFunction} that maps each constraint index to the corresponding y + z as a MOI.ScalarAffineFunction. In an optimal solution, query the value of these functions to compute the violation of each constraint.\n\nRelax a subset of constraints\n\nTo relax a subset of constraints, pass a penalties dictionary and set default = nothing.\n\nSupported constraint types\n\nThe penalty relaxation is currently limited to modifying MOI.ScalarAffineFunction and MOI.ScalarQuadraticFunction constraints in the linear sets MOI.LessThan, MOI.GreaterThan, MOI.EqualTo and MOI.Interval.\n\nIt does not include variable bound or integrality constraints, because these cannot be modified in-place.\n\nTo modify variable bounds, rewrite them as linear constraints.\n\nExamples\n\njulia> model = MOI.Utilities.Model{Float64}();\n\njulia> x = MOI.add_variable(model);\n\njulia> c = MOI.add_constraint(model, 1.0 * x, MOI.LessThan(2.0));\n\njulia> map = MOI.modify(model, MOI.Utilities.PenaltyRelaxation(default = 2.0));\n\njulia> print(model)\nMinimize ScalarAffineFunction{Float64}:\n 0.0 + 2.0 v[2]\n\nSubject to:\n\nScalarAffineFunction{Float64}-in-LessThan{Float64}\n 0.0 + 1.0 v[1] - 1.0 v[2] <= 2.0\n\nVariableIndex-in-GreaterThan{Float64}\n v[2] >= 0.0\n\njulia> map[c] isa MOI.ScalarAffineFunction{Float64}\ntrue\n\njulia> model = MOI.Utilities.Model{Float64}();\n\njulia> x = MOI.add_variable(model);\n\njulia> c = MOI.add_constraint(model, 1.0 * x, MOI.LessThan(2.0));\n\njulia> map = MOI.modify(model, MOI.Utilities.PenaltyRelaxation(Dict(c => 3.0)));\n\njulia> print(model)\nMinimize ScalarAffineFunction{Float64}:\n 0.0 + 3.0 v[2]\n\nSubject to:\n\nScalarAffineFunction{Float64}-in-LessThan{Float64}\n 0.0 + 1.0 v[1] - 1.0 v[2] <= 2.0\n\nVariableIndex-in-GreaterThan{Float64}\n v[2] >= 0.0\n\njulia> map[c] isa MOI.ScalarAffineFunction{Float64}\ntrue\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.ScalarPenaltyRelaxation","page":"API Reference","title":"MathOptInterface.Utilities.ScalarPenaltyRelaxation","text":"ScalarPenaltyRelaxation(penalty::T) where {T}\n\nA problem modifier that, when passed to MOI.modify, destructively modifies the constraint in-place to create a penalized relaxation of the constraint.\n\nwarning: Warning\nThis is a destructive routine that modifies the constraint in-place. If you don't want to modify the original model, use JuMP.copy_model to create a copy before calling MOI.modify.\n\nReformulation\n\nThe penalty relaxation modifies constraints of the form f(x) in S into f(x) + y - z in S, where y z ge 0, and then it introduces a penalty term into the objective of a times (y + z) (if minimizing, else -a), where a is penalty\n\nWhen S is MOI.LessThan or MOI.GreaterThan, we omit y or z respectively as a performance optimization.\n\nReturn value\n\nMOI.modify(model, ci, ScalarPenaltyRelaxation(penalty)) returns y + z as a MOI.ScalarAffineFunction. In an optimal solution, query the value of this function to compute the violation of the constraint.\n\nExamples\n\njulia> model = MOI.Utilities.Model{Float64}();\n\njulia> x = MOI.add_variable(model);\n\njulia> c = MOI.add_constraint(model, 1.0 * x, MOI.LessThan(2.0));\n\njulia> f = MOI.modify(model, c, MOI.Utilities.ScalarPenaltyRelaxation(2.0));\n\njulia> print(model)\nMinimize ScalarAffineFunction{Float64}:\n 0.0 + 2.0 v[2]\n\nSubject to:\n\nScalarAffineFunction{Float64}-in-LessThan{Float64}\n 0.0 + 1.0 v[1] - 1.0 v[2] <= 2.0\n\nVariableIndex-in-GreaterThan{Float64}\n v[2] >= 0.0\n\njulia> f isa MOI.ScalarAffineFunction{Float64}\ntrue\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MatrixOfConstraints","page":"API Reference","title":"MatrixOfConstraints","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.MatrixOfConstraints","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.MatrixOfConstraints","page":"API Reference","title":"MathOptInterface.Utilities.MatrixOfConstraints","text":"mutable struct MatrixOfConstraints{T,AT,BT,ST} <: MOI.ModelLike\n coefficients::AT\n constants::BT\n sets::ST\n caches::Vector{Any}\n are_indices_mapped::Vector{BitSet}\n final_touch::Bool\nend\n\nRepresent ScalarAffineFunction and VectorAffinefunction constraints in a matrix form where the linear coefficients of the functions are stored in the coefficients field, the constants of the functions or sets are stored in the constants field. Additional information about the sets are stored in the sets field.\n\nThis model can only be used as the constraints field of a MOI.Utilities.AbstractModel.\n\nWhen the constraints are added, they are stored in the caches field. They are only loaded in the coefficients and constants fields once MOI.Utilities.final_touch is called. For this reason, MatrixOfConstraints should not be used by an incremental interface. Use MOI.copy_to instead.\n\nThe constraints can be added in two different ways:\n\nWith add_constraint, in which case a canonicalized copy of the function is stored in caches.\nWith pass_nonvariable_constraints, in which case the functions and sets are stored themselves in caches without mapping the variable indices. The corresponding index in caches is added in are_indices_mapped. This avoids doing a copy of the function in case the getter of CanonicalConstraintFunction does not make a copy for the source model, e.g., this is the case of VectorOfConstraints.\n\nWe illustrate this with an example. Suppose a model is copied from a src::MOI.Utilities.Model to a bridged model with a MatrixOfConstraints. For all the types that are not bridged, the constraints will be copied with pass_nonvariable_constraints. Hence the functions stored in caches are exactly the same as the ones stored in src. This is ok since this is only during the copy_to operation during which src cannot be modified. On the other hand, for the types that are bridged, the functions added may contain duplicates even if the functions did not contain duplicates in src so duplicates are removed with MOI.Utilities.canonical.\n\nInterface\n\nThe .coefficients::AT type must implement:\n\nAT()\nMOI.empty(::AT)!\nMOI.Utilities.add_column\nMOI.Utilities.set_number_of_rows\nMOI.Utilities.allocate_terms\nMOI.Utilities.load_terms\nMOI.Utilities.final_touch\n\nThe .constants::BT type must implement:\n\nBT()\nBase.empty!(::BT)\nBase.resize(::BT)\nMOI.Utilities.load_constants\nMOI.Utilities.function_constants\nMOI.Utilities.set_from_constants\n\nThe .sets::ST type must implement:\n\nST()\nMOI.is_empty(::ST)\nMOI.empty(::ST)\nMOI.dimension(::ST)\nMOI.is_valid(::ST, ::MOI.ConstraintIndex)\nMOI.get(::ST, ::MOI.ListOfConstraintTypesPresent)\nMOI.get(::ST, ::MOI.NumberOfConstraints)\nMOI.get(::ST, ::MOI.ListOfConstraintIndices)\nMOI.Utilities.set_types\nMOI.Utilities.set_index\nMOI.Utilities.add_set\nMOI.Utilities.rows\nMOI.Utilities.final_touch\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#.coefficients","page":"API Reference","title":".coefficients","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.add_column\nUtilities.allocate_terms\nUtilities.set_number_of_rows\nUtilities.load_terms\nUtilities.final_touch\nUtilities.extract_function","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.add_column","page":"API Reference","title":"MathOptInterface.Utilities.add_column","text":"add_column(coefficients)::Nothing\n\nTell coefficients to pre-allocate datastructures as needed to store one column.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.allocate_terms","page":"API Reference","title":"MathOptInterface.Utilities.allocate_terms","text":"allocate_terms(coefficients, index_map, func)::Nothing\n\nTell coefficients that the terms of the function func where the variable indices are mapped with index_map will be loaded with load_terms.\n\nThe function func must be canonicalized before calling allocate_terms. See is_canonical.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.set_number_of_rows","page":"API Reference","title":"MathOptInterface.Utilities.set_number_of_rows","text":"set_number_of_rows(coefficients, n)::Nothing\n\nTell coefficients to pre-allocate datastructures as needed to store n rows.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.load_terms","page":"API Reference","title":"MathOptInterface.Utilities.load_terms","text":"load_terms(coefficients, index_map, func, offset)::Nothing\n\nLoads the terms of func to coefficients, mapping the variable indices with index_map.\n\nThe ith dimension of func is loaded at the (offset + i)th row of coefficients.\n\nThe function must be allocated first with allocate_terms.\n\nThe function func must be canonicalized, see is_canonical.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.final_touch","page":"API Reference","title":"MathOptInterface.Utilities.final_touch","text":"final_touch(coefficients)::Nothing\n\nInforms the coefficients that all functions have been added with load_terms. No more modification is allowed unless MOI.empty! is called.\n\nfinal_touch(sets)::Nothing\n\nInforms the sets that all functions have been added with add_set. No more modification is allowed unless MOI.empty! is called.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.extract_function","page":"API Reference","title":"MathOptInterface.Utilities.extract_function","text":"extract_function(coefficients, row::Integer, constant::T) where {T}\n\nReturn the MOI.ScalarAffineFunction{T} function corresponding to row row in coefficients.\n\nextract_function(\n coefficients,\n rows::UnitRange,\n constants::Vector{T},\n) where{T}\n\nReturn the MOI.VectorAffineFunction{T} function corresponding to rows rows in coefficients.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.MutableSparseMatrixCSC\nUtilities.AbstractIndexing\nUtilities.ZeroBasedIndexing\nUtilities.OneBasedIndexing","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.MutableSparseMatrixCSC","page":"API Reference","title":"MathOptInterface.Utilities.MutableSparseMatrixCSC","text":"mutable struct MutableSparseMatrixCSC{Tv,Ti<:Integer,I<:AbstractIndexing}\n indexing::I\n m::Int\n n::Int\n colptr::Vector{Ti}\n rowval::Vector{Ti}\n nzval::Vector{Tv}\n nz_added::Vector{Ti}\nend\n\nMatrix type loading sparse matrices in the Compressed Sparse Column format. The indexing used is indexing, see AbstractIndexing. The other fields have the same meaning than for SparseArrays.SparseMatrixCSC except that the indexing is different unless indexing is OneBasedIndexing. In addition, nz_added is used to cache the number of non-zero terms that have been added to each column due to the incremental nature of load_terms.\n\nThe matrix is loaded in 5 steps:\n\nMOI.empty! is called.\nMOI.Utilities.add_column and MOI.Utilities.allocate_terms are called in any order.\nMOI.Utilities.set_number_of_rows is called.\nMOI.Utilities.load_terms is called for each affine function.\nMOI.Utilities.final_touch is called.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.AbstractIndexing","page":"API Reference","title":"MathOptInterface.Utilities.AbstractIndexing","text":"abstract type AbstractIndexing end\n\nIndexing to be used for storing the row and column indices of MutableSparseMatrixCSC. See ZeroBasedIndexing and OneBasedIndexing.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.ZeroBasedIndexing","page":"API Reference","title":"MathOptInterface.Utilities.ZeroBasedIndexing","text":"struct ZeroBasedIndexing <: AbstractIndexing end\n\nZero-based indexing: the ith row or column has index i - 1. This is useful when the vectors of row and column indices need to be communicated to a library using zero-based indexing such as C libraries.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.OneBasedIndexing","page":"API Reference","title":"MathOptInterface.Utilities.OneBasedIndexing","text":"struct ZeroBasedIndexing <: AbstractIndexing end\n\nOne-based indexing: the ith row or column has index i. This enables an allocation-free conversion of MutableSparseMatrixCSC to SparseArrays.SparseMatrixCSC.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#.constants","page":"API Reference","title":".constants","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.load_constants\nUtilities.function_constants\nUtilities.set_from_constants","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.load_constants","page":"API Reference","title":"MathOptInterface.Utilities.load_constants","text":"load_constants(constants, offset, func_or_set)::Nothing\n\nThis function loads the constants of func_or_set in constants at an offset of offset. Where offset is the sum of the dimensions of the constraints already loaded. The storage should be preallocated with resize! before calling this function.\n\nThis function should be implemented to be usable as storage of constants for MatrixOfConstraints.\n\nThe constants are loaded in three steps:\n\nBase.empty! is called.\nBase.resize! is called with the sum of the dimensions of all constraints.\nMOI.Utilities.load_constants is called for each function for vector constraint or set for scalar constraint.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.function_constants","page":"API Reference","title":"MathOptInterface.Utilities.function_constants","text":"function_constants(constants, rows)\n\nThis function returns the function constants that were loaded with load_constants at the rows rows.\n\nThis function should be implemented to be usable as storage of constants for MatrixOfConstraints.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.set_from_constants","page":"API Reference","title":"MathOptInterface.Utilities.set_from_constants","text":"set_from_constants(constants, S::Type, rows)::S\n\nThis function returns an instance of the set S for which the constants where loaded with load_constants at the rows rows.\n\nThis function should be implemented to be usable as storage of constants for MatrixOfConstraints.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.Hyperrectangle","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.Hyperrectangle","page":"API Reference","title":"MathOptInterface.Utilities.Hyperrectangle","text":"struct Hyperrectangle{T} <: AbstractVectorBounds\n lower::Vector{T}\n upper::Vector{T}\nend\n\nA struct for the .constants field in MatrixOfConstraints.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#.sets","page":"API Reference","title":".sets","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.set_index\nUtilities.set_types\nUtilities.add_set\nUtilities.rows\nUtilities.num_rows\nUtilities.set_with_dimension","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.set_index","page":"API Reference","title":"MathOptInterface.Utilities.set_index","text":"set_index(sets, ::Type{S})::Union{Int,Nothing} where {S<:MOI.AbstractSet}\n\nReturn an integer corresponding to the index of the set type in the list given by set_types.\n\nIf S is not part of the list, return nothing.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.set_types","page":"API Reference","title":"MathOptInterface.Utilities.set_types","text":"set_types(sets)::Vector{Type}\n\nReturn the list of the types of the sets allowed in sets.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.add_set","page":"API Reference","title":"MathOptInterface.Utilities.add_set","text":"add_set(sets, i)::Int64\n\nAdd a scalar set of type index i.\n\nadd_set(sets, i, dim)::Int64\n\nAdd a vector set of type index i and dimension dim.\n\nBoth methods return a unique Int64 of the set that can be used to reference this set.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.rows","page":"API Reference","title":"MathOptInterface.Utilities.rows","text":"rows(sets, ci::MOI.ConstraintIndex)::Union{Int,UnitRange{Int}}\n\nReturn the rows in 1:MOI.dimension(sets) corresponding to the set of id ci.value.\n\nFor scalar sets, this returns an Int. For vector sets, this returns an UnitRange{Int}.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.num_rows","page":"API Reference","title":"MathOptInterface.Utilities.num_rows","text":"num_rows(sets::OrderedProductOfSets, ::Type{S}) where {S}\n\nReturn the number of rows corresponding to a set of type S. That is, it is the sum of the dimensions of the sets of type S.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.set_with_dimension","page":"API Reference","title":"MathOptInterface.Utilities.set_with_dimension","text":"set_with_dimension(::Type{S}, dim) where {S<:MOI.AbstractVectorSet}\n\nReturns the instance of S of MOI.dimension dim. This needs to be implemented for sets of type S to be useable with MatrixOfConstraints.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.ProductOfSets\nUtilities.MixOfScalarSets\nUtilities.@mix_of_scalar_sets\nUtilities.OrderedProductOfSets\nUtilities.@product_of_sets","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.ProductOfSets","page":"API Reference","title":"MathOptInterface.Utilities.ProductOfSets","text":"abstract type ProductOfSets{T} end\n\nRepresents a cartesian product of sets of given types.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.MixOfScalarSets","page":"API Reference","title":"MathOptInterface.Utilities.MixOfScalarSets","text":"abstract type MixOfScalarSets{T} <: ProductOfSets{T} end\n\nProduct of scalar sets in the order the constraints are added, mixing the constraints of different types.\n\nUse @mix_of_scalar_sets to generate a new subtype.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.@mix_of_scalar_sets","page":"API Reference","title":"MathOptInterface.Utilities.@mix_of_scalar_sets","text":"@mix_of_scalar_sets(name, set_types...)\n\nGenerate a new MixOfScalarSets subtype.\n\nExample\n\n@mix_of_scalar_sets(\n MixedIntegerLinearProgramSets,\n MOI.GreaterThan{T},\n MOI.LessThan{T},\n MOI.EqualTo{T},\n MOI.Integer,\n)\n\n\n\n\n\n","category":"macro"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.OrderedProductOfSets","page":"API Reference","title":"MathOptInterface.Utilities.OrderedProductOfSets","text":"abstract type OrderedProductOfSets{T} <: ProductOfSets{T} end\n\nProduct of sets in the order the constraints are added, grouping the constraints of the same types contiguously.\n\nUse @product_of_sets to generate new subtypes.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.@product_of_sets","page":"API Reference","title":"MathOptInterface.Utilities.@product_of_sets","text":"@product_of_sets(name, set_types...)\n\nGenerate a new OrderedProductOfSets subtype.\n\nExample\n\n@product_of_sets(\n LinearOrthants,\n MOI.Zeros,\n MOI.Nonnegatives,\n MOI.Nonpositives,\n MOI.ZeroOne,\n)\n\n\n\n\n\n","category":"macro"},{"location":"moi/submodules/Utilities/reference/#Fallbacks","page":"API Reference","title":"Fallbacks","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.get_fallback","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.get_fallback","page":"API Reference","title":"MathOptInterface.Utilities.get_fallback","text":"get_fallback(model::MOI.ModelLike, ::MOI.ObjectiveValue)\n\nCompute the objective function value using the VariablePrimal results and the ObjectiveFunction value.\n\n\n\n\n\nget_fallback(model::MOI.ModelLike, ::MOI.DualObjectiveValue, T::Type)::T\n\nCompute the dual objective value of type T using the ConstraintDual results and the ConstraintFunction and ConstraintSet values. Note that the nonlinear part of the model is ignored.\n\n\n\n\n\nget_fallback(model::MOI.ModelLike, ::MOI.ConstraintPrimal,\n constraint_index::MOI.ConstraintIndex)\n\nCompute the value of the function of the constraint of index constraint_index using the VariablePrimal results and the ConstraintFunction values.\n\n\n\n\n\nget_fallback(model::MOI.ModelLike, attr::MOI.ConstraintDual,\n ci::MOI.ConstraintIndex{Union{MOI.VariableIndex,\n MOI.VectorOfVariables}})\n\nCompute the dual of the constraint of index ci using the ConstraintDual of other constraints and the ConstraintFunction values. Throws an error if some constraints are quadratic or if there is one another MOI.VariableIndex-in-S or MOI.VectorOfVariables-in-S constraint with one of the variables in the function of the constraint ci.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#Function-utilities","page":"API Reference","title":"Function utilities","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"The following utilities are available for functions:","category":"page"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.eval_variables\nUtilities.map_indices\nUtilities.substitute_variables\nUtilities.filter_variables\nUtilities.remove_variable\nUtilities.all_coefficients\nUtilities.unsafe_add\nUtilities.isapprox_zero\nUtilities.modify_function\nUtilities.zero_with_output_dimension","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.eval_variables","page":"API Reference","title":"MathOptInterface.Utilities.eval_variables","text":"eval_variables(value_fn::Function, f::MOI.AbstractFunction)\n\nReturns the value of function f if each variable index vi is evaluated as value_fn(vi).\n\nNote that value_fn must return a Number. See substitute_variables for a similar function where value_fn returns an MOI.AbstractScalarFunction.\n\nwarning: Warning\nThe two-argument version of eval_variables is deprecated and may be removed in MOI v2.0.0. Use the three-argument method eval_variables(::Function, ::MOI.ModelLike, ::MOI.AbstractFunction) instead.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.map_indices","page":"API Reference","title":"MathOptInterface.Utilities.map_indices","text":"map_indices(index_map::Function, attr::MOI.AnyAttribute, x::X)::X where {X}\n\nSubstitute any MOI.VariableIndex (resp. MOI.ConstraintIndex) in x by the MOI.VariableIndex (resp. MOI.ConstraintIndex) of the same type given by index_map(x).\n\nWhen to implement this method for new types X\n\nThis function is used by implementations of MOI.copy_to on constraint functions, attribute values and submittable values. If you define a new attribute whose values x::X contain variable or constraint indices, you must also implement this function.\n\n\n\n\n\nmap_indices(\n variable_map::AbstractDict{T,T},\n x::X,\n)::X where {T<:MOI.Index,X}\n\nShortcut for map_indices(vi -> variable_map[vi], x).\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.substitute_variables","page":"API Reference","title":"MathOptInterface.Utilities.substitute_variables","text":"substitute_variables(variable_map::Function, x)\n\nSubstitute any MOI.VariableIndex in x by variable_map(x). The variable_map function returns either MOI.VariableIndex or MOI.ScalarAffineFunction, see eval_variables for a similar function where variable_map returns a number.\n\nThis function is used by bridge optimizers on constraint functions, attribute values and submittable values when at least one variable bridge is used hence it needs to be implemented for custom types that are meant to be used as attribute or submittable value.\n\nnote: Note\nWhen implementing a new method, don't use substitute_variables(::Function, because Julia will not specialize on it. Use instead substitute_variables(::F, ...) where {F<:Function}.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.filter_variables","page":"API Reference","title":"MathOptInterface.Utilities.filter_variables","text":"filter_variables(keep::Function, f::AbstractFunction)\n\nReturn a new function f with the variable vi such that !keep(vi) removed.\n\nWARNING: Don't define filter_variables(::Function, ...) because Julia will not specialize on this. Define instead filter_variables(::F, ...) where {F<:Function}.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.remove_variable","page":"API Reference","title":"MathOptInterface.Utilities.remove_variable","text":"remove_variable(f::AbstractFunction, vi::VariableIndex)\n\nReturn a new function f with the variable vi removed.\n\n\n\n\n\nremove_variable(\n f::MOI.AbstractFunction,\n s::MOI.AbstractSet,\n vi::MOI.VariableIndex,\n)\n\nReturn a tuple (g, t) representing the constraint f-in-s with the variable vi removed. That is, the terms containing the variable vi in the function f are removed and the dimension of the set s is updated if needed (e.g. when f is a VectorOfVariables with vi being one of the variables).\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.all_coefficients","page":"API Reference","title":"MathOptInterface.Utilities.all_coefficients","text":"all_coefficients(p::Function, f::MOI.AbstractFunction)\n\nDetermine whether predicate p returns true for all coefficients of f, returning false as soon as the first coefficient of f for which p returns false is encountered (short-circuiting). Similar to all.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.unsafe_add","page":"API Reference","title":"MathOptInterface.Utilities.unsafe_add","text":"unsafe_add(t1::MOI.ScalarAffineTerm, t2::MOI.ScalarAffineTerm)\n\nSums the coefficients of t1 and t2 and returns an output MOI.ScalarAffineTerm. It is unsafe because it uses the variable of t1 as the variable of the output without checking that it is equal to that of t2.\n\n\n\n\n\nunsafe_add(t1::MOI.ScalarQuadraticTerm, t2::MOI.ScalarQuadraticTerm)\n\nSums the coefficients of t1 and t2 and returns an output MOI.ScalarQuadraticTerm. It is unsafe because it uses the variable's of t1 as the variable's of the output without checking that they are the same (up to permutation) to those of t2.\n\n\n\n\n\nunsafe_add(t1::MOI.VectorAffineTerm, t2::MOI.VectorAffineTerm)\n\nSums the coefficients of t1 and t2 and returns an output MOI.VectorAffineTerm. It is unsafe because it uses the output_index and variable of t1 as the output_index and variable of the output term without checking that they are equal to those of t2.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.isapprox_zero","page":"API Reference","title":"MathOptInterface.Utilities.isapprox_zero","text":"isapprox_zero(f::MOI.AbstractFunction, tol)\n\nReturn a Bool indicating whether the function f is approximately zero using tol as a tolerance.\n\nImportant note\n\nThis function assumes that f does not contain any duplicate terms, you might want to first call canonical if that is not guaranteed. For instance, given\n\nf = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([1, -1], [x, x]), 0)\n\nthen isapprox_zero(f) is false but isapprox_zero(MOIU.canonical(f)) is true.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.modify_function","page":"API Reference","title":"MathOptInterface.Utilities.modify_function","text":"modify_function(f::AbstractFunction, change::AbstractFunctionModification)\n\nReturn a copy of the function f, modified according to change.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.zero_with_output_dimension","page":"API Reference","title":"MathOptInterface.Utilities.zero_with_output_dimension","text":"zero_with_output_dimension(::Type{T}, output_dimension::Integer) where {T}\n\nCreate an instance of type T with the output dimension output_dimension.\n\nThis is mostly useful in Bridges, when code needs to be agnostic to the type of vector-valued function that is passed in.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"The following functions can be used to canonicalize a function:","category":"page"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.is_canonical\nUtilities.canonical\nUtilities.canonicalize!","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.is_canonical","page":"API Reference","title":"MathOptInterface.Utilities.is_canonical","text":"is_canonical(f::Union{ScalarAffineFunction, VectorAffineFunction})\n\nReturns a Bool indicating whether the function is in canonical form. See canonical.\n\n\n\n\n\nis_canonical(f::Union{ScalarQuadraticFunction, VectorQuadraticFunction})\n\nReturns a Bool indicating whether the function is in canonical form. See canonical.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.canonical","page":"API Reference","title":"MathOptInterface.Utilities.canonical","text":"canonical(f::MOI.AbstractFunction)\n\nReturns the function in a canonical form, i.e.\n\nA term appear only once.\nThe coefficients are nonzero.\nThe terms appear in increasing order of variable where there the order of the variables is the order of their value.\nFor a AbstractVectorFunction, the terms are sorted in ascending order of output index.\n\nThe output of canonical can be assumed to be a copy of f, even for VectorOfVariables.\n\nExamples\n\nIf x (resp. y, z) is VariableIndex(1) (resp. 2, 3). The canonical representation of ScalarAffineFunction([y, x, z, x, z], [2, 1, 3, -2, -3], 5) is ScalarAffineFunction([x, y], [-1, 2], 5).\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.canonicalize!","page":"API Reference","title":"MathOptInterface.Utilities.canonicalize!","text":"canonicalize!(f::Union{ScalarAffineFunction, VectorAffineFunction})\n\nConvert a function to canonical form in-place, without allocating a copy to hold the result. See canonical.\n\n\n\n\n\ncanonicalize!(f::Union{ScalarQuadraticFunction, VectorQuadraticFunction})\n\nConvert a function to canonical form in-place, without allocating a copy to hold the result. See canonical.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"The following functions can be used to manipulate functions with basic algebra:","category":"page"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.scalar_type\nUtilities.scalarize\nUtilities.eachscalar\nUtilities.promote_operation\nUtilities.operate\nUtilities.operate!\nUtilities.operate_output_index!\nUtilities.vectorize","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.scalar_type","page":"API Reference","title":"MathOptInterface.Utilities.scalar_type","text":"scalar_type(F::Type{<:MOI.AbstractVectorFunction})\n\nType of functions obtained by indexing objects obtained by calling eachscalar on functions of type F.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.scalarize","page":"API Reference","title":"MathOptInterface.Utilities.scalarize","text":"scalarize(func::MOI.VectorOfVariables, ignore_constants::Bool = false)\n\nReturns a vector of scalar functions making up the vector function in the form of a Vector{MOI.SingleVariable}.\n\nSee also eachscalar.\n\n\n\n\n\nscalarize(func::MOI.VectorAffineFunction{T}, ignore_constants::Bool = false)\n\nReturns a vector of scalar functions making up the vector function in the form of a Vector{MOI.ScalarAffineFunction{T}}.\n\nSee also eachscalar.\n\n\n\n\n\nscalarize(func::MOI.VectorQuadraticFunction{T}, ignore_constants::Bool = false)\n\nReturns a vector of scalar functions making up the vector function in the form of a Vector{MOI.ScalarQuadraticFunction{T}}.\n\nSee also eachscalar.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.eachscalar","page":"API Reference","title":"MathOptInterface.Utilities.eachscalar","text":"eachscalar(f::MOI.AbstractVectorFunction)\n\nReturns an iterator for the scalar components of the vector function.\n\nSee also scalarize.\n\n\n\n\n\neachscalar(f::MOI.AbstractVector)\n\nReturns an iterator for the scalar components of the vector.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.promote_operation","page":"API Reference","title":"MathOptInterface.Utilities.promote_operation","text":"promote_operation(\n op::Function,\n ::Type{T},\n ArgsTypes::Type{<:Union{T,AbstractVector{T},MOI.AbstractFunction}}...,\n) where {T<:Number}\n\nCompute the return type of the call operate(op, T, args...), where the types of the arguments args are ArgsTypes.\n\nOne assumption is that the element type T is invariant under each operation. That is, op(::T, ::T)::T where op is a +, -, *, and /.\n\nThere are six methods for which we implement Utilities.promote_operation:\n\n+ a. promote_operation(::typeof(+), ::Type{T}, ::Type{F1}, ::Type{F2})\n- a. promote_operation(::typeof(-), ::Type{T}, ::Type{F}) b. promote_operation(::typeof(-), ::Type{T}, ::Type{F1}, ::Type{F2})\n* a. promote_operation(::typeof(*), ::Type{T}, ::Type{T}, ::Type{F}) b. promote_operation(::typeof(*), ::Type{T}, ::Type{F}, ::Type{T}) c. promote_operation(::typeof(*), ::Type{T}, ::Type{F1}, ::Type{F2}) where F1 and F2 are VariableIndex or ScalarAffineFunction d. promote_operation(::typeof(*), ::Type{T}, ::Type{<:Diagonal{T}}, ::Type{F}\n/ a. promote_operation(::typeof(/), ::Type{T}, ::Type{F}, ::Type{T})\nvcat a. promote_operation(::typeof(vcat), ::Type{T}, ::Type{F}...)\nimag a. promote_operation(::typeof(imag), ::Type{T}, ::Type{F}) where F is VariableIndex or VectorOfVariables\n\nIn each case, F (or F1 and F2) is one of the ten supported types, with a restriction that the mathematical operation makes sense, for example, we don't define promote_operation(-, T, F1, F2) where F1 is a scalar-valued function and F2 is a vector-valued function. The ten supported types are:\n\n::T\n::VariableIndex\n::ScalarAffineFunction{T}\n::ScalarQuadraticFunction{T}\n::ScalarNonlinearFunction\n::AbstractVector{T}\n::VectorOfVariables\n::VectorAffineFunction{T}\n::VectorQuadraticFunction{T}\n::VectorNonlinearFunction\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.operate","page":"API Reference","title":"MathOptInterface.Utilities.operate","text":"operate(\n op::Function,\n ::Type{T},\n args::Union{T,MOI.AbstractFunction}...,\n)::MOI.AbstractFunction where {T<:Number}\n\nReturns an MOI.AbstractFunction representing the function resulting from the operation op(args...) on functions of coefficient type T.\n\nNo argument can be modified.\n\nMethods\n\n+ a. operate(::typeof(+), ::Type{T}, ::F1) b. operate(::typeof(+), ::Type{T}, ::F1, ::F2) c. operate(::typeof(+), ::Type{T}, ::F1...)\n- a. operate(::typeof(-), ::Type{T}, ::F) b. operate(::typeof(-), ::Type{T}, ::F1, ::F2)\n* a. operate(::typeof(*), ::Type{T}, ::T, ::F) b. operate(::typeof(*), ::Type{T}, ::F, ::T) c. operate(::typeof(*), ::Type{T}, ::F1, ::F2) where F1 and F2 are VariableIndex or ScalarAffineFunction d. operate(::typeof(*), ::Type{T}, ::Diagonal{T}, ::F)\n/ a. operate(::typeof(/), ::Type{T}, ::F, ::T)\nvcat a. operate(::typeof(vcat), ::Type{T}, ::F...)\nimag a. operate(::typeof(imag), ::Type{T}, ::F) where F is VariableIndex or VectorOfVariables\n\nOne assumption is that the element type T is invariant under each operation. That is, op(::T, ::T)::T where op is a +, -, *, and /.\n\nIn each case, F (or F1 and F2) is one of the ten supported types, with a restriction that the mathematical operation makes sense, for example, we don't define promote_operation(-, T, F1, F2) where F1 is a scalar-valued function and F2 is a vector-valued function. The ten supported types are:\n\n::T\n::VariableIndex\n::ScalarAffineFunction{T}\n::ScalarQuadraticFunction{T}\n::ScalarNonlinearFunction\n::AbstractVector{T}\n::VectorOfVariables\n::VectorAffineFunction{T}\n::VectorQuadraticFunction{T}\n::VectorNonlinearFunction\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.operate!","page":"API Reference","title":"MathOptInterface.Utilities.operate!","text":"operate!(\n op::Function,\n ::Type{T},\n args::Union{T,MOI.AbstractFunction}...,\n)::MOI.AbstractFunction where {T<:Number}\n\nReturns an MOI.AbstractFunction representing the function resulting from the operation op(args...) on functions of coefficient type T.\n\nThe first argument may be modified, in which case the return value is identical to the first argument. For operations which cannot be implemented in-place, this function returns a new object.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.operate_output_index!","page":"API Reference","title":"MathOptInterface.Utilities.operate_output_index!","text":"operate_output_index!(\n op::Union{typeof(+),typeof(-)},\n ::Type{T},\n output_index::Integer,\n f::Union{AbstractVector{T},MOI.AbstractVectorFunction}\n g::Union{T,MOI.AbstractScalarFunction}...\n) where {T<:Number}\n\nReturn an MOI.AbstractVectorFunction in which the scalar function in row output_index is the result of op(f[output_index], g).\n\nThe functions at output index different to output_index are the same as the functions at the same output index in func. The first argument may be modified.\n\nMethods\n\n+ a. operate_output_index!(+, ::Type{T}, ::Int, ::VectorF, ::ScalarF)\n- a. operate_output_index!(-, ::Type{T}, ::Int, ::VectorF, ::ScalarF)\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.vectorize","page":"API Reference","title":"MathOptInterface.Utilities.vectorize","text":"vectorize(x::AbstractVector{<:Number})\n\nReturns x.\n\n\n\n\n\nvectorize(x::AbstractVector{MOI.VariableIndex})\n\nReturns the vector of scalar affine functions in the form of a MOI.VectorAffineFunction{T}.\n\n\n\n\n\nvectorize(funcs::AbstractVector{MOI.ScalarAffineFunction{T}}) where T\n\nReturns the vector of scalar affine functions in the form of a MOI.VectorAffineFunction{T}.\n\n\n\n\n\nvectorize(funcs::AbstractVector{MOI.ScalarQuadraticFunction{T}}) where T\n\nReturns the vector of scalar quadratic functions in the form of a MOI.VectorQuadraticFunction{T}.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#Constraint-utilities","page":"API Reference","title":"Constraint utilities","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"The following utilities are available for moving the function constant to the set for scalar constraints:","category":"page"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.shift_constant\nUtilities.supports_shift_constant\nUtilities.normalize_and_add_constraint\nUtilities.normalize_constant","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.shift_constant","page":"API Reference","title":"MathOptInterface.Utilities.shift_constant","text":"shift_constant(set::MOI.AbstractScalarSet, offset)\n\nReturns a new scalar set new_set such that func-in-set is equivalent to func + offset-in-new_set.\n\nOnly define this function if it makes sense to!\n\nUse supports_shift_constant to check if the set supports shifting:\n\nif supports_shift_constant(typeof(old_set))\n new_set = shift_constant(old_set, offset)\n f.constant = 0\n add_constraint(model, f, new_set)\nelse\n add_constraint(model, f, old_set)\nend\n\nSee also supports_shift_constant.\n\nExamples\n\nThe call shift_constant(MOI.Interval(-2, 3), 1) is equal to MOI.Interval(-1, 4).\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.supports_shift_constant","page":"API Reference","title":"MathOptInterface.Utilities.supports_shift_constant","text":"supports_shift_constant(::Type{S}) where {S<:MOI.AbstractSet}\n\nReturn true if shift_constant is defined for set S.\n\nSee also shift_constant.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.normalize_and_add_constraint","page":"API Reference","title":"MathOptInterface.Utilities.normalize_and_add_constraint","text":"normalize_and_add_constraint(\n model::MOI.ModelLike,\n func::MOI.AbstractScalarFunction,\n set::MOI.AbstractScalarSet;\n allow_modify_function::Bool = false,\n)\n\nAdds the scalar constraint obtained by moving the constant term in func to the set in model. If allow_modify_function is true then the function func can be modified.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.normalize_constant","page":"API Reference","title":"MathOptInterface.Utilities.normalize_constant","text":"normalize_constant(\n func::MOI.AbstractScalarFunction,\n set::MOI.AbstractScalarSet;\n allow_modify_function::Bool = false,\n)\n\nReturn the func-in-set constraint in normalized form. That is, if func is MOI.ScalarQuadraticFunction or MOI.ScalarAffineFunction, the constant is moved to the set. If allow_modify_function is true then the function func can be modified.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"The following utility identifies those constraints imposing bounds on a given variable, and returns those bound values:","category":"page"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.get_bounds","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.get_bounds","page":"API Reference","title":"MathOptInterface.Utilities.get_bounds","text":"get_bounds(model::MOI.ModelLike, ::Type{T}, x::MOI.VariableIndex)\n\nReturn a tuple (lb, ub) of type Tuple{T, T}, where lb and ub are lower and upper bounds, respectively, imposed on x in model.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"The following utilities are useful when working with symmetric matrix cones.","category":"page"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.is_diagonal_vectorized_index\nUtilities.side_dimension_for_vectorized_dimension","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.is_diagonal_vectorized_index","page":"API Reference","title":"MathOptInterface.Utilities.is_diagonal_vectorized_index","text":"is_diagonal_vectorized_index(index::Base.Integer)\n\nReturn whether index is the index of a diagonal element in a MOI.AbstractSymmetricMatrixSetTriangle set.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.side_dimension_for_vectorized_dimension","page":"API Reference","title":"MathOptInterface.Utilities.side_dimension_for_vectorized_dimension","text":"side_dimension_for_vectorized_dimension(n::Integer)\n\nReturn the dimension d such that MOI.dimension(MOI.PositiveSemidefiniteConeTriangle(d)) is n.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#Set-utilities","page":"API Reference","title":"Set utilities","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"The following utilities are available for sets:","category":"page"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.AbstractDistance\nUtilities.ProjectionUpperBoundDistance\nUtilities.distance_to_set\nUtilities.set_dot","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.AbstractDistance","page":"API Reference","title":"MathOptInterface.Utilities.AbstractDistance","text":"abstract type AbstractDistance end\n\nAn abstract type used to enabble dispatch of Utilities.distance_to_set.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.ProjectionUpperBoundDistance","page":"API Reference","title":"MathOptInterface.Utilities.ProjectionUpperBoundDistance","text":"ProjectionUpperBoundDistance() <: AbstractDistance\n\nAn upper bound on the minimum distance between point and the closest feasible point in set.\n\nDefinition of distance\n\nThe minimum distance is computed as:\n\nd(x mathcalK) = min_y in mathcalK x - y \n\nwhere x is point and mathcalK is set. The norm is computed as:\n\nx = sqrtf(x x mathcalK)\n\nwhere f is Utilities.set_dot.\n\nIn the default case, where the set does not have a specialized method for Utilities.set_dot, the norm is equivalent to the Euclidean norm x = sqrtsum x_i^2.\n\nWhy an upper bound?\n\nIn most cases, distance_to_set should return the smallest upper bound, but it may return a larger value if the smallest upper bound is expensive to compute.\n\nFor example, given an epigraph from of a conic set, (t x) f(x) le t, it may be simpler to return delta such that f(x) le t + delta, rather than computing the nearest projection onto the set.\n\nIf the distance is not the smallest upper bound, the docstring of the appropriate distance_to_set method must describe the way that the distance is computed.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.distance_to_set","page":"API Reference","title":"MathOptInterface.Utilities.distance_to_set","text":"distance_to_set(\n [d::AbstractDistance = ProjectionUpperBoundDistance()],]\n point::T,\n set::MOI.AbstractScalarSet,\n) where {T}\n\ndistance_to_set(\n [d::AbstractDistance = ProjectionUpperBoundDistance(),]\n point::AbstractVector{T},\n set::MOI.AbstractVectorSet,\n) where {T}\n\nCompute the distance between point and set using the distance metric d. If point is in the set set, this function must return zero(T).\n\nIf d is omitted, the default distance is Utilities.ProjectionUpperBoundDistance.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.set_dot","page":"API Reference","title":"MathOptInterface.Utilities.set_dot","text":"set_dot(x::AbstractVector, y::AbstractVector, set::AbstractVectorSet)\n\nReturn the scalar product between a vector x of the set set and a vector y of the dual of the set s.\n\n\n\n\n\nset_dot(x, y, set::AbstractScalarSet)\n\nReturn the scalar product between a number x of the set set and a number y of the dual of the set s.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#DoubleDicts","page":"API Reference","title":"DoubleDicts","text":"","category":"section"},{"location":"moi/submodules/Utilities/reference/","page":"API Reference","title":"API Reference","text":"Utilities.DoubleDicts.DoubleDict\nUtilities.DoubleDicts.DoubleDictInner\nUtilities.DoubleDicts.IndexDoubleDict\nUtilities.DoubleDicts.IndexDoubleDictInner\nUtilities.DoubleDicts.outer_keys\nUtilities.DoubleDicts.nonempty_outer_keys","category":"page"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.DoubleDicts.DoubleDict","page":"API Reference","title":"MathOptInterface.Utilities.DoubleDicts.DoubleDict","text":"DoubleDict{V}\n\nAn optimized dictionary to map MOI.ConstraintIndex to values of type V.\n\nWorks as a AbstractDict{MOI.ConstraintIndex,V} with minimal differences.\n\nIf V is also a MOI.ConstraintIndex, use IndexDoubleDict.\n\nNote that MOI.ConstraintIndex is not a concrete type, opposed to MOI.ConstraintIndex{MOI.VariableIndex, MOI.Integers}, which is a concrete type.\n\nWhen looping through multiple keys of the same Function-in-Set type, use\n\ninner = dict[F, S]\n\nto return a type-stable DoubleDictInner.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.DoubleDicts.DoubleDictInner","page":"API Reference","title":"MathOptInterface.Utilities.DoubleDicts.DoubleDictInner","text":"DoubleDictInner{F,S,V}\n\nA type stable inner dictionary of DoubleDict.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.DoubleDicts.IndexDoubleDict","page":"API Reference","title":"MathOptInterface.Utilities.DoubleDicts.IndexDoubleDict","text":"IndexDoubleDict\n\nA specialized version of [DoubleDict] in which the values are of type MOI.ConstraintIndex\n\nWhen looping through multiple keys of the same Function-in-Set type, use\n\ninner = dict[F, S]\n\nto return a type-stable IndexDoubleDictInner.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.DoubleDicts.IndexDoubleDictInner","page":"API Reference","title":"MathOptInterface.Utilities.DoubleDicts.IndexDoubleDictInner","text":"IndexDoubleDictInner{F,S}\n\nA type stable inner dictionary of IndexDoubleDict.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.DoubleDicts.outer_keys","page":"API Reference","title":"MathOptInterface.Utilities.DoubleDicts.outer_keys","text":"outer_keys(d::AbstractDoubleDict)\n\nReturn an iterator over the outer keys of the AbstractDoubleDict d. Each outer key is a Tuple{Type,Type} so that a double loop can be easily used:\n\nfor (F, S) in DoubleDicts.outer_keys(dict)\n for (k, v) in dict[F, S]\n # ...\n end\nend\n\nFor performance, it is recommended that the inner loop lies in a separate function to gurantee type-stability. Some outer keys (F, S) might lead to an empty dict[F, S]. If you want only nonempty dict[F, S], use nonempty_outer_keys.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Utilities/reference/#MathOptInterface.Utilities.DoubleDicts.nonempty_outer_keys","page":"API Reference","title":"MathOptInterface.Utilities.DoubleDicts.nonempty_outer_keys","text":"nonempty_outer_keys(d::AbstractDoubleDict)\n\nReturn a vector of outer keys of the AbstractDoubleDict d.\n\nOnly outer keys that have a nonempty set of inner keys will be returned.\n\nEach outer key is a Tuple{Type,Type} so that a double loop can be easily used\n\nfor (F, S) in DoubleDicts.nonempty_outer_keys(dict)\n for (k, v) in dict[F, S]\n # ...\n end\nend\nFor performance, it is recommended that the inner loop lies in a separate\nfunction to gurantee type-stability.\n\nIf you want an iterator of all current outer keys, use [`outer_keys`](@ref).\n\n\n\n\n\n","category":"function"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"EditURL = \"https://github.com/jump-dev/Clp.jl/blob/v1.0.3/README.md\"","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"(Image: )","category":"page"},{"location":"packages/Clp/#Clp.jl","page":"jump-dev/Clp.jl","title":"Clp.jl","text":"","category":"section"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"(Image: Build Status) (Image: codecov)","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"Clp.jl is a wrapper for the COIN-OR Linear Programming solver.","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"The wrapper has two components:","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"a thin wrapper around the complete C API\nan interface to MathOptInterface","category":"page"},{"location":"packages/Clp/#Affiliation","page":"jump-dev/Clp.jl","title":"Affiliation","text":"","category":"section"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"This wrapper is maintained by the JuMP community and is not a COIN-OR project.","category":"page"},{"location":"packages/Clp/#License","page":"jump-dev/Clp.jl","title":"License","text":"","category":"section"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"Clp.jl is licensed under the MIT License.","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"The underlying solver, coin-or/Clp, is licensed under the Eclipse public license.","category":"page"},{"location":"packages/Clp/#Installation","page":"jump-dev/Clp.jl","title":"Installation","text":"","category":"section"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"Install Clp using Pkg.add:","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"import Pkg\nPkg.add(\"Clp\")","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"In addition to installing the Clp.jl package, this will also download and install the Clp binaries. You do not need to install Clp separately.","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"To use a custom binary, read the Custom solver binaries section of the JuMP documentation.","category":"page"},{"location":"packages/Clp/#Use-with-JuMP","page":"jump-dev/Clp.jl","title":"Use with JuMP","text":"","category":"section"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"To use Clp with JuMP, use Clp.Optimizer:","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"using JuMP, Clp\nmodel = Model(Clp.Optimizer)\nset_attribute(model, \"LogLevel\", 1)\nset_attribute(model, \"Algorithm\", 4)","category":"page"},{"location":"packages/Clp/#MathOptInterface-API","page":"jump-dev/Clp.jl","title":"MathOptInterface API","text":"","category":"section"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"The Clp optimizer supports the following constraints and attributes.","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"List of supported objective functions:","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"List of supported variable types:","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"MOI.Reals","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"List of supported constraint types:","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"MOI.ScalarAffineFunction{Float64} in MOI.EqualTo{Float64}\nMOI.ScalarAffineFunction{Float64} in MOI.GreaterThan{Float64}\nMOI.ScalarAffineFunction{Float64} in MOI.Interval{Float64}\nMOI.ScalarAffineFunction{Float64} in MOI.LessThan{Float64}\nMOI.VariableIndex in MOI.EqualTo{Float64}\nMOI.VariableIndex in MOI.GreaterThan{Float64}\nMOI.VariableIndex in MOI.Interval{Float64}\nMOI.VariableIndex in MOI.LessThan{Float64}","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"List of supported model attributes:","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"MOI.ObjectiveSense()","category":"page"},{"location":"packages/Clp/#Options","page":"jump-dev/Clp.jl","title":"Options","text":"","category":"section"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"Options are, unfortunately, not well documented.","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"The following options are likely to be the most useful:","category":"page"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"Parameter Example Explanation\nPrimalTolerance 1e-7 Primal feasibility tolerance\nDualTolerance 1e-7 Dual feasibility tolerance\nDualObjectiveLimit 1e308 When using dual simplex (where the objective is monotonically changing), terminate when the objective exceeds this limit\nMaximumIterations 2147483647 Terminate after performing this number of simplex iterations\nMaximumSeconds -1.0 Terminate after this many seconds have passed. A negative value means no time limit\nLogLevel 1 Set to 1, 2, 3, or 4 for increasing output. Set to 0 to disable output\nPresolveType 0 Set to 1 to disable presolve\nSolveType 5 Solution method: dual simplex (0), primal simplex (1), sprint (2), barrier with crossover (3), barrier without crossover (4), automatic (5)\nInfeasibleReturn 0 Set to 1 to return as soon as the problem is found to be infeasible (by default, an infeasibility proof is computed as well)\nScaling 3 0 -off, 1 equilibrium, 2 geometric, 3 auto, 4 dynamic(later)\nPerturbation 100 switch on perturbation (50), automatic (100), don't try perturbing (102)","category":"page"},{"location":"packages/Clp/#C-API","page":"jump-dev/Clp.jl","title":"C API","text":"","category":"section"},{"location":"packages/Clp/","page":"jump-dev/Clp.jl","title":"jump-dev/Clp.jl","text":"The C API can be accessed via Clp.Clp_XXX functions, where the names and arguments are identical to the C API.","category":"page"},{"location":"moi/","page":"Introduction","title":"Introduction","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/index.md\"","category":"page"},{"location":"moi/#moi_documentation","page":"Introduction","title":"Introduction","text":"","category":"section"},{"location":"moi/","page":"Introduction","title":"Introduction","text":"warning: Warning\nThis documentation in this section is a copy of the official MathOptInterface documentation available at https://jump.dev/MathOptInterface.jl/v1.20.1. It is included here to make it easier to link concepts between JuMP and MathOptInterface.","category":"page"},{"location":"moi/#What-is-MathOptInterface?","page":"Introduction","title":"What is MathOptInterface?","text":"","category":"section"},{"location":"moi/","page":"Introduction","title":"Introduction","text":"MathOptInterface.jl (MOI) is an abstraction layer designed to provide a unified interface to mathematical optimization solvers so that users do not need to understand multiple solver-specific APIs.","category":"page"},{"location":"moi/","page":"Introduction","title":"Introduction","text":"tip: Tip\nThis documentation is aimed at developers writing software interfaces to solvers and modeling languages using the MathOptInterface API. If you are a user interested in solving optimization problems, we encourage you instead to use MOI through a higher-level modeling interface like JuMP or Convex.jl.","category":"page"},{"location":"moi/#How-the-documentation-is-structured","page":"Introduction","title":"How the documentation is structured","text":"","category":"section"},{"location":"moi/","page":"Introduction","title":"Introduction","text":"Having a high-level overview of how this documentation is structured will help you know where to look for certain things.","category":"page"},{"location":"moi/","page":"Introduction","title":"Introduction","text":"The Tutorials section contains articles on how to use and implement the MathOptInteraface API. Look here if you want to write a model in MOI, or write an interface to a new solver.\nThe Manual contains short code-snippets that explain how to use the MOI API. Look here for more details on particular areas of MOI.\nThe Background section contains articles on the theory behind MathOptInterface. Look here if you want to understand why, rather than how.\nThe API Reference contains a complete list of functions and types that comprise the MOI API. Look here is you want to know how to use (or implement) a particular function.\nThe Submodules section contains stand-alone documentation for each of the submodules within MOI. These submodules are not required to interface a solver with MOI, but they make the job much easier.","category":"page"},{"location":"moi/#Citing-MathOptInterface","page":"Introduction","title":"Citing MathOptInterface","text":"","category":"section"},{"location":"moi/","page":"Introduction","title":"Introduction","text":"A paper describing the design and features of MathOptInterface is available on arXiv.","category":"page"},{"location":"moi/","page":"Introduction","title":"Introduction","text":"If you find MathOptInterface useful in your work, we kindly request that you cite the following paper:","category":"page"},{"location":"moi/","page":"Introduction","title":"Introduction","text":"@article{legat2021mathoptinterface,\n title={{MathOptInterface}: a data structure for mathematical optimization problems},\n author={Legat, Beno{\\^\\i}t and Dowson, Oscar and Garcia, Joaquim Dias and Lubin, Miles},\n journal={INFORMS Journal on Computing},\n year={2021},\n doi={10.1287/ijoc.2021.1067},\n publisher={INFORMS}\n}","category":"page"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"EditURL = \"https://github.com/osqp/OSQP.jl/blob/443706e34c2619acbe65281c60bbe850ca4a8fac/README.md\"","category":"page"},{"location":"packages/OSQP/#OSQP.jl","page":"osqp/OSQP.jl","title":"OSQP.jl","text":"","category":"section"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"(Image: Build Status) (Image: codecov.io)","category":"page"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"OSQP.jl is a Julia wrapper for OSQP: the Operator Splitting QP Solver.","category":"page"},{"location":"packages/OSQP/#License","page":"osqp/OSQP.jl","title":"License","text":"","category":"section"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"OSQP.jl is licensed under the Apache-2.0 license.","category":"page"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"The upstream solver, osqp/osqp is also licensed under the Apache-2.0 license.","category":"page"},{"location":"packages/OSQP/#Installation","page":"osqp/OSQP.jl","title":"Installation","text":"","category":"section"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"Install OSQP.jl using the Julia package manager","category":"page"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"import Pkg\nPkg.add(\"OSQP\")","category":"page"},{"location":"packages/OSQP/#Problem-class","page":"osqp/OSQP.jl","title":"Problem class","text":"","category":"section"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"The OSQP (Operator Splitting Quadratic Program) solver is a numerical optimization package for solving problems in the form","category":"page"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"minimize 0.5 x' P x + q' x\n\nsubject to l <= A x <= u","category":"page"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"where x in R^n is the optimization variable. The objective function is defined by a positive semidefinite matrix P in S^n_+ and vector q in R^n. The linear constraints are defined by matrix A in R^{m x n} and vectors l in R^m U {-inf}^m, u in R^m U {+inf}^m.","category":"page"},{"location":"packages/OSQP/#Documentation","page":"osqp/OSQP.jl","title":"Documentation","text":"","category":"section"},{"location":"packages/OSQP/","page":"osqp/OSQP.jl","title":"osqp/OSQP.jl","text":"Detailed documentation is available at https://osqp.org/.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"CurrentModule = JuMP\nDocTestSetup = quote\n using JuMP, HiGHS, SCS\nend\nDocTestFilters = [r\"≤|<=\", r\"≥|>=\", r\" == | = \", r\" ∈ | in \", r\"MathOptInterface|MOI\"]","category":"page"},{"location":"manual/models/#jump_models","page":"Models","title":"Models","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"JuMP models are the fundamental building block that we use to construct optimization problems. They hold things like the variables and constraints, as well as which solver to use and even solution information.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"info: Info\nJuMP uses \"optimizer\" as a synonym for \"solver.\" Our convention is to use \"solver\" to refer to the underlying software, and use \"optimizer\" to refer to the Julia object that wraps the solver. For example, HiGHS is a solver, and HiGHS.Optimizer is an optimizer.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"tip: Tip\nSee Supported solvers for a list of available solvers.","category":"page"},{"location":"manual/models/#Create-a-model","page":"Models","title":"Create a model","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"Create a model by passing an optimizer to Model:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(HiGHS.Optimizer)\nA JuMP Model\nFeasibility problem with:\nVariables: 0\nModel mode: AUTOMATIC\nCachingOptimizer state: EMPTY_OPTIMIZER\nSolver name: HiGHS","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"If you don't know which optimizer you will be using at creation time, create a model without an optimizer, and then call set_optimizer at any time prior to optimize!:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model()\nA JuMP Model\nFeasibility problem with:\nVariables: 0\nModel mode: AUTOMATIC\nCachingOptimizer state: NO_OPTIMIZER\nSolver name: No optimizer attached.\n\njulia> set_optimizer(model, HiGHS.Optimizer)","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"tip: Tip\nDon't know what the fields Model mode and CachingOptimizer state mean? Read the Backends section.","category":"page"},{"location":"manual/models/#What-is-the-difference?","page":"Models","title":"What is the difference?","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"For most models, there is no difference between passing the optimizer to Model, and calling set_optimizer.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"However, if an optimizer does not support a constraint in the model, the timing of when an error will be thrown can differ:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"If you pass an optimizer, an error will be thrown when you try to add the constraint.\nIf you call set_optimizer, an error will be thrown when you try to solve the model via optimize!.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Therefore, most users should pass an optimizer to Model because it provides the earliest warning that your solver is not suitable for the model you are trying to build. However, if you are modifying a problem by adding and deleting different constraint types, you may need to use set_optimizer. See Switching optimizer for the relaxed problem for an example of when this is useful.","category":"page"},{"location":"manual/models/#Reducing-time-to-first-solve-latency","page":"Models","title":"Reducing time-to-first-solve latency","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"By default, JuMP uses bridges to reformulate the model you are building into an equivalent model supported by the solver.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"However, if your model is already supported by the solver, bridges add latency (read The \"time-to-first-solve\" issue). This is particularly noticeable for small models.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"To reduce the \"time-to-first-solve,s\" try passing add_bridges = false.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(HiGHS.Optimizer; add_bridges = false);","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"or","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model();\n\njulia> set_optimizer(model, HiGHS.Optimizer; add_bridges = false)","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"However, be wary. If your model and solver combination needs bridges, an error will be thrown:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(SCS.Optimizer; add_bridges = false);\n\n\njulia> @variable(model, x)\nx\n\njulia> @constraint(model, 2x <= 1)\nERROR: Constraints of type MathOptInterface.ScalarAffineFunction{Float64}-in-MathOptInterface.LessThan{Float64} are not supported by the solver.\n\nIf you expected the solver to support your problem, you may have an error in your formulation. Otherwise, consider using a different solver.\n\nThe list of available solvers, along with the problem types they support, is available at https://jump.dev/JuMP.jl/stable/installation/#Supported-solvers.\n[...]","category":"page"},{"location":"manual/models/#Solvers-which-expect-environments","page":"Models","title":"Solvers which expect environments","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"Some solvers accept (or require) positional arguments such as a license environment or a path to a binary executable. For these solvers, you can pass a function to Model which takes zero arguments and returns an instance of the optimizer.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"A common use-case for this is passing an environment or sub-solver to the optimizer:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> import HiGHS\n\njulia> import MultiObjectiveAlgorithms as MOA\n\njulia> model = Model(() -> MOA.Optimizer(HiGHS.Optimizer))\nA JuMP Model\nFeasibility problem with:\nVariables: 0\nModel mode: AUTOMATIC\nCachingOptimizer state: EMPTY_OPTIMIZER\nSolver name: MOA[algorithm=MultiObjectiveAlgorithms.Lexicographic, optimizer=HiGHS]","category":"page"},{"location":"manual/models/#solver_options","page":"Models","title":"Solver options","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"JuMP uses \"attribute\" as a synonym for \"option.\" Use optimizer_with_attributes to create an optimizer with some attributes initialized:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(\n optimizer_with_attributes(HiGHS.Optimizer, \"output_flag\" => false),\n )\nA JuMP Model\nFeasibility problem with:\nVariables: 0\nModel mode: AUTOMATIC\nCachingOptimizer state: EMPTY_OPTIMIZER\nSolver name: HiGHS","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Alternatively, use set_attribute to set an attribute after the model has been created:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(HiGHS.Optimizer);\n\njulia> set_attribute(model, \"output_flag\", false)\n\njulia> get_attribute(model, \"output_flag\")\nfalse","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"You can also modify attributes within an optimizer_with_attributes object:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> solver = optimizer_with_attributes(HiGHS.Optimizer, \"output_flag\" => true);\n\njulia> get_attribute(solver, \"output_flag\")\ntrue\n\njulia> set_attribute(solver, \"output_flag\", false)\n\njulia> get_attribute(solver, \"output_flag\")\nfalse\n\njulia> model = Model(solver);","category":"page"},{"location":"manual/models/#Changing-the-number-types","page":"Models","title":"Changing the number types","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"By default, the coefficients of affine and quadratic expressions are numbers of type either Float64 or Complex{Float64} (see Complex number support).","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"The type Float64 can be changed using the GenericModel constructor:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = GenericModel{Rational{BigInt}}();\n\njulia> @variable(model, x)\nx\n\njulia> @expression(model, expr, 1 // 3 * x)\n1//3 x\n\njulia> typeof(expr)\nGenericAffExpr{Rational{BigInt}, GenericVariableRef{Rational{BigInt}}}","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Using a value_type other than Float64 is an advanced operation and should be used only if the underlying solver actually solves the problem using the provided value type.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"warning: Warning\nNonlinear Modeling is currently restricted to the Float64 number type.","category":"page"},{"location":"manual/models/#Print-the-model","page":"Models","title":"Print the model","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"By default, show(model) will print a summary of the problem:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(); @variable(model, x >= 0); @objective(model, Max, x);\n\njulia> model\nA JuMP Model\nMaximization problem with:\nVariable: 1\nObjective function type: VariableRef\n`VariableRef`-in-`MathOptInterface.GreaterThan{Float64}`: 1 constraint\nModel mode: AUTOMATIC\nCachingOptimizer state: NO_OPTIMIZER\nSolver name: No optimizer attached.\nNames registered in the model: x","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Use print to print the formulation of the model (in IJulia, this will render as LaTeX.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> print(model)\nMax x\nSubject to\n x ≥ 0","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"warning: Warning\nThis format is specific to JuMP and may change in any future release. It is not intended to be an instance format. To write the model to a file, use write_to_file instead.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Use latex_formulation to display the model in LaTeX form.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> latex_formulation(model)\n$$ \\begin{aligned}\n\\max\\quad & x\\\\\n\\text{Subject to} \\quad & x \\geq 0\\\\\n\\end{aligned} $$","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"In IJulia (and Documenter), ending a cell in with latex_formulation will render the model in LaTeX:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"using JuMP # hide\nmodel = Model() # hide\n@variable(model, x >= 0) # hide\n@objective(model, Max, x) # hide\nlatex_formulation(model)","category":"page"},{"location":"manual/models/#Turn-off-output","page":"Models","title":"Turn off output","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"Use set_silent and unset_silent to disable or enable printing output from the solver.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(HiGHS.Optimizer);\n\njulia> set_silent(model)\n\njulia> unset_silent(model)","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"tip: Tip\nMost solvers will also have a solver-specific option to provide finer-grained control over the output. Consult their README's for details.","category":"page"},{"location":"manual/models/#Set-a-time-limit","page":"Models","title":"Set a time limit","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"Use set_time_limit_sec, unset_time_limit_sec, and time_limit_sec to manage time limits.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(HiGHS.Optimizer);\n\njulia> set_time_limit_sec(model, 60.0)\n\n\njulia> time_limit_sec(model)\n60.0\n\njulia> unset_time_limit_sec(model)\n\njulia> limit = time_limit_sec(model)\n\njulia> limit === nothing\ntrue","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"If your time limit is encoded as a Dates.Period object, use the following code to convert it to Float64 for set_time_limit_sec:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> import Dates\n\njulia> seconds(x::Dates.Period) = 1e-3 * Dates.value(round(x, Dates.Millisecond))\nseconds (generic function with 1 method)\n\njulia> set_time_limit_sec(model, seconds(Dates.Hour(1)))\n\njulia> time_limit_sec(model)\n3600.0","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"info: Info\nSome solvers do not support time limits. In these cases, an error will be thrown.","category":"page"},{"location":"manual/models/#Write-a-model-to-file","page":"Models","title":"Write a model to file","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"JuMP can write models to a variety of file-formats using write_to_file and Base.write.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"For most common file formats, the file type will be detected from the extension.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"For example, here is how to write an MPS file:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model();\n\njulia> write_to_file(model, \"model.mps\")","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Other supported file formats include:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":".cbf for the Conic Benchmark Format\n.lp for the LP file format\n.mof.json for the MathOptFormat\n.nl for AMPL's NL file format\n.rew for the REW file format\n.sdpa and \".dat-s\" for the SDPA file format","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"To write to a specific io::IO, use Base.write. Specify the file type by passing a MOI.FileFormats.FileFormat enum.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model();\n\njulia> io = IOBuffer();\n\njulia> write(io, model; format = MOI.FileFormats.FORMAT_MPS)","category":"page"},{"location":"manual/models/#Read-a-model-from-file","page":"Models","title":"Read a model from file","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"JuMP models can be created from file formats using read_from_file and Base.read.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = read_from_file(\"model.mps\")\nA JuMP Model\nMinimization problem with:\nVariables: 0\nObjective function type: AffExpr\nModel mode: AUTOMATIC\nCachingOptimizer state: NO_OPTIMIZER\nSolver name: No optimizer attached.\n\njulia> seekstart(io);\n\njulia> model2 = read(io, Model; format = MOI.FileFormats.FORMAT_MPS)\nA JuMP Model\nMinimization problem with:\nVariables: 0\nObjective function type: AffExpr\nModel mode: AUTOMATIC\nCachingOptimizer state: NO_OPTIMIZER\nSolver name: No optimizer attached.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"note: Note\nBecause file formats do not serialize the containers of JuMP variables and constraints, the names in the model will not be registered. Therefore, you cannot access named variables and constraints via model[:x]. Instead, use variable_by_name or constraint_by_name to access specific variables or constraints.","category":"page"},{"location":"manual/models/#Relax-integrality","page":"Models","title":"Relax integrality","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"Use relax_integrality to remove any integrality constraints from the model, such as integer and binary restrictions on variables. relax_integrality returns a function that can be later called with zero arguments to re-add the removed constraints:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model();\n\njulia> @variable(model, x, Int)\nx\n\njulia> num_constraints(model, VariableRef, MOI.Integer)\n1\n\njulia> undo = relax_integrality(model);\n\njulia> num_constraints(model, VariableRef, MOI.Integer)\n0\n\njulia> undo()\n\njulia> num_constraints(model, VariableRef, MOI.Integer)\n1","category":"page"},{"location":"manual/models/#Switching-optimizer-for-the-relaxed-problem","page":"Models","title":"Switching optimizer for the relaxed problem","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"A common reason for relaxing integrality is to compute dual variables of the relaxed problem. However, some mixed-integer linear solvers (for example, Cbc) do not return dual solutions, even if the problem does not have integrality restrictions.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Therefore, after relax_integrality you should call set_optimizer with a solver that does support dual solutions, such as Clp.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"For example, instead of:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"using JuMP, Cbc\nmodel = Model(Cbc.Optimizer)\n@variable(model, x, Int)\nundo = relax_integrality(model)\noptimize!(model)\nreduced_cost(x) # Errors","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"do:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"using JuMP, Cbc, Clp\nmodel = Model(Cbc.Optimizer)\n@variable(model, x, Int)\nundo = relax_integrality(model)\nset_optimizer(model, Clp.Optimizer)\noptimize!(model)\nreduced_cost(x) # Works","category":"page"},{"location":"manual/models/#Backends","page":"Models","title":"Backends","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"info: Info\nThis section discusses advanced features of JuMP. For new users, you may want to skip this section. You don't need to know how JuMP manages problems behind the scenes to create and solve JuMP models.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"A JuMP Model is a thin layer around a backend of type MOI.ModelLike that stores the optimization problem and acts as the optimization solver.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"However, if you construct a model like Model(HiGHS.Optimizer), the backend is not a HiGHS.Optimizer, but a more complicated object.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"From JuMP, the MOI backend can be accessed using the backend function. Let's see what the backend of a JuMP Model is:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(HiGHS.Optimizer);\n\njulia> b = backend(model)\nMOIU.CachingOptimizer{MOIB.LazyBridgeOptimizer{HiGHS.Optimizer}, MOIU.UniversalFallback{MOIU.Model{Float64}}}\nin state EMPTY_OPTIMIZER\nin mode AUTOMATIC\nwith model cache MOIU.UniversalFallback{MOIU.Model{Float64}}\n fallback for MOIU.Model{Float64}\nwith optimizer MOIB.LazyBridgeOptimizer{HiGHS.Optimizer}\n with 0 variable bridges\n with 0 constraint bridges\n with 0 objective bridges\n with inner model A HiGHS model with 0 columns and 0 rows.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Uh oh. Even though we passed a HiGHS.Optimizer, the backend is a much more complicated object.","category":"page"},{"location":"manual/models/#CachingOptimizer","page":"Models","title":"CachingOptimizer","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"A MOIU.CachingOptimizer is a layer that abstracts the difference between solvers that support incremental modification (for example, they support adding variables one-by-one), and solvers that require the entire problem in a single API call (for example, they only accept the A, b and c matrices of a linear program).","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"It has two parts:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"A cache, where the model can be built and modified incrementally\njulia> b.model_cache\nMOIU.UniversalFallback{MOIU.Model{Float64}}\nfallback for MOIU.Model{Float64}\nAn optimizer, which is used to solve the problem\njulia> b.optimizer\nMOIB.LazyBridgeOptimizer{HiGHS.Optimizer}\nwith 0 variable bridges\nwith 0 constraint bridges\nwith 0 objective bridges\nwith inner model A HiGHS model with 0 columns and 0 rows.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"info: Info\nThe LazyBridgeOptimizer section explains what a LazyBridgeOptimizer is.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"The CachingOptimizer has logic to decide when to copy the problem from the cache to the optimizer, and when it can efficiently update the optimizer in-place.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"A CachingOptimizer may be in one of three possible states:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"NO_OPTIMIZER: The CachingOptimizer does not have any optimizer.\nEMPTY_OPTIMIZER: The CachingOptimizer has an empty optimizer, and it is not synchronized with the cached model.\nATTACHED_OPTIMIZER: The CachingOptimizer has an optimizer, and it is synchronized with the cached model.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"A CachingOptimizer has two modes of operation:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"AUTOMATIC: The CachingOptimizer changes its state when necessary. For example, optimize! will automatically call attach_optimizer (an optimizer must have been previously set). Attempting to add a constraint or perform a modification not supported by the optimizer results in a drop to EMPTY_OPTIMIZER mode.\nMANUAL: The user must change the state of the CachingOptimizer using MOIU.reset_optimizer(::JuMP.Model), MOIU.drop_optimizer(::JuMP.Model), and MOIU.attach_optimizer(::JuMP.Model). Attempting to perform an operation in the incorrect state results in an error.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"By default Model will create a CachingOptimizer in AUTOMATIC mode.","category":"page"},{"location":"manual/models/#LazyBridgeOptimizer","page":"Models","title":"LazyBridgeOptimizer","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"The second layer that JuMP applies automatically is a MOI.Bridges.LazyBridgeOptimizer. A MOI.Bridges.LazyBridgeOptimizer is an MOI layer that attempts to transform the problem from the formulation provided by the user into an equivalent problem supported by the solver. This may involve adding new variables and constraints to the optimizer. The transformations are selected from a set of known recipes called bridges.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"A common example of a bridge is one that splits an interval constraint like @constraint(model, 1 <= x + y <= 2) into two constraints, @constraint(model, x + y >= 1) and @constraint(model, x + y <= 2).","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Use the add_bridges = false keyword to remove the bridging layer:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = Model(HiGHS.Optimizer; add_bridges = false)\nA JuMP Model\nFeasibility problem with:\nVariables: 0\nModel mode: AUTOMATIC\nCachingOptimizer state: EMPTY_OPTIMIZER\nSolver name: HiGHS\n\njulia> backend(model)\nMOIU.CachingOptimizer{HiGHS.Optimizer, MOIU.UniversalFallback{MOIU.Model{Float64}}}\nin state EMPTY_OPTIMIZER\nin mode AUTOMATIC\nwith model cache MOIU.UniversalFallback{MOIU.Model{Float64}}\n fallback for MOIU.Model{Float64}\nwith optimizer A HiGHS model with 0 columns and 0 rows.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"Bridges can be added and removed from a MOI.Bridges.LazyBridgeOptimizer using add_bridge and remove_bridge. Use print_active_bridges to see which bridges are used to reformulate the model. Read the Ellipsoid approximation tutorial for more details.","category":"page"},{"location":"manual/models/#Unsafe-backend","page":"Models","title":"Unsafe backend","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"In some advanced use-cases, it is necessary to work with the inner optimization model directly. To access this model, use unsafe_backend:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> backend(model)\nMOIU.CachingOptimizer{MOIB.LazyBridgeOptimizer{HiGHS.Optimizer}, MOIU.UniversalFallback{MOIU.Model{Float64}}}\nin state EMPTY_OPTIMIZER\nin mode AUTOMATIC\nwith model cache MOIU.UniversalFallback{MOIU.Model{Float64}}\n fallback for MOIU.Model{Float64}\nwith optimizer MOIB.LazyBridgeOptimizer{HiGHS.Optimizer}\n with 0 variable bridges\n with 0 constraint bridges\n with 0 objective bridges\n with inner model A HiGHS model with 0 columns and 0 rows.\n\njulia> unsafe_backend(model)\nA HiGHS model with 0 columns and 0 rows.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"warning: Warning\nbackend and unsafe_backend are advanced routines. Read their docstrings to understand the caveats of their usage, and only call them if you wish to access low-level solver-specific functions.","category":"page"},{"location":"manual/models/#Direct-mode","page":"Models","title":"Direct mode","text":"","category":"section"},{"location":"manual/models/","page":"Models","title":"Models","text":"Using a CachingOptimizer results in an additional copy of the model being stored by JuMP in the .model_cache field. To avoid this overhead, create a JuMP model using direct_model:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = direct_model(HiGHS.Optimizer())\nA JuMP Model\nFeasibility problem with:\nVariables: 0\nModel mode: DIRECT\nSolver name: HiGHS","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"warning: Warning\nSolvers that do not support incremental modification do not support direct_model. An error will be thrown, telling you to use a CachingOptimizer instead.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"The benefit of using direct_model is that there are no extra layers (for example, Cachingoptimizer or LazyBridgeOptimizer) between model and the provided optimizer:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> backend(model)\nA HiGHS model with 0 columns and 0 rows.","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"A downside of direct mode is that there is no bridging layer. Therefore, only constraints which are natively supported by the solver are supported. For example, HiGHS.jl does not implement quadratic constraints:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"julia> model = direct_model(HiGHS.Optimizer());\n\njulia> set_silent(model)\n\njulia> @variable(model, x[1:2]);\n\njulia> @constraint(model, x[1]^2 + x[2]^2 <= 2)\nERROR: Constraints of type MathOptInterface.ScalarQuadraticFunction{Float64}-in-MathOptInterface.LessThan{Float64} are not supported by the solver.\n\nIf you expected the solver to support your problem, you may have an error in your formulation. Otherwise, consider using a different solver.\n\nThe list of available solvers, along with the problem types they support, is available at https://jump.dev/JuMP.jl/stable/installation/#Supported-solvers.\nStacktrace:","category":"page"},{"location":"manual/models/","page":"Models","title":"Models","text":"warning: Warning\nAnother downside of direct mode is that the behavior of querying solution information after modifying the problem is solver-specific. This can lead to errors, or the solver silently returning an incorrect value. See OptimizeNotCalled errors for more information.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/background/duality.md\"","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"CurrentModule = MathOptInterface\nDocTestSetup = quote\n import MathOptInterface as MOI\nend\nDocTestFilters = [r\"MathOptInterface|MOI\"]","category":"page"},{"location":"moi/background/duality/#Duality","page":"Duality","title":"Duality","text":"","category":"section"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"Conic duality is the starting point for MOI's duality conventions. When all functions are affine (or coordinate projections), and all constraint sets are closed convex cones, the model may be called a conic optimization problem.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"For a minimization problem in geometric conic form, the primal is:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n min_x in mathbbR^n a_0^T x + b_0\n\n textst A_i x + b_i in mathcalC_i i = 1 ldots m\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"and the dual is a maximization problem in standard conic form:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n max_y_1 ldots y_m -sum_i=1^m b_i^T y_i + b_0\n\n textst a_0 - sum_i=1^m A_i^T y_i = 0\n\n y_i in mathcalC_i^* i = 1 ldots m\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"where each mathcalC_i is a closed convex cone and mathcalC_i^* is its dual cone.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"For a maximization problem in geometric conic form, the primal is:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n max_x in mathbbR^n a_0^T x + b_0\n\n textst A_i x + b_i in mathcalC_i i = 1 ldots m\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"and the dual is a minimization problem in standard conic form:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n min_y_1 ldots y_m sum_i=1^m b_i^T y_i + b_0\n\n textst a_0 + sum_i=1^m A_i^T y_i = 0\n\n y_i in mathcalC_i^* i = 1 ldots m\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"A linear inequality constraint a^T x + b ge c is equivalent to a^T x + b - c in mathbbR_+, and a^T x + b le c is equivalent to a^T x + b - c in mathbbR_-. Variable-wise constraints are affine constraints with the appropriate identity mapping in place of A_i.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"For the special case of minimization LPs, the MOI primal form can be stated as:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n min_x in mathbbR^n a_0^T x + b_0\n\n textst\nA_1 x ge b_1\n A_2 x le b_2\n A_3 x = b_3\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"By applying the stated transformations to conic form, taking the dual, and transforming back into linear inequality form, one obtains the following dual:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n max_y_1y_2y_3 b_1^Ty_1 + b_2^Ty_2 + b_3^Ty_3 + b_0\n\n textst\nA_1^Ty_1 + A_2^Ty_2 + A_3^Ty_3 = a_0\n y_1 ge 0\n y_2 le 0\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"For maximization LPs, the MOI primal form can be stated as:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n max_x in mathbbR^n a_0^T x + b_0\n\n textst\nA_1 x ge b_1\n A_2 x le b_2\n A_3 x = b_3\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"and similarly, the dual is:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n min_y_1y_2y_3 -b_1^Ty_1 - b_2^Ty_2 - b_3^Ty_3 + b_0\n\n textst\nA_1^Ty_1 + A_2^Ty_2 + A_3^Ty_3 = -a_0\n y_1 ge 0\n y_2 le 0\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"warning: Warning\nFor the LP case, the signs of the feasible dual variables depend only on the sense of the corresponding primal inequality and not on the objective sense.","category":"page"},{"location":"moi/background/duality/#Duality-and-scalar-product","page":"Duality","title":"Duality and scalar product","text":"","category":"section"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"The scalar product is different from the canonical one for the sets PositiveSemidefiniteConeTriangle, LogDetConeTriangle, RootDetConeTriangle.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"If the set C_i of the section Duality is one of these three cones, then the rows of the matrix A_i corresponding to off-diagonal entries are twice the value of the coefficients field in the VectorAffineFunction for the corresponding rows. See PositiveSemidefiniteConeTriangle for details.","category":"page"},{"location":"moi/background/duality/#Dual-for-problems-with-quadratic-functions","page":"Duality","title":"Dual for problems with quadratic functions","text":"","category":"section"},{"location":"moi/background/duality/#Quadratic-Programs-(QPs)","page":"Duality","title":"Quadratic Programs (QPs)","text":"","category":"section"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"For quadratic programs with only affine conic constraints,","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign*\n min_x in mathbbR^n frac12x^TQ_0x + a_0^T x + b_0\n\n textst A_i x + b_i in mathcalC_i i = 1 ldots m\nendalign*","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"with cones mathcalC_i subseteq mathbbR^m_i for i = 1 ldots m, consider the Lagrangian function","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"L(x y) = frac12x^TQ_0x + a_0^T x + b_0 - sum_i = 1^m y_i^T (A_i x + b_i)","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"Let z(y) denote sum_i = 1^m A_i^T y_i - a_0, the Lagrangian can be rewritten as","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"L(x y) = frac12x^TQ_0x - z(y)^T x + b_0 - sum_i = 1^m y_i^T b_i","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"The condition nabla_x L(x y) = 0 gives","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"0 = nabla_x L(x y) = Q_0x + a_0 - sum_i = 1^m y_i^T b_i","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"which gives Q_0x = z(y). This allows to obtain that","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"min_x in mathbbR^n L(x y) = -frac12x^TQ_0x + b_0 - sum_i = 1^m y_i^T b_i","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"so the dual problem is","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"max_y_i in mathcalC_i^* min_x in mathbbR^n -frac12x^TQ_0x + b_0 - sum_i = 1^m y_i^T b_i","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"If Q_0 is invertible, we have x = Q_0^-1z(y) hence","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"min_x in mathbbR^n L(x y) = -frac12z(y)^TQ_0^-1z(y) + b_0 - sum_i = 1^m y_i^T b_i","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"so the dual problem is","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"max_y_i in mathcalC_i^* -frac12z(y)^TQ_0^-1z(y) + b_0 - sum_i = 1^m y_i^T b_i","category":"page"},{"location":"moi/background/duality/#Quadratically-Constrained-Quadratic-Programs-(QCQPs)","page":"Duality","title":"Quadratically Constrained Quadratic Programs (QCQPs)","text":"","category":"section"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"Given a problem with both quadratic function and quadratic objectives:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign*\n min_x in mathbbR^n frac12x^TQ_0x + a_0^T x + b_0\n\n textst frac12x^TQ_ix + a_i^T x + b_i in mathcalC_i i = 1 ldots m\nendalign*","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"with cones mathcalC_i subseteq mathbbR for i = 1 ldots m, consider the Lagrangian function","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"L(x y) = frac12x^TQ_0x + a_0^T x + b_0 - sum_i = 1^m y_i (frac12x^TQ_ix + a_i^T x + b_i)","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"A pair of primal-dual variables (x^star y^star) is optimal if","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"x^star is a minimizer of\nmin_x in mathbbR^n L(x y^star)\nThat is,\n0 = nabla_x L(x y^star) = Q_0x + a_0 - sum_i = 1^m y_i^star (Q_ix + a_i)\nand y^star is a maximizer of\nmax_y_i in mathcalC_i^* L(x^star y)\nThat is, for all i = 1 ldots m, frac12x^TQ_ix + a_i^T x + b_i is either zero or in the normal cone of mathcalC_i^* at y^star. For instance, if mathcalC_i is z in mathbbR z le 0 , this means that if frac12x^TQ_ix + a_i^T x + b_i is nonzero at x^star then y_i^star = 0. This is the classical complementary slackness condition.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"If mathcalC_i is a vector set, the discussion remains valid with y_i(frac12x^TQ_ix + a_i^T x + b_i) replaced with the scalar product between y_i and the vector of scalar-valued quadratic functions.","category":"page"},{"location":"moi/background/duality/#Dual-for-square-semidefinite-matrices","page":"Duality","title":"Dual for square semidefinite matrices","text":"","category":"section"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"The set PositiveSemidefiniteConeTriangle is a self-dual. That is, querying ConstraintDual of a PositiveSemidefiniteConeTriangle constraint returns a vector that is itself a member of PositiveSemidefiniteConeTriangle.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"However, the dual of PositiveSemidefiniteConeSquare is not so straight forward. This section explains the duality convention we use, and how it is derived.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"info: Info\nIf you have a PositiveSemidefiniteConeSquare constraint, the result matrix A from ConstraintDual is not positive semidefinite. However, A + A^top is positive semidefinite.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"Let mathcalS_+ be the cone of symmetric semidefinite matrices in the fracn(n+1)2 dimensional space of symmetric mathbbR^n times n matrices. That is, mathcalS_+ is the set PositiveSemidefiniteConeTriangle. It is well known that mathcalS_+ is a self-dual proper cone.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"Let mathcalP_+ be the cone of symmetric semidefinite matrices in the n^2 dimensional space of mathbbR^n times n matrices. That is mathcalP_+ is the set PositiveSemidefiniteConeSquare.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"In addition, let mathcalD_+ be the cone of matrices A such that A+A^top in mathcalP_+.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"mathcalP_+ is not proper because it is not solid (it is not n^2 dimensional), so it is not necessarily true that mathcalP_+^** = mathcalP_+.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"However, this is the case, because we will show that mathcalP_+^* = mathcalD_+ and mathcalD_+^* = mathcalP_+.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"First, let us see why mathcalP_+^* = mathcalD_+.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"If B is symmetric, then","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"langle AB rangle = langle A^top B^top rangle = langle A^top Brangle","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"so","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"2langle A B rangle = langle A B rangle + langle A^top B rangle = langle A + A^top B rangle","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"Therefore, langle ABrangle ge 0 for all B in mathcalP_+ if and only if langle A+A^topBrangle ge 0 for all B in mathcalP_+. Since A+A^top is symmetric, and we know that mathcalS_+ is self-dual, we have shown that mathcalP_+^* is the set of matrices A such that A+A^top in mathcalP_+.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"Second, let us see why mathcalD_+^* = mathcalP_+.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"Since A in mathcalD_+ implies that A^top in mathcalD_+, B in mathcalD_+^* means that langle A+A^topBrangle ge 0 for all A in mathcalD_+, and hence B in mathcalP_+.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"To see why it should be symmetric, simply notice that if B_ij B_ji, then langle ABrangle can be made arbitrarily small by setting A_ij = A_ij + s and A_ji = A_ji - s, with s arbitrarily large, and A stays in mathcalD_+ because A+A^top does not change.","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"Typically, the primal/dual pair for semidefinite programs is presented as:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n min langle C X rangle \ntextst langle A_k Xrangle = b_k forall k \n X in mathcalS_+\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"with the dual","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n max sum_k b_k y_k \ntextst C - sum A_k y_k in mathcalS_+\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"If we allow A_k to be non-symmetric, we should instead use:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n min langle C X rangle \ntextst langle A_k Xrangle = b_k forall k \n X in mathcalD_+\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"with the dual","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n max sum b_k y_k \ntextst C - sum A_k y_k in mathcalP_+\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"This is implemented as:","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n min langle C Z rangle + langle C - C^top S rangle \ntextst langle A_k Z rangle + langle A_k - A_k^top S rangle = b_k forall k \n Z in mathcalS_+\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"with the dual","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"beginalign\n max sum b_k y_k \ntextst C+C^top - sum (A_k+A_k^top) y_k in mathcalS_+ \n C-C^top - sum(A_k-A_k^top) y_k = 0\nendalign","category":"page"},{"location":"moi/background/duality/","page":"Duality","title":"Duality","text":"and we recover Z = X + X^top.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"EditURL = \"tips_and_tricks.jl\"","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#conic_tips_and_tricks","page":"Tips and Tricks","title":"Tips and Tricks","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"This tutorial was originally contributed by Arpit Bhatia.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"This tutorial is aimed at providing a simplistic introduction to conic programming using JuMP.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"It uses the following packages:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"using JuMP\nimport SCS\nimport LinearAlgebra","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"info: Info\nThis tutorial uses sets from MathOptInterface. By default, JuMP exports the MOI symbol as an alias for the MathOptInterface.jl package. We recommend making this more explicit in your code by adding the following lines:import MathOptInterface as MOI","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"import Random # hide\nRandom.seed!(1234) # hide\nnothing # hide","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"tip: Tip\nA good resource for learning more about functions which can be modeled using cones is the MOSEK Modeling Cookbook.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Background-theory","page":"Tips and Tricks","title":"Background theory","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"A subset C of a vector space V is a cone if forall x in C and positive scalars lambda 0, the product lambda x in C.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"A cone C is a convex cone if lambda x + (1 - lambda) y in C, for any lambda in 0 1, and any x y in C.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"Conic programming problems are convex optimization problems in which a convex function is minimized over the intersection of an affine subspace and a convex cone. An example of a conic-form minimization problems, in the primal form is:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"beginaligned\n min_x in mathbbR^n a_0^T x + b_0 \n textst A_i x + b_i in mathcalC_i i = 1 ldots m\nendaligned","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The corresponding dual problem is:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"beginaligned\n max_y_1 ldots y_m -sum_i=1^m b_i^T y_i + b_0 \n textst a_0 - sum_i=1^m A_i^T y_i = 0 \n y_i in mathcalC_i^* i = 1 ldots m\nendaligned","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"where each mathcalC_i is a closed convex cone and mathcalC_i^* is its dual cone.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Second-Order-Cone","page":"Tips and Tricks","title":"Second-Order Cone","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The SecondOrderCone (or Lorentz Cone) of dimension n is a cone of the form:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"K_soc = (t x) in mathbbR^n t ge x_2 ","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"It is most commonly used to represent the L2-norm of the vector x:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, x[1:3])\n@variable(model, t)\n@constraint(model, sum(x) == 1)\n@constraint(model, [t; x] in SecondOrderCone())\n@objective(model, Min, t)\noptimize!(model)\nvalue(t), value.(x)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Rotated-Second-Order-Cone","page":"Tips and Tricks","title":"Rotated Second-Order Cone","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"A Second-Order Cone rotated by pi4 in the (x_1x_2) plane is called a RotatedSecondOrderCone. It is a cone of the form:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"K_rsoc = (tux) in mathbbR^n 2tu ge x_2^2 tu ge 0 ","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"When u = 0.5, it represents the sum of squares of a vector x:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"data = [1.0, 2.0, 3.0, 4.0]\ntarget = [0.45, 1.04, 1.51, 1.97]\nmodel = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, θ)\n@variable(model, t)\n@expression(model, residuals, θ * data .- target)\n@constraint(model, [t; 0.5; residuals] in RotatedSecondOrderCone())\n@objective(model, Min, t)\noptimize!(model)\nvalue(θ), value(t)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Exponential-Cone","page":"Tips and Tricks","title":"Exponential Cone","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The MOI.ExponentialCone is a set of the form:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"K_exp = (xyz) in mathbbR^3 y exp (xy) le z y 0 ","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"It can be used to model problems involving log and exp.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Exponential","page":"Tips and Tricks","title":"Exponential","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"To model exp(x) le z, use (x, 1, z):","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, x == 1.5)\n@variable(model, z)\n@objective(model, Min, z)\n@constraint(model, [x, 1, z] in MOI.ExponentialCone())\noptimize!(model)\nvalue(z), exp(1.5)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Logarithm","page":"Tips and Tricks","title":"Logarithm","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"To model x le log(z), use (x, 1, z):","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, x)\n@variable(model, z == 1.5)\n@objective(model, Max, x)\n@constraint(model, [x, 1, z] in MOI.ExponentialCone())\noptimize!(model)\nvalue(x), log(1.5)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Log-sum-exp","page":"Tips and Tricks","title":"Log-sum-exp","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"To model t ge logleft(sum e^x_iright), use:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"N = 3\nx0 = rand(N)\nmodel = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, x[i = 1:N] == x0[i])\n@variable(model, t)\n@objective(model, Min, t)\n@variable(model, u[1:N])\n@constraint(model, sum(u) <= 1)\n@constraint(model, [i = 1:N], [x[i] - t, 1, u[i]] in MOI.ExponentialCone())\noptimize!(model)\nvalue(t), log(sum(exp.(x0)))","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Entropy","page":"Tips and Tricks","title":"Entropy","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The entropy maximization problem consists of maximizing the entropy function, H(x) = -xlogx subject to linear inequality constraints.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"beginaligned\n max - sum_i=1^n x_i log x_i \n textst mathbf1^top x = 1 \n Ax leq b\nendaligned","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"We can model this problem using an exponential cone by using the following transformation:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"tleq -xlogx iff tleq xlog(1x) iff (t x 1) in K_exp","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"Thus, our problem becomes,","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"beginaligned\n max 1^Tt \n textst Ax leq b \n 1^T x = 1 \n (t_i x_i 1) in K_exp forall i = 1 ldots n \nendaligned","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"m, n = 10, 15\nA, b = randn(m, n), rand(m, 1)\nmodel = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, t[1:n])\n@variable(model, x[1:n])\n@objective(model, Max, sum(t))\n@constraint(model, sum(x) == 1)\n@constraint(model, A * x .<= b)\n@constraint(model, [i = 1:n], [t[i], x[i], 1] in MOI.ExponentialCone())\noptimize!(model)\nobjective_value(model)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The MOI.ExponentialCone has a dual, the MOI.DualExponentialCone, that offers an alternative formulation that can be more efficient for some formulations.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"There is also the MOI.RelativeEntropyCone for explicitly encoding the relative entropy function","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, t)\n@variable(model, x[1:n])\n@objective(model, Max, -t)\n@constraint(model, sum(x) == 1)\n@constraint(model, A * x .<= b)\n@constraint(model, [t; ones(n); x] in MOI.RelativeEntropyCone(2n + 1))\noptimize!(model)\nobjective_value(model)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#PowerCone","page":"Tips and Tricks","title":"PowerCone","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The MOI.PowerCone is a three-dimensional set parameterized by a scalar value α. It has the form:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"K_p = (xyz) in mathbbR^3 x^alpha y^1-alpha ge z x ge 0 y ge 0 ","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The power cone permits a number of reformulations. For example, when p 1, we can model t ge x^p using the power cone (t 1 x) with alpha = 1 p. Thus, to model t ge x^3 with x ge 0","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, t)\n@variable(model, x >= 1.5)\n@constraint(model, [t, 1, x] in MOI.PowerCone(1 / 3))\n@objective(model, Min, t)\noptimize!(model)\nvalue(t), value(x)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The MOI.PowerCone has a dual, the MOI.DualPowerCone, that offers an alternative formulation that can be more efficient for some formulations.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#P-Norm","page":"Tips and Tricks","title":"P-Norm","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The p-norm x_p = left(sumlimits_i x_i^pright)^frac1p can be modeled using MOI.PowerCones. See the Mosek Modeling Cookbook for the derivation.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"function p_norm(x::Vector, p)\n N = length(x)\n model = Model(SCS.Optimizer)\n set_silent(model)\n @variable(model, r[1:N])\n @variable(model, t)\n @constraint(model, [i = 1:N], [r[i], t, x[i]] in MOI.PowerCone(1 / p))\n @constraint(model, sum(r) == t)\n @objective(model, Min, t)\n optimize!(model)\n return value(t)\nend\n\nx = rand(5);\nLinearAlgebra.norm(x, 4), p_norm(x, 4)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Positive-Semidefinite-Cone","page":"Tips and Tricks","title":"Positive Semidefinite Cone","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The set of positive semidefinite matrices (PSD) of dimension n form a cone in mathbbR^n. We write this set mathematically as:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"mathcalS_+^n = X in mathcalS^n mid z^T X z geq 0 forall zin mathbbR^n ","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"A PSD cone is represented in JuMP using the MOI sets PositiveSemidefiniteConeTriangle (for upper triangle of a PSD matrix) and PositiveSemidefiniteConeSquare (for a complete PSD matrix). However, it is preferable to use the PSDCone shortcut as illustrated below.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Example:-largest-eigenvalue-of-a-symmetric-matrix","page":"Tips and Tricks","title":"Example: largest eigenvalue of a symmetric matrix","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"Suppose A has eigenvalues lambda_1 geq lambda_2 ldots geq lambda_n. Then the matrix t I-A has eigenvalues t-lambda_1 t-lambda_2 ldots t-lambda_n. Note that t I-A is PSD exactly when all these eigenvalues are non-negative, and this happens for values t geq lambda_1. Thus, we can model the problem of finding the largest eigenvalue of a symmetric matrix as:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"beginaligned\nlambda_1 = min t \ntext st t I-A succeq 0\nendaligned","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"A = [3 2 4; 2 0 2; 4 2 3]\nI = Matrix{Float64}(LinearAlgebra.I, 3, 3)\nmodel = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, t)\n@objective(model, Min, t)\n@constraint(model, t .* I - A in PSDCone())\noptimize!(model)\nobjective_value(model)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#GeometricMeanCone","page":"Tips and Tricks","title":"GeometricMeanCone","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The MOI.GeometricMeanCone is a cone of the form:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"K_geo = (t x) in mathbbR^n x ge 0 t le sqrtn-1x_1 x_2 cdots x_n-1 ","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, x[1:4])\n@variable(model, t)\n@constraint(model, sum(x) == 1)\n@constraint(model, [t; x] in MOI.GeometricMeanCone(5))\noptimize!(model)\nvalue(t), value.(x)","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#RootDetCone","page":"Tips and Tricks","title":"RootDetCone","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The MOI.RootDetConeSquare is a cone of the form:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"K = (t X) in mathbbR^1+d^2 t le det(X)^frac1d ","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, t)\n@variable(model, X[1:2, 1:2])\n@objective(model, Max, t)\n@constraint(model, [t; vec(X)] in MOI.RootDetConeSquare(2))\n@constraint(model, X .== [2 1; 1 3])\noptimize!(model)\nvalue(t), sqrt(LinearAlgebra.det(value.(X)))","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"If X is symmetric, then you can use MOI.RootDetConeTriangle instead. This can be more efficient because the solver does not need to add additional constraints to ensure X is symmetric.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"When forming the function, use triangle_vec to obtain the column-wise upper triangle of the matrix as a vector in the order that JuMP requires.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, t)\n@variable(model, X[1:2, 1:2], Symmetric)\n@objective(model, Max, t)\n@constraint(model, [t; triangle_vec(X)] in MOI.RootDetConeTriangle(2))\n@constraint(model, X .== [2 1; 1 3])\noptimize!(model)\nvalue(t), sqrt(LinearAlgebra.det(value.(X)))","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#LogDetCone","page":"Tips and Tricks","title":"LogDetCone","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"The MOI.LogDetConeSquare is a cone of the form:","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"K = (t u X) in mathbbR^2+d^2 t le u log(det(X u)) ","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, t)\n@variable(model, u)\n@variable(model, X[1:2, 1:2])\n@objective(model, Max, t)\n@constraint(model, [t; u; vec(X)] in MOI.LogDetConeSquare(2))\n@constraint(model, X .== [2 1; 1 3])\n@constraint(model, u == 0.5)\noptimize!(model)\nvalue(t), 0.5 * log(LinearAlgebra.det(value.(X) ./ 0.5))","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"If X is symmetric, then you can use MOI.LogDetConeTriangle instead. This can be more efficient because the solver does not need to add additional constraints to ensure X is symmetric.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"When forming the function, use triangle_vec to obtain the column-wise upper triangle of the matrix as a vector in the order that JuMP requires.","category":"page"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"model = Model(SCS.Optimizer)\nset_silent(model)\n@variable(model, t)\n@variable(model, u)\n@variable(model, X[1:2, 1:2], Symmetric)\n@objective(model, Max, t)\n@constraint(model, [t; u; triangle_vec(X)] in MOI.LogDetConeTriangle(2))\n@constraint(model, X .== [2 1; 1 3])\n@constraint(model, u == 0.5)\noptimize!(model)\nvalue(t), 0.5 * log(LinearAlgebra.det(value.(X) ./ 0.5))","category":"page"},{"location":"tutorials/conic/tips_and_tricks/#Other-Cones-and-Functions","page":"Tips and Tricks","title":"Other Cones and Functions","text":"","category":"section"},{"location":"tutorials/conic/tips_and_tricks/","page":"Tips and Tricks","title":"Tips and Tricks","text":"For other cones supported by JuMP, check out the MathOptInterface Manual.","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"EditURL = \"https://github.com/jump-dev/BARON.jl/blob/v0.8.2/README.md\"","category":"page"},{"location":"packages/BARON/#BARON.jl","page":"jump-dev/BARON.jl","title":"BARON.jl","text":"","category":"section"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"(Image: Build Status) (Image: codecov)","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"BARON.jl is a wrapper for BARON by The Optimization Firm.","category":"page"},{"location":"packages/BARON/#Affiliation","page":"jump-dev/BARON.jl","title":"Affiliation","text":"","category":"section"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"This wrapper is maintained by the JuMP community and is not officially supported by The Optimization Firm.","category":"page"},{"location":"packages/BARON/#License","page":"jump-dev/BARON.jl","title":"License","text":"","category":"section"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"BARON.jl is licensed under the MIT License.","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"The underlying solver is a closed-source commercial product for which you must obtain a license from The Optimization Firm, although a small trial version is available for free.","category":"page"},{"location":"packages/BARON/#Installation","page":"jump-dev/BARON.jl","title":"Installation","text":"","category":"section"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"First, download a copy of the BARON solver and unpack the executable in a location of your choosing.","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"Once installed, set the BARON_EXEC environment variable pointing to the BARON executable (full path, including file name as it differs across platforms), and run Pkg.add(\"BARON\"). For example:","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"ENV[\"BARON_EXEC\"] = \"/path/to/baron.exe\"\nusing Pkg\nPkg.add(\"BARON\")","category":"page"},{"location":"packages/BARON/#Use-with-JuMP","page":"jump-dev/BARON.jl","title":"Use with JuMP","text":"","category":"section"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"using JuMP, BARON\nmodel = Model(BARON.Optimizer)","category":"page"},{"location":"packages/BARON/#MathOptInterface-API","page":"jump-dev/BARON.jl","title":"MathOptInterface API","text":"","category":"section"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"The BARON optimizer supports the following constraints and attributes.","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"List of supported objective functions:","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}\nMOI.ObjectiveFunction{MOI.ScalarQuadraticFunction{Float64}}\nMOI.ObjectiveFunction{MOI.ScalarNonlinearFunction}","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"List of supported variable types:","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"MOI.Reals","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"List of supported constraint types:","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"MOI.ScalarAffineFunction{Float64} in MOI.EqualTo{Float64}\nMOI.ScalarAffineFunction{Float64} in MOI.GreaterThan{Float64}\nMOI.ScalarAffineFunction{Float64} in MOI.Interval{Float64}\nMOI.ScalarAffineFunction{Float64} in MOI.LessThan{Float64}\nMOI.ScalarQuadraticFunction{Float64} in MOI.EqualTo{Float64}\nMOI.ScalarQuadraticFunction{Float64} in MOI.GreaterThan{Float64}\nMOI.ScalarQuadraticFunction{Float64} in MOI.Interval{Float64}\nMOI.ScalarQuadraticFunction{Float64} in MOI.LessThan{Float64}\nMOI.ScalarNonlinearFunction in MOI.EqualTo{Float64}\nMOI.ScalarNonlinearFunction in MOI.GreaterThan{Float64}\nMOI.ScalarNonlinearFunction in MOI.Interval{Float64}\nMOI.ScalarNonlinearFunction in MOI.LessThan{Float64}\nMOI.VariableIndex in MOI.EqualTo{Float64}\nMOI.VariableIndex in MOI.GreaterThan{Float64}\nMOI.VariableIndex in MOI.Integer\nMOI.VariableIndex in MOI.Interval{Float64}\nMOI.VariableIndex in MOI.LessThan{Float64}\nMOI.VariableIndex in MOI.ZeroOne","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"List of supported model attributes:","category":"page"},{"location":"packages/BARON/","page":"jump-dev/BARON.jl","title":"jump-dev/BARON.jl","text":"MOI.NLPBlock()\nMOI.ObjectiveSense()","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"EditURL = \"getting_started_with_julia.jl\"","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Getting-started-with-Julia","page":"Getting started with Julia","title":"Getting started with Julia","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Because JuMP is embedded in Julia, knowing some basic Julia is important before you start learning JuMP.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nThis tutorial is designed to provide a minimalist crash course in the basics of Julia. You can find resources that provide a more comprehensive introduction to Julia here.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Installing-Julia","page":"Getting started with Julia","title":"Installing Julia","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"To install Julia, download the latest stable release, then follow the platform specific install instructions.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nUnless you know otherwise, you probably want the 64-bit version.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Next, you need an IDE to develop in. VS Code is a popular choice, so follow these install instructions.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Julia can also be used with Jupyter notebooks or the reactive notebooks of Pluto.jl.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#The-Julia-REPL","page":"Getting started with Julia","title":"The Julia REPL","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"The main way of interacting with Julia is via its REPL (Read Evaluate Print Loop). To access the REPL, start the Julia executable to arrive at the julia> prompt, and then start coding:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"1 + 1","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"As your programs become larger, write a script as a text file, and then run that file using:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"julia> include(\"path/to/file.jl\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"warning: Warning\nBecause of Julia's startup latency, running scripts from the command line like the following is slow:$ julia path/to/file.jlUse the REPL or a notebook instead, and read The \"time-to-first-solve\" issue for more information.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Code-blocks-in-this-documentation","page":"Getting started with Julia","title":"Code blocks in this documentation","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"In this documentation you'll see a mix of code examples with and without the julia>.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"The Julia prompt is mostly used to demonstrate short code snippets, and the output is exactly what you will see if run from the REPL.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Blocks without the julia> can be copy-pasted into the REPL, but they are used because they enable richer output like plots or LaTeX to be displayed in the online and PDF versions of the documentation. If you run them from the REPL you may see different output.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Where-to-get-help","page":"Getting started with Julia","title":"Where to get help","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Read the documentation\nJuMP https://jump.dev/JuMP.jl/stable/\nJulia https://docs.julialang.org/en/v1/\nAsk (or browse) the Julia community forum: https://discourse.julialang.org\nIf the question is JuMP-related, ask in the Optimization (Mathematical) section, or tag your question with \"jump\"","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"To access the built-in help at the REPL, type ? to enter help-mode, followed by the name of the function to lookup:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"help?> print\nsearch: print println printstyled sprint isprint prevind parentindices precision escape_string\n\n print([io::IO], xs...)\n\n Write to io (or to the default output stream stdout if io is not given) a canonical\n (un-decorated) text representation. The representation used by print includes minimal formatting\n and tries to avoid Julia-specific details.\n\n print falls back to calling show, so most types should just define show. Define print if your\n type has a separate \"plain\" representation. For example, show displays strings with quotes, and\n print displays strings without quotes.\n\n string returns the output of print as a string.\n\n Examples\n ≡≡≡≡≡≡≡≡≡≡\n\n julia> print(\"Hello World!\")\n Hello World!\n julia> io = IOBuffer();\n\n julia> print(io, \"Hello\", ' ', :World!)\n\n julia> String(take!(io))\n \"Hello World!\"","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Numbers-and-arithmetic","page":"Getting started with Julia","title":"Numbers and arithmetic","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Since we want to solve optimization problems, we're going to be using a lot of math. Luckily, Julia is great for math, with all the usual operators:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"1 + 1\n1 - 2\n2 * 2\n4 / 5\n3^2","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Did you notice how Julia didn't print .0 after some of the numbers? Julia is a dynamic language, which means you never have to explicitly declare the type of a variable. However, in the background, Julia is giving each variable a type. Check the type of something using the typeof function:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"typeof(1)\ntypeof(1.0)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Here 1 is an Int64, which is an integer with 64 bits of precision, and 1.0 is a Float64, which is a floating point number with 64-bits of precision.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nIf you aren't familiar with floating point numbers, make sure to read the Floating point numbers section.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"We create complex numbers using im:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"x = 2 + 1im\nreal(x)\nimag(x)\ntypeof(x)\nx * (1 - 2im)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"info: Info\nThe curly brackets surround what we call the parameters of a type. You can read Complex{Int64} as \"a complex number, where the real and imaginary parts are represented by Int64.\" If we call typeof(1.0 + 2.0im) it will be Complex{Float64}, which a complex number with the parts represented by Float64.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"There are also some cool things like an irrational representation of π.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"π","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nTo make π (and most other Greek letters), type \\pi and then press [TAB].","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"typeof(π)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"However, if we do math with irrational numbers, they get converted to Float64:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"typeof(2π / 3)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Floating-point-numbers","page":"Getting started with Julia","title":"Floating point numbers","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"warning: Warning\nIf you aren't familiar with floating point numbers, make sure to read this section carefully.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"A Float64 is a floating point approximation of a real number using 64-bits of information.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Because it is an approximation, things we know hold true in mathematics don't hold true in a computer. For example:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"0.1 * 3 == 0.3","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"A more complicated example is:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"sin(2π / 3) == √3 / 2","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nGet √ by typing \\sqrt then press [TAB].","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Let's see what the differences are:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"0.1 * 3 - 0.3\nsin(2π / 3) - √3 / 2","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"They are small, but not zero.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"One way of explaining this difference is to consider how we would write 1 / 3 and 2 / 3 using only four digits after the decimal point. We would write 1 / 3 as 0.3333, and 2 / 3 as 0.6667. So, despite the fact that 2 * (1 / 3) == 2 / 3, 2 * 0.3333 == 0.6666 != 0.6667.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Let's try that again using ≈ (\\approx + [TAB]) instead of ==:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"0.1 * 3 ≈ 0.3\nsin(2π / 3) ≈ √3 / 2","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"≈ is a clever way of calling the isapprox function:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"isapprox(sin(2π / 3), √3 / 2; atol = 1e-8)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"warning: Warning\nFloating point is the reason solvers use tolerances when they solve optimization models. A common mistake you're likely to make is checking whether a binary variable is 0 using value(z) == 0. Always remember to use something like isapprox when comparing floating point numbers.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Note that isapprox will always return false if one of the number being compared is 0 and atol is zero (its default value).","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"1e-300 ≈ 0.0","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"so always set a nonzero value of atol if one of the arguments can be zero.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"isapprox(1e-9, 0.0; atol = 1e-8)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nGurobi has a good series of articles on the implications of floating point in optimization if you want to read more.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"If you aren't careful, floating point arithmetic can throw up all manner of issues. For example:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"1 + 1e-16 == 1","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"It even turns out that floating point numbers aren't associative:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"(1 + 1e-16) - 1e-16 == 1 + (1e-16 - 1e-16)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"It's important to note that this issue isn't Julia-specific. It happens in every programming language (try it out in Python).","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Vectors,-matrices,-and-arrays","page":"Getting started with Julia","title":"Vectors, matrices, and arrays","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Similar to MATLAB, Julia has native support for vectors, matrices and tensors; all of which are represented by arrays of different dimensions. Vectors are constructed by comma-separated elements surrounded by square brackets:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"b = [5, 6]","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Matrices can be constructed with spaces separating the columns, and semicolons separating the rows:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"A = [1.0 2.0; 3.0 4.0]","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"We can do linear algebra:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"x = A \\ b","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"info: Info\nHere is floating point at work again; x is approximately [-4, 4.5].","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"A * x\nA * x ≈ b","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Note that when multiplying vectors and matrices, dimensions matter. For example, you can't multiply a vector by a vector:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"try #hide\n b * b\ncatch err #hide\n showerror(stderr, err) #hide\nend #hide","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"But multiplying transposes works:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"b' * b\nb * b'","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Other-common-types","page":"Getting started with Julia","title":"Other common types","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/#Comments","page":"Getting started with Julia","title":"Comments","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Although not technically a type, code comments begin with the # character:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"1 + 1 # This is a comment","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Multiline comments begin with #= and end with =#:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"#=\nHere is a\nmultiline comment\n=#","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Comments can even be nested inside expressions. This is sometimes helpful when documenting inputs to functions:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"isapprox(\n sin(π),\n 0.0;\n #= We need an explicit atol here because we are comparing with 0 =#\n atol = 0.001,\n)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Strings","page":"Getting started with Julia","title":"Strings","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Double quotes are used for strings:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"typeof(\"This is Julia\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Unicode is fine in strings:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"typeof(\"π is about 3.1415\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Use println to print a string:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"println(\"Hello, World!\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Use $() to interpolate values into a string:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"x = 123\nprintln(\"The value of x is: $(x)\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Use triple-quotes for multiline strings:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"s = \"\"\"\nHere is\na\nmultiline string\n\"\"\"\n\nprintln(s)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Symbols","page":"Getting started with Julia","title":"Symbols","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Julia Symbols are a data structure from the compiler that represent Julia identifiers (that is, variable names).","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"println(\"The value of x is: $(eval(:x))\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"warning: Warning\nWe used eval here to demonstrate how Julia links Symbols to variables. However, avoid calling eval in your code. It is usually a sign that your code is doing something that could be more easily achieved a different way. The Community Forum is a good place to ask for advice on alternative approaches.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"typeof(:x)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"You can think of a Symbol as a String that takes up less memory, and that can't be modified.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Convert between String and Symbol using their constructors:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"String(:abc)\nSymbol(\"abc\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nSymbols are often (ab)used to stand in for a String or an Enum, when one of the latter is likely a better choice. The JuMP Style guide recommends reserving Symbols for identifiers. See @enum vs. Symbol for more.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Tuples","page":"Getting started with Julia","title":"Tuples","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Julia makes extensive use of a simple data structure called Tuples. Tuples are immutable collections of values. For example:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"t = (\"hello\", 1.2, :foo)\ntypeof(t)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Tuples can be accessed by index, similar to arrays:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"t[2]","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"And they can be \"unpacked\" like so:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"a, b, c = t\nb","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"The values can also be given names, which is a convenient way of making light-weight data structures.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"t = (word = \"hello\", num = 1.2, sym = :foo)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Values can be accessed using dot syntax:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"t.word","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Dictionaries","page":"Getting started with Julia","title":"Dictionaries","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Similar to Python, Julia has native support for dictionaries. Dictionaries provide a very generic way of mapping keys to values. For example, a map of integers to strings:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"d1 = Dict(1 => \"A\", 2 => \"B\", 4 => \"D\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"info: Info\nType-stuff again: Dict{Int64,String} is a dictionary with Int64 keys and String values.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Looking up a value uses the bracket syntax:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"d1[2]","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Dictionaries support non-integer keys and can mix data types:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Dict(\"A\" => 1, \"B\" => 2.5, \"D\" => 2 - 3im)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"info: Info\nJulia types form a hierarchy. Here the value type of the dictionary is Number, which is a generalization of Int64, Float64, and Complex{Int}. Leaf nodes in this hierarchy are called \"concrete\" types, and all others are called \"Abstract.\" In general, having variables with abstract types like Number can lead to slower code, so you should try to make sure every element in a dictionary or vector is the same type. For example, in this case we could represent every element as a Complex{Float64}:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Dict(\"A\" => 1.0 + 0.0im, \"B\" => 2.5 + 0.0im, \"D\" => 2.0 - 3.0im)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Dictionaries can be nested:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"d2 = Dict(\"A\" => 1, \"B\" => 2, \"D\" => Dict(:foo => 3, :bar => 4))\nd2[\"B\"]\nd2[\"D\"][:foo]","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Structs","page":"Getting started with Julia","title":"Structs","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"You can define custom datastructures with struct:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"struct MyStruct\n x::Int\n y::String\n z::Dict{Int,Int}\nend\n\na = MyStruct(1, \"a\", Dict(2 => 3))\na.x","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"By default, these are not mutable","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"try #hide\n a.x = 2\ncatch err #hide\n showerror(stderr, err) #hide\nend #hide","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"However, you can declare a mutable struct which is mutable:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"mutable struct MyStructMutable\n x::Int\n y::String\n z::Dict{Int,Int}\nend\n\na = MyStructMutable(1, \"a\", Dict(2 => 3))\na.x\na.x = 2\na","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Loops","page":"Getting started with Julia","title":"Loops","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Julia has native support for for-each style loops with the syntax for in end:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"for i in 1:5\n println(i)\nend","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"info: Info\nRanges are constructed as start:stop, or start:step:stop.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"for i in 1.2:1.1:5.6\n println(i)\nend","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"This for-each loop also works with dictionaries:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"for (key, value) in Dict(\"A\" => 1, \"B\" => 2.5, \"D\" => 2 - 3im)\n println(\"$(key): $(value)\")\nend","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Note that in contrast to vector languages like MATLAB and R, loops do not result in a significant performance degradation in Julia.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Control-flow","page":"Getting started with Julia","title":"Control flow","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Julia control flow is similar to MATLAB, using the keywords if-elseif-else-end, and the logical operators || and && for or and and respectively:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"for i in 0:5:15\n if i < 5\n println(\"$(i) is less than 5\")\n elseif i < 10\n println(\"$(i) is less than 10\")\n else\n if i == 10\n println(\"the value is 10\")\n else\n println(\"$(i) is bigger than 10\")\n end\n end\nend","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Comprehensions","page":"Getting started with Julia","title":"Comprehensions","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Similar to languages like Haskell and Python, Julia supports the use of simple loops in the construction of arrays and dictionaries, called comprehensions.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"A list of increasing integers:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"[i for i in 1:5]","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Matrices can be built by including multiple indices:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"[i * j for i in 1:5, j in 5:10]","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Conditional statements can be used to filter out some values:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"[i for i in 1:10 if i % 2 == 1]","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"A similar syntax can be used for building dictionaries:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Dict(\"$(i)\" => i for i in 1:10 if i % 2 == 1)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Functions","page":"Getting started with Julia","title":"Functions","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"A simple function is defined as follows:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"function print_hello()\n return println(\"hello\")\nend\nprint_hello()","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Arguments can be added to a function:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"function print_it(x)\n return println(x)\nend\nprint_it(\"hello\")\nprint_it(1.234)\nprint_it(:my_id)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Optional keyword arguments are also possible:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"function print_it(x; prefix = \"value:\")\n return println(\"$(prefix) $(x)\")\nend\nprint_it(1.234)\nprint_it(1.234; prefix = \"val:\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"The keyword return is used to specify the return values of a function:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"function mult(x; y = 2.0)\n return x * y\nend\n\nmult(4.0)\nmult(4.0; y = 5.0)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Anonymous-functions","page":"Getting started with Julia","title":"Anonymous functions","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"The syntax input -> output creates an anonymous function. These are most useful when passed to other functions. For example:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"f = x -> x^2\nf(2)\nmap(x -> x^2, 1:4)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Type-parameters","page":"Getting started with Julia","title":"Type parameters","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"We can constrain the inputs to a function using type parameters, which are :: followed by the type of the input we want. For example:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"function foo(x::Int)\n return x^2\nend\n\nfunction foo(x::Float64)\n return exp(x)\nend\n\nfunction foo(x::Number)\n return x + 1\nend\n\nfoo(2)\nfoo(2.0)\nfoo(1 + 1im)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"But what happens if we call foo with something we haven't defined it for?","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"try #hide\n foo([1, 2, 3])\ncatch err #hide\n showerror(stderr, err) #hide\nend #hide","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"A MethodError means that you passed a function something that didn't match the type that it was expecting. In this case, the error message says that it doesn't know how to handle an Vector{Int64}, but it does know how to handle Float64, Int64, and Number.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nRead the \"Closest candidates\" part of the error message carefully to get a hint as to what was expected.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Broadcasting","page":"Getting started with Julia","title":"Broadcasting","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"In the example above, we didn't define what to do if f was passed a Vector. Luckily, Julia provides a convenient syntax for mapping f element-wise over arrays. Just add a . between the name of the function and the opening (. This works for any function, including functions with multiple arguments. For example:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"foo.([1, 2, 3])","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nGet a MethodError when calling a function that takes a Vector, Matrix, or Array? Try broadcasting.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Mutable-vs-immutable-objects","page":"Getting started with Julia","title":"Mutable vs immutable objects","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Some types in Julia are mutable, which means you can change the values inside them. A good example is an array. You can modify the contents of an array without having to make a new array.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"In contrast, types like Float64 are immutable. You cannot modify the contents of a Float64.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"This is something to be aware of when passing types into functions. For example:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"function mutability_example(mutable_type::Vector{Int}, immutable_type::Int)\n mutable_type[1] += 1\n immutable_type += 1\n return\nend\n\nmutable_type = [1, 2, 3]\nimmutable_type = 1\n\nmutability_example(mutable_type, immutable_type)\n\nprintln(\"mutable_type: $(mutable_type)\")\nprintln(\"immutable_type: $(immutable_type)\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Because Vector{Int} is a mutable type, modifying the variable inside the function changed the value outside of the function. In contrast, the change to immutable_type didn't modify the value outside the function.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"You can check mutability with the isimmutable function:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"isimmutable([1, 2, 3])\nisimmutable(1)","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#The-package-manager","page":"Getting started with Julia","title":"The package manager","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/#Installing-packages","page":"Getting started with Julia","title":"Installing packages","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"No matter how wonderful Julia's base language is, at some point you will want to use an extension package. Some of these are built-in, for example random number generation is available in the Random package in the standard library. These packages are loaded with the commands using and import.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"using Random # The equivalent of Python's `from Random import *`\nimport Random # The equivalent of Python's `import Random`\n\nRandom.seed!(33)\n\n[rand() for i in 1:10]","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"The Package Manager is used to install packages that are not part of Julia's standard library.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"For example the following can be used to install JuMP,","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"using Pkg\nPkg.add(\"JuMP\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"For a complete list of registered Julia packages see the package listing at JuliaHub.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"From time to you may wish to use a Julia package that is not registered. In this case a git repository URL can be used to install the package.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"using Pkg\nPkg.add(\"https://github.com/user-name/MyPackage.jl.git\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/#Package-environments","page":"Getting started with Julia","title":"Package environments","text":"","category":"section"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"By default, Pkg.add will add packages to Julia's global environment. However, Julia also has built-in support for virtual environments.","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"Activate a virtual environment with:","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"import Pkg; Pkg.activate(\"/path/to/environment\")","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"You can see what packages are installed in the current environment with Pkg.status().","category":"page"},{"location":"tutorials/getting_started/getting_started_with_julia/","page":"Getting started with Julia","title":"Getting started with Julia","text":"tip: Tip\nWe strongly recommend you create a Pkg environment for each project that you create in Julia, and add only the packages that you need, instead of adding lots of packages to the global environment. The Pkg manager documentation has more information on this topic.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"EditURL = \"tips_and_tricks.jl\"","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#linear_tips_and_tricks","page":"Tips and tricks","title":"Tips and tricks","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"This tutorial was originally contributed by Arpit Bhatia.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"tip: Tip\nA good source of tips is the Mosek Modeling Cookbook.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"This tutorial collates some tips and tricks you can use when formulating mixed-integer programs. It uses the following packages:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"using JuMP","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Absolute-value","page":"Tips and tricks","title":"Absolute value","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"To model the absolute value function t ge x, there are a few options. In all cases, these reformulations only work if you are minimizing t \"down\" into x. They do not work if you are trying to maximize x.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Option-1","page":"Tips and tricks","title":"Option 1","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"This option adds two linear inequality constraints:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x)\n@variable(model, t)\n@constraint(model, t >= x)\n@constraint(model, t >= -x)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Option-2","page":"Tips and tricks","title":"Option 2","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"This option uses two non-negative variables and forms expressions for x and t:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, z[1:2] >= 0)\n@expression(model, t, z[1] + z[2])\n@expression(model, x, z[1] - z[2])","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Option-3","page":"Tips and tricks","title":"Option 3","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"This option uses MOI.NormOneCone and lets JuMP choose the reformulation:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x)\n@variable(model, t)\n@constraint(model, [t; x] in MOI.NormOneCone(2))","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#L1-norm","page":"Tips and tricks","title":"L1-norm","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"To model min x_1, that is, min sumlimits_i x_i, use the MOI.NormOneCone:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:3])\n@variable(model, t)\n@constraint(model, [t; x] in MOI.NormOneCone(1 + length(x)))\n@objective(model, Min, t)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Infinity-norm","page":"Tips and tricks","title":"Infinity-norm","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"To model min x_infty, that is, min maxlimits_i x_i, use the MOI.NormInfinityCone:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:3])\n@variable(model, t)\n@constraint(model, [t; x] in MOI.NormInfinityCone(1 + length(x)))\n@objective(model, Min, t)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Max","page":"Tips and tricks","title":"Max","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"To model t ge maxx y, do:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, t)\n@variable(model, x)\n@variable(model, y)\n@constraint(model, t >= x)\n@constraint(model, t >= y)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"This reformulation does not work for t ge minx y.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Min","page":"Tips and tricks","title":"Min","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"To model t le minx y, do:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, t)\n@variable(model, x)\n@variable(model, y)\n@constraint(model, t <= x)\n@constraint(model, t <= y)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"This reformulation does not work for t le maxx y.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Boolean-operators","page":"Tips and tricks","title":"Boolean operators","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Binary variables can be used to construct logical operators. Here are some example.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Or","page":"Tips and tricks","title":"Or","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"x_3 = x_1 lor x_2","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:3], Bin)\n@constraints(model, begin\n x[1] <= x[3]\n x[2] <= x[3]\n x[3] <= x[1] + x[2]\nend)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#And","page":"Tips and tricks","title":"And","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"x_3 = x_1 land x_2","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:3], Bin)\n@constraints(model, begin\n x[3] <= x[1]\n x[3] <= x[2]\n x[3] >= x[1] + x[2] - 1\nend)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Not","page":"Tips and tricks","title":"Not","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"x_1 neg x_2","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:2], Bin)\n@constraint(model, x[1] == 1 - x[2])","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Implies","page":"Tips and tricks","title":"Implies","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"x_1 implies x_2","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:2], Bin)\n@constraint(model, x[1] <= x[2])","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Disjunctions","page":"Tips and tricks","title":"Disjunctions","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/#Problem","page":"Tips and tricks","title":"Problem","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Suppose that we have two constraints a^top x leq b and c^top x leq d, and we want at least one to hold.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Trick","page":"Tips and tricks","title":"Trick","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Introduce a \"big-M\" multiplied by a binary variable to relax one of the constraints.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Example Either x_1 leq 1 or x_2 leq 2.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:2])\n@variable(model, y, Bin)\nM = 100\n@constraint(model, x[1] <= 1 + M * y)\n@constraint(model, x[2] <= 2 + M * (1 - y))","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"warning: Warning\nIf M is too small, the solution may be suboptimal. If M is too big, the solver may encounter numerical issues. Try to use domain knowledge to choose an M that is just right. Gurobi has a good documentation section on this topic.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Indicator-constraints","page":"Tips and tricks","title":"Indicator constraints","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/#Problem-2","page":"Tips and tricks","title":"Problem","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Suppose we want to model that a certain linear inequality must be satisfied when some other event occurs, that is, for a binary variable z, we want to model the implication:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"z = 1 implies a^top x leq b","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Trick-1","page":"Tips and tricks","title":"Trick 1","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Some solvers have native support for indicator constraints.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Example x_1 + x_2 leq 1 if z = 1.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:2])\n@variable(model, z, Bin)\n@constraint(model, z => {sum(x) <= 1})","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Example x_1 + x_2 leq 1 if z = 0.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:2])\n@variable(model, z, Bin)\n@constraint(model, !z => {sum(x) <= 1})","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Trick-2","page":"Tips and tricks","title":"Trick 2","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"If the solver doesn't support indicator constraints, you an use the big-M trick.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Example x_1 + x_2 leq 1 if z = 1.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:2])\n@variable(model, z, Bin)\nM = 100\n@constraint(model, sum(x) <= 1 + M * (1 - z))","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Example x_1 + x_2 leq 1 if z = 0.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:2])\n@variable(model, z, Bin)\nM = 100\n@constraint(model, sum(x) <= 1 + M * z)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Semi-continuous-variables","page":"Tips and tricks","title":"Semi-continuous variables","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"A semi-continuous variable is a continuous variable between bounds lu that also can assume the value zero, that is: x in 0 cup lu","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Example x in 0cup 1 2","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x in Semicontinuous(1.0, 2.0))","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"You can also represent a semi-continuous variable using the reformulation:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x)\n@variable(model, z, Bin)\n@constraint(model, x <= 2 * z)\n@constraint(model, x >= 1 * z)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"When z = 0 the two constraints are equivalent to 0 <= x <= 0. When z = 1, the two constraints are equivalent to 1 <= x <= 2.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Semi-integer-variables","page":"Tips and tricks","title":"Semi-integer variables","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"A semi-integer variable is a variable which assumes integer values between bounds lu and can also assume the value zero: x in 0 cup l u cap mathbbZ","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x in Semiinteger(5.0, 10.0))","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"You can also represent a semi-integer variable using the reformulation:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x, Int)\n@variable(model, z, Bin)\n@constraint(model, x <= 10 * z)\n@constraint(model, x >= 5 * z)","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"When z = 0 the two constraints are equivalent to 0 <= x <= 0. When z = 1, the two constraints are equivalent to 5 <= x <= 10.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Special-Ordered-Sets-of-Type-1","page":"Tips and tricks","title":"Special Ordered Sets of Type 1","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"A Special Ordered Set of Type 1 is a set of variables, at most one of which can take a non-zero value, all others being at 0.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"They most frequently apply where a set of variables are actually binary variables. In other words, we have to choose at most one from a set of possibilities.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:3], Bin)\n@constraint(model, x in SOS1())","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"You can optionally pass SOS1 a weight vector like","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"@constraint(model, x in SOS1([0.2, 0.5, 0.3]))","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"If the decision variables are related and have a physical ordering, then the weight vector, although not used directly in the constraint, can help the solver make a better decision in the solution process.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#tip_sos2","page":"Tips and tricks","title":"Special Ordered Sets of Type 2","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"A Special Ordered Set of type 2 is a set of non-negative variables, of which at most two can be non-zero, and if two are non-zero these must be consecutive in their ordering.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"model = Model();\n@variable(model, x[1:3])\n@constraint(model, x in SOS2([3.0, 1.0, 2.0]))","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"The ordering provided by the weight vector is more important in this case as the variables need to be consecutive according to the ordering. For example, in the above constraint, the possible pairs are:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Consecutive\n(x[1] and x[3]) as they correspond to 3 and 2 resp. and thus can be non-zero\n(x[2] and x[3]) as they correspond to 1 and 2 resp. and thus can be non-zero\nNon-consecutive\n(x[1] and x[2]) as they correspond to 3 and 1 resp. and thus cannot be non-zero","category":"page"},{"location":"tutorials/linear/tips_and_tricks/#Piecewise-linear-approximations","page":"Tips and tricks","title":"Piecewise linear approximations","text":"","category":"section"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"SOSII constraints are most often used to form piecewise linear approximations of a function.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"Given a set of points for x:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"x̂ = -1:0.5:2","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"and a set of corresponding points for y:","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"ŷ = x̂ .^ 2","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"the piecewise linear approximation is constructed by representing x and y as convex combinations of x̂ and ŷ.","category":"page"},{"location":"tutorials/linear/tips_and_tricks/","page":"Tips and tricks","title":"Tips and tricks","text":"N = length(x̂)\nmodel = Model();\n@variable(model, -1 <= x <= 2)\n@variable(model, y)\n@variable(model, 0 <= λ[1:N] <= 1)\n@objective(model, Max, y)\n@constraints(model, begin\n x == sum(x̂[i] * λ[i] for i in 1:N)\n y == sum(ŷ[i] * λ[i] for i in 1:N)\n sum(λ) == 1\n λ in SOS2()\nend)","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"EditURL = \"web_app.jl\"","category":"page"},{"location":"tutorials/applications/web_app/#Serving-web-apps","page":"Serving web apps","title":"Serving web apps","text":"","category":"section"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"This tutorial demonstrates how to setup and serve JuMP models via a REST API.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"In the example app we are building, we solve a trivial mixed-integer program, which is parameterized by the lower bound of a variable. To call the service, users send an HTTP POST request with JSON contents indicating the lower bound. The returned value is the solution of the mixed-integer program as JSON.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"First, we need JuMP and a solver:","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"using JuMP\nimport HiGHS","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"We also need HTTP.jl to act as our REST server, and JSON.jl to marshal data.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"import HTTP\nimport JSON","category":"page"},{"location":"tutorials/applications/web_app/#The-server-side","page":"Serving web apps","title":"The server side","text":"","category":"section"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"The core components of our REST server are endpoints. These are functions which accept a Dict{String,Any} of input parameters, and return a Dict{String,Any} as output. The types are Dict{String,Any} because we're going to read these to and from JSON.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"Here's a very simple endpoint: it accepts params as input, formulates and solves a trivial mixed-integer program, and then returns a dictionary with the result.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"function endpoint_solve(params::Dict{String,Any})\n if !haskey(params, \"lower_bound\")\n return Dict{String,Any}(\n \"status\" => \"failure\",\n \"reason\" => \"missing lower_bound param\",\n )\n elseif !(params[\"lower_bound\"] isa Real)\n return Dict{String,Any}(\n \"status\" => \"failure\",\n \"reason\" => \"lower_bound is not a number\",\n )\n end\n model = Model(HiGHS.Optimizer)\n set_silent(model)\n @variable(model, x >= params[\"lower_bound\"], Int)\n optimize!(model)\n ret = Dict{String,Any}(\n \"status\" => \"okay\",\n \"terminaton_status\" => termination_status(model),\n \"primal_status\" => primal_status(model),\n )\n # Only include the `x` key if it has a value.\n if has_values(model)\n ret[\"x\"] = value(x)\n end\n return ret\nend","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"When we call this, we get:","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"endpoint_solve(Dict{String,Any}(\"lower_bound\" => 1.2))","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"endpoint_solve(Dict{String,Any}())","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"For a second function, we need a function that accepts an HTTP.Request object and returns an HTTP.Response object.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"function serve_solve(request::HTTP.Request)\n data = JSON.parse(String(request.body))\n solution = endpoint_solve(data)\n return HTTP.Response(200, JSON.json(solution))\nend","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"Finally, we need an HTTP server. There are a variety of ways you can do this in HTTP.jl. We use an explicit Sockets.listen so we have manual control of when we shutdown the server.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"function setup_server(host, port)\n server = HTTP.Sockets.listen(host, port)\n HTTP.serve!(host, port; server = server) do request\n try\n # Extend the server by adding other endpoints here.\n if request.target == \"/api/solve\"\n return serve_solve(request)\n else\n return HTTP.Response(404, \"target $(request.target) not found\")\n end\n catch err\n # Log details about the exception server-side\n @info \"Unhandled exception: $err\"\n # Return a response to the client\n return HTTP.Response(500, \"internal error\")\n end\n end\n return server\nend","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"warning: Warning\nHTTP.jl does not serve requests on a separate thread. Therefore, a long-running job will block the main thread, preventing concurrent users from submitting requests. To work-around this, read HTTP.jl issue 798 or watch Building Microservices and Applications in Julia from JuliaCon 2020.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"server = setup_server(HTTP.ip\"127.0.0.1\", 8080)","category":"page"},{"location":"tutorials/applications/web_app/#The-client-side","page":"Serving web apps","title":"The client side","text":"","category":"section"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"Now that we have a server, we can send it requests via this function:","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"function send_request(data::Dict; endpoint::String = \"solve\")\n ret = HTTP.request(\n \"POST\",\n # This should match the URL and endpoint we defined for our server.\n \"http://127.0.0.1:8080/api/$endpoint\",\n [\"Content-Type\" => \"application/json\"],\n JSON.json(data),\n )\n if ret.status != 200\n # This could happen if there are time-outs, network errors, etc.\n return Dict(\n \"status\" => \"failure\",\n \"code\" => ret.status,\n \"body\" => String(ret.body),\n )\n end\n return JSON.parse(String(ret.body))\nend","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"Let's see what happens:","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"send_request(Dict(\"lower_bound\" => 0))","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"send_request(Dict(\"lower_bound\" => 1.2))","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"If we don't send a lower_bound, we get:","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"send_request(Dict(\"invalid_param\" => 1.2))","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"If we don't send a lower_bound that is a number, we get:","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"send_request(Dict(\"lower_bound\" => \"1.2\"))","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"Finally, we can shutdown our HTTP server:","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"close(server)","category":"page"},{"location":"tutorials/applications/web_app/#Next-steps","page":"Serving web apps","title":"Next steps","text":"","category":"section"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"For more complicated examples relating to HTTP servers, consult the HTTP.jl documentation.","category":"page"},{"location":"tutorials/applications/web_app/","page":"Serving web apps","title":"Serving web apps","text":"To see how you can integrate this with a larger JuMP model, read Design patterns for larger models.","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"EditURL = \"https://github.com/jump-dev/SDPT3.jl/blob/b565aac2a58818090d521f2340e71f597688e4fb/README.md\"","category":"page"},{"location":"packages/SDPT3/#SDPT3.jl","page":"jump-dev/SDPT3.jl","title":"SDPT3.jl","text":"","category":"section"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"SDPT3.jl is wrapper for the SDPT3 solver.","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"The wrapper has two components:","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"an exported sdpt3 function that is a thin wrapper on top of the sdpt3 MATLAB function\nan interface to MathOptInterface","category":"page"},{"location":"packages/SDPT3/#Affiliation","page":"jump-dev/SDPT3.jl","title":"Affiliation","text":"","category":"section"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"This wrapper is maintained by the JuMP community and is not an official wrapper of SDPT3.","category":"page"},{"location":"packages/SDPT3/#License","page":"jump-dev/SDPT3.jl","title":"License","text":"","category":"section"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"SDPT3.jl is licensed under the MIT License.","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"The underlying solver, SDPT3 is licensed under the GPL v2 License.","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"In addition, SDPT3 requires an installation of MATLAB, which is a closed-source commercial product for which you must obtain a license.","category":"page"},{"location":"packages/SDPT3/#Use-with-JuMP","page":"jump-dev/SDPT3.jl","title":"Use with JuMP","text":"","category":"section"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"To use SDPT3 with JuMP, do:","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"using JuMP, SDPT3\nmodel = Model(SDPT3.Optimizer)\nset_attribute(model, \"printlevel\", 0)","category":"page"},{"location":"packages/SDPT3/#Installation","page":"jump-dev/SDPT3.jl","title":"Installation","text":"","category":"section"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"First, make sure that you satisfy the requirements of the MATLAB.jl Julia package, and that the SeDuMi software is installed in your MATLAB™ installation.","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"Then, install SDPT3.jl using Pkg.add:","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"import Pkg\nPkg.add(\"SDPT3\")","category":"page"},{"location":"packages/SDPT3/#SDPT3-not-in-PATH","page":"jump-dev/SDPT3.jl","title":"SDPT3 not in PATH","text":"","category":"section"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"If you get the error:","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"Error using save\nVariable 'jx_sdpt3_arg_out_1' not found.\n\nERROR: LoadError: MATLAB.MEngineError(\"failed to get variable jx_sdpt3_arg_out_1 from MATLAB session\")\nStacktrace:\n[...]","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"The error means that we could not find the sdpt3 function with one output argument using the MATLAB C API. This most likely means that you did not add SDPT3 to the MATLAB's path (that is, the toolbox/local/pathdef.m file).","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"If modifying toolbox/local/pathdef.m does not work, the following should work, where /path/to/sdpt3/ is the directory where the sdpt3 folder is located:","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"julia> using MATLAB\n\njulia> cd(\"/path/to/sdpt3/\") do\n MATLAB.mat\"install_sdpt3\"\n end\n\njulia> MATLAB.mat\"savepath\"","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"An alternative fix is suggested in the following issue.","category":"page"},{"location":"packages/SDPT3/#Error-in-validate","page":"jump-dev/SDPT3.jl","title":"Error in validate","text":"","category":"section"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"If you get the error:","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"Brace indexing is not supported for variables of this type.\n\nError in validate\n\nError in sdpt3 (line 171)\n [blk,At,C,b,blkdim,numblk,parbarrier] = validate(blk,At,C,b,par,parbarrier);\n\nError using save\nVariable 'jx_sdpt3_arg_out_1' not found.","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"It might mean that you have added SDPNAL in addition to SDPT3 in the MATLAB's path (that is, the toolbox/local/pathdef.m file). Because SDPNAL also defines a validate function, this can make sdpt3 call SDPNAL's validate function instead of SDPT3's validate function, which causes the issue.","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"One way to fix this from the Julia REPL is to reset the search path to the factory-installed state using restoredefaultpath:","category":"page"},{"location":"packages/SDPT3/","page":"jump-dev/SDPT3.jl","title":"jump-dev/SDPT3.jl","text":"julia> using MATLAB\n\njulia> MATLAB.restoredefaultpath()\n\njulia> MATLAB.mat\"savepath\"","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"EditURL = \"dualization.jl\"","category":"page"},{"location":"tutorials/conic/dualization/#Dualization","page":"Dualization","title":"Dualization","text":"","category":"section"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"The purpose of this tutorial is to explain how to use Dualization.jl to improve the performance of some conic optimization models. There are two important takeaways:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"JuMP reformulates problems to meet the input requirements of the solver, potentially increasing the problem size by adding slack variables and constraints.\nSolving the dual of a conic model can be more efficient than solving the primal.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"Dualization.jl is a package which fixes these problems, allowing you to solve the dual instead of the primal with a one-line change to your code.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"This tutorial uses the following packages","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"using JuMP\nimport Dualization\nimport SCS","category":"page"},{"location":"tutorials/conic/dualization/#Background","page":"Dualization","title":"Background","text":"","category":"section"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"Conic optimization solvers typically accept one of two input formulations.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"The first is the standard conic form:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"beginalign\n min_x in mathbbR^n c^top x \n textst A x = b \n x in mathcalK\nendalign","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"in which we have a set of linear equality constraints Ax = b and the variables belong to a cone mathcalK.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"The second is the geometric conic form:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"beginalign\n min_x in mathbbR^n c^top x \n textst A x - b in mathcalK\nendalign","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"in which an affine function Ax - b belongs to a cone mathcalK and the variables are free.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"It is trivial to convert between these two representations, for example, to go from the geometric conic form to the standard conic form we introduce slack variables y:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"beginalign\n min_x in mathbbR^n c^top x \n textst beginbmatrixA -Iendbmatrix beginbmatrixxyendbmatrix = b \n beginbmatrixxyendbmatrix in mathbbR^n times mathcalK\nendalign","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"and to go from the standard conic form to the geometric conic form, we can rewrite the equality constraint as a function belonging to the {0} cone:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"beginalign\n min_x in mathbbR^n c^top x \n textst beginbmatrixAIendbmatrix x - beginbmatrixb0endbmatrix in 0 times mathcalK\nendalign","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"From a theoretical perspective, the two formulations are equivalent, and if you implement a model in the standard conic form and pass it to a geometric conic form solver (or vice versa), then JuMP will automatically reformulate the problem into the correct formulation.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"From a practical perspective though, the reformulations are problematic because the additional slack variables and constraints can make the problem much larger and therefore harder to solve.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"You should also note many problems contain a mix of conic constraints and variables, and so they do not neatly fall into one of the two formulations. In these cases, JuMP reformulates only the variables and constraints as necessary to convert the problem into the desired form.","category":"page"},{"location":"tutorials/conic/dualization/#Primal-and-dual-formulations","page":"Dualization","title":"Primal and dual formulations","text":"","category":"section"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"Duality plays a large role in conic optimization. For a detailed description of conic duality, see Duality.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"A useful observation is that if the primal problem is in standard conic form, then the dual problem is in geometric conic form, and vice versa. Moreover, the primal and dual may have a different number of variables and constraints, although which one is smaller depends on the problem. Therefore, instead of reformulating the problem from one form to the other, it can be more efficient to solve the dual instead of the primal.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"To demonstrate, we use a variation of the Maximum cut via SDP example.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"The primal formulation (in standard conic form) is:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"model_primal = Model()\n@variable(model_primal, X[1:2, 1:2], PSD)\n@objective(model_primal, Max, sum([1 -1; -1 1] .* X))\n@constraint(model_primal, primal_c[i = 1:2], 1 - X[i, i] == 0)\nprint(model_primal)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"This problem has three scalar decision variables (the matrix X is symmetric), two scalar equality constraints, and a constraint that X is positive semidefinite.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"The dual of model_primal is:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"model_dual = Model()\n@variable(model_dual, y[1:2])\n@objective(model_dual, Min, sum(y))\n@constraint(model_dual, dual_c, [y[1]-1 1; 1 y[2]-1] in PSDCone())\nprint(model_dual)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"This problem has two scalar decision variables, and a 2x2 positive semidefinite matrix constraint.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"tip: Tip\nIf you haven't seen conic duality before, try deriving the dual problem based on the description in Duality. You'll need to know that the dual cone of PSDCone is the PSDCone.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"When we solve model_primal with SCS.Optimizer, SCS reports three variables (variables n: 3), five rows in the constraint matrix (constraints m: 5), and five non-zeros in the matrix (nnz(A): 5):","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"set_optimizer(model_primal, SCS.Optimizer)\noptimize!(model_primal)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"(There are five rows in the constraint matrix because SCS expects problems in geometric conic form, and so JuMP has reformulated the X, PSD variable constraint into the affine constraint X .+ 0 in PSDCone().)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"The solution we obtain is:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"value.(X)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"dual.(primal_c)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"objective_value(model_primal)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"When we solve model_dual with SCS.Optimizer, SCS reports two variables (variables n: 2), three rows in the constraint matrix (constraints m: 3), and two non-zeros in the matrix (nnz(A): 2):","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"set_optimizer(model_dual, SCS.Optimizer)\noptimize!(model_dual)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"and the solution we obtain is:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"dual.(dual_c)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"value.(y)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"objective_value(model_dual)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"This particular problem is small enough that it isn't meaningful to compare the solve times, but in general, we should expect model_dual to solve faster than model_primal because it contains fewer variables and constraints. The difference is particularly noticeable on large-scale optimization problems.","category":"page"},{"location":"tutorials/conic/dualization/#dual_optimizer","page":"Dualization","title":"dual_optimizer","text":"","category":"section"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"Manually deriving the conic dual is difficult and error-prone. The package Dualization.jl provides the Dualization.dual_optimizer meta-solver, which wraps any MathOptInterface-compatible solver in an interface that automatically formulates and solves the dual of an input problem.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"To demonstrate, we use Dualization.dual_optimizer to solve model_primal:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"set_optimizer(model_primal, Dualization.dual_optimizer(SCS.Optimizer))\noptimize!(model_primal)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"The performance is the same as if we solved model_dual, and the correct solution is returned to X:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"value.(X)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"dual.(primal_c)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"Moreover, if we use dual_optimizer on model_dual, then we get the same performance as if we had solved model_primal:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"set_optimizer(model_dual, Dualization.dual_optimizer(SCS.Optimizer))\noptimize!(model_dual)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"dual.(dual_c)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"value.(y)","category":"page"},{"location":"tutorials/conic/dualization/#A-mixed-example","page":"Dualization","title":"A mixed example","text":"","category":"section"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"The Maximum cut via SDP example is nicely defined because the primal is in standard conic form and the dual is in geometric conic form. However, many practical models contain a mix of the two formulations. One example is The minimum distortion problem:","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"D = [0 1 1 1; 1 0 2 2; 1 2 0 2; 1 2 2 0]\nmodel = Model()\n@variable(model, c²)\n@variable(model, Q[1:4, 1:4], PSD)\n@objective(model, Min, c²)\nfor i in 1:4, j in (i+1):4\n @constraint(model, D[i, j]^2 <= Q[i, i] + Q[j, j] - 2 * Q[i, j])\n @constraint(model, Q[i, i] + Q[j, j] - 2 * Q[i, j] <= c² * D[i, j]^2)\nend\n@constraint(model, Q[1, 1] == 0)\n@constraint(model, c² >= 1)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"In this formulation, the Q variable is of the form xinmathcalK, but there is also a free variable, c², a linear equality constraint, Q[1, 1] == 0, and some linear inequality constraints. Rather than attempting to derive the formulation that JuMP would pass to SCS and its dual, the simplest solution is to try solving the problem with and without dual_optimizer to see which formulation is most efficient.","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"set_optimizer(model, SCS.Optimizer)\noptimize!(model)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"set_optimizer(model, Dualization.dual_optimizer(SCS.Optimizer))\noptimize!(model)","category":"page"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"For this problem, SCS reports that the primal has variables n: 11, constraints m: 24 and that the dual has variables n: 14, constraints m: 24. Therefore, we should probably use the primal formulation because it has fewer variables and the same number of constraints.","category":"page"},{"location":"tutorials/conic/dualization/#When-to-use-dual_optimizer","page":"Dualization","title":"When to use dual_optimizer","text":"","category":"section"},{"location":"tutorials/conic/dualization/","page":"Dualization","title":"Dualization","text":"Because it can make the problem larger or smaller, depending on the problem and the choice of solver, there is no definitive rule on when you should use dual_optimizer. However, you should try dual_optimizer if your conic optimization problem takes a long time to solve, or if you need to repeatedly solve similarly structured problems with different data. In some cases solving the dual instead of the primal can make a large difference.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"EditURL = \"ellipse_approx.jl\"","category":"page"},{"location":"tutorials/conic/ellipse_approx/#Ellipsoid-approximation","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"","category":"section"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"This tutorial considers the problem of computing extremal ellipsoids: finding ellipsoids that best approximate a given set. As an extension, we show how to use JuMP to inspect the bridges that were used, and how to explore alternative formulations.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"The model comes from Section 4.9 \"Applications VII: extremal ellipsoids\" of the book Lectures on Modern Convex Optimization by Ben-Tal and Nemirovski (2001).","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"For a related example, see also the Minimal ellipses tutorial.","category":"page"},{"location":"tutorials/conic/ellipse_approx/#Problem-formulation","page":"Ellipsoid approximation","title":"Problem formulation","text":"","category":"section"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Suppose that we are given a set mathcalS consisting of m points in n-dimensional space:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"mathcalS = x_1 ldots x_m subset mathbbR^n","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Our goal is to determine an optimal vector c in mathbbR^n and an optimal n times n real symmetric matrix D such that the ellipse:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"E(D c) = x (x - c)^top D ( x - c) leq 1 ","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"contains mathcalS and has the smallest possible volume.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"The optimal D and c are given by the optimization problem:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"beginaligned\nmax quad t \ntextst quad Z succeq 0 \n beginbmatrix s z^top z Z endbmatrix succeq 0 \n x_i^top Z x_i - 2x_i^top z + s leq 1 quad i=1 ldots m \n t le sqrtndet(Z)\nendaligned","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"where D = Z_* and c = Z_*^-1 z_*.","category":"page"},{"location":"tutorials/conic/ellipse_approx/#Required-packages","page":"Ellipsoid approximation","title":"Required packages","text":"","category":"section"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"This tutorial uses the following packages:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"using JuMP\nimport LinearAlgebra\nimport Plots\nimport Random\nimport SCS","category":"page"},{"location":"tutorials/conic/ellipse_approx/#Data","page":"Ellipsoid approximation","title":"Data","text":"","category":"section"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"We first need to generate some points to work with.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"function generate_point_cloud(\n m; # number of 2-dimensional points\n a = 10, # scaling in x direction\n b = 2, # scaling in y direction\n rho = π / 6, # rotation of points around origin\n random_seed = 1,\n)\n rng = Random.MersenneTwister(random_seed)\n P = randn(rng, Float64, m, 2)\n Phi = [a*cos(rho) a*sin(rho); -b*sin(rho) b*cos(rho)]\n S = P * Phi\n return S\nend","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"For the sake of this example, let's take m = 600:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"S = generate_point_cloud(600);\nnothing #hide","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"We will visualise the points (and ellipse) using the Plots package:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"r = 1.1 * maximum(abs.(S))\nplot = Plots.scatter(\n S[:, 1],\n S[:, 2];\n xlim = (-r, r),\n ylim = (-r, r),\n label = nothing,\n c = :green,\n shape = :x,\n size = (600, 600),\n)","category":"page"},{"location":"tutorials/conic/ellipse_approx/#JuMP-formulation","page":"Ellipsoid approximation","title":"JuMP formulation","text":"","category":"section"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Now let's build and the JuMP model. We'll compute D and c after the solve.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"model = Model(SCS.Optimizer)\n# We need to use a tighter tolerance for this example, otherwise the bounding\n# ellipse won't actually be bounding...\nset_attribute(model, \"eps_rel\", 1e-6)\nset_silent(model)\nm, n = size(S)\n@variable(model, z[1:n])\n@variable(model, Z[1:n, 1:n], PSD)\n@variable(model, s)\n@variable(model, t)\n@constraint(model, [s z'; z Z] >= 0, PSDCone())\n@constraint(\n model,\n [i in 1:m],\n S[i, :]' * Z * S[i, :] - 2 * S[i, :]' * z + s <= 1,\n)\n@constraint(model, [t; vec(Z)] in MOI.RootDetConeSquare(n))\n@objective(model, Max, t)\noptimize!(model)\nsolution_summary(model)","category":"page"},{"location":"tutorials/conic/ellipse_approx/#Results","page":"Ellipsoid approximation","title":"Results","text":"","category":"section"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"After solving the model to optimality we can recover the solution in terms of D and c:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"D = value.(Z)","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"c = D \\ value.(z)","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Finally, overlaying the solution in the plot we see the minimal volume approximating ellipsoid:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"P = sqrt(D)\nq = -P * c\ndata = [tuple(P \\ [cos(θ) - q[1], sin(θ) - q[2]]...) for θ in 0:0.05:(2pi+0.05)]\nPlots.plot!(plot, data; c = :crimson, label = nothing)","category":"page"},{"location":"tutorials/conic/ellipse_approx/#Alternative-formulations","page":"Ellipsoid approximation","title":"Alternative formulations","text":"","category":"section"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"The formulation of model uses MOI.RootDetConeSquare. However, because SCS does not natively support this cone, JuMP automatically reformulates the problem into an equivalent problem that SCS does support. You can see the reformulation that JuMP chose using print_active_bridges:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"print_active_bridges(model)","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"There's a lot going on here, but the first bullet is:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"* Unsupported objective: MOI.VariableIndex\n| bridged by:\n| MOIB.Objective.FunctionizeBridge{Float64}\n| introduces:\n| * Supported objective: MOI.ScalarAffineFunction{Float64}","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"This says that SCS does not support a MOI.VariableIndex objective function, and that JuMP used a MOI.Bridges.Objective.FunctionizeBridge to convert it into a MOI.ScalarAffineFunction{Float64} objective function.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"We can leave JuMP to do the reformulation, or we can rewrite our model to have an objective function that SCS natively supports:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"@objective(model, Max, 1.0 * t + 0.0);\nnothing #hide","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Re-printing the active bridges:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"print_active_bridges(model)","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"we get * Supported objective: MOI.ScalarAffineFunction{Float64}.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"We can manually implement some other reformulations to change our model to something that SCS more closely supports by:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Replacing the MOI.VectorOfVariables in MOI.PositiveSemidefiniteConeTriangle constraint @variable(model, Z[1:n, 1:n], PSD) with the MOI.VectorAffineFunction in MOI.PositiveSemidefiniteConeTriangle @constraint(model, Z >= 0, PSDCone()).\nReplacing the MOI.VectorOfVariables in MOI.PositiveSemidefiniteConeSquare constraint [s z'; z Z] >= 0, PSDCone() with the MOI.VectorAffineFunction in MOI.PositiveSemidefiniteConeTriangle @constraint(model, LinearAlgebra.Symmetric([s z'; z Z]) >= 0, PSDCone()).\nReplacing the MOI.ScalarAffineFunction in MOI.GreaterThan constraints with the vectorized equivalent of MOI.VectorAffineFunction in MOI.Nonnegatives\nReplacing the MOI.VectorOfVariables in MOI.RootDetConeSquare constraint with MOI.VectorAffineFunction in MOI.RootDetConeTriangle.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Note that we still need to bridge MOI.PositiveSemidefiniteConeTriangle constraints because SCS uses an internal SCS.ScaledPSDCone set instead.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"model = Model(SCS.Optimizer)\nset_attribute(model, \"eps_rel\", 1e-6)\nset_silent(model)\n@variable(model, z[1:n])\n@variable(model, s)\n@variable(model, t)\n# The former @variable(model, Z[1:n, 1:n], PSD)\n@variable(model, Z[1:n, 1:n], Symmetric)\n@constraint(model, Z >= 0, PSDCone())\n# The former [s z'; z Z] >= 0, PSDCone()\n@constraint(model, LinearAlgebra.Symmetric([s z'; z Z]) >= 0, PSDCone())\n# The former constraint S[i, :]' * Z * S[i, :] - 2 * S[i, :]' * z + s <= 1\nf = [1 - S[i, :]' * Z * S[i, :] + 2 * S[i, :]' * z - s for i in 1:m]\n@constraint(model, f in MOI.Nonnegatives(m))\n# The former constraint [t; vec(Z)] in MOI.RootDetConeSquare(n)\n@constraint(model, 1 * [t; triangle_vec(Z)] .+ 0 in MOI.RootDetConeTriangle(n))\n# The former @objective(model, Max, t)\n@objective(model, Max, 1 * t + 0)\noptimize!(model)\nsolve_time_1 = solve_time(model)","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"This formulation gives the much smaller graph:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"print_active_bridges(model)","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"The last bullet shows how JuMP reformulated the MOI.RootDetConeTriangle constraint by adding a mix of MOI.PositiveSemidefiniteConeTriangle and MOI.GeometricMeanCone constraints.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Because SCS doesn't natively support the MOI.GeometricMeanCone, these constraints were further bridged using a MOI.Bridges.Constraint.GeoMeanToPowerBridge to a series of MOI.PowerCone constraints.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"However, there are many other ways that a MOI.GeometricMeanCone can be reformulated into something that SCS supports. Let's see what happens if we use remove_bridge to remove the MOI.Bridges.Constraint.GeoMeanToPowerBridge:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"remove_bridge(model, MOI.Bridges.Constraint.GeoMeanToPowerBridge)\noptimize!(model)","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"This time, the solve took:","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"solve_time_2 = solve_time(model)","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"where previously it took","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"solve_time_1","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Why was the solve time different?","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"print_active_bridges(model)","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"This time, JuMP used a MOI.Bridges.Constraint.GeoMeanBridge to reformulate the constraint into a set of MOI.RotatedSecondOrderCone constraints, which were further reformulated into a set of supported MOI.SecondOrderCone constraints.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"Since the two models are equivalent, we can conclude that for this particular model, the MOI.SecondOrderCone formulation is more efficient.","category":"page"},{"location":"tutorials/conic/ellipse_approx/","page":"Ellipsoid approximation","title":"Ellipsoid approximation","text":"In general though, the performance of a particular reformulation is problem- and solver-specific. Therefore, JuMP chooses to minimize the number of bridges in the default reformulation, leaving you to explore alternative formulations using the tools and techniques shown in this tutorial.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"DocTestSetup = quote\n using JuMP\nend","category":"page"},{"location":"manual/containers/#Containers","page":"Containers","title":"Containers","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"JuMP provides specialized containers similar to AxisArrays that enable multi-dimensional arrays with non-integer indices.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"These containers are created automatically by JuMP's macros. Each macro has the same basic syntax:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"@macroname(model, name[key1=index1, index2; optional_condition], other stuff)","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"The containers are generated by the name[key1=index1, index2; optional_condition] syntax. Everything else is specific to the particular macro.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Containers can be named, for example, name[key=index], or unnamed, for example, [key=index]. We call unnamed containers anonymous.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"We call the bits inside the square brackets and before the ; the index sets. The index sets can be named, for example, [i = 1:4], or they can be unnamed, for example, [1:4].","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"We call the bit inside the square brackets and after the ; the condition. Conditions are optional.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"In addition to the standard JuMP macros like @variable and @constraint, which construct containers of variables and constraints respectively, you can use Containers.@container to construct containers with arbitrary elements.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"We will use this macro to explain the three types of containers that are natively supported by JuMP: Array, Containers.DenseAxisArray, and Containers.SparseAxisArray.","category":"page"},{"location":"manual/containers/#Array","page":"Containers","title":"Array","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"An Array is created when the index sets are rectangular and the index sets are of the form 1:n.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> Containers.@container(x[i = 1:2, j = 1:3], (i, j))\n2×3 Matrix{Tuple{Int64, Int64}}:\n (1, 1) (1, 2) (1, 3)\n (2, 1) (2, 2) (2, 3)","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"The result is a normal Julia Array, so you can do all the usual things.","category":"page"},{"location":"manual/containers/#Slicing","page":"Containers","title":"Slicing","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Arrays can be sliced","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> x[:, 1]\n2-element Vector{Tuple{Int64, Int64}}:\n (1, 1)\n (2, 1)\n\njulia> x[2, :]\n3-element Vector{Tuple{Int64, Int64}}:\n (2, 1)\n (2, 2)\n (2, 3)","category":"page"},{"location":"manual/containers/#Looping","page":"Containers","title":"Looping","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Use eachindex to loop over the elements:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> for key in eachindex(x)\n println(x[key])\n end\n(1, 1)\n(2, 1)\n(1, 2)\n(2, 2)\n(1, 3)\n(2, 3)","category":"page"},{"location":"manual/containers/#Get-the-index-sets","page":"Containers","title":"Get the index sets","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Use axes to obtain the index sets:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> axes(x)\n(Base.OneTo(2), Base.OneTo(3))","category":"page"},{"location":"manual/containers/#Broadcasting","page":"Containers","title":"Broadcasting","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Broadcasting over an Array returns an Array","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> swap(x::Tuple) = (last(x), first(x))\nswap (generic function with 1 method)\n\njulia> swap.(x)\n2×3 Matrix{Tuple{Int64, Int64}}:\n (1, 1) (2, 1) (3, 1)\n (1, 2) (2, 2) (3, 2)","category":"page"},{"location":"manual/containers/#Tables","page":"Containers","title":"Tables","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Use Containers.rowtable to convert the Array into a Tables.jl compatible Vector{<:NamedTuple}:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> table = Containers.rowtable(x; header = [:I, :J, :value])\n6-element Vector{NamedTuple{(:I, :J, :value), Tuple{Int64, Int64, Tuple{Int64, Int64}}}}:\n (I = 1, J = 1, value = (1, 1))\n (I = 2, J = 1, value = (2, 1))\n (I = 1, J = 2, value = (1, 2))\n (I = 2, J = 2, value = (2, 2))\n (I = 1, J = 3, value = (1, 3))\n (I = 2, J = 3, value = (2, 3))","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Because it supports the Tables.jl interface, you can pass it to any function which accepts a table as input:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> import DataFrames;\n\njulia> DataFrames.DataFrame(table)\n6×3 DataFrame\n Row │ I J value\n │ Int64 Int64 Tuple…\n─────┼──────────────────────\n 1 │ 1 1 (1, 1)\n 2 │ 2 1 (2, 1)\n 3 │ 1 2 (1, 2)\n 4 │ 2 2 (2, 2)\n 5 │ 1 3 (1, 3)\n 6 │ 2 3 (2, 3)","category":"page"},{"location":"manual/containers/#DenseAxisArray","page":"Containers","title":"DenseAxisArray","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"A Containers.DenseAxisArray is created when the index sets are rectangular, but not of the form 1:n. The index sets can be of any type.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> x = Containers.@container([i = 1:2, j = [:A, :B]], (i, j))\n2-dimensional DenseAxisArray{Tuple{Int64, Symbol},2,...} with index sets:\n Dimension 1, Base.OneTo(2)\n Dimension 2, [:A, :B]\nAnd data, a 2×2 Matrix{Tuple{Int64, Symbol}}:\n (1, :A) (1, :B)\n (2, :A) (2, :B)","category":"page"},{"location":"manual/containers/#Slicing-2","page":"Containers","title":"Slicing","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"DenseAxisArrays can be sliced","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> x[:, :A]\n1-dimensional DenseAxisArray{Tuple{Int64, Symbol},1,...} with index sets:\n Dimension 1, Base.OneTo(2)\nAnd data, a 2-element Vector{Tuple{Int64, Symbol}}:\n (1, :A)\n (2, :A)\n\njulia> x[1, :]\n1-dimensional DenseAxisArray{Tuple{Int64, Symbol},1,...} with index sets:\n Dimension 1, [:A, :B]\nAnd data, a 2-element Vector{Tuple{Int64, Symbol}}:\n (1, :A)\n (1, :B)","category":"page"},{"location":"manual/containers/#Looping-2","page":"Containers","title":"Looping","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Use eachindex to loop over the elements:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> for key in eachindex(x)\n println(x[key])\n end\n(1, :A)\n(2, :A)\n(1, :B)\n(2, :B)","category":"page"},{"location":"manual/containers/#Get-the-index-sets-2","page":"Containers","title":"Get the index sets","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Use axes to obtain the index sets:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> axes(x)\n(Base.OneTo(2), [:A, :B])","category":"page"},{"location":"manual/containers/#Broadcasting-2","page":"Containers","title":"Broadcasting","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Broadcasting over a DenseAxisArray returns a DenseAxisArray","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> swap(x::Tuple) = (last(x), first(x))\nswap (generic function with 1 method)\n\njulia> swap.(x)\n2-dimensional DenseAxisArray{Tuple{Symbol, Int64},2,...} with index sets:\n Dimension 1, Base.OneTo(2)\n Dimension 2, [:A, :B]\nAnd data, a 2×2 Matrix{Tuple{Symbol, Int64}}:\n (:A, 1) (:B, 1)\n (:A, 2) (:B, 2)","category":"page"},{"location":"manual/containers/#Access-internal-data","page":"Containers","title":"Access internal data","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Use Array(x) to copy the internal data array into a new Array:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> Array(x)\n2×2 Matrix{Tuple{Int64, Symbol}}:\n (1, :A) (1, :B)\n (2, :A) (2, :B)","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"To access the internal data without a copy, use x.data.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> x.data\n2×2 Matrix{Tuple{Int64, Symbol}}:\n (1, :A) (1, :B)\n (2, :A) (2, :B)","category":"page"},{"location":"manual/containers/#Tables-2","page":"Containers","title":"Tables","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Use Containers.rowtable to convert the DenseAxisArray into a Tables.jl compatible Vector{<:NamedTuple}:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> table = Containers.rowtable(x; header = [:I, :J, :value])\n4-element Vector{NamedTuple{(:I, :J, :value), Tuple{Int64, Symbol, Tuple{Int64, Symbol}}}}:\n (I = 1, J = :A, value = (1, :A))\n (I = 2, J = :A, value = (2, :A))\n (I = 1, J = :B, value = (1, :B))\n (I = 2, J = :B, value = (2, :B))","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Because it supports the Tables.jl interface, you can pass it to any function which accepts a table as input:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> import DataFrames;\n\njulia> DataFrames.DataFrame(table)\n4×3 DataFrame\n Row │ I J value\n │ Int64 Symbol Tuple…\n─────┼────────────────────────\n 1 │ 1 A (1, :A)\n 2 │ 2 A (2, :A)\n 3 │ 1 B (1, :B)\n 4 │ 2 B (2, :B)","category":"page"},{"location":"manual/containers/#Keyword-indexing","page":"Containers","title":"Keyword indexing","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"If all axes are named, you can use keyword indexing:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> x[i = 2, j = :A]\n(2, :A)\n\njulia> x[i = :, j = :B]\n1-dimensional DenseAxisArray{Tuple{Int64, Symbol},1,...} with index sets:\n Dimension 1, Base.OneTo(2)\nAnd data, a 2-element Vector{Tuple{Int64, Symbol}}:\n (1, :B)\n (2, :B)","category":"page"},{"location":"manual/containers/#SparseAxisArray","page":"Containers","title":"SparseAxisArray","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"A Containers.SparseAxisArray is created when the index sets are non-rectangular. This occurs in two circumstances:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"An index depends on a prior index:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> Containers.@container([i = 1:2, j = i:2], (i, j))\nJuMP.Containers.SparseAxisArray{Tuple{Int64, Int64}, 2, Tuple{Int64, Int64}} with 3 entries:\n [1, 1] = (1, 1)\n [1, 2] = (1, 2)\n [2, 2] = (2, 2)","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"The [indices; condition] syntax is used:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> x = Containers.@container([i = 1:3, j = [:A, :B]; i > 1], (i, j))\nJuMP.Containers.SparseAxisArray{Tuple{Int64, Symbol}, 2, Tuple{Int64, Symbol}} with 4 entries:\n [2, A] = (2, :A)\n [2, B] = (2, :B)\n [3, A] = (3, :A)\n [3, B] = (3, :B)","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Here we have the index sets i = 1:3, j = [:A, :B], followed by ;, and then a condition, which evaluates to true or false: i > 1.","category":"page"},{"location":"manual/containers/#Slicing-3","page":"Containers","title":"Slicing","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Slicing is supported:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> y = x[:, :B]\nJuMP.Containers.SparseAxisArray{Tuple{Int64, Symbol}, 1, Tuple{Int64}} with 2 entries:\n [2] = (2, :B)\n [3] = (3, :B)","category":"page"},{"location":"manual/containers/#Looping-3","page":"Containers","title":"Looping","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Use eachindex to loop over the elements:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> for key in eachindex(y)\n println(y[key])\n end\n(2, :B)\n(3, :B)","category":"page"},{"location":"manual/containers/#Broadcasting-3","page":"Containers","title":"Broadcasting","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Broadcasting over a SparseAxisArray returns a SparseAxisArray","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> swap(x::Tuple) = (last(x), first(x))\nswap (generic function with 1 method)\n\njulia> swap.(y)\nJuMP.Containers.SparseAxisArray{Tuple{Symbol, Int64}, 1, Tuple{Int64}} with 2 entries:\n [2] = (:B, 2)\n [3] = (:B, 3)","category":"page"},{"location":"manual/containers/#Tables-3","page":"Containers","title":"Tables","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Use Containers.rowtable to convert the SparseAxisArray into a Tables.jl compatible Vector{<:NamedTuple}:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> table = Containers.rowtable(x; header = [:I, :J, :value])\n4-element Vector{NamedTuple{(:I, :J, :value), Tuple{Int64, Symbol, Tuple{Int64, Symbol}}}}:\n (I = 2, J = :A, value = (2, :A))\n (I = 2, J = :B, value = (2, :B))\n (I = 3, J = :A, value = (3, :A))\n (I = 3, J = :B, value = (3, :B))","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Because it supports the Tables.jl interface, you can pass it to any function which accepts a table as input:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> import DataFrames;\n\njulia> DataFrames.DataFrame(table)\n4×3 DataFrame\n Row │ I J value\n │ Int64 Symbol Tuple…\n─────┼────────────────────────\n 1 │ 2 A (2, :A)\n 2 │ 2 B (2, :B)\n 3 │ 3 A (3, :A)\n 4 │ 3 B (3, :B)","category":"page"},{"location":"manual/containers/#Keyword-indexing-2","page":"Containers","title":"Keyword indexing","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"If all axes are named, you can use keyword indexing:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> x[i = 2, j = :A]\n(2, :A)\n\njulia> x[i = :, j = :B]\nJuMP.Containers.SparseAxisArray{Tuple{Int64, Symbol}, 1, Tuple{Int64}} with 2 entries:\n [2] = (2, :B)\n [3] = (3, :B)","category":"page"},{"location":"manual/containers/#Forcing-the-container-type","page":"Containers","title":"Forcing the container type","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Pass container = T to use T as the container. For example:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> Containers.@container([i = 1:2, j = 1:2], i + j, container = Array)\n2×2 Matrix{Int64}:\n 2 3\n 3 4\n\njulia> Containers.@container([i = 1:2, j = 1:2], i + j, container = Dict)\nDict{Tuple{Int64, Int64}, Int64} with 4 entries:\n (1, 2) => 3\n (1, 1) => 2\n (2, 2) => 4\n (2, 1) => 3","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"You can also pass DenseAxisArray or SparseAxisArray.","category":"page"},{"location":"manual/containers/#How-different-container-types-are-chosen","page":"Containers","title":"How different container types are chosen","text":"","category":"section"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"If the compiler can prove at compile time that the index sets are rectangular, and indexed by a compact set of integers that start at 1, Containers.@container will return an array. This is the case if your index sets are visible to the macro as 1:n:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> Containers.@container([i=1:3, j=1:5], i + j)\n3×5 Matrix{Int64}:\n 2 3 4 5 6\n 3 4 5 6 7\n 4 5 6 7 8","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"or an instance of Base.OneTo:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> set = Base.OneTo(3)\nBase.OneTo(3)\n\njulia> Containers.@container([i=set, j=1:5], i + j)\n3×5 Matrix{Int64}:\n 2 3 4 5 6\n 3 4 5 6 7\n 4 5 6 7 8","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"If the compiler can prove that the index set is rectangular, but not necessarily of the form 1:n at compile time, then a Containers.DenseAxisArray will be constructed instead:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> set = 1:3\n1:3\n\njulia> Containers.@container([i=set, j=1:5], i + j)\n2-dimensional DenseAxisArray{Int64,2,...} with index sets:\n Dimension 1, 1:3\n Dimension 2, Base.OneTo(5)\nAnd data, a 3×5 Matrix{Int64}:\n 2 3 4 5 6\n 3 4 5 6 7\n 4 5 6 7 8","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"info: Info\nWhat happened here? Although we know that set contains 1:3, at compile time the typeof(set) is a UnitRange{Int}. Therefore, Julia can't prove that the range starts at 1 (it only finds this out at runtime), and it defaults to a DenseAxisArray. The case where we explicitly wrote i = 1:3 worked because the macro can \"see\" the 1 at compile time.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"However, if you know that the indices do form an Array, you can force the container type with container = Array:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> set = 1:3\n1:3\n\njulia> Containers.@container([i=set, j=1:5], i + j, container = Array)\n3×5 Matrix{Int64}:\n 2 3 4 5 6\n 3 4 5 6 7\n 4 5 6 7 8","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Here's another example with something similar:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> a = 1\n1\n\njulia> Containers.@container([i=a:3, j=1:5], i + j)\n2-dimensional DenseAxisArray{Int64,2,...} with index sets:\n Dimension 1, 1:3\n Dimension 2, Base.OneTo(5)\nAnd data, a 3×5 Matrix{Int64}:\n 2 3 4 5 6\n 3 4 5 6 7\n 4 5 6 7 8\n\njulia> Containers.@container([i=1:a, j=1:5], i + j)\n1×5 Matrix{Int64}:\n 2 3 4 5 6","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"Finally, if the compiler cannot prove that the index set is rectangular, a Containers.SparseAxisArray will be created.","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"This occurs when some indices depend on a previous one:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> Containers.@container([i=1:3, j=1:i], i + j)\nJuMP.Containers.SparseAxisArray{Int64, 2, Tuple{Int64, Int64}} with 6 entries:\n [1, 1] = 2\n [2, 1] = 3\n [2, 2] = 4\n [3, 1] = 4\n [3, 2] = 5\n [3, 3] = 6","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"or if there is a condition on the index sets:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> Containers.@container([i = 1:5; isodd(i)], i^2)\nJuMP.Containers.SparseAxisArray{Int64, 1, Tuple{Int64}} with 3 entries:\n [1] = 1\n [3] = 9\n [5] = 25","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"The condition can depend on multiple indices, the only requirement is that it is an expression that returns true or false:","category":"page"},{"location":"manual/containers/","page":"Containers","title":"Containers","text":"julia> condition(i, j) = isodd(i) && iseven(j)\ncondition (generic function with 1 method)\n\njulia> Containers.@container([i = 1:2, j = 1:4; condition(i, j)], i + j)\nJuMP.Containers.SparseAxisArray{Int64, 2, Tuple{Int64, Int64}} with 2 entries:\n [1, 2] = 3\n [1, 4] = 5","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/manual/solutions.md\"","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"CurrentModule = MathOptInterface\nDocTestSetup = quote\n import MathOptInterface as MOI\nend\nDocTestFilters = [r\"MathOptInterface|MOI\"]","category":"page"},{"location":"moi/manual/solutions/#manual_solutions","page":"Solutions","title":"Solutions","text":"","category":"section"},{"location":"moi/manual/solutions/#Solving-and-retrieving-the-results","page":"Solutions","title":"Solving and retrieving the results","text":"","category":"section"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Once an optimizer is loaded with the objective function and all of the constraints, we can ask the solver to solve the model by calling optimize!.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"MOI.optimize!(optimizer)","category":"page"},{"location":"moi/manual/solutions/#Why-did-the-solver-stop?","page":"Solutions","title":"Why did the solver stop?","text":"","category":"section"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"The optimization procedure may stop for a number of reasons. The TerminationStatus attribute of the optimizer returns a TerminationStatusCode object which explains why the solver stopped.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"The termination statuses distinguish between proofs of optimality, infeasibility, local convergence, limits, and termination because of something unexpected like invalid problem data or failure to converge.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"A typical usage of the TerminationStatus attribute is as follows:","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"status = MOI.get(optimizer, TerminationStatus())\nif status == MOI.OPTIMAL\n # Ok, we solved the problem!\nelse\n # Handle other cases.\nend","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"After checking the TerminationStatus, check ResultCount. This attribute returns the number of results that the solver has available to return. A result is defined as a primal-dual pair, but either the primal or the dual may be missing from the result. While the OPTIMAL termination status normally implies that at least one result is available, other statuses do not. For example, in the case of infeasibility, a solver may return no result or a proof of infeasibility. The ResultCount attribute distinguishes between these two cases.","category":"page"},{"location":"moi/manual/solutions/#Primal-solutions","page":"Solutions","title":"Primal solutions","text":"","category":"section"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Use the PrimalStatus optimizer attribute to return a ResultStatusCode describing the status of the primal solution.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Common returns are described below in the Common status situations section.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Query the primal solution using the VariablePrimal and ConstraintPrimal attributes.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Query the objective function value using the ObjectiveValue attribute.","category":"page"},{"location":"moi/manual/solutions/#Dual-solutions","page":"Solutions","title":"Dual solutions","text":"","category":"section"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"warning: Warning\nSee Duality for a discussion of the MOI conventions for primal-dual pairs and certificates.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Use the DualStatus optimizer attribute to return a ResultStatusCode describing the status of the dual solution.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Query the dual solution using the ConstraintDual attribute.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Query the dual objective function value using the DualObjectiveValue attribute.","category":"page"},{"location":"moi/manual/solutions/#Common-status-situations","page":"Solutions","title":"Common status situations","text":"","category":"section"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"The sections below describe how to interpret typical or interesting status cases for three common classes of solvers. The example cases are illustrative, not comprehensive. Solver wrappers may provide additional information on how the solver's statuses map to MOI statuses.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"info: Info\n* in the tables indicate that multiple different values are possible.","category":"page"},{"location":"moi/manual/solutions/#Primal-dual-convex-solver","page":"Solutions","title":"Primal-dual convex solver","text":"","category":"section"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Linear programming and conic optimization solvers fall into this category.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"What happened? TerminationStatus ResultCount PrimalStatus DualStatus\nProved optimality OPTIMAL 1 FEASIBLE_POINT FEASIBLE_POINT\nProved infeasible INFEASIBLE 1 NO_SOLUTION INFEASIBILITY_CERTIFICATE\nOptimal within relaxed tolerances ALMOST_OPTIMAL 1 FEASIBLE_POINT FEASIBLE_POINT\nOptimal within relaxed tolerances ALMOST_OPTIMAL 1 ALMOST_FEASIBLE_POINT ALMOST_FEASIBLE_POINT\nDetected an unbounded ray of the primal DUAL_INFEASIBLE 1 INFEASIBILITY_CERTIFICATE NO_SOLUTION\nStall SLOW_PROGRESS 1 * *","category":"page"},{"location":"moi/manual/solutions/#Global-branch-and-bound-solvers","page":"Solutions","title":"Global branch-and-bound solvers","text":"","category":"section"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Mixed-integer programming solvers fall into this category.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"What happened? TerminationStatus ResultCount PrimalStatus DualStatus\nProved optimality OPTIMAL 1 FEASIBLE_POINT NO_SOLUTION\nPresolve detected infeasibility or unboundedness INFEASIBLE_OR_UNBOUNDED 0 NO_SOLUTION NO_SOLUTION\nProved infeasibility INFEASIBLE 0 NO_SOLUTION NO_SOLUTION\nTimed out (no solution) TIME_LIMIT 0 NO_SOLUTION NO_SOLUTION\nTimed out (with a solution) TIME_LIMIT 1 FEASIBLE_POINT NO_SOLUTION\nCPXMIP_OPTIMAL_INFEAS ALMOST_OPTIMAL 1 INFEASIBLE_POINT NO_SOLUTION","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"info: Info\nCPXMIP_OPTIMAL_INFEAS is a CPLEX status that indicates that a preprocessed problem was solved to optimality, but the solver was unable to recover a feasible solution to the original problem. Handling this status was one of the motivating drivers behind the design of MOI.","category":"page"},{"location":"moi/manual/solutions/#Local-search-solvers","page":"Solutions","title":"Local search solvers","text":"","category":"section"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Nonlinear programming solvers fall into this category. It also includes non-global tree search solvers like Juniper.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"What happened? TerminationStatus ResultCount PrimalStatus DualStatus\nConverged to a stationary point LOCALLY_SOLVED 1 FEASIBLE_POINT FEASIBLE_POINT\nCompleted a non-global tree search (with a solution) LOCALLY_SOLVED 1 FEASIBLE_POINT FEASIBLE_POINT\nConverged to an infeasible point LOCALLY_INFEASIBLE 1 INFEASIBLE_POINT *\nCompleted a non-global tree search (no solution found) LOCALLY_INFEASIBLE 0 NO_SOLUTION NO_SOLUTION\nIteration limit ITERATION_LIMIT 1 * *\nDiverging iterates NORM_LIMIT or OBJECTIVE_LIMIT 1 * *","category":"page"},{"location":"moi/manual/solutions/#Querying-solution-attributes","page":"Solutions","title":"Querying solution attributes","text":"","category":"section"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"Some solvers will not implement every solution attribute. Therefore, a call like MOI.get(model, MOI.SolveTimeSec()) may throw an UnsupportedAttribute error.","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"If you need to write code that is agnostic to the solver (for example, you are writing a library that an end-user passes their choice of solver to), you can work-around this problem using a try-catch:","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"function get_solve_time(model)\n try\n return MOI.get(model, MOI.SolveTimeSec())\n catch err\n if err isa MOI.UnsupportedAttribute\n return NaN # Solver doesn't support. Return a placeholder value.\n end\n rethrow(err) # Something else went wrong. Rethrow the error\n end\nend","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"If, after careful profiling, you find that the try-catch is taking a significant portion of your runtime, you can improve performance by caching the result of the try-catch:","category":"page"},{"location":"moi/manual/solutions/","page":"Solutions","title":"Solutions","text":"mutable struct CachedSolveTime{M}\n model::M\n supports_solve_time::Bool\n CachedSolveTime(model::M) where {M} = new(model, true)\nend\n\nfunction get_solve_time(model::CachedSolveTime)\n if !model.supports_solve_time\n return NaN\n end\n try\n return MOI.get(model, MOI.SolveTimeSec())\n catch err\n if err isa MOI.UnsupportedAttribute\n model.supports_solve_time = false\n return NaN\n end\n rethrow(err) # Something else went wrong. Rethrow the error\n end\nend","category":"page"},{"location":"tutorials/getting_started/introduction/#Introduction","page":"Introduction","title":"Introduction","text":"","category":"section"},{"location":"tutorials/getting_started/introduction/","page":"Introduction","title":"Introduction","text":"The purpose of these \"Getting started\" tutorials is to teach new users the basics of Julia and JuMP.","category":"page"},{"location":"tutorials/getting_started/introduction/#How-these-tutorials-are-structured","page":"Introduction","title":"How these tutorials are structured","text":"","category":"section"},{"location":"tutorials/getting_started/introduction/","page":"Introduction","title":"Introduction","text":"Having a high-level overview of how this part of the documentation is structured will help you know where to look for certain things.","category":"page"},{"location":"tutorials/getting_started/introduction/","page":"Introduction","title":"Introduction","text":"The \"Getting started with\" tutorials are basic introductions to different aspects of JuMP and Julia. If you are new to JuMP and Julia, start by reading them in the following order:\nGetting started with Julia\nGetting started with JuMP\nGetting started with sets and indexing\nGetting started with data and plotting\nJulia has a reputation for being \"fast.\" Unfortunately, it is also easy to write slow Julia code. Performance tips contains a number of important tips on how to improve the performance of models you write in JuMP.\nDesign patterns for larger models is a more advanced tutorial that is aimed at users writing large JuMP models. It's in the \"Getting started\" section to give you an early preview of how JuMP makes it easy to structure larger models. If you are new to JuMP you may want to skip or briefly skim this tutorial, and come back to it once you have written a few JuMP models.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"EditURL = \"two_stage_stochastic.jl\"","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/#Two-stage-stochastic-programs","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"","category":"section"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"The purpose of this tutorial is to demonstrate how to model and solve a two-stage stochastic program.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"This tutorial uses the following packages","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"using JuMP\nimport Distributions\nimport HiGHS\nimport Plots\nimport StatsPlots\nimport Statistics","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/#Background","page":"Two-stage stochastic programs","title":"Background","text":"","category":"section"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"During the week, you are a busy practitioner of Operations Research. To escape the drudgery of mathematics, you decide to open a side business selling creamy mushroom pies with puff pastry. After a few weeks, it quickly becomes apparent that operating a food business is not so easy.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"The pies must be prepared in the morning, before you open for the day and can gauge the level of demand. If you bake too many, the unsold pies at the end of the day must be discarded and you have wasted time and money on their production. But if you bake too few, then there may be un-served customers and you could have made more money by baking more pies.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"After a few weeks of poor decision making, you decide to put your knowledge of Operations Research to good use, starting with some data collection.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"Each pie costs you $2 to make, and you sell them at $5 each. Disposal of an unsold pie costs $0.10. Based on three weeks of data collected, in which you made 200 pies each week, you sold 150, 190, and 200 pies. Thus, as a guess, you assume a triangular distribution of demand with a minimum of 150, a median of 200, and a maximum of 250.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"We can model this problem by a two-stage stochastic program. In the first stage, we decide a quantity of pies to make x. We make this decision before we observe the demand d_omega. In the second stage, we sell y_omega pies, and incur any costs for unsold pies.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"We can formulate this problem as follows:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"beginaligned\nmaxlimits_xy_omega -2x + mathbbE_omega5y_omega - 01(x - y_omega) \n y_omega le x quad forall omega in Omega \n 0 le y_omega le d_omega quad forall omega in Omega \n x ge 0\nendaligned","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/#Sample-Average-approximation","page":"Two-stage stochastic programs","title":"Sample Average approximation","text":"","category":"section"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"If the distribution of demand is continuous, then our problem has an infinite number of variables and constraints. To form a computationally tractable problem, we instead use a finite set of samples drawn from the distribution. This is called sample average approximation (SAA).","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"D = Distributions.TriangularDist(150.0, 250.0, 200.0)\nN = 100\nd = sort!(rand(D, N));\nΩ = 1:N\nP = fill(1 / N, N);\nStatsPlots.histogram(d; bins = 20, label = \"\", xlabel = \"Demand\")","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/#JuMP-model","page":"Two-stage stochastic programs","title":"JuMP model","text":"","category":"section"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"The implementation of our two-stage stochastic program in JuMP is:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"model = Model(HiGHS.Optimizer)\nset_silent(model)\n@variable(model, x >= 0)\n@variable(model, 0 <= y[ω in Ω] <= d[ω])\n@constraint(model, [ω in Ω], y[ω] <= x)\n@expression(model, z[ω in Ω], 5y[ω] - 0.1 * (x - y[ω]))\n@objective(model, Max, -2x + sum(P[ω] * z[ω] for ω in Ω))\noptimize!(model)\nsolution_summary(model)","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"The optimal number of pies to make is:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"value(x)","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"The distribution of total profit is:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"total_profit = [-2 * value(x) + value(z[ω]) for ω in Ω]","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"Let's plot it:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"\"\"\"\n bin_distribution(x::Vector{Float64}, N::Int)\n\nA helper function that discretizes `x` into bins of width `N`.\n\"\"\"\nbin_distribution(x, N) = N * (floor(minimum(x) / N):ceil(maximum(x) / N))\n\nplot = StatsPlots.histogram(\n total_profit;\n bins = bin_distribution(total_profit, 25),\n label = \"\",\n xlabel = \"Profit [\\$]\",\n ylabel = \"Number of outcomes\",\n)\nμ = Statistics.mean(total_profit)\nPlots.vline!(\n plot,\n [μ];\n label = \"Expected profit (\\$$(round(Int, μ)))\",\n linewidth = 3,\n)\nplot","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/#Risk-measures","page":"Two-stage stochastic programs","title":"Risk measures","text":"","category":"section"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"A risk measure is a function which maps a random variable to a real number. Common risk measures include the mean (expectation), median, mode, and maximum. We need a risk measure to convert the distribution of second stage costs into a single number that can be optimized.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"Our model currently uses the expectation risk measure, but others are possible too. One popular risk measure is the conditional value at risk (CVaR).","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"CVaR has a parameter gamma, and it computes the expectation of the worst gamma fraction of outcomes.","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"If we are maximizing, so that small outcomes are bad, the definition of CVaR is:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"CVaR_gammaZ = maxlimits_xi xi - frac1gammamathbbE_omegaleft(xi - Z)_+right","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"which can be formulated as the linear program:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"beginaligned\nCVaR_gammaZ = maxlimits_xi z_omega xi - frac1gammasum P_omega z_omega\n z_omega ge xi - Z_omega quad forall omega \n z_omega ge 0 quad forall omega\nendaligned","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"function CVaR(Z::Vector{Float64}, P::Vector{Float64}; γ::Float64)\n @assert 0 < γ <= 1\n N = length(Z)\n model = Model(HiGHS.Optimizer)\n set_silent(model)\n @variable(model, ξ)\n @variable(model, z[1:N] >= 0)\n @constraint(model, [i in 1:N], z[i] >= ξ - Z[i])\n @objective(model, Max, ξ - 1 / γ * sum(P[i] * z[i] for i in 1:N))\n optimize!(model)\n return objective_value(model)\nend","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"When γ is 1.0, we compute the mean of the profit:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"cvar_10 = CVaR(total_profit, P; γ = 1.0)","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"Statistics.mean(total_profit)","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"As γ approaches 0.0, we compute the worst-case (minimum) profit:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"cvar_00 = CVaR(total_profit, P; γ = 0.0001)","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"minimum(total_profit)","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"By varying γ between 0 and 1 we can compute some trade-off of these two extremes:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"cvar_05 = CVaR(total_profit, P; γ = 0.5)","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"Let's plot these outcomes on our distribution:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"plot = StatsPlots.histogram(\n total_profit;\n bins = bin_distribution(total_profit, 25),\n label = \"\",\n xlabel = \"Profit [\\$]\",\n ylabel = \"Number of outcomes\",\n)\nPlots.vline!(\n plot,\n [cvar_10 cvar_05 cvar_00];\n label = [\"γ = 1.0\" \"γ = 0.5\" \"γ = 0.0\"],\n linewidth = 3,\n)\nplot","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/#Risk-averse-sample-average-approximation","page":"Two-stage stochastic programs","title":"Risk averse sample average approximation","text":"","category":"section"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"Because CVaR can be formulated as a linear program, we can form a risk averse sample average approximation model by combining the two formulations:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"γ = 0.4\nmodel = Model(HiGHS.Optimizer)\nset_silent(model)\n@variable(model, x >= 0)\n@variable(model, 0 <= y[ω in Ω] <= d[ω])\n@constraint(model, [ω in Ω], y[ω] <= x)\n@expression(model, Z[ω in Ω], 5 * y[ω] - 0.1(x - y[ω]))\n@variable(model, ξ)\n@variable(model, z[ω in Ω] >= 0)\n@constraint(model, [ω in Ω], z[ω] >= ξ - Z[ω])\n@objective(model, Max, -2x + ξ - 1 / γ * sum(P[ω] * z[ω] for ω in Ω))\noptimize!(model)","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"When gamma = 04, the optimal number of pies to bake is:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"value(x)","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"The distribution of total profit is:","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"risk_averse_total_profit = [value(-2x + Z[ω]) for ω in Ω]\nbins = bin_distribution([total_profit; risk_averse_total_profit], 25)\nplot = StatsPlots.histogram(total_profit; label = \"Expectation\", bins = bins)\nStatsPlots.histogram!(\n plot,\n risk_averse_total_profit;\n label = \"CV@R\",\n bins = bins,\n alpha = 0.5,\n)\nplot","category":"page"},{"location":"tutorials/applications/two_stage_stochastic/#Next-steps","page":"Two-stage stochastic programs","title":"Next steps","text":"","category":"section"},{"location":"tutorials/applications/two_stage_stochastic/","page":"Two-stage stochastic programs","title":"Two-stage stochastic programs","text":"Try solving this problem for different numbers of samples and different distributions.\nRefactor the example to avoid hard-coding the costs. What happens to the solution if the cost of disposing unsold pies increases?\nPlot the optimal number of pies to make for different values of the risk aversion parameter gamma. What is the relationship?","category":"page"},{"location":"packages/solvers/#Introduction","page":"Introduction","title":"Introduction","text":"","category":"section"},{"location":"packages/solvers/","page":"Introduction","title":"Introduction","text":"This section of the documentation contains brief documentation for some of the solvers that JuMP supports. The list of solvers is not exhaustive, but instead is intended to help you discover commonly used solvers.","category":"page"},{"location":"packages/solvers/#Affiliation","page":"Introduction","title":"Affiliation","text":"","category":"section"},{"location":"packages/solvers/","page":"Introduction","title":"Introduction","text":"Packages beginning with jump-dev/ are developed and maintained by the JuMP developers. In many cases, these packages wrap external solvers that are not developed by the JuMP developers and, while the Julia packages are all open-source, in some cases the solvers themselves are closed source commercial products.","category":"page"},{"location":"packages/solvers/","page":"Introduction","title":"Introduction","text":"Packages that do not begin with jump-dev/ are developed independently. The developers of these packages requested or consented to the inclusion of their README contents in the JuMP documentation for the benefit of users.","category":"page"},{"location":"packages/solvers/#Adding-new-solvers","page":"Introduction","title":"Adding new solvers","text":"","category":"section"},{"location":"packages/solvers/","page":"Introduction","title":"Introduction","text":"Written a solver? Add it to this section of the JuMP documentation by making a pull request to the docs/packages.toml file.","category":"page"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/reference/models.md\"","category":"page"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"CurrentModule = MathOptInterface\nDocTestSetup = quote\n import MathOptInterface as MOI\nend\nDocTestFilters = [r\"MathOptInterface|MOI\"]","category":"page"},{"location":"moi/reference/models/#Models","page":"Models","title":"Models","text":"","category":"section"},{"location":"moi/reference/models/#Attribute-interface","page":"Models","title":"Attribute interface","text":"","category":"section"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"is_set_by_optimize\nis_copyable\nget\nget!\nset\nsupports\nattribute_value_type","category":"page"},{"location":"moi/reference/models/#MathOptInterface.is_set_by_optimize","page":"Models","title":"MathOptInterface.is_set_by_optimize","text":"is_set_by_optimize(::AnyAttribute)\n\nReturn a Bool indicating whether the value of the attribute is modified during an optimize! call, that is, the attribute is used to query the result of the optimization.\n\nImportant note when defining new attributes\n\nThis function returns false by default so it should be implemented for attributes that are modified by optimize!.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.is_copyable","page":"Models","title":"MathOptInterface.is_copyable","text":"is_copyable(::AnyAttribute)\n\nReturn a Bool indicating whether the value of the attribute may be copied during copy_to using set.\n\nImportant note when defining new attributes\n\nBy default is_copyable(attr) returns !is_set_by_optimize(attr). A specific method should be defined for attributes which are copied indirectly during copy_to. For instance, both is_copyable and is_set_by_optimize return false for the following attributes:\n\nListOfOptimizerAttributesSet, ListOfModelAttributesSet, ListOfConstraintAttributesSet and ListOfVariableAttributesSet.\nSolverName and RawSolver: these attributes cannot be set.\nNumberOfVariables and ListOfVariableIndices: these attributes are set indirectly by add_variable and add_variables.\nObjectiveFunctionType: this attribute is set indirectly when setting the ObjectiveFunction attribute.\nNumberOfConstraints, ListOfConstraintIndices, ListOfConstraintTypesPresent, CanonicalConstraintFunction, ConstraintFunction and ConstraintSet: these attributes are set indirectly by add_constraint and add_constraints.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.get","page":"Models","title":"MathOptInterface.get","text":"MOI.get(b::AbstractBridge, ::MOI.NumberOfVariables)::Int64\n\nReturn the number of variables created by the bridge b in the model.\n\nSee also MOI.NumberOfConstraints.\n\nImplementation notes\n\nThere is a default fallback, so you need only implement this if the bridge adds new variables.\n\n\n\n\n\nMOI.get(b::AbstractBridge, ::MOI.ListOfVariableIndices)\n\nReturn the list of variables created by the bridge b.\n\nSee also MOI.ListOfVariableIndices.\n\nImplementation notes\n\nThere is a default fallback, so you need only implement this if the bridge adds new variables.\n\n\n\n\n\nMOI.get(b::AbstractBridge, ::MOI.NumberOfConstraints{F,S})::Int64 where {F,S}\n\nReturn the number of constraints of the type F-in-S created by the bridge b.\n\nSee also MOI.NumberOfConstraints.\n\nImplementation notes\n\nThere is a default fallback, so you need only implement this for the constraint types returned by added_constraint_types.\n\n\n\n\n\nMOI.get(b::AbstractBridge, ::MOI.ListOfConstraintIndices{F,S}) where {F,S}\n\nReturn a Vector{ConstraintIndex{F,S}} with indices of all constraints of type F-in-S created by the bride b.\n\nSee also MOI.ListOfConstraintIndices.\n\nImplementation notes\n\nThere is a default fallback, so you need only implement this for the constraint types returned by added_constraint_types.\n\n\n\n\n\nfunction MOI.get(\n model::MOI.ModelLike,\n attr::MOI.AbstractConstraintAttribute,\n bridge::AbstractBridge,\n)\n\nReturn the value of the attribute attr of the model model for the constraint bridged by bridge.\n\n\n\n\n\nget(optimizer::AbstractOptimizer, attr::AbstractOptimizerAttribute)\n\nReturn an attribute attr of the optimizer optimizer.\n\nget(model::ModelLike, attr::AbstractModelAttribute)\n\nReturn an attribute attr of the model model.\n\nget(model::ModelLike, attr::AbstractVariableAttribute, v::VariableIndex)\n\nIf the attribute attr is set for the variable v in the model model, return its value, return nothing otherwise. If the attribute attr is not supported by model then an error should be thrown instead of returning nothing.\n\nget(model::ModelLike, attr::AbstractVariableAttribute, v::Vector{VariableIndex})\n\nReturn a vector of attributes corresponding to each variable in the collection v in the model model.\n\nget(model::ModelLike, attr::AbstractConstraintAttribute, c::ConstraintIndex)\n\nIf the attribute attr is set for the constraint c in the model model, return its value, return nothing otherwise. If the attribute attr is not supported by model then an error should be thrown instead of returning nothing.\n\nget(\n model::ModelLike,\n attr::AbstractConstraintAttribute,\n c::Vector{ConstraintIndex{F,S}},\n) where {F,S}\n\nReturn a vector of attributes corresponding to each constraint in the collection c in the model model.\n\nget(model::ModelLike, ::Type{VariableIndex}, name::String)\n\nIf a variable with name name exists in the model model, return the corresponding index, otherwise return nothing. Errors if two variables have the same name.\n\nget(\n model::ModelLike,\n ::Type{ConstraintIndex{F,S}},\n name::String,\n) where {F,S}\n\nIf an F-in-S constraint with name name exists in the model model, return the corresponding index, otherwise return nothing. Errors if two constraints have the same name.\n\nget(model::ModelLike, ::Type{ConstraintIndex}, name::String)\n\nIf any constraint with name name exists in the model model, return the corresponding index, otherwise return nothing. This version is available for convenience but may incur a performance penalty because it is not type stable. Errors if two constraints have the same name.\n\n\n\n\n\nget(model::GenericModel, attr::MathOptInterface.AbstractOptimizerAttribute)\n\nReturn the value of the attribute attr from the model's MOI backend.\n\n\n\n\n\nget(model::GenericModel, attr::MathOptInterface.AbstractModelAttribute)\n\nReturn the value of the attribute attr from the model's MOI backend.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.get!","page":"Models","title":"MathOptInterface.get!","text":"get!(output, model::ModelLike, args...)\n\nAn in-place version of get.\n\nThe signature matches that of get except that the the result is placed in the vector output.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.set","page":"Models","title":"MathOptInterface.set","text":"function MOI.set(\n model::MOI.ModelLike,\n attr::MOI.AbstractConstraintAttribute,\n bridge::AbstractBridge,\n value,\n)\n\nSet the value of the attribute attr of the model model for the constraint bridged by bridge.\n\n\n\n\n\nset(optimizer::AbstractOptimizer, attr::AbstractOptimizerAttribute, value)\n\nAssign value to the attribute attr of the optimizer optimizer.\n\nset(model::ModelLike, attr::AbstractModelAttribute, value)\n\nAssign value to the attribute attr of the model model.\n\nset(model::ModelLike, attr::AbstractVariableAttribute, v::VariableIndex, value)\n\nAssign value to the attribute attr of variable v in model model.\n\nset(\n model::ModelLike,\n attr::AbstractVariableAttribute,\n v::Vector{VariableIndex},\n vector_of_values,\n)\n\nAssign a value respectively to the attribute attr of each variable in the collection v in model model.\n\nset(\n model::ModelLike,\n attr::AbstractConstraintAttribute,\n c::ConstraintIndex,\n value,\n)\n\nAssign a value to the attribute attr of constraint c in model model.\n\nset(\n model::ModelLike,\n attr::AbstractConstraintAttribute,\n c::Vector{ConstraintIndex{F,S}},\n vector_of_values,\n) where {F,S}\n\nAssign a value respectively to the attribute attr of each constraint in the collection c in model model.\n\nAn UnsupportedAttribute error is thrown if model does not support the attribute attr (see supports) and a SetAttributeNotAllowed error is thrown if it supports the attribute attr but it cannot be set.\n\nset(\n model::ModelLike,\n ::ConstraintSet,\n c::ConstraintIndex{F,S},\n set::S,\n) where {F,S}\n\nChange the set of constraint c to the new set set which should be of the same type as the original set.\n\nset(\n model::ModelLike,\n ::ConstraintFunction,\n c::ConstraintIndex{F,S},\n func::F,\n) where {F,S}\n\nReplace the function in constraint c with func. F must match the original function type used to define the constraint.\n\nnote: Note\nSetting the constraint function is not allowed if F is VariableIndex; a SettingVariableIndexNotAllowed error is thrown instead. This is because, it would require changing the index c since the index of VariableIndex constraints must be the same as the index of the variable.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.supports","page":"Models","title":"MathOptInterface.supports","text":"MOI.supports(\n model::MOI.ModelLike,\n attr::MOI.AbstractConstraintAttribute,\n BT::Type{<:AbstractBridge},\n)\n\nReturn a Bool indicating whether BT supports setting attr to model.\n\n\n\n\n\nsupports(model::ModelLike, sub::AbstractSubmittable)::Bool\n\nReturn a Bool indicating whether model supports the submittable sub.\n\nsupports(model::ModelLike, attr::AbstractOptimizerAttribute)::Bool\n\nReturn a Bool indicating whether model supports the optimizer attribute attr. That is, it returns false if copy_to(model, src) shows a warning in case attr is in the ListOfOptimizerAttributesSet of src; see copy_to for more details on how unsupported optimizer attributes are handled in copy.\n\nsupports(model::ModelLike, attr::AbstractModelAttribute)::Bool\n\nReturn a Bool indicating whether model supports the model attribute attr. That is, it returns false if copy_to(model, src) cannot be performed in case attr is in the ListOfModelAttributesSet of src.\n\nsupports(\n model::ModelLike,\n attr::AbstractVariableAttribute,\n ::Type{VariableIndex},\n)::Bool\n\nReturn a Bool indicating whether model supports the variable attribute attr. That is, it returns false if copy_to(model, src) cannot be performed in case attr is in the ListOfVariableAttributesSet of src.\n\nsupports(\n model::ModelLike,\n attr::AbstractConstraintAttribute,\n ::Type{ConstraintIndex{F,S}},\n)::Bool where {F,S}\n\nReturn a Bool indicating whether model supports the constraint attribute attr applied to an F-in-S constraint. That is, it returns false if copy_to(model, src) cannot be performed in case attr is in the ListOfConstraintAttributesSet of src.\n\nFor all five methods, if the attribute is only not supported in specific circumstances, it should still return true.\n\nNote that supports is only defined for attributes for which is_copyable returns true as other attributes do not appear in the list of attributes set obtained by ListOf...AttributesSet.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.attribute_value_type","page":"Models","title":"MathOptInterface.attribute_value_type","text":"attribute_value_type(attr::AnyAttribute)\n\nGiven an attribute attr, return the type of value expected by get, or returned by set.\n\nNotes\n\nOnly implement this if it make sense to do so. If un-implemented, the default is Any.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#Model-interface","page":"Models","title":"Model interface","text":"","category":"section"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"ModelLike\nis_empty\nempty!\nwrite_to_file\nread_from_file\nsupports_incremental_interface\ncopy_to\nIndexMap","category":"page"},{"location":"moi/reference/models/#MathOptInterface.ModelLike","page":"Models","title":"MathOptInterface.ModelLike","text":"ModelLike\n\nAbstract supertype for objects that implement the \"Model\" interface for defining an optimization problem.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.is_empty","page":"Models","title":"MathOptInterface.is_empty","text":"is_empty(model::ModelLike)\n\nReturns false if the model has any model attribute set or has any variables or constraints.\n\nNote that an empty model can have optimizer attributes set.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.empty!","page":"Models","title":"MathOptInterface.empty!","text":"empty!(model::ModelLike)\n\nEmpty the model, that is, remove all variables, constraints and model attributes but not optimizer attributes.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.write_to_file","page":"Models","title":"MathOptInterface.write_to_file","text":"write_to_file(model::ModelLike, filename::String)\n\nWrite the current model to the file at filename.\n\nSupported file types depend on the model type.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.read_from_file","page":"Models","title":"MathOptInterface.read_from_file","text":"read_from_file(model::ModelLike, filename::String)\n\nRead the file filename into the model model. If model is non-empty, this may throw an error.\n\nSupported file types depend on the model type.\n\nNote\n\nOnce the contents of the file are loaded into the model, users can query the variables via get(model, ListOfVariableIndices()). However, some filetypes, such as LP files, do not maintain an explicit ordering of the variables. Therefore, the returned list may be in an arbitrary order.\n\nTo avoid depending on the order of the indices, look up each variable index by name using get(model, VariableIndex, \"name\").\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.supports_incremental_interface","page":"Models","title":"MathOptInterface.supports_incremental_interface","text":"supports_incremental_interface(model::ModelLike)\n\nReturn a Bool indicating whether model supports building incrementally via add_variable and add_constraint.\n\nThe main purpose of this function is to determine whether a model can be loaded into model incrementally or whether it should be cached and copied at once instead.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.copy_to","page":"Models","title":"MathOptInterface.copy_to","text":"copy_to(dest::ModelLike, src::ModelLike)::IndexMap\n\nCopy the model from src into dest.\n\nThe target dest is emptied, and all previous indices to variables and constraints in dest are invalidated.\n\nReturns an IndexMap object that translates variable and constraint indices from the src model to the corresponding indices in the dest model.\n\nNotes\n\nIf a constraint that in src is not supported by dest, then an UnsupportedConstraint error is thrown.\nIf an AbstractModelAttribute, AbstractVariableAttribute, or AbstractConstraintAttribute is set in src but not supported by dest, then an UnsupportedAttribute error is thrown.\n\nAbstractOptimizerAttributes are not copied to the dest model.\n\nIndexMap\n\nImplementations of copy_to must return an IndexMap. For technical reasons, this type is defined in the Utilities submodule as MOI.Utilities.IndexMap. However, since it is an integral part of the MOI API, we provide MOI.IndexMap as an alias.\n\nExample\n\n# Given empty `ModelLike` objects `src` and `dest`.\n\nx = add_variable(src)\n\nis_valid(src, x) # true\nis_valid(dest, x) # false (`dest` has no variables)\n\nindex_map = copy_to(dest, src)\nis_valid(dest, x) # false (unless index_map[x] == x)\nis_valid(dest, index_map[x]) # true\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.IndexMap","page":"Models","title":"MathOptInterface.IndexMap","text":"IndexMap()\n\nThe dictionary-like object returned by copy_to.\n\nIndexMap\n\nImplementations of copy_to must return an IndexMap. For technical reasons, the IndexMap type is defined in the Utilities submodule as MOI.Utilities.IndexMap. However, since it is an integral part of the MOI API, we provide this MOI.IndexMap as an alias.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#Model-attributes","page":"Models","title":"Model attributes","text":"","category":"section"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"AbstractModelAttribute\nName\nObjectiveFunction\nObjectiveFunctionType\nObjectiveSense\nOptimizationSense\nMIN_SENSE\nMAX_SENSE\nFEASIBILITY_SENSE\nNumberOfVariables\nListOfVariableIndices\nListOfConstraintTypesPresent\nNumberOfConstraints\nListOfConstraintIndices\nListOfOptimizerAttributesSet\nListOfModelAttributesSet\nListOfVariableAttributesSet\nListOfConstraintAttributesSet\nUserDefinedFunction\nListOfSupportedNonlinearOperators","category":"page"},{"location":"moi/reference/models/#MathOptInterface.AbstractModelAttribute","page":"Models","title":"MathOptInterface.AbstractModelAttribute","text":"AbstractModelAttribute\n\nAbstract supertype for attribute objects that can be used to set or get attributes (properties) of the model.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.Name","page":"Models","title":"MathOptInterface.Name","text":"Name()\n\nA model attribute for the string identifying the model. It has a default value of \"\" if not set`.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ObjectiveFunction","page":"Models","title":"MathOptInterface.ObjectiveFunction","text":"ObjectiveFunction{F<:AbstractScalarFunction}()\n\nA model attribute for the objective function which has a type F<:AbstractScalarFunction.\n\nF should be guaranteed to be equivalent but not necessarily identical to the function type provided by the user.\n\nThrows an InexactError if the objective function cannot be converted to F, e.g., the objective function is quadratic and F is ScalarAffineFunction{Float64} or it has non-integer coefficient and F is ScalarAffineFunction{Int}.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ObjectiveFunctionType","page":"Models","title":"MathOptInterface.ObjectiveFunctionType","text":"ObjectiveFunctionType()\n\nA model attribute for the type F of the objective function set using the ObjectiveFunction{F} attribute.\n\nExamples\n\nIn the following code, attr should be equal to MOI.VariableIndex:\n\nx = MOI.add_variable(model)\nMOI.set(model, MOI.ObjectiveFunction{MOI.VariableIndex}(), x)\nattr = MOI.get(model, MOI.ObjectiveFunctionType())\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ObjectiveSense","page":"Models","title":"MathOptInterface.ObjectiveSense","text":"ObjectiveSense()\n\nA model attribute for the objective sense of the objective function, which must be an OptimizationSense: MIN_SENSE, MAX_SENSE, or FEASIBILITY_SENSE. The default is FEASIBILITY_SENSE.\n\nInteraction with ObjectiveFunction\n\nSetting the sense to FEASIBILITY_SENSE unsets the ObjectiveFunction attribute. That is, if you first set ObjectiveFunction and then set ObjectiveSense to be FEASIBILITY_SENSE, no objective function will be passed to the solver.\n\nIn addition, some reformulations of ObjectiveFunction via bridges rely on the value of ObjectiveSense. Therefore, you should set ObjectiveSense before setting ObjectiveFunction.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.OptimizationSense","page":"Models","title":"MathOptInterface.OptimizationSense","text":"OptimizationSense\n\nAn enum for the value of the ObjectiveSense attribute.\n\nValues\n\nPossible values are:\n\nMIN_SENSE: the goal is to minimize the objective function\nMAX_SENSE: the goal is to maximize the objective function\nFEASIBILITY_SENSE: the model does not have an objective function\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.MIN_SENSE","page":"Models","title":"MathOptInterface.MIN_SENSE","text":"MIN_SENSE::OptimizationSense\n\nAn instance of the OptimizationSense enum.\n\nMIN_SENSE: the goal is to minimize the objective function\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.MAX_SENSE","page":"Models","title":"MathOptInterface.MAX_SENSE","text":"MAX_SENSE::OptimizationSense\n\nAn instance of the OptimizationSense enum.\n\nMAX_SENSE: the goal is to maximize the objective function\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.FEASIBILITY_SENSE","page":"Models","title":"MathOptInterface.FEASIBILITY_SENSE","text":"FEASIBILITY_SENSE::OptimizationSense\n\nAn instance of the OptimizationSense enum.\n\nFEASIBILITY_SENSE: the model does not have an objective function\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.NumberOfVariables","page":"Models","title":"MathOptInterface.NumberOfVariables","text":"NumberOfVariables()\n\nA model attribute for the number of variables in the model.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ListOfVariableIndices","page":"Models","title":"MathOptInterface.ListOfVariableIndices","text":"ListOfVariableIndices()\n\nA model attribute for the Vector{VariableIndex} of all variable indices present in the model (i.e., of length equal to the value of NumberOfVariables in the order in which they were added.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ListOfConstraintTypesPresent","page":"Models","title":"MathOptInterface.ListOfConstraintTypesPresent","text":"ListOfConstraintTypesPresent()\n\nA model attribute for the list of tuples of the form (F,S), where F is a function type and S is a set type indicating that the attribute NumberOfConstraints{F,S} has a value greater than zero.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.NumberOfConstraints","page":"Models","title":"MathOptInterface.NumberOfConstraints","text":"NumberOfConstraints{F,S}()\n\nA model attribute for the number of constraints of the type F-in-S present in the model.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ListOfConstraintIndices","page":"Models","title":"MathOptInterface.ListOfConstraintIndices","text":"ListOfConstraintIndices{F,S}()\n\nA model attribute for the Vector{ConstraintIndex{F,S}} of all constraint indices of type F-in-S in the model (i.e., of length equal to the value of NumberOfConstraints{F,S}) in the order in which they were added.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ListOfOptimizerAttributesSet","page":"Models","title":"MathOptInterface.ListOfOptimizerAttributesSet","text":"ListOfOptimizerAttributesSet()\n\nAn optimizer attribute for the Vector{AbstractOptimizerAttribute} of all optimizer attributes that were set.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ListOfModelAttributesSet","page":"Models","title":"MathOptInterface.ListOfModelAttributesSet","text":"ListOfModelAttributesSet()\n\nA model attribute for the Vector{AbstractModelAttribute} of all model attributes attr such that:\n\nis_copyable(attr) returns true, and\nthe attribute was set to the model\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ListOfVariableAttributesSet","page":"Models","title":"MathOptInterface.ListOfVariableAttributesSet","text":"ListOfVariableAttributesSet()\n\nA model attribute for the Vector{AbstractVariableAttribute} of all variable attributes attr such that 1) is_copyable(attr) returns true and 2) the attribute was set to variables.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ListOfConstraintAttributesSet","page":"Models","title":"MathOptInterface.ListOfConstraintAttributesSet","text":"ListOfConstraintAttributesSet{F, S}()\n\nA model attribute for the Vector{AbstractConstraintAttribute} of all constraint attributes attr such that:\n\nis_copyable(attr) returns true and\nthe attribute was set to F-in-S constraints.\n\nNote\n\nThe attributes ConstraintFunction and ConstraintSet should not be included in the list even if then have been set with set.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.UserDefinedFunction","page":"Models","title":"MathOptInterface.UserDefinedFunction","text":"UserDefinedFunction(name::Symbol, arity::Int) <: AbstractModelAttribute\n\nSet this attribute to register a user-defined function by the name of name with arity arguments.\n\nOnce registered, name will appear in ListOfSupportedNonlinearOperators.\n\nYou cannot register multiple UserDefinedFunctions with the same name but different arity.\n\nValue type\n\nThe value to be set is a tuple containing one, two, or three functions to evaluate the function, the first-order derivative, and the second-order derivative respectively. Both derivatives are optional, but if you pass the second-order derivative you must also pass the first-order derivative.\n\nFor univariate functions with arity == 1, the functions in the tuple must have the form:\n\nf(x::T)::T: returns the value of the function at x\n∇f(x::T)::T: returns the first-order derivative of f with respect to x\n∇²f(x::T)::T: returns the second-order derivative of f with respect to x.\n\nFor multivariate functions with arity > 1, the functions in the tuple must have the form:\n\nf(x::T...)::T: returns the value of the function at x\n∇f(g::AbstractVector{T}, x::T...)::Nothing: fills the components of g, with g[i] being the first-order partial derivative of f with respect to x[i]\n∇²f(H::AbstractMatrix{T}, x::T...)::Nothing: fills the non-zero components of H, with H[i, j] being the second-order partial derivative of f with respect to x[i] and then x[j]. H is initialized to the zero matrix, so you do not need to set any zero elements.\n\nExamples\n\njulia> import MathOptInterface as MOI\n\njulia> f(x, y) = x^2 + y^2\nf (generic function with 1 method)\n\njulia> function ∇f(g, x, y)\n g .= 2 * x, 2 * y\n return\n end\n∇f (generic function with 1 method)\n\njulia> function ∇²f(H, x...)\n H[1, 1] = H[2, 2] = 2.0\n return\n end\n∇²f (generic function with 1 method)\n\njulia> model = MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}())\nMOIU.UniversalFallback{MOIU.Model{Float64}}\nfallback for MOIU.Model{Float64}\n\njulia> MOI.set(model, MOI.UserDefinedFunction(:f, 2), (f,))\n\njulia> MOI.set(model, MOI.UserDefinedFunction(:g, 2), (f, ∇f))\n\njulia> MOI.set(model, MOI.UserDefinedFunction(:h, 2), (f, ∇f, ∇²f))\n\njulia> x = MOI.add_variables(model, 2)\n2-element Vector{MathOptInterface.VariableIndex}:\n MOI.VariableIndex(1)\n MOI.VariableIndex(2)\n\njulia> MOI.set(model, MOI.ObjectiveSense(), MOI.MIN_SENSE)\n\njulia> obj_f = MOI.ScalarNonlinearFunction(:f, Any[x[1], x[2]])\nf(MOI.VariableIndex(1), MOI.VariableIndex(2))\n\njulia> MOI.set(model, MOI.ObjectiveFunction{typeof(obj_f)}(), obj_f)\n\njulia> print(model)\nMinimize ScalarNonlinearFunction:\n f(v[1], v[2])\n\nSubject to:\n\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ListOfSupportedNonlinearOperators","page":"Models","title":"MathOptInterface.ListOfSupportedNonlinearOperators","text":"ListOfSupportedNonlinearOperators() <: AbstractModelAttribute\n\nWhen queried with get, return a Vector{Symbol} listing the operators supported by the model.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#Optimizer-interface","page":"Models","title":"Optimizer interface","text":"","category":"section"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"AbstractOptimizer\nOptimizerWithAttributes\noptimize!\noptimize!(::ModelLike, ::ModelLike)\ninstantiate\ndefault_cache","category":"page"},{"location":"moi/reference/models/#MathOptInterface.AbstractOptimizer","page":"Models","title":"MathOptInterface.AbstractOptimizer","text":"AbstractOptimizer <: ModelLike\n\nAbstract supertype for objects representing an instance of an optimization problem tied to a particular solver. This is typically a solver's in-memory representation. In addition to ModelLike, AbstractOptimizer objects let you solve the model and query the solution.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.OptimizerWithAttributes","page":"Models","title":"MathOptInterface.OptimizerWithAttributes","text":"struct OptimizerWithAttributes\n optimizer_constructor\n params::Vector{Pair{AbstractOptimizerAttribute,<:Any}}\nend\n\nObject grouping an optimizer constructor and a list of optimizer attributes. Instances are created with instantiate.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.optimize!","page":"Models","title":"MathOptInterface.optimize!","text":"optimize!(optimizer::AbstractOptimizer)\n\nOptimize the problem contained in optimizer.\n\nBefore calling optimize!, the problem should first be constructed using the incremental interface (see supports_incremental_interface) or copy_to.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.optimize!-Tuple{MathOptInterface.ModelLike, MathOptInterface.ModelLike}","page":"Models","title":"MathOptInterface.optimize!","text":"optimize!(dest::AbstractOptimizer, src::ModelLike)::Tuple{IndexMap,Bool}\n\nA \"one-shot\" call that copies the problem from src into dest and then uses dest to optimize the problem.\n\nReturns a tuple of an IndexMap and a Bool copied.\n\nThe IndexMap object translates variable and constraint indices from the src model to the corresponding indices in the dest optimizer. See copy_to for details.\nIf copied == true, src was copied to dest and then cached, allowing incremental modification if supported by the solver.\nIf copied == false, a cache of the model was not kept in dest. Therefore, only the solution information (attributes for which is_set_by_optimize is true) is available to query.\n\nnote: Note\nThe main purpose of optimize! method with two arguments is for use in Utilities.CachingOptimizer.\n\nRelationship to the single-argument optimize!\n\nThe default fallback of optimize!(dest::AbstractOptimizer, src::ModelLike) is\n\nfunction optimize!(dest::AbstractOptimizer, src::ModelLike)\n index_map = copy_to(dest, src)\n optimize!(dest)\n return index_map, true\nend\n\nTherefore, subtypes of AbstractOptimizer should either implement this two-argument method, or implement both copy_to(::Optimizer, ::ModelLike) and optimize!(::Optimizer).\n\n\n\n\n\n","category":"method"},{"location":"moi/reference/models/#MathOptInterface.instantiate","page":"Models","title":"MathOptInterface.instantiate","text":"instantiate(\n optimizer_constructor,\n with_cache_type::Union{Nothing,Type} = nothing,\n with_bridge_type::Union{Nothing,Type} = nothing,\n)\n\nCreate an instance of an optimizer by either:\n\ncalling optimizer_constructor.optimizer_constructor() and setting the parameters in optimizer_constructor.params if optimizer_constructor is a OptimizerWithAttributes\ncalling optimizer_constructor() if optimizer_constructor is callable.\n\nwithcachetype\n\nIf with_cache_type is not nothing, then the optimizer is wrapped in a Utilities.CachingOptimizer to store a cache of the model. This is most useful if the optimizer you are constructing does not support the incremental interface (see supports_incremental_interface).\n\nwithbridgetype\n\nIf with_bridge_type is not nothing, the optimizer is wrapped in a Bridges.full_bridge_optimizer, enabling all the bridges defined in the MOI.Bridges submodule with coefficient type with_bridge_type.\n\nIn addition, if the optimizer created by optimizer_constructor does not support the incremental interface (see supports_incremental_interface), then, irrespective of with_cache_type, the optimizer is wrapped in a Utilities.CachingOptimizer to store a cache of the bridged model.\n\nIf with_cache_type and with_bridge_type are both not nothing, then they must be the same type.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.default_cache","page":"Models","title":"MathOptInterface.default_cache","text":"default_cache(optimizer::ModelLike, ::Type{T}) where {T}\n\nReturn a new instance of the default model type to be used as cache for optimizer in a Utilities.CachingOptimizer for holding constraints of coefficient type T. By default, this returns Utilities.UniversalFallback(Utilities.Model{T}()). If copying from a instance of a given model type is faster for optimizer then a new method returning an instance of this model type should be defined.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#Optimizer-attributes","page":"Models","title":"Optimizer attributes","text":"","category":"section"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"AbstractOptimizerAttribute\nSolverName\nSolverVersion\nSilent\nTimeLimitSec\nObjectiveLimit\nRawOptimizerAttribute\nNumberOfThreads\nRawSolver\nAbsoluteGapTolerance\nRelativeGapTolerance","category":"page"},{"location":"moi/reference/models/#MathOptInterface.AbstractOptimizerAttribute","page":"Models","title":"MathOptInterface.AbstractOptimizerAttribute","text":"AbstractOptimizerAttribute\n\nAbstract supertype for attribute objects that can be used to set or get attributes (properties) of the optimizer.\n\nNotes\n\nThe difference between AbstractOptimizerAttribute and AbstractModelAttribute lies in the behavior of is_empty, empty! and copy_to. Typically optimizer attributes affect only how the model is solved.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.SolverName","page":"Models","title":"MathOptInterface.SolverName","text":"SolverName()\n\nAn optimizer attribute for the string identifying the solver/optimizer.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.SolverVersion","page":"Models","title":"MathOptInterface.SolverVersion","text":"SolverVersion()\n\nAn optimizer attribute for the string identifying the version of the solver.\n\nnote: Note\nFor solvers supporting semantic versioning, the SolverVersion should be a string of the form \"vMAJOR.MINOR.PATCH\", so that it can be converted to a Julia VersionNumber (e.g., `VersionNumber(\"v1.2.3\")).We do not require Semantic Versioning because some solvers use alternate versioning systems. For example, CPLEX uses Calendar Versioning, so SolverVersion will return a string like \"202001\".\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.Silent","page":"Models","title":"MathOptInterface.Silent","text":"Silent()\n\nAn optimizer attribute for silencing the output of an optimizer. When set to true, it takes precedence over any other attribute controlling verbosity and requires the solver to produce no output. The default value is false which has no effect. In this case the verbosity is controlled by other attributes.\n\nNote\n\nEvery optimizer should have verbosity on by default. For instance, if a solver has a solver-specific log level attribute, the MOI implementation should set it to 1 by default. If the user sets Silent to true, then the log level should be set to 0, even if the user specifically sets a value of log level. If the value of Silent is false then the log level set to the solver is the value given by the user for this solver-specific parameter or 1 if none is given.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.TimeLimitSec","page":"Models","title":"MathOptInterface.TimeLimitSec","text":"TimeLimitSec()\n\nAn optimizer attribute for setting a time limit (in seconnds) for an optimization. When set to nothing, it deactivates the solver time limit. The default value is nothing.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ObjectiveLimit","page":"Models","title":"MathOptInterface.ObjectiveLimit","text":"ObjectiveLimit()\n\nAn optimizer attribute for setting a limit on the objective value.\n\nThe provided limit must be a Union{Real,Nothing}.\n\nWhen set to nothing, the limit reverts to the solver's default.\n\nThe default value is nothing.\n\nThe solver may stop when the ObjectiveValue is better (lower for minimization, higher for maximization) than the ObjectiveLimit. If stopped, the TerminationStatus should be OBJECTIVE_LIMIT.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.RawOptimizerAttribute","page":"Models","title":"MathOptInterface.RawOptimizerAttribute","text":"RawOptimizerAttribute(name::String)\n\nAn optimizer attribute for the solver-specific parameter identified by name.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.NumberOfThreads","page":"Models","title":"MathOptInterface.NumberOfThreads","text":"NumberOfThreads()\n\nAn optimizer attribute for setting the number of threads used for an optimization. When set to nothing uses solver default. Values are positive integers. The default value is nothing.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.RawSolver","page":"Models","title":"MathOptInterface.RawSolver","text":"RawSolver()\n\nA model attribute for the object that may be used to access a solver-specific API for this optimizer.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.AbsoluteGapTolerance","page":"Models","title":"MathOptInterface.AbsoluteGapTolerance","text":"AbsoluteGapTolerance()\n\nAn optimizer attribute for setting the absolute gap tolerance for an optimization. This is an optimizer attribute, and should be set before calling optimize!. When set to nothing (if supported), uses solver default.\n\nTo set a relative gap tolerance, see RelativeGapTolerance.\n\nwarning: Warning\nThe mathematical definition of \"absolute gap\", and its treatment during the optimization, are solver-dependent. However, assuming no other limit nor issue is encountered during the optimization, most solvers that implement this attribute will stop once f - b g_abs, where b is the best bound, f is the best feasible objective value, and g_abs is the absolute gap.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.RelativeGapTolerance","page":"Models","title":"MathOptInterface.RelativeGapTolerance","text":"RelativeGapTolerance()\n\nAn optimizer attribute for setting the relative gap tolerance for an optimization. This is an optimizer attribute, and should be set before calling optimize!. When set to nothing (if supported), uses solver default.\n\nIf you are looking for the relative gap of the current best solution, see RelativeGap. If no limit nor issue is encountered during the optimization, the value of RelativeGap should be at most as large as RelativeGapTolerance.\n\n# Before optimizing: set relative gap tolerance\n# set 0.1% relative gap tolerance\nMOI.set(model, MOI.RelativeGapTolerance(), 1e-3)\nMOI.optimize!(model)\n\n# After optimizing (assuming all went well)\n# The relative gap tolerance has not changed...\nMOI.get(model, MOI.RelativeGapTolerance()) # returns 1e-3\n# ... and the relative gap of the obtained solution is smaller or equal to the\n# tolerance\nMOI.get(model, MOI.RelativeGap()) # should return something ≤ 1e-3\n\nwarning: Warning\nThe mathematical definition of \"relative gap\", and its allowed range, are solver-dependent. Typically, solvers expect a value between 0.0 and 1.0.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"List of attributes useful for optimizers","category":"page"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"TerminationStatus\nTerminationStatusCode\nOPTIMIZE_NOT_CALLED\nOPTIMAL\nINFEASIBLE\nDUAL_INFEASIBLE\nLOCALLY_SOLVED\nLOCALLY_INFEASIBLE\nINFEASIBLE_OR_UNBOUNDED\nALMOST_OPTIMAL\nALMOST_INFEASIBLE\nALMOST_DUAL_INFEASIBLE\nALMOST_LOCALLY_SOLVED\nITERATION_LIMIT\nTIME_LIMIT\nNODE_LIMIT\nSOLUTION_LIMIT\nMEMORY_LIMIT\nOBJECTIVE_LIMIT\nNORM_LIMIT\nOTHER_LIMIT\nSLOW_PROGRESS\nNUMERICAL_ERROR\nINVALID_MODEL\nINVALID_OPTION\nINTERRUPTED\nOTHER_ERROR\nPrimalStatus\nDualStatus\nRawStatusString\nResultCount\nObjectiveValue\nDualObjectiveValue\nObjectiveBound\nRelativeGap\nSolveTimeSec\nSimplexIterations\nBarrierIterations\nNodeCount","category":"page"},{"location":"moi/reference/models/#MathOptInterface.TerminationStatus","page":"Models","title":"MathOptInterface.TerminationStatus","text":"TerminationStatus()\n\nA model attribute for the TerminationStatusCode explaining why the optimizer stopped.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.TerminationStatusCode","page":"Models","title":"MathOptInterface.TerminationStatusCode","text":"TerminationStatusCode\n\nAn Enum of possible values for the TerminationStatus attribute. This attribute is meant to explain the reason why the optimizer stopped executing in the most recent call to optimize!.\n\nValues\n\nPossible values are:\n\nOPTIMIZE_NOT_CALLED: The algorithm has not started.\nOPTIMAL: The algorithm found a globally optimal solution.\nINFEASIBLE: The algorithm concluded that no feasible solution exists.\nDUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.\nLOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.\nLOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.\nINFEASIBLE_OR_UNBOUNDED: The algorithm stopped because it decided that the problem is infeasible or unbounded; this occasionally happens during MIP presolve.\nALMOST_OPTIMAL: The algorithm found a globally optimal solution to relaxed tolerances.\nALMOST_INFEASIBLE: The algorithm concluded that no feasible solution exists within relaxed tolerances.\nALMOST_DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem within relaxed tolerances.\nALMOST_LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, or could not find directions for improvement within relaxed tolerances.\nITERATION_LIMIT: An iterative algorithm stopped after conducting the maximum number of iterations.\nTIME_LIMIT: The algorithm stopped after a user-specified computation time.\nNODE_LIMIT: A branch-and-bound algorithm stopped because it explored a maximum number of nodes in the branch-and-bound tree.\nSOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.\nMEMORY_LIMIT: The algorithm stopped because it ran out of memory.\nOBJECTIVE_LIMIT: The algorithm stopped because it found a solution better than a minimum limit set by the user.\nNORM_LIMIT: The algorithm stopped because the norm of an iterate became too large.\nOTHER_LIMIT: The algorithm stopped due to a limit not covered by one of the _LIMIT_ statuses above.\nSLOW_PROGRESS: The algorithm stopped because it was unable to continue making progress towards the solution.\nNUMERICAL_ERROR: The algorithm stopped because it encountered unrecoverable numerical error.\nINVALID_MODEL: The algorithm stopped because the model is invalid.\nINVALID_OPTION: The algorithm stopped because it was provided an invalid option.\nINTERRUPTED: The algorithm stopped because of an interrupt signal.\nOTHER_ERROR: The algorithm stopped because of an error not covered by one of the statuses defined above.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.OPTIMIZE_NOT_CALLED","page":"Models","title":"MathOptInterface.OPTIMIZE_NOT_CALLED","text":"OPTIMIZE_NOT_CALLED::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nOPTIMIZE_NOT_CALLED: The algorithm has not started.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.OPTIMAL","page":"Models","title":"MathOptInterface.OPTIMAL","text":"OPTIMAL::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nOPTIMAL: The algorithm found a globally optimal solution.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.INFEASIBLE","page":"Models","title":"MathOptInterface.INFEASIBLE","text":"INFEASIBLE::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nINFEASIBLE: The algorithm concluded that no feasible solution exists.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.DUAL_INFEASIBLE","page":"Models","title":"MathOptInterface.DUAL_INFEASIBLE","text":"DUAL_INFEASIBLE::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nDUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem. If, additionally, a feasible (primal) solution is known to exist, this status typically implies that the problem is unbounded, with some technical exceptions.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.LOCALLY_SOLVED","page":"Models","title":"MathOptInterface.LOCALLY_SOLVED","text":"LOCALLY_SOLVED::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nLOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, could not find directions for improvement, or otherwise completed its search without global guarantees.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.LOCALLY_INFEASIBLE","page":"Models","title":"MathOptInterface.LOCALLY_INFEASIBLE","text":"LOCALLY_INFEASIBLE::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nLOCALLY_INFEASIBLE: The algorithm converged to an infeasible point or otherwise completed its search without finding a feasible solution, without guarantees that no feasible solution exists.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.INFEASIBLE_OR_UNBOUNDED","page":"Models","title":"MathOptInterface.INFEASIBLE_OR_UNBOUNDED","text":"INFEASIBLE_OR_UNBOUNDED::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nINFEASIBLE_OR_UNBOUNDED: The algorithm stopped because it decided that the problem is infeasible or unbounded; this occasionally happens during MIP presolve.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.ALMOST_OPTIMAL","page":"Models","title":"MathOptInterface.ALMOST_OPTIMAL","text":"ALMOST_OPTIMAL::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nALMOST_OPTIMAL: The algorithm found a globally optimal solution to relaxed tolerances.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.ALMOST_INFEASIBLE","page":"Models","title":"MathOptInterface.ALMOST_INFEASIBLE","text":"ALMOST_INFEASIBLE::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nALMOST_INFEASIBLE: The algorithm concluded that no feasible solution exists within relaxed tolerances.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.ALMOST_DUAL_INFEASIBLE","page":"Models","title":"MathOptInterface.ALMOST_DUAL_INFEASIBLE","text":"ALMOST_DUAL_INFEASIBLE::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nALMOST_DUAL_INFEASIBLE: The algorithm concluded that no dual bound exists for the problem within relaxed tolerances.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.ALMOST_LOCALLY_SOLVED","page":"Models","title":"MathOptInterface.ALMOST_LOCALLY_SOLVED","text":"ALMOST_LOCALLY_SOLVED::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nALMOST_LOCALLY_SOLVED: The algorithm converged to a stationary point, local optimal solution, or could not find directions for improvement within relaxed tolerances.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.ITERATION_LIMIT","page":"Models","title":"MathOptInterface.ITERATION_LIMIT","text":"ITERATION_LIMIT::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nITERATION_LIMIT: An iterative algorithm stopped after conducting the maximum number of iterations.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.TIME_LIMIT","page":"Models","title":"MathOptInterface.TIME_LIMIT","text":"TIME_LIMIT::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nTIME_LIMIT: The algorithm stopped after a user-specified computation time.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.NODE_LIMIT","page":"Models","title":"MathOptInterface.NODE_LIMIT","text":"NODE_LIMIT::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nNODE_LIMIT: A branch-and-bound algorithm stopped because it explored a maximum number of nodes in the branch-and-bound tree.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.SOLUTION_LIMIT","page":"Models","title":"MathOptInterface.SOLUTION_LIMIT","text":"SOLUTION_LIMIT::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nSOLUTION_LIMIT: The algorithm stopped because it found the required number of solutions. This is often used in MIPs to get the solver to return the first feasible solution it encounters.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.MEMORY_LIMIT","page":"Models","title":"MathOptInterface.MEMORY_LIMIT","text":"MEMORY_LIMIT::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nMEMORY_LIMIT: The algorithm stopped because it ran out of memory.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.OBJECTIVE_LIMIT","page":"Models","title":"MathOptInterface.OBJECTIVE_LIMIT","text":"OBJECTIVE_LIMIT::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nOBJECTIVE_LIMIT: The algorithm stopped because it found a solution better than a minimum limit set by the user.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.NORM_LIMIT","page":"Models","title":"MathOptInterface.NORM_LIMIT","text":"NORM_LIMIT::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nNORM_LIMIT: The algorithm stopped because the norm of an iterate became too large.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.OTHER_LIMIT","page":"Models","title":"MathOptInterface.OTHER_LIMIT","text":"OTHER_LIMIT::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nOTHER_LIMIT: The algorithm stopped due to a limit not covered by one of the _LIMIT_ statuses above.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.SLOW_PROGRESS","page":"Models","title":"MathOptInterface.SLOW_PROGRESS","text":"SLOW_PROGRESS::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nSLOW_PROGRESS: The algorithm stopped because it was unable to continue making progress towards the solution.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.NUMERICAL_ERROR","page":"Models","title":"MathOptInterface.NUMERICAL_ERROR","text":"NUMERICAL_ERROR::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nNUMERICAL_ERROR: The algorithm stopped because it encountered unrecoverable numerical error.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.INVALID_MODEL","page":"Models","title":"MathOptInterface.INVALID_MODEL","text":"INVALID_MODEL::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nINVALID_MODEL: The algorithm stopped because the model is invalid.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.INVALID_OPTION","page":"Models","title":"MathOptInterface.INVALID_OPTION","text":"INVALID_OPTION::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nINVALID_OPTION: The algorithm stopped because it was provided an invalid option.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.INTERRUPTED","page":"Models","title":"MathOptInterface.INTERRUPTED","text":"INTERRUPTED::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nINTERRUPTED: The algorithm stopped because of an interrupt signal.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.OTHER_ERROR","page":"Models","title":"MathOptInterface.OTHER_ERROR","text":"OTHER_ERROR::TerminationStatusCode\n\nAn instance of the TerminationStatusCode enum.\n\nOTHER_ERROR: The algorithm stopped because of an error not covered by one of the statuses defined above.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.PrimalStatus","page":"Models","title":"MathOptInterface.PrimalStatus","text":"PrimalStatus(result_index::Int = 1)\n\nA model attribute for the ResultStatusCode of the primal result result_index. If result_index is omitted, it defaults to 1.\n\nSee ResultCount for information on how the results are ordered.\n\nIf result_index is larger than the value of ResultCount then NO_SOLUTION is returned.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.DualStatus","page":"Models","title":"MathOptInterface.DualStatus","text":"DualStatus(result_index::Int = 1)\n\nA model attribute for the ResultStatusCode of the dual result result_index. If result_index is omitted, it defaults to 1.\n\nSee ResultCount for information on how the results are ordered.\n\nIf result_index is larger than the value of ResultCount then NO_SOLUTION is returned.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.RawStatusString","page":"Models","title":"MathOptInterface.RawStatusString","text":"RawStatusString()\n\nA model attribute for a solver specific string explaining why the optimizer stopped.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ResultCount","page":"Models","title":"MathOptInterface.ResultCount","text":"ResultCount()\n\nA model attribute for the number of results available.\n\nOrder of solutions\n\nA number of attributes contain an index, result_index, which is used to refer to one of the available results. Thus, result_index must be an integer between 1 and the number of available results.\n\nAs a general rule, the first result (result_index=1) is the most important result (e.g., an optimal solution or an infeasibility certificate). Other results will typically be alternate solutions that the solver found during the search for the first result.\n\nIf a (local) optimal solution is available, i.e., TerminationStatus is OPTIMAL or LOCALLY_SOLVED, the first result must correspond to the (locally) optimal solution. Other results may be alternative optimal solutions, or they may be other suboptimal solutions; use ObjectiveValue to distingiush between them.\n\nIf a primal or dual infeasibility certificate is available, i.e., TerminationStatus is INFEASIBLE or DUAL_INFEASIBLE and the corresponding PrimalStatus or DualStatus is INFEASIBILITY_CERTIFICATE, then the first result must be a certificate. Other results may be alternate certificates, or infeasible points.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ObjectiveValue","page":"Models","title":"MathOptInterface.ObjectiveValue","text":"ObjectiveValue(result_index::Int = 1)\n\nA model attribute for the objective value of the primal solution result_index.\n\nIf the solver does not have a primal value for the objective because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a dual solution is available), the result is undefined. Users should first check PrimalStatus before accessing the ObjectiveValue attribute.\n\nSee ResultCount for information on how the results are ordered.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.DualObjectiveValue","page":"Models","title":"MathOptInterface.DualObjectiveValue","text":"DualObjectiveValue(result_index::Int = 1)\n\nA model attribute for the value of the objective function of the dual problem for the result_indexth dual result.\n\nIf the solver does not have a dual value for the objective because the result_index is beyond the available solutions (whose number is indicated by the ResultCount attribute), getting this attribute must throw a ResultIndexBoundsError. Otherwise, if the result is unavailable for another reason (for instance, only a primal solution is available), the result is undefined. Users should first check DualStatus before accessing the DualObjectiveValue attribute.\n\nSee ResultCount for information on how the results are ordered.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ObjectiveBound","page":"Models","title":"MathOptInterface.ObjectiveBound","text":"ObjectiveBound()\n\nA model attribute for the best known bound on the optimal objective value.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.RelativeGap","page":"Models","title":"MathOptInterface.RelativeGap","text":"RelativeGap()\n\nA model attribute for the final relative optimality gap.\n\nwarning: Warning\nThe definition of this gap is solver-dependent. However, most solvers implementing this attribute define the relative gap as some variation of fracb-ff, where b is the best bound and f is the best feasible objective value.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.SolveTimeSec","page":"Models","title":"MathOptInterface.SolveTimeSec","text":"SolveTimeSec()\n\nA model attribute for the total elapsed solution time (in seconds) as reported by the optimizer.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.SimplexIterations","page":"Models","title":"MathOptInterface.SimplexIterations","text":"SimplexIterations()\n\nA model attribute for the cumulative number of simplex iterations during the optimization process.\n\nFor a mixed-integer program (MIP), the return value is the total simplex iterations for all nodes.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.BarrierIterations","page":"Models","title":"MathOptInterface.BarrierIterations","text":"BarrierIterations()\n\nA model attribute for the cumulative number of barrier iterations while solving a problem.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.NodeCount","page":"Models","title":"MathOptInterface.NodeCount","text":"NodeCount()\n\nA model attribute for the total number of branch-and-bound nodes explored while solving a mixed-integer program (MIP).\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#ResultStatusCode","page":"Models","title":"ResultStatusCode","text":"","category":"section"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"ResultStatusCode\nNO_SOLUTION\nFEASIBLE_POINT\nNEARLY_FEASIBLE_POINT\nINFEASIBLE_POINT\nINFEASIBILITY_CERTIFICATE\nNEARLY_INFEASIBILITY_CERTIFICATE\nREDUCTION_CERTIFICATE\nNEARLY_REDUCTION_CERTIFICATE\nUNKNOWN_RESULT_STATUS\nOTHER_RESULT_STATUS","category":"page"},{"location":"moi/reference/models/#MathOptInterface.ResultStatusCode","page":"Models","title":"MathOptInterface.ResultStatusCode","text":"ResultStatusCode\n\nAn Enum of possible values for the PrimalStatus and DualStatus attributes.\n\nThe values indicate how to interpret the result vector.\n\nValues\n\nPossible values are:\n\nNO_SOLUTION: the result vector is empty.\nFEASIBLE_POINT: the result vector is a feasible point.\nNEARLY_FEASIBLE_POINT: the result vector is feasible if some constraint tolerances are relaxed.\nINFEASIBLE_POINT: the result vector is an infeasible point.\nINFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.\nNEARLY_INFEASIBILITY_CERTIFICATE: the result satisfies a relaxed criterion for a certificate of infeasibility.\nREDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.\nNEARLY_REDUCTION_CERTIFICATE: the result satisfies a relaxed criterion for an ill-posed certificate.\nUNKNOWN_RESULT_STATUS: the result vector contains a solution with an unknown interpretation.\nOTHER_RESULT_STATUS: the result vector contains a solution with an interpretation not covered by one of the statuses defined above\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.NO_SOLUTION","page":"Models","title":"MathOptInterface.NO_SOLUTION","text":"NO_SOLUTION::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nNO_SOLUTION: the result vector is empty.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.FEASIBLE_POINT","page":"Models","title":"MathOptInterface.FEASIBLE_POINT","text":"FEASIBLE_POINT::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nFEASIBLE_POINT: the result vector is a feasible point.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.NEARLY_FEASIBLE_POINT","page":"Models","title":"MathOptInterface.NEARLY_FEASIBLE_POINT","text":"NEARLY_FEASIBLE_POINT::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nNEARLY_FEASIBLE_POINT: the result vector is feasible if some constraint tolerances are relaxed.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.INFEASIBLE_POINT","page":"Models","title":"MathOptInterface.INFEASIBLE_POINT","text":"INFEASIBLE_POINT::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nINFEASIBLE_POINT: the result vector is an infeasible point.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.INFEASIBILITY_CERTIFICATE","page":"Models","title":"MathOptInterface.INFEASIBILITY_CERTIFICATE","text":"INFEASIBILITY_CERTIFICATE::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nINFEASIBILITY_CERTIFICATE: the result vector is an infeasibility certificate. If the PrimalStatus is INFEASIBILITY_CERTIFICATE, then the primal result vector is a certificate of dual infeasibility. If the DualStatus is INFEASIBILITY_CERTIFICATE, then the dual result vector is a proof of primal infeasibility.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.NEARLY_INFEASIBILITY_CERTIFICATE","page":"Models","title":"MathOptInterface.NEARLY_INFEASIBILITY_CERTIFICATE","text":"NEARLY_INFEASIBILITY_CERTIFICATE::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nNEARLY_INFEASIBILITY_CERTIFICATE: the result satisfies a relaxed criterion for a certificate of infeasibility.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.REDUCTION_CERTIFICATE","page":"Models","title":"MathOptInterface.REDUCTION_CERTIFICATE","text":"REDUCTION_CERTIFICATE::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nREDUCTION_CERTIFICATE: the result vector is an ill-posed certificate; see this article for details. If the PrimalStatus is REDUCTION_CERTIFICATE, then the primal result vector is a proof that the dual problem is ill-posed. If the DualStatus is REDUCTION_CERTIFICATE, then the dual result vector is a proof that the primal is ill-posed.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.NEARLY_REDUCTION_CERTIFICATE","page":"Models","title":"MathOptInterface.NEARLY_REDUCTION_CERTIFICATE","text":"NEARLY_REDUCTION_CERTIFICATE::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nNEARLY_REDUCTION_CERTIFICATE: the result satisfies a relaxed criterion for an ill-posed certificate.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.UNKNOWN_RESULT_STATUS","page":"Models","title":"MathOptInterface.UNKNOWN_RESULT_STATUS","text":"UNKNOWN_RESULT_STATUS::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nUNKNOWN_RESULT_STATUS: the result vector contains a solution with an unknown interpretation.\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.OTHER_RESULT_STATUS","page":"Models","title":"MathOptInterface.OTHER_RESULT_STATUS","text":"OTHER_RESULT_STATUS::ResultStatusCode\n\nAn instance of the ResultStatusCode enum.\n\nOTHER_RESULT_STATUS: the result vector contains a solution with an interpretation not covered by one of the statuses defined above\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#Conflict-Status","page":"Models","title":"Conflict Status","text":"","category":"section"},{"location":"moi/reference/models/","page":"Models","title":"Models","text":"compute_conflict!\nConflictStatus\nConstraintConflictStatus\nConflictStatusCode\nConflictParticipationStatusCode\nNOT_IN_CONFLICT\nIN_CONFLICT\nMAYBE_IN_CONFLICT","category":"page"},{"location":"moi/reference/models/#MathOptInterface.compute_conflict!","page":"Models","title":"MathOptInterface.compute_conflict!","text":"compute_conflict!(optimizer::AbstractOptimizer)\n\nComputes a minimal subset of constraints such that the model with the other constraint removed is still infeasible.\n\nSome solvers call a set of conflicting constraints an Irreducible Inconsistent Subsystem (IIS).\n\nSee also ConflictStatus and ConstraintConflictStatus.\n\nNote\n\nIf the model is modified after a call to compute_conflict!, the implementor is not obliged to purge the conflict. Any calls to the above attributes may return values for the original conflict without a warning. Similarly, when modifying the model, the conflict can be discarded.\n\n\n\n\n\n","category":"function"},{"location":"moi/reference/models/#MathOptInterface.ConflictStatus","page":"Models","title":"MathOptInterface.ConflictStatus","text":"ConflictStatus()\n\nA model attribute for the ConflictStatusCode explaining why the conflict refiner stopped when computing the conflict.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ConstraintConflictStatus","page":"Models","title":"MathOptInterface.ConstraintConflictStatus","text":"ConstraintConflictStatus()\n\nA constraint attribute indicating whether the constraint participates in the conflict. Its type is ConflictParticipationStatusCode.\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ConflictStatusCode","page":"Models","title":"MathOptInterface.ConflictStatusCode","text":"ConflictStatusCode\n\nAn Enum of possible values for the ConflictStatus attribute. This attribute is meant to explain the reason why the conflict finder stopped executing in the most recent call to compute_conflict!.\n\nPossible values are:\n\nCOMPUTE_CONFLICT_NOT_CALLED: the function compute_conflict! has not yet been called\nNO_CONFLICT_EXISTS: there is no conflict because the problem is feasible\nNO_CONFLICT_FOUND: the solver could not find a conflict\nCONFLICT_FOUND: at least one conflict could be found\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.ConflictParticipationStatusCode","page":"Models","title":"MathOptInterface.ConflictParticipationStatusCode","text":"ConflictParticipationStatusCode\n\nAn Enum of possible values for the ConstraintConflictStatus attribute. This attribute is meant to indicate whether a given constraint participates or not in the last computed conflict.\n\nValues\n\nPossible values are:\n\nNOT_IN_CONFLICT: the constraint does not participate in the conflict\nIN_CONFLICT: the constraint participates in the conflict\nMAYBE_IN_CONFLICT: the constraint may participate in the conflict, the solver was not able to prove that the constraint can be excluded from the conflict\n\n\n\n\n\n","category":"type"},{"location":"moi/reference/models/#MathOptInterface.NOT_IN_CONFLICT","page":"Models","title":"MathOptInterface.NOT_IN_CONFLICT","text":"NOT_IN_CONFLICT::ConflictParticipationStatusCode\n\nAn instance of the ConflictParticipationStatusCode enum.\n\nNOT_IN_CONFLICT: the constraint does not participate in the conflict\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.IN_CONFLICT","page":"Models","title":"MathOptInterface.IN_CONFLICT","text":"IN_CONFLICT::ConflictParticipationStatusCode\n\nAn instance of the ConflictParticipationStatusCode enum.\n\nIN_CONFLICT: the constraint participates in the conflict\n\n\n\n\n\n","category":"constant"},{"location":"moi/reference/models/#MathOptInterface.MAYBE_IN_CONFLICT","page":"Models","title":"MathOptInterface.MAYBE_IN_CONFLICT","text":"MAYBE_IN_CONFLICT::ConflictParticipationStatusCode\n\nAn instance of the ConflictParticipationStatusCode enum.\n\nMAYBE_IN_CONFLICT: the constraint may participate in the conflict, the solver was not able to prove that the constraint can be excluded from the conflict\n\n\n\n\n\n","category":"constant"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"EditURL = \"https://github.com/jump-dev/MathOptInterface.jl/blob/v1.20.1/docs/src/submodules/Nonlinear/reference.md\"","category":"page"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"CurrentModule = MathOptInterface\nDocTestSetup = quote\n import MathOptInterface as MOI\nend\nDocTestFilters = [r\"MathOptInterface|MOI\"]","category":"page"},{"location":"moi/submodules/Nonlinear/reference/#NonlinearAPI","page":"API Reference","title":"Nonlinear Modeling","text":"","category":"section"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"More information can be found in the Nonlinear section of the manual.","category":"page"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"Nonlinear\nNonlinear.Model","category":"page"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear","page":"API Reference","title":"MathOptInterface.Nonlinear","text":"Nonlinear\n\nwarning: Warning\nThe Nonlinear submodule is experimental. Until this message is removed, breaking changes may be introduced in any minor or patch release of MathOptInterface.\n\n\n\n\n\n","category":"module"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.Model","page":"API Reference","title":"MathOptInterface.Nonlinear.Model","text":"Model()\n\nThe core datastructure for representing a nonlinear optimization problem.\n\nIt has the following fields:\n\nobjective::Union{Nothing,Expression} : holds the nonlinear objective function, if one exists, otherwise nothing.\nexpressions::Vector{Expression} : a vector of expressions in the model.\nconstraints::OrderedDict{ConstraintIndex,Constraint} : a map from ConstraintIndex to the corresponding Constraint. An OrderedDict is used instead of a Vector to support constraint deletion.\nparameters::Vector{Float64} : holds the current values of the parameters.\noperators::OperatorRegistry : stores the operators used in the model.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#nonlinear_api_expressions","page":"API Reference","title":"Expressions","text":"","category":"section"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"Nonlinear.ExpressionIndex\nNonlinear.add_expression","category":"page"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.ExpressionIndex","page":"API Reference","title":"MathOptInterface.Nonlinear.ExpressionIndex","text":"ExpressionIndex\n\nAn index to a nonlinear expression that is returned by add_expression.\n\nGiven data::Model and ex::ExpressionIndex, use data[ex] to retrieve the corresponding Expression.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.add_expression","page":"API Reference","title":"MathOptInterface.Nonlinear.add_expression","text":"add_expression(model::Model, expr)::ExpressionIndex\n\nParse expr into a Expression and add to model. Returns an ExpressionIndex that can be interpolated into other input expressions.\n\nexpr must be a type that is supported by parse_expression.\n\nExamples\n\nmodel = Model()\nx = MOI.VariableIndex(1)\nex = add_expression(model, :($x^2 + 1))\nset_objective(model, :(sqrt($ex)))\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#nonlinear_api_parameters","page":"API Reference","title":"Parameters","text":"","category":"section"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"Nonlinear.ParameterIndex\nNonlinear.add_parameter","category":"page"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.ParameterIndex","page":"API Reference","title":"MathOptInterface.Nonlinear.ParameterIndex","text":"ParameterIndex\n\nAn index to a nonlinear parameter that is returned by add_parameter. Given data::Model and p::ParameterIndex, use data[p] to retrieve the current value of the parameter and data[p] = value to set a new value.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.add_parameter","page":"API Reference","title":"MathOptInterface.Nonlinear.add_parameter","text":"add_parameter(model::Model, value::Float64)::ParameterIndex\n\nAdd a new parameter to model with the default value value. Returns a ParameterIndex that can be interpolated into other input expressions and used to modify the value of the parameter.\n\nExamples\n\nmodel = Model()\nx = MOI.VariableIndex(1)\np = add_parameter(model, 1.2)\nc = add_constraint(model, :($x^2 - $p), MOI.LessThan(0.0))\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#nonlinear_api_objectives","page":"API Reference","title":"Objectives","text":"","category":"section"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"Nonlinear.set_objective","category":"page"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.set_objective","page":"API Reference","title":"MathOptInterface.Nonlinear.set_objective","text":"set_objective(model::Model, obj)::Nothing\n\nParse obj into a Expression and set as the objective function of model.\n\nobj must be a type that is supported by parse_expression.\n\nTo remove the objective, pass nothing.\n\nExamples\n\nmodel = Model()\nx = MOI.VariableIndex(1)\nset_objective(model, :($x^2 + 1))\nset_objective(model, x)\nset_objective(model, nothing)\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#nonlinear_api_constraints","page":"API Reference","title":"Constraints","text":"","category":"section"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"Nonlinear.ConstraintIndex\nNonlinear.add_constraint\nNonlinear.delete","category":"page"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.ConstraintIndex","page":"API Reference","title":"MathOptInterface.Nonlinear.ConstraintIndex","text":"ConstraintIndex\n\nAn index to a nonlinear constraint that is returned by add_constraint.\n\nGiven data::Model and c::ConstraintIndex, use data[c] to retrieve the corresponding Constraint.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.add_constraint","page":"API Reference","title":"MathOptInterface.Nonlinear.add_constraint","text":"add_constraint(\n model::Model,\n func,\n set::Union{\n MOI.GreaterThan{Float64},\n MOI.LessThan{Float64},\n MOI.Interval{Float64},\n MOI.EqualTo{Float64},\n },\n)\n\nParse func and set into a Constraint and add to model. Returns a ConstraintIndex that can be used to delete the constraint or query solution information.\n\nExamples\n\nmodel = Model()\nx = MOI.VariableIndex(1)\nc = add_constraint(model, :($x^2), MOI.LessThan(1.0))\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.delete","page":"API Reference","title":"MathOptInterface.Nonlinear.delete","text":"delete(model::Model, c::ConstraintIndex)::Nothing\n\nDelete the constraint index c from model.\n\nExamples\n\nmodel = Model()\nx = MOI.VariableIndex(1)\nc = add_constraint(model, :($x^2), MOI.LessThan(1.0))\ndelete(model, c)\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#nonlinear_api_operators","page":"API Reference","title":"User-defined operators","text":"","category":"section"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"Nonlinear.OperatorRegistry\nNonlinear.DEFAULT_UNIVARIATE_OPERATORS\nNonlinear.DEFAULT_MULTIVARIATE_OPERATORS\nNonlinear.register_operator\nNonlinear.register_operator_if_needed\nNonlinear.assert_registered\nNonlinear.check_return_type\nNonlinear.eval_univariate_function\nNonlinear.eval_univariate_gradient\nNonlinear.eval_univariate_hessian\nNonlinear.eval_multivariate_function\nNonlinear.eval_multivariate_gradient\nNonlinear.eval_multivariate_hessian\nNonlinear.eval_logic_function\nNonlinear.eval_comparison_function","category":"page"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.OperatorRegistry","page":"API Reference","title":"MathOptInterface.Nonlinear.OperatorRegistry","text":"OperatorRegistry()\n\nCreate a new OperatorRegistry to store and evaluate univariate and multivariate operators.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.DEFAULT_UNIVARIATE_OPERATORS","page":"API Reference","title":"MathOptInterface.Nonlinear.DEFAULT_UNIVARIATE_OPERATORS","text":"DEFAULT_UNIVARIATE_OPERATORS\n\nThe list of univariate operators that are supported by default.\n\nExample\n\njulia> import MathOptInterface as MOI\n\njulia> MOI.Nonlinear.DEFAULT_UNIVARIATE_OPERATORS\n72-element Vector{Symbol}:\n :+\n :-\n :abs\n :sqrt\n :cbrt\n :abs2\n :inv\n :log\n :log10\n :log2\n ⋮\n :airybi\n :airyaiprime\n :airybiprime\n :besselj0\n :besselj1\n :bessely0\n :bessely1\n :erfcx\n :dawson\n\n\n\n\n\n","category":"constant"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.DEFAULT_MULTIVARIATE_OPERATORS","page":"API Reference","title":"MathOptInterface.Nonlinear.DEFAULT_MULTIVARIATE_OPERATORS","text":"DEFAULT_MULTIVARIATE_OPERATORS\n\nThe list of multivariate operators that are supported by default.\n\nExample\n\njulia> import MathOptInterface as MOI\n\njulia> MOI.Nonlinear.DEFAULT_MULTIVARIATE_OPERATORS\n9-element Vector{Symbol}:\n :+\n :-\n :*\n :^\n :/\n :ifelse\n :atan\n :min\n :max\n\n\n\n\n\n","category":"constant"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.register_operator","page":"API Reference","title":"MathOptInterface.Nonlinear.register_operator","text":"register_operator(\n model::Model,\n op::Symbol,\n nargs::Int,\n f::Function,\n [∇f::Function],\n [∇²f::Function],\n)\n\nRegister the user-defined operator op with nargs input arguments in model.\n\nUnivariate functions\n\nf(x::T)::T must be a function that takes a single input argument x and returns the function evaluated at x. If ∇f and ∇²f are not provided, f must support any Real input type T.\n∇f(x::T)::T is a function that takes a single input argument x and returns the first derivative of f with respect to x. If ∇²f is not provided, ∇f must support any Real input type T.\n∇²f(x::T)::T is a function that takes a single input argument x and returns the second derivative of f with respect to x.\n\nMultivariate functions\n\nf(x::T...)::T must be a function that takes a nargs input arguments x and returns the function evaluated at x. If ∇f and ∇²f are not provided, f must support any Real input type T.\n∇f(g::AbstractVector{T}, x::T...)::T is a function that takes a cache vector g of length length(x), and fills each element g[i] with the partial derivative of f with respect to x[i].\n∇²f(H::AbstractMatrix, x::T...)::T is a function that takes a matrix H and fills the lower-triangular components H[i, j] with the Hessian of f with respect to x[i] and x[j] for i >= j.\n\nNotes for multivariate Hessians\n\nH has size(H) == (length(x), length(x)), but you must not access elements H[i, j] for i > j.\nH is dense, but you do not need to fill structural zeros.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.register_operator_if_needed","page":"API Reference","title":"MathOptInterface.Nonlinear.register_operator_if_needed","text":"register_operator_if_needed(\n registry::OperatorRegistry,\n op::Symbol,\n nargs::Int,\n f::Function;\n)\n\nSimilar to register_operator, but this function warns if the function is not registered, and skips silently if it already is.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.assert_registered","page":"API Reference","title":"MathOptInterface.Nonlinear.assert_registered","text":"assert_registered(registry::OperatorRegistry, op::Symbol, nargs::Int)\n\nThrow an error if op is not registered in registry with nargs arguments.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.check_return_type","page":"API Reference","title":"MathOptInterface.Nonlinear.check_return_type","text":"check_return_type(::Type{T}, ret::S) where {T,S}\n\nOverload this method for new types S to throw an informative error if a user-defined function returns the type S instead of T.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.eval_univariate_function","page":"API Reference","title":"MathOptInterface.Nonlinear.eval_univariate_function","text":"eval_univariate_function(\n registry::OperatorRegistry,\n op::Symbol,\n x::T,\n) where {T}\n\nEvaluate the operator op(x)::T, where op is a univariate function in registry.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.eval_univariate_gradient","page":"API Reference","title":"MathOptInterface.Nonlinear.eval_univariate_gradient","text":"eval_univariate_gradient(\n registry::OperatorRegistry,\n op::Symbol,\n x::T,\n) where {T}\n\nEvaluate the first-derivative of the operator op(x)::T, where op is a univariate function in registry.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.eval_univariate_hessian","page":"API Reference","title":"MathOptInterface.Nonlinear.eval_univariate_hessian","text":"eval_univariate_hessian(\n registry::OperatorRegistry,\n op::Symbol,\n x::T,\n) where {T}\n\nEvaluate the second-derivative of the operator op(x)::T, where op is a univariate function in registry.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.eval_multivariate_function","page":"API Reference","title":"MathOptInterface.Nonlinear.eval_multivariate_function","text":"eval_multivariate_function(\n registry::OperatorRegistry,\n op::Symbol,\n x::AbstractVector{T},\n) where {T}\n\nEvaluate the operator op(x)::T, where op is a multivariate function in registry.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.eval_multivariate_gradient","page":"API Reference","title":"MathOptInterface.Nonlinear.eval_multivariate_gradient","text":"eval_multivariate_gradient(\n registry::OperatorRegistry,\n op::Symbol,\n g::AbstractVector{T},\n x::AbstractVector{T},\n) where {T}\n\nEvaluate the gradient of operator g .= ∇op(x), where op is a multivariate function in registry.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.eval_multivariate_hessian","page":"API Reference","title":"MathOptInterface.Nonlinear.eval_multivariate_hessian","text":"eval_multivariate_hessian(\n registry::OperatorRegistry,\n op::Symbol,\n H::AbstractMatrix,\n x::AbstractVector{T},\n) where {T}\n\nEvaluate the Hessian of operator ∇²op(x), where op is a multivariate function in registry.\n\nThe Hessian is stored in the lower-triangular part of the matrix H.\n\nnote: Note\nImplementations of the Hessian operators will not fill structural zeros. Therefore, before calling this function you should pre-populate the matrix H with 0.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.eval_logic_function","page":"API Reference","title":"MathOptInterface.Nonlinear.eval_logic_function","text":"eval_logic_function(\n registry::OperatorRegistry,\n op::Symbol,\n lhs::T,\n rhs::T,\n)::Bool where {T}\n\nEvaluate (lhs op rhs)::Bool, where op is a logic operator in registry.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.eval_comparison_function","page":"API Reference","title":"MathOptInterface.Nonlinear.eval_comparison_function","text":"eval_comparison_function(\n registry::OperatorRegistry,\n op::Symbol,\n lhs::T,\n rhs::T,\n)::Bool where {T}\n\nEvaluate (lhs op rhs)::Bool, where op is a comparison operator in registry.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#Automatic-differentiation-backends","page":"API Reference","title":"Automatic-differentiation backends","text":"","category":"section"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"Nonlinear.Evaluator\nNonlinear.AbstractAutomaticDifferentiation\nNonlinear.ExprGraphOnly\nNonlinear.SparseReverseMode","category":"page"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.Evaluator","page":"API Reference","title":"MathOptInterface.Nonlinear.Evaluator","text":"Evaluator(\n model::Model,\n backend::AbstractAutomaticDifferentiation,\n ordered_variables::Vector{MOI.VariableIndex},\n)\n\nCreate Evaluator, a subtype of MOI.AbstractNLPEvaluator, from Model.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.AbstractAutomaticDifferentiation","page":"API Reference","title":"MathOptInterface.Nonlinear.AbstractAutomaticDifferentiation","text":"AbstractAutomaticDifferentiation\n\nAn abstract type for extending Evaluator.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.ExprGraphOnly","page":"API Reference","title":"MathOptInterface.Nonlinear.ExprGraphOnly","text":"ExprGraphOnly() <: AbstractAutomaticDifferentiation\n\nThe default implementation of AbstractAutomaticDifferentiation. The only supported feature is :ExprGraph.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.SparseReverseMode","page":"API Reference","title":"MathOptInterface.Nonlinear.SparseReverseMode","text":"SparseReverseMode() <: AbstractAutomaticDifferentiation\n\nAn implementation of AbstractAutomaticDifferentiation that uses sparse reverse-mode automatic differentiation to compute derivatives. Supports all features in the MOI nonlinear interface.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#Data-structure","page":"API Reference","title":"Data-structure","text":"","category":"section"},{"location":"moi/submodules/Nonlinear/reference/","page":"API Reference","title":"API Reference","text":"Nonlinear.Node\nNonlinear.NodeType\nNonlinear.Expression\nNonlinear.Constraint\nNonlinear.adjacency_matrix\nNonlinear.parse_expression\nNonlinear.convert_to_expr\nNonlinear.ordinal_index","category":"page"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.Node","page":"API Reference","title":"MathOptInterface.Nonlinear.Node","text":"struct Node\n type::NodeType\n index::Int\n parent::Int\nend\n\nA single node in a nonlinear expression tree. Used by Expression.\n\nSee the MathOptInterface documentation for information on how the nodes and values form an expression tree.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.NodeType","page":"API Reference","title":"MathOptInterface.Nonlinear.NodeType","text":"NodeType\n\nAn enum describing the possible node types. Each Node has a .index field, which should be interpreted as follows:\n\nNODE_CALL_MULTIVARIATE: the index into operators.multivariate_operators\nNODE_CALL_UNIVARIATE: the index into operators.univariate_operators\nNODE_LOGIC: the index into operators.logic_operators\nNODE_COMPARISON: the index into operators.comparison_operators\nNODE_MOI_VARIABLE: the value of MOI.VariableIndex(index) in the user's space of the model.\nNODE_VARIABLE: the 1-based index of the internal vector\nNODE_VALUE: the index into the .values field of Expression\nNODE_PARAMETER: the index into data.parameters\nNODE_SUBEXPRESSION: the index into data.expressions\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.Expression","page":"API Reference","title":"MathOptInterface.Nonlinear.Expression","text":"struct Expression\n nodes::Vector{Node}\n values::Vector{Float64}\nend\n\nThe core type that represents a nonlinear expression. See the MathOptInterface documentation for information on how the nodes and values form an expression tree.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.Constraint","page":"API Reference","title":"MathOptInterface.Nonlinear.Constraint","text":"struct Constraint\n expression::Expression\n set::Union{\n MOI.LessThan{Float64},\n MOI.GreaterThan{Float64},\n MOI.EqualTo{Float64},\n MOI.Interval{Float64},\n }\nend\n\nA type to hold information relating to the nonlinear constraint f(x) in S, where f(x) is defined by .expression, and S is .set.\n\n\n\n\n\n","category":"type"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.adjacency_matrix","page":"API Reference","title":"MathOptInterface.Nonlinear.adjacency_matrix","text":"adjacency_matrix(nodes::Vector{Node})\n\nCompute the sparse adjacency matrix describing the parent-child relationships in nodes.\n\nThe element (i, j) is true if there is an edge from node[j] to node[i]. Since we get a column-oriented matrix, this gives us a fast way to look up the edges leaving any node (i.e., the children).\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.parse_expression","page":"API Reference","title":"MathOptInterface.Nonlinear.parse_expression","text":"parse_expression(data::Model, input)::Expression\n\nParse input into a Expression.\n\n\n\n\n\nparse_expression(\n data::Model,\n expr::Expression,\n input::Any,\n parent_index::Int,\n)::Expression\n\nParse input into a Expression, and add it to expr as a child of expr.nodes[parent_index]. Existing subexpressions and parameters are stored in data.\n\nYou can extend parsing support to new types of objects by overloading this method with a different type on input::Any.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.convert_to_expr","page":"API Reference","title":"MathOptInterface.Nonlinear.convert_to_expr","text":"convert_to_expr(data::Model, expr::Expression)\n\nConvert the Expression expr into a Julia Expr.\n\nsubexpressions are represented by a ExpressionIndex object.\nparameters are represented by a ParameterIndex object.\nvariables are represennted by an MOI.VariableIndex object.\n\n\n\n\n\nconvert_to_expr(\n evaluator::Evaluator,\n expr::Expression;\n moi_output_format::Bool,\n)\n\nConvert the Expression expr into a Julia Expr.\n\nIf moi_output_format = true:\n\nsubexpressions will be converted to Julia Expr and substituted into the output expression.\nthe current value of each parameter will be interpolated into the expression\nvariables will be represented in the form x[MOI.VariableIndex(i)]\n\nIf moi_output_format = false:\n\nsubexpressions will be represented by a ExpressionIndex object.\nparameters will be represented by a ParameterIndex object.\nvariables will be represennted by an MOI.VariableIndex object.\n\nwarning: Warning\nTo use moi_output_format = true, you must have first called MOI.initialize with :ExprGraph as a requested feature.\n\n\n\n\n\n","category":"function"},{"location":"moi/submodules/Nonlinear/reference/#MathOptInterface.Nonlinear.ordinal_index","page":"API Reference","title":"MathOptInterface.Nonlinear.ordinal_index","text":"ordinal_index(evaluator::Evaluator, c::ConstraintIndex)::Int\n\nReturn the 1-indexed value of the constraint index c in evaluator.\n\nExamples\n\nmodel = Model()\nx = MOI.VariableIndex(1)\nc1 = add_constraint(model, :($x^2), MOI.LessThan(1.0))\nc2 = add_constraint(model, :($x^2), MOI.LessThan(1.0))\nevaluator = Evaluator(model)\nMOI.initialize(evaluator, Symbol[])\nordinal_index(evaluator, c2) # Returns 2\ndelete(model, c1)\nevaluator = Evaluator(model)\nMOI.initialize(evaluator, Symbol[])\nordinal_index(model, c2) # Returns 1\n\n\n\n\n\n","category":"function"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"EditURL = \"https://github.com/lanl-ansi/Juniper.jl/blob/62532341586d447f19c7360715333ba62a42bea9/README.md\"","category":"page"},{"location":"packages/Juniper/#Juniper","page":"lanl-ansi/Juniper.jl","title":"Juniper","text":"","category":"section"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"(Image: CI) (Image: codecov) (Image: Documentation)","category":"page"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"Juniper (Jump Nonlinear Integer Program solver) is a solver for mixed-integer nonlinear programs. ","category":"page"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"It is a heuristic which is not guaranteed to find the global optimum. If you need the global optimum, check out Alpine.","category":"page"},{"location":"packages/Juniper/#Installation","page":"lanl-ansi/Juniper.jl","title":"Installation","text":"","category":"section"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"Install Juniper using the Julia package manager:","category":"page"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"import Pkg\nPkg.add(\"JuMP\")","category":"page"},{"location":"packages/Juniper/#Use-with-JuMP","page":"lanl-ansi/Juniper.jl","title":"Use with JuMP","text":"","category":"section"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"Use Juniper with JuMP as follows:","category":"page"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"using JuMP, Juniper, Ipopt\nipopt = optimizer_with_attributes(Ipopt.Optimizer, \"print_level\"=>0)\noptimizer = optimizer_with_attributes(Juniper.Optimizer, \"nl_solver\"=>ipopt)\nmodel = Model(optimizer)\nv = [10, 20, 12, 23, 42]\nw = [12, 45, 12, 22, 21]\n@variable(model, x[1:5], Bin)\n@objective(model, Max, v' * x)\n@constraint(model, sum(w[i]*x[i]^2 for i in 1:5) <= 45)\noptimize!(model)\nprintln(termination_status(model))\nprintln(objective_value(model))\nprintln(value.(x))","category":"page"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"The nl_solver is used by Juniper to solve continuous nonlinear sub-problems while Juniper searches for acceptable assignments to the discrete variables. A common choice is Ipopt, but any optimizer that supports the continuous relaxation of the model may be used.","category":"page"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"To solve problems with more complex nonlinear functions, use the @NLconstraint and @NLobjective JuMP macros.","category":"page"},{"location":"packages/Juniper/#Documentation","page":"lanl-ansi/Juniper.jl","title":"Documentation","text":"","category":"section"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"The online documentation is available at https://lanl-ansi.github.io/Juniper.jl/stable/.","category":"page"},{"location":"packages/Juniper/#Feasibility-pump","page":"lanl-ansi/Juniper.jl","title":"Feasibility pump","text":"","category":"section"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"If Juniper has difficulty finding feasible solutions on your model, try adding a solver that supports integer variables (for example, HiGHS) to run a feasibility pump:","category":"page"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"using JuMP, Juniper, Ipopt, HiGHS\nipopt = optimizer_with_attributes(Ipopt.Optimizer, \"print_level\" => 0)\nhighs = optimizer_with_attributes(HiGHS.Optimizer, \"output_flag\" => false)\nmodel = Model(\n optimizer_with_attributes(\n Juniper.Optimizer,\n \"nl_solver\" => ipopt,\n \"mip_solver\" => highs,\n ),\n)","category":"page"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"The feasibility pump is used at the start of Juniper to find a feasible solution before the branch and bound part starts. For some classes of problems this can be a highly effective pre-processor.","category":"page"},{"location":"packages/Juniper/#Citing-Juniper","page":"lanl-ansi/Juniper.jl","title":"Citing Juniper","text":"","category":"section"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"If you find Juniper useful in your work, we kindly request that you cite the following paper or technical report:","category":"page"},{"location":"packages/Juniper/","page":"lanl-ansi/Juniper.jl","title":"lanl-ansi/Juniper.jl","text":"@inproceedings{juniper,\n Author = {Ole Kröger and Carleton Coffrin and Hassan Hijazi and Harsha Nagarajan},\n Title = {Juniper: An Open-Source Nonlinear Branch-and-Bound Solver in Julia},\n booktitle=\"Integration of Constraint Programming, Artificial Intelligence, and Operations Research\",\n pages=\"377--386\",\n year=\"2018\",\n publisher=\"Springer International Publishing\",\n isbn=\"978-3-319-93031-2\"\n}","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"EditURL = \"diet.jl\"","category":"page"},{"location":"tutorials/linear/diet/#The-diet-problem","page":"The diet problem","title":"The diet problem","text":"","category":"section"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"The purpose of this tutorial is to demonstrate how to incorporate DataFrames into a JuMP model. As an example, we use classic Stigler diet problem.","category":"page"},{"location":"tutorials/linear/diet/#Required-packages","page":"The diet problem","title":"Required packages","text":"","category":"section"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"This tutorial requires the following packages:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"using JuMP\nimport CSV\nimport DataFrames\nimport HiGHS\nimport Test #hide","category":"page"},{"location":"tutorials/linear/diet/#Formulation","page":"The diet problem","title":"Formulation","text":"","category":"section"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"We wish to cook a nutritionally balanced meal by choosing the quantity of each food f to eat from a set of foods F in our kitchen.","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"Each food f has a cost, c_f, as well as a macro-nutrient profile a_mf for each macro-nutrient m in M.","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"Because we care about a nutritionally balanced meal, we set some minimum and maximum limits for each nutrient, which we denote l_m and u_m respectively.","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"Furthermore, because we are optimizers, we seek the minimum cost solution.","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"With a little effort, we can formulate our dinner problem as the following linear program:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"beginaligned\nmin sumlimits_f in F c_f x_f \ntextst l_m le sumlimits_f in F a_mf x_f le u_m forall m in M \n x_f ge 0 forall f in F\nendaligned","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"In the rest of this tutorial, we will create and solve this problem in JuMP, and learn what we should cook for dinner.","category":"page"},{"location":"tutorials/linear/diet/#Data","page":"The diet problem","title":"Data","text":"","category":"section"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"First, we need some data for the problem. For this tutorial, we'll write CSV files to a temporary directory from Julia. If you have existing files, you could change the filenames to point to them instead.","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"dir = mktempdir()","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"The first file is a list of foods with their macro-nutrient profile:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"food_csv_filename = joinpath(dir, \"diet_foods.csv\")\nopen(food_csv_filename, \"w\") do io\n write(\n io,\n \"\"\"\n name,cost,calories,protein,fat,sodium\n hamburger,2.49,410,24,26,730\n chicken,2.89,420,32,10,1190\n hot dog,1.50,560,20,32,1800\n fries,1.89,380,4,19,270\n macaroni,2.09,320,12,10,930\n pizza,1.99,320,15,12,820\n salad,2.49,320,31,12,1230\n milk,0.89,100,8,2.5,125\n ice cream,1.59,330,8,10,180\n \"\"\",\n )\n return\nend\nfoods = CSV.read(food_csv_filename, DataFrames.DataFrame)","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"Here, F is foods.name and c_f is foods.cost. (We're also playing a bit loose the term \"macro-nutrient\" by including calories and sodium.)","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"We also need our minimum and maximum limits:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"nutrient_csv_filename = joinpath(dir, \"diet_nutrient.csv\")\nopen(nutrient_csv_filename, \"w\") do io\n write(\n io,\n \"\"\"\n nutrient,min,max\n calories,1800,2200\n protein,91,\n fat,0,65\n sodium,0,1779\n \"\"\",\n )\n return\nend\nlimits = CSV.read(nutrient_csv_filename, DataFrames.DataFrame)","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"Protein is missing data for the maximum. Let's fix that using coalesce:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"limits.max = coalesce.(limits.max, Inf)\nlimits","category":"page"},{"location":"tutorials/linear/diet/#JuMP-formulation","page":"The diet problem","title":"JuMP formulation","text":"","category":"section"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"Now we're ready to convert our mathematical formulation into a JuMP model.","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"First, create a new JuMP model. Since we have a linear program, we'll use HiGHS as our optimizer:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"model = Model(HiGHS.Optimizer)\nset_silent(model)","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"Next, we create a set of decision variables x, with one element for each row in the DataFrame, and each x has a lower bound of 0:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"@variable(model, x[foods.name] >= 0)","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"To simplify things later on, we store the vector as a new column x in the DataFrame foods. Since x is a DenseAxisArray, we first need to convert it to an Array:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"foods.x = Array(x)","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"Our objective is to minimize the total cost of purchasing food:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"@objective(model, Min, sum(foods.cost .* foods.x));\nnothing #hide","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"For the next component, we need to add a constraint that our total intake of each component is within the limits contained in the limits DataFrame:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"@constraint(\n model,\n [row in eachrow(limits)],\n row.min <= sum(foods[!, row.nutrient] .* foods.x) <= row.max,\n);\nnothing #hide","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"What does our model look like?","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"print(model)","category":"page"},{"location":"tutorials/linear/diet/#Solution","page":"The diet problem","title":"Solution","text":"","category":"section"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"Let's optimize and take a look at the solution:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"optimize!(model)\nTest.@test primal_status(model) == FEASIBLE_POINT #hide\nTest.@test objective_value(model) ≈ 11.8288 atol = 1e-4 #hide\nsolution_summary(model)","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"We found an optimal solution. Let's see what the optimal solution is:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"for row in eachrow(foods)\n println(row.name, \" = \", value(row.x))\nend","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"That's a lot of milk and ice cream, and sadly, we only get 0.6 of a hamburger.","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"We can also use the function Containers.rowtable to easily convert the result into a DataFrame:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"table = Containers.rowtable(value, x; header = [:food, :quantity])\nsolution = DataFrames.DataFrame(table)","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"This makes it easy to perform analyses our solution:","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"filter!(row -> row.quantity > 0.0, solution)","category":"page"},{"location":"tutorials/linear/diet/#Problem-modification","page":"The diet problem","title":"Problem modification","text":"","category":"section"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"JuMP makes it easy to take an existing model and modify it by adding extra constraints. Let's see what happens if we add a constraint that we can buy at most 6 units of milk or ice cream combined.","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"dairy_foods = [\"milk\", \"ice cream\"]\nis_dairy = map(name -> name in dairy_foods, foods.name)\ndairy_constraint = @constraint(model, sum(foods[is_dairy, :x]) <= 6)\noptimize!(model)\nTest.@test termination_status(model) == INFEASIBLE #hide\nTest.@test primal_status(model) == NO_SOLUTION #hide\nsolution_summary(model)","category":"page"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"There exists no feasible solution to our problem. Looks like we're stuck eating ice cream for dinner.","category":"page"},{"location":"tutorials/linear/diet/#Next-steps","page":"The diet problem","title":"Next steps","text":"","category":"section"},{"location":"tutorials/linear/diet/","page":"The diet problem","title":"The diet problem","text":"You can delete a constraint using delete(model, dairy_constraint). Can you add a different constraint to provide a diet with less dairy?\nSome food items (like hamburgers) are discrete. You can use set_integer to force a variable to take integer values. What happens to the solution if you do?","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"EditURL = \"n-queens.jl\"","category":"page"},{"location":"tutorials/linear/n-queens/#N-Queens","page":"N-Queens","title":"N-Queens","text":"","category":"section"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"This tutorial was originally contributed by Matthew Helm and Mathieu Tanneau.","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"The N-Queens problem involves placing N queens on an N x N chessboard such that none of the queens attacks another. In chess, a queen can move vertically, horizontally, and diagonally so there cannot be more than one queen on any given row, column, or diagonal.","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"(Image: Four Queens)","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"Note that none of the queens above are able to attack any other as a result of their careful placement.","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"using JuMP\nimport HiGHS\nimport LinearAlgebra","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"N-Queens","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"N = 8\n\nmodel = Model(HiGHS.Optimizer)\nset_silent(model)","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"Next, let's create an N x N chessboard of binary values. 0 will represent an empty space on the board and 1 will represent a space occupied by one of our queens:","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"@variable(model, x[1:N, 1:N], Bin);\nnothing #hide","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"Now we can add our constraints:","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"There must be exactly one queen in a given row/column","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"for i in 1:N\n @constraint(model, sum(x[i, :]) == 1)\n @constraint(model, sum(x[:, i]) == 1)\nend","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"There can only be one queen on any given diagonal","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"for i in -(N - 1):(N-1)\n @constraint(model, sum(LinearAlgebra.diag(x, i)) <= 1)\n @constraint(model, sum(LinearAlgebra.diag(reverse(x; dims = 1), i)) <= 1)\nend","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"We are ready to put our model to work and see if it is able to find a feasible solution:","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"optimize!(model)","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"We can now review the solution that our model found:","category":"page"},{"location":"tutorials/linear/n-queens/","page":"N-Queens","title":"N-Queens","text":"solution = round.(Int, value.(x))","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"EditURL = \"https://github.com/jump-dev/SDPNAL.jl/blob/00a3fa19f4e1235587948113b0b681da17f4dab5/README.md\"","category":"page"},{"location":"packages/SDPNAL/#SDPNAL.jl","page":"jump-dev/SDPNAL.jl","title":"SDPNAL.jl","text":"","category":"section"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"SDPNAL.jl is wrapper for the SDPNALplus solver.","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"The wrapper has two components:","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"an exported sdpnalplus function that is a thin wrapper on top of the sdpnalplus MATLAB function\nan interface to MathOptInterface","category":"page"},{"location":"packages/SDPNAL/#Affiliation","page":"jump-dev/SDPNAL.jl","title":"Affiliation","text":"","category":"section"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"This wrapper is maintained by the JuMP community and is not an official wrapper of SDPNALplus.","category":"page"},{"location":"packages/SDPNAL/#License","page":"jump-dev/SDPNAL.jl","title":"License","text":"","category":"section"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"SDPNAL.jl is licensed under the MIT License.","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"The underlying solver, SDPNALplus is licensed under the Creative Commons Attribution-ShareAlike 4.0 International Public License.","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"In addition, SDPNAL requires an installation of MATLAB, which is a closed-source commercial product for which you must obtain a license.","category":"page"},{"location":"packages/SDPNAL/#Use-with-JuMP","page":"jump-dev/SDPNAL.jl","title":"Use with JuMP","text":"","category":"section"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"To use SDPNAL with JuMP, do:","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"using JuMP, SDPNAL\nmodel = Model(SDPNAL.Optimizer)\nset_attribute(model, \"printlevel\", 0)","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"Note that, contrary to implementation of other solver-independent interfaces, using SDPNAL from JuMP or MOI fully exploits the particular structures of the SDPNAL interface and does not create superfluous slack variables and equality constraints as discussed in the SDPNAL guide:","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"A new interface is necessary to facilitate the modeling of an SDP problem for SDPNAL+ because of latter’s flexibility to directly accept inequality constraints of the form “l ≤ B(X) ≤ u”, and bound constraints of the form “L ≤ X ≤ U”. The flexibility can significantly simplify the generation of the data in the SDPNAL+ format as compared to what need to be done in CVX or YALMIP to reformulate them as equality constraints through introducing extra variables. In addition, the final number of equality constraints present in the data input to SDPNAL+ can also be substantially fewer than those present in CVX or YALMIP. It is important to note here that the number of equality constraints present in the generated problem data can greatly affect the computational efficiency of the solvers, especially for interior-point based solvers.","category":"page"},{"location":"packages/SDPNAL/#Installation","page":"jump-dev/SDPNAL.jl","title":"Installation","text":"","category":"section"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"First, make sure that you satisfy the requirements of the MATLAB.jl Julia package, and that the SDPNALplus software is installed in your MATLAB™ installation.","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"Then, install SDPNAL.jl using Pkg.add:","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"import Pkg\nPkg.add(\"SDPNAL\")","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"There is a startup.m file at the root of the SDPNAL folder. This adds all subdirectories recursively when MATLAB starts. However, the interface directory contains a .git subdirectory which contains a very large number of files. Because of this, MATLAB crashes if SDPNAL is in its path because the startup.m requests MATLAB to try to parse all the files in the .git folder. To resolve this problem, delete the startup.m file and .git folder, and add the subdirectories manually your toolbox/local/pathdef.m file as follows:","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"function p = pathdef\n\n% (...)\n\np = [...\n%%% BEGIN ENTRIES %%%\n'/path/to/SDPNALv1.0:', ...\n'/path/to/SDPNALv1.0/interface:', ...\n'/path/to/SDPNALv1.0/mexfun:', ...\n'/path/to/SDPNALv1.0/solver:', ...\n'/path/to/SDPNALv1.0/solver_main_default:', ...\n'/path/to/SDPNALv1.0/util:', ...\n% (...)","category":"page"},{"location":"packages/SDPNAL/","page":"jump-dev/SDPNAL.jl","title":"jump-dev/SDPNAL.jl","text":"If you have SDPT3 in addition to SDPNAL in the MATLAB path (that is, the toolbox/local/pathdef.m file) then you might have issues because both solvers define a validate function, and this might make SDPNAL call SDPT3's validate function instead of SDPT3's validate function.","category":"page"},{"location":"should_i_use/#Should-you-use-JuMP?","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"","category":"section"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"JuMP is an algebraic modeling language for mathematical optimization written in the Julia language.","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"This page explains when you should consider using JuMP, and importantly, when you should not use JuMP.","category":"page"},{"location":"should_i_use/#When-should-you-use-JuMP?","page":"Should you use JuMP?","title":"When should you use JuMP?","text":"","category":"section"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"You should use JuMP if you have a constrained optimization problem for which you can formulate using the language of mathematical programming, that is:","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"a set of decision variables\na scalar- or vector-valued objective function\na set of constraints.","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Key reasons to use JuMP include:","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"User friendliness\nJuMP has syntax that mimics natural mathematical expressions. (See the section on algebraic modeling languages.)\nSolver independence\nJuMP uses a generic solver-independent interface provided by the MathOptInterface package, making it easy to change between a number of open-source and commercial optimization software packages (\"solvers\"). The Supported solvers section contains a table of the currently supported solvers.\nEase of embedding\nJuMP itself is written purely in Julia. Solvers are the only binary dependencies.\nJuMP provides automatic installation of many open-source solvers. This is different to modeling languages in Python which require you to download and install a solver yourself.\nBecause it is embedded in a general-purpose programming language, JuMP makes it easy to solve optimization problems as part of a larger workflow, for example, inside a simulation, behind a web server, or as a subproblem in a decomposition algorithm. As a trade-off, JuMP's syntax is constrained by the syntax and functionality available in Julia.\nJuMP is MPL licensed, meaning that it can be embedded in commercial software that complies with the terms of the license.\nSpeed\nBenchmarking has shown that JuMP can create problems at similar speeds to special-purpose modeling languages such as AMPL.\nJuMP communicates with most solvers in memory, avoiding the need to write intermediary files.\nAccess to advanced algorithmic techniques\nJuMP supports efficient in-memory re-solves of linear programs, which previously required using solver-specific or low-level C++ libraries.\nJuMP provides access to solver-independent and solver-dependent Callbacks.","category":"page"},{"location":"should_i_use/#When-should-you-not-use-JuMP?","page":"Should you use JuMP?","title":"When should you not use JuMP?","text":"","category":"section"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"JuMP supports a broad range of optimization classes. However, there are still some that it doesn't support, or that are better supported by other software packages.","category":"page"},{"location":"should_i_use/#You-want-to-optimize-a-complicated-Julia-function","page":"Should you use JuMP?","title":"You want to optimize a complicated Julia function","text":"","category":"section"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Packages in Julia compose well. It's common for people to pick two unrelated packages and use them in conjunction to create novel behavior. JuMP isn't one of those packages.","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"If you want to optimize an ordinary differential equation from DifferentialEquations.jl or tune a neural network from Flux.jl, consider using other packages such as:","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Optim.jl\nOptimization.jl\nNLPModels.jl\nNonconvex.jl","category":"page"},{"location":"should_i_use/#Black-box,-derivative-free,-or-unconstrained-optimization","page":"Should you use JuMP?","title":"Black-box, derivative free, or unconstrained optimization","text":"","category":"section"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"JuMP does support nonlinear programs with constraints and objectives containing user-defined operators. However, the functions must be automatically differentiable, or need to provide explicit derivatives. (See User-defined operators for more information.)","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"If your function is a black-box that is non-differentiable (for example, it is the output of a simulation written in C++), JuMP is not the right tool for the job. This also applies if you want to use a derivative free method.","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Even if your problem is differentiable, if it is unconstrained there is limited benefit (and downsides in the form of more overhead) to using JuMP over tools which are only concerned with function minimization.","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Alternatives to consider are:","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Optim.jl\nOptimization.jl\nNLopt.jl","category":"page"},{"location":"should_i_use/#Optimal-control-problems","page":"Should you use JuMP?","title":"Optimal control problems","text":"","category":"section"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"JuMP supports formulating optimal control problems as large nonlinear programs (see, for example, Optimal control for a Space Shuttle reentry trajectory). However, the nonlinear interface has a number of limitations (for example, the need to write out the dynamics in algebraic form) that mean JuMP might not be the right tool for the job.","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Alternatives to consider are:","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"CasADi [MATLAB/Python], CasADi.jl\nInfiniteOpt.jl\npyomo.DAE [Python]","category":"page"},{"location":"should_i_use/#Disciplined-convex-programming","page":"Should you use JuMP?","title":"Disciplined convex programming","text":"","category":"section"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"JuMP does not support disciplined convex programming (DCP).","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Alternatives to consider are:","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Convex.jl\nCVXPY [Python]\nYALMIP [MATLAB]","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"note: Note\nConvex.jl is also built on MathOptInterface, and shares the same set of underlying solvers. However, you input problems differently, and Convex.jl checks that the problem is DCP.","category":"page"},{"location":"should_i_use/#Stochastic-programming","page":"Should you use JuMP?","title":"Stochastic programming","text":"","category":"section"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"JuMP requires deterministic input data.","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"If you have stochastic input data, consider using a JuMP extension such as:","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"InfiniteOpt.jl\nStochasticPrograms.jl\nSDDP.jl","category":"page"},{"location":"should_i_use/#Polyhedral-computations","page":"Should you use JuMP?","title":"Polyhedral computations","text":"","category":"section"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"JuMP does not provide tools for working with the polyhedron formed by the set of linear constraints.","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Alternatives to consider are:","category":"page"},{"location":"should_i_use/","page":"Should you use JuMP?","title":"Should you use JuMP?","text":"Polyhedra.jl (See the documentation to create a polyhedron from a JuMP model.)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"EditURL = \"design_patterns_for_larger_models.jl\"","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Design-patterns-for-larger-models","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"JuMP makes it easy to build and solve optimization models. However, once you start to construct larger models, and especially ones that interact with external data sources or have customizable sets of variables and constraints based on client choices, you may find that your scripts become unwieldy. This tutorial demonstrates a variety of ways in which you can structure larger JuMP models to improve their readability and maintainability.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"tip: Tip\nThis tutorial is more advanced than the other \"Getting started\" tutorials. It's in the \"Getting started\" section to give you an early preview of how JuMP makes it easy to structure larger models. However, if you are new to JuMP you may want to briefly skim the tutorial, and come back to it once you have written a few JuMP models.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Overview","page":"Design patterns for larger models","title":"Overview","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"This tutorial uses explanation-by-example. We're going to start with a simple knapsack model, and then expand it to add various features and structure.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#A-simple-script","page":"Design patterns for larger models","title":"A simple script","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Your first prototype of a JuMP model is probably a script that uses a small set of hard-coded data.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"using JuMP, HiGHS\nprofit = [5, 3, 2, 7, 4]\nweight = [2, 8, 4, 2, 5]\ncapacity = 10\nN = 5\nmodel = Model(HiGHS.Optimizer)\n@variable(model, x[1:N], Bin)\n@objective(model, Max, sum(profit[i] * x[i] for i in 1:N))\n@constraint(model, sum(weight[i] * x[i] for i in 1:N) <= capacity)\noptimize!(model)\nvalue.(x)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"The benefits of this approach are:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"it is quick to code\nit is quick to make changes.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"The downsides include:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"all variables are global (read Performance tips)\nit is easy to introduce errors, for example, having profit and weight be vectors of different lengths, or not match N\nthe solution, x[i], is hard to interpret without knowing the order in which we provided the data.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Wrap-the-model-in-a-function","page":"Design patterns for larger models","title":"Wrap the model in a function","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"A good next step is to wrap your model in a function. This is useful for a few reasons:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"it removes global variables\nit encapsulates the JuMP model and forces you to clarify your inputs and outputs\nwe can add some error checking.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"function solve_knapsack_1(profit::Vector, weight::Vector, capacity::Real)\n if length(profit) != length(weight)\n throw(DimensionMismatch(\"profit and weight are different sizes\"))\n end\n N = length(weight)\n model = Model(HiGHS.Optimizer)\n @variable(model, x[1:N], Bin)\n @objective(model, Max, sum(profit[i] * x[i] for i in 1:N))\n @constraint(model, sum(weight[i] * x[i] for i in 1:N) <= capacity)\n optimize!(model)\n return value.(x)\nend\n\nsolve_knapsack_1([5, 3, 2, 7, 4], [2, 8, 4, 2, 5], 10)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Create-better-data-structures","page":"Design patterns for larger models","title":"Create better data structures","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Although we can check for errors like mis-matched vector lengths, if you start to develop models with a lot of data, keeping track of vectors and lengths and indices is fragile and a common source of bugs. A good solution is to use Julia's type system to create an abstraction over your data.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"For example, we can create a struct that represents a single object, with a constructor that lets us validate assumptions on the input data:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"struct KnapsackObject\n profit::Float64\n weight::Float64\n function KnapsackObject(profit::Float64, weight::Float64)\n if weight < 0\n throw(DomainError(\"Weight of object cannot be negative\"))\n end\n return new(profit, weight)\n end\nend","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"as well as a struct that holds a dictionary of objects and the knapsack's capacity:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"struct KnapsackData\n objects::Dict{String,KnapsackObject}\n capacity::Float64\nend","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Here's what our data might look like now:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"objects = Dict(\n \"apple\" => KnapsackObject(5.0, 2.0),\n \"banana\" => KnapsackObject(3.0, 8.0),\n \"cherry\" => KnapsackObject(2.0, 4.0),\n \"date\" => KnapsackObject(7.0, 2.0),\n \"eggplant\" => KnapsackObject(4.0, 5.0),\n)\ndata = KnapsackData(objects, 10.0)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"If you want, you can add custom printing to make it easier to visualize:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"function Base.show(io::IO, data::KnapsackData)\n println(io, \"A knapsack with capacity $(data.capacity) and possible items:\")\n for (k, v) in data.objects\n println(\n io,\n \" $(rpad(k, 8)) : profit = $(v.profit), weight = $(v.weight)\",\n )\n end\n return\nend\n\ndata","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Then, we can re-write our solve_knapsack function to take our KnapsackData as input:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"function solve_knapsack_2(data::KnapsackData)\n model = Model(HiGHS.Optimizer)\n @variable(model, x[keys(data.objects)], Bin)\n @objective(model, Max, sum(v.profit * x[k] for (k, v) in data.objects))\n @constraint(\n model,\n sum(v.weight * x[k] for (k, v) in data.objects) <= data.capacity,\n )\n optimize!(model)\n return value.(x)\nend\n\nsolve_knapsack_2(data)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Read-in-data-from-files","page":"Design patterns for larger models","title":"Read in data from files","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Having a data structure is a good step. But it is still annoying that we have to hard-code the data into Julia. A good next step is to separate the data into an external file format; JSON is a common choice.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"json_data = \"\"\"\n{\n \"objects\": {\n \"apple\": {\"profit\": 5.0, \"weight\": 2.0},\n \"banana\": {\"profit\": 3.0, \"weight\": 8.0},\n \"cherry\": {\"profit\": 2.0, \"weight\": 4.0},\n \"date\": {\"profit\": 7.0, \"weight\": 2.0},\n \"eggplant\": {\"profit\": 4.0, \"weight\": 5.0}\n },\n \"capacity\": 10.0\n}\n\"\"\"\ntemp_dir = mktempdir()\nknapsack_json_filename = joinpath(temp_dir, \"knapsack.json\")\n# Instead of writing a new file here you could replace `knapsack_json_filename`\n# with the path to a local file.\nwrite(knapsack_json_filename, json_data);\nnothing #hide","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Now let's write a function that reads this file and builds a KnapsackData object:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"import JSON\n\nfunction read_data(filename)\n d = JSON.parsefile(filename)\n return KnapsackData(\n Dict(\n k => KnapsackObject(v[\"profit\"], v[\"weight\"]) for\n (k, v) in d[\"objects\"]\n ),\n d[\"capacity\"],\n )\nend\n\ndata = read_data(knapsack_json_filename)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Add-options-via-if-else","page":"Design patterns for larger models","title":"Add options via if-else","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"At this point, we have data in a file format which we can load and solve a single problem. For many users, this might be sufficient. However, at some point you may be asked to add features like \"but what if we want to take more than one of a particular item?\"","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"If this is the first time that you've been asked to add a feature, adding options via if-else statements is a good approach. For example, we might write:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"function solve_knapsack_3(data::KnapsackData; binary_knapsack::Bool)\n model = Model(HiGHS.Optimizer)\n if binary_knapsack\n @variable(model, x[keys(data.objects)], Bin)\n else\n @variable(model, x[keys(data.objects)] >= 0, Int)\n end\n @objective(model, Max, sum(v.profit * x[k] for (k, v) in data.objects))\n @constraint(\n model,\n sum(v.weight * x[k] for (k, v) in data.objects) <= data.capacity,\n )\n optimize!(model)\n return value.(x)\nend","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Now we can solve the binary knapsack:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"solve_knapsack_3(data; binary_knapsack = true)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"And an integer knapsack where we can take more than one copy of each item:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"solve_knapsack_3(data; binary_knapsack = false)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Add-configuration-options-via-dispatch","page":"Design patterns for larger models","title":"Add configuration options via dispatch","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"If you get repeated requests to add different options, you'll quickly find yourself in a mess of different flags and if-else statements. It's hard to write, hard to read, and hard to ensure you haven't introduced any bugs. A good solution is to use Julia's type dispatch to control the configuration of the model. The easiest way to explain this is by example.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"First, start by defining a new abstract type, as well as new subtypes for each of our options. These types are going to control the configuration of the knapsack model.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"abstract type AbstractConfiguration end\n\nstruct BinaryKnapsackConfig <: AbstractConfiguration end\n\nstruct IntegerKnapsackConfig <: AbstractConfiguration end","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Then, we rewrite our solve_knapsack function to take a config argument, and we introduce an add_knapsack_variables function to abstract the creation of our variables.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"function solve_knapsack_4(data::KnapsackData, config::AbstractConfiguration)\n model = Model(HiGHS.Optimizer)\n x = add_knapsack_variables(model, data, config)\n @objective(model, Max, sum(v.profit * x[k] for (k, v) in data.objects))\n @constraint(\n model,\n sum(v.weight * x[k] for (k, v) in data.objects) <= data.capacity,\n )\n optimize!(model)\n return value.(x)\nend","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"For the binary knapsack problem, add_knapsack_variables looks like this:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"function add_knapsack_variables(\n model::Model,\n data::KnapsackData,\n ::BinaryKnapsackConfig,\n)\n return @variable(model, x[keys(data.objects)], Bin)\nend","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"For the integer knapsack problem, add_knapsack_variables looks like this:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"function add_knapsack_variables(\n model::Model,\n data::KnapsackData,\n ::IntegerKnapsackConfig,\n)\n return @variable(model, x[keys(data.objects)] >= 0, Int)\nend","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Now we can solve the binary knapsack:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"solve_knapsack_4(data, BinaryKnapsackConfig())","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"and the integer knapsack problem:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"solve_knapsack_4(data, IntegerKnapsackConfig())","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"The main benefit of the dispatch approach is that you can quickly add new options without needing to modify the existing code. For example:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"struct UpperBoundedKnapsackConfig <: AbstractConfiguration\n limit::Int\nend\n\nfunction add_knapsack_variables(\n model::Model,\n data::KnapsackData,\n config::UpperBoundedKnapsackConfig,\n)\n return @variable(model, 0 <= x[keys(data.objects)] <= config.limit, Int)\nend\n\nsolve_knapsack_4(data, UpperBoundedKnapsackConfig(3))","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Generalize-constraints-and-objectives","page":"Design patterns for larger models","title":"Generalize constraints and objectives","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"It's easy to extend the dispatch approach to constraints and objectives as well. The key points to notice in the next two functions are that:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"we can access registered variables via model[:x]\nwe can define generic functions which accept any AbstractConfiguration as a configuration argument. That means we can implement a single method and have it apply to multiple configuration types.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"function add_knapsack_constraints(\n model::Model,\n data::KnapsackData,\n ::AbstractConfiguration,\n)\n x = model[:x]\n @constraint(\n model,\n capacity_constraint,\n sum(v.weight * x[k] for (k, v) in data.objects) <= data.capacity,\n )\n return\nend\n\nfunction add_knapsack_objective(\n model::Model,\n data::KnapsackData,\n ::AbstractConfiguration,\n)\n x = model[:x]\n @objective(model, Max, sum(v.profit * x[k] for (k, v) in data.objects))\n return\nend\n\nfunction solve_knapsack_5(data::KnapsackData, config::AbstractConfiguration)\n model = Model(HiGHS.Optimizer)\n add_knapsack_variables(model, data, config)\n add_knapsack_constraints(model, data, config)\n add_knapsack_objective(model, data, config)\n optimize!(model)\n return value.(model[:x])\nend\n\nsolve_knapsack_5(data, BinaryKnapsackConfig())","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Remove-solver-dependence,-add-error-checks","page":"Design patterns for larger models","title":"Remove solver dependence, add error checks","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Compared to where we started, our knapsack model is now significantly different. We've wrapped it in a function, defined some data types, and introduced configuration options to control the variables and constraints that get added. There are a few other steps we can do to further improve things:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"remove the dependence on HiGHS\nadd checks that we found an optimal solution\nadd a helper function to avoid the need to explicitly construct the data.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"function solve_knapsack_6(\n optimizer,\n data::KnapsackData,\n config::AbstractConfiguration,\n)\n model = Model(optimizer)\n add_knapsack_variables(model, data, config)\n add_knapsack_constraints(model, data, config)\n add_knapsack_objective(model, data, config)\n optimize!(model)\n if termination_status(model) != OPTIMAL\n @warn(\"Model not solved to optimality\")\n return nothing\n end\n return value.(model[:x])\nend\n\nfunction solve_knapsack_6(\n optimizer,\n data::String,\n config::AbstractConfiguration,\n)\n return solve_knapsack_6(optimizer, read_data(data), config)\nend\n\nsolution = solve_knapsack_6(\n HiGHS.Optimizer,\n knapsack_json_filename,\n BinaryKnapsackConfig(),\n)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Create-a-module","page":"Design patterns for larger models","title":"Create a module","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Now we're ready to expose our model to the wider world. That might be as part of a larger Julia project that we're contributing to, or as a stand-alone script that we can run on-demand. In either case, it's good practice to wrap everything in a module. This further encapsulates our code into a single namespace, and we can add documentation in the form of docstrings.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Some good rules to follow when creating a module are:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"use import in a module instead of using to make it clear which functions are from which packages\nuse _ to start function and type names that are considered private\nadd docstrings to all public variables and functions.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"module KnapsackModel\n\nimport JuMP\nimport JSON\n\nstruct _KnapsackObject\n profit::Float64\n weight::Float64\n function _KnapsackObject(profit::Float64, weight::Float64)\n if weight < 0\n throw(DomainError(\"Weight of object cannot be negative\"))\n end\n return new(profit, weight)\n end\nend\n\nstruct _KnapsackData\n objects::Dict{String,_KnapsackObject}\n capacity::Float64\nend\n\nfunction _read_data(filename)\n d = JSON.parsefile(filename)\n return _KnapsackData(\n Dict(\n k => _KnapsackObject(v[\"profit\"], v[\"weight\"]) for\n (k, v) in d[\"objects\"]\n ),\n d[\"capacity\"],\n )\nend\n\nabstract type _AbstractConfiguration end\n\n\"\"\"\n BinaryKnapsackConfig()\n\nCreate a binary knapsack problem where each object can be taken 0 or 1 times.\n\"\"\"\nstruct BinaryKnapsackConfig <: _AbstractConfiguration end\n\n\"\"\"\n IntegerKnapsackConfig()\n\nCreate an integer knapsack problem where each object can be taken any number of\ntimes.\n\"\"\"\nstruct IntegerKnapsackConfig <: _AbstractConfiguration end\n\nfunction _add_knapsack_variables(\n model::JuMP.Model,\n data::_KnapsackData,\n ::BinaryKnapsackConfig,\n)\n return JuMP.@variable(model, x[keys(data.objects)], Bin)\nend\n\nfunction _add_knapsack_variables(\n model::JuMP.Model,\n data::_KnapsackData,\n ::IntegerKnapsackConfig,\n)\n return JuMP.@variable(model, x[keys(data.objects)] >= 0, Int)\nend\n\nfunction _add_knapsack_constraints(\n model::JuMP.Model,\n data::_KnapsackData,\n ::_AbstractConfiguration,\n)\n x = model[:x]\n JuMP.@constraint(\n model,\n capacity_constraint,\n sum(v.weight * x[k] for (k, v) in data.objects) <= data.capacity,\n )\n return\nend\n\nfunction _add_knapsack_objective(\n model::JuMP.Model,\n data::_KnapsackData,\n ::_AbstractConfiguration,\n)\n x = model[:x]\n JuMP.@objective(model, Max, sum(v.profit * x[k] for (k, v) in data.objects))\n return\nend\n\nfunction _solve_knapsack(\n optimizer,\n data::_KnapsackData,\n config::_AbstractConfiguration,\n)\n model = JuMP.Model(optimizer)\n _add_knapsack_variables(model, data, config)\n _add_knapsack_constraints(model, data, config)\n _add_knapsack_objective(model, data, config)\n JuMP.optimize!(model)\n if JuMP.termination_status(model) != JuMP.OPTIMAL\n @warn(\"Model not solved to optimality\")\n return nothing\n end\n return JuMP.value.(model[:x])\nend\n\n\"\"\"\n solve_knapsack(\n optimizer,\n knapsack_json_filename::String,\n config::_AbstractConfiguration,\n )\n\nSolve the knapsack problem and return the optimal primal solution\n\n# Arguments\n\n * `optimizer` : an object that can be passed to `JuMP.Model` to construct a new\n JuMP model.\n * `knapsack_json_filename` : the filename of a JSON file containing the data for the\n problem.\n * `config` : an object to control the type of knapsack model constructed.\n Valid options are:\n * `BinaryKnapsackConfig()`\n * `IntegerKnapsackConfig()`\n\n# Returns\n\n * If an optimal solution exists: a `JuMP.DenseAxisArray` that maps the `String`\n name of each object to the number of objects to pack into the knapsack.\n * Otherwise, `nothing`, indicating that the problem does not have an optimal\n solution.\n\n# Examples\n\n```julia\nsolution = solve_knapsack(\n HiGHS.Optimizer,\n \"path/to/data.json\",\n BinaryKnapsackConfig(),\n)\n```\n\n```julia\nsolution = solve_knapsack(\n MOI.OptimizerWithAttributes(HiGHS.Optimizer, \"output_flag\" => false),\n \"path/to/data.json\",\n IntegerKnapsackConfig(),\n)\n```\n\"\"\"\nfunction solve_knapsack(\n optimizer,\n knapsack_json_filename::String,\n config::_AbstractConfiguration,\n)\n data = _read_data(knapsack_json_filename)\n return _solve_knapsack(optimizer, data, config)\nend\n\nend","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Finally, you can call your model:","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"import .KnapsackModel\n\nKnapsackModel.solve_knapsack(\n HiGHS.Optimizer,\n knapsack_json_filename,\n KnapsackModel.BinaryKnapsackConfig(),\n)","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"note: Note\nThe . in .KnapsackModel denotes that it is a submodule and not a separate package that we installed with Pkg.add. If you put the KnapsackModel in a separate file, load it with:include(\"path/to/KnapsackModel.jl\")\nimport .KnapsackModel","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Add-tests","page":"Design patterns for larger models","title":"Add tests","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"As a final step, you should add tests for your model. This often means testing on a small problem for which you can work out the optimal solution by hand. The Julia standard library Test has good unit-testing functionality.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"import .KnapsackModel\nusing Test\n\n@testset \"KnapsackModel\" begin\n @testset \"feasible_binary_knapsack\" begin\n x = KnapsackModel.solve_knapsack(\n HiGHS.Optimizer,\n knapsack_json_filename,\n KnapsackModel.BinaryKnapsackConfig(),\n )\n @test isapprox(x[\"apple\"], 1, atol = 1e-5)\n @test isapprox(x[\"banana\"], 0, atol = 1e-5)\n @test isapprox(x[\"cherry\"], 0, atol = 1e-5)\n @test isapprox(x[\"date\"], 1, atol = 1e-5)\n @test isapprox(x[\"eggplant\"], 1, atol = 1e-5)\n end\n @testset \"feasible_integer_knapsack\" begin\n x = KnapsackModel.solve_knapsack(\n HiGHS.Optimizer,\n knapsack_json_filename,\n KnapsackModel.IntegerKnapsackConfig(),\n )\n @test isapprox(x[\"apple\"], 0, atol = 1e-5)\n @test isapprox(x[\"banana\"], 0, atol = 1e-5)\n @test isapprox(x[\"cherry\"], 0, atol = 1e-5)\n @test isapprox(x[\"date\"], 5, atol = 1e-5)\n @test isapprox(x[\"eggplant\"], 0, atol = 1e-5)\n end\n @testset \"infeasible_binary_knapsack\" begin\n dir = mktempdir()\n infeasible_filename = joinpath(dir, \"infeasible.json\")\n write(\n infeasible_filename,\n \"\"\"{\n \"objects\": {\n \"apple\": {\"profit\": 5.0, \"weight\": 2.0},\n \"banana\": {\"profit\": 3.0, \"weight\": 8.0},\n \"cherry\": {\"profit\": 2.0, \"weight\": 4.0},\n \"date\": {\"profit\": 7.0, \"weight\": 2.0},\n \"eggplant\": {\"profit\": 4.0, \"weight\": 5.0}\n },\n \"capacity\": -10.0\n }\"\"\",\n )\n x = KnapsackModel.solve_knapsack(\n HiGHS.Optimizer,\n infeasible_filename,\n KnapsackModel.BinaryKnapsackConfig(),\n )\n @test x === nothing\n end\nend","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"tip: Tip\nPlace these tests in a separate file test_knapsack_model.jl so that you can run the tests by adding include(\"test_knapsack_model.jl\") to any file where needed.","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/#Next-steps","page":"Design patterns for larger models","title":"Next steps","text":"","category":"section"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"We've only briefly scratched the surface of ways to create and structure large JuMP models, so consider this tutorial a starting point, rather than a comprehensive list of all the possible ways to structure JuMP models. If you are embarking on a large project that uses JuMP, a good next step is to look at ways people have written large JuMP projects \"in the wild.\"","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"Here are some good examples (all co-incidentally related to energy):","category":"page"},{"location":"tutorials/getting_started/design_patterns_for_larger_models/","page":"Design patterns for larger models","title":"Design patterns for larger models","text":"AnyMOD.jl\nJuMP-dev 2021 talk\nsource code\nPowerModels.jl\nJuMP-dev 2021 talk\nsource code\nPowerSimulations.jl\nJuliaCon 2021 talk\nsource code\nUnitCommitment.jl\nJuMP-dev 2021 talk\nsource code","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"EditURL = \"multi.jl\"","category":"page"},{"location":"tutorials/linear/multi/#The-multi-commodity-flow-problem","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"","category":"section"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"This tutorial was originally contributed by Louis Luangkesorn.","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"This tutorial is a JuMP implementation of the multi-commodity transportation model described in AMPL: A Modeling Language for Mathematical Programming, by R. Fourer, D.M. Gay and B.W. Kernighan.","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"The purpose of this tutorial is to demonstrate creating a JuMP model from an SQLite database.","category":"page"},{"location":"tutorials/linear/multi/#Required-packages","page":"The multi-commodity flow problem","title":"Required packages","text":"","category":"section"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"This tutorial uses the following packages","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"using JuMP\nimport DataFrames\nimport HiGHS\nimport SQLite\nimport Tables\n\nconst DBInterface = SQLite.DBInterface","category":"page"},{"location":"tutorials/linear/multi/#Formulation","page":"The multi-commodity flow problem","title":"Formulation","text":"","category":"section"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"The multi-commondity flow problem is a simple extension of The transportation problem to multiple types of products. Briefly, we start with the formulation of the transportation problem:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"beginaligned\nmin sum_i in O j in D c_ij x_ij \nst sum_j in D x_i j le s_i forall i in O \n sum_i in O x_i j = d_j forall j in D \n x_i j ge 0 forall i in O j in D\nendaligned","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"but introduce a set of products P, resulting in:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"beginaligned\nmin sum_i in O j in D k in P c_ijk x_ijk \nst sum_j in D x_i j k le s_ik forall i in O k in P \n sum_i in O x_i j k = d_jk forall j in D k in P \n x_i jk ge 0 forall i in O j in D k in P \n sum_k in P x_i j k le u_ij forall i in O j in D\nendaligned","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"Note that the last constraint is new; it says that there is a maximum quantity of goods (of any type) that can be transported from origin i to destination j.","category":"page"},{"location":"tutorials/linear/multi/#Data","page":"The multi-commodity flow problem","title":"Data","text":"","category":"section"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"For the purpose of this tutorial, the JuMP repository contains an example database called multi.sqlite.","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"filename = joinpath(@__DIR__, \"multi.sqlite\");\nnothing #hide","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"To run locally, download multi.sqlite and update filename appropriately.","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"Load the database using SQLite.DB:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"db = SQLite.DB(filename)","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"A quick way to see the schema of the database is via SQLite.tables:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"SQLite.tables(db)","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"We interact with the database by executing queries, and then piping the results to an appropriate table. One example is a DataFrame:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"DBInterface.execute(db, \"SELECT * FROM locations\") |> DataFrames.DataFrame","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"But other table types are supported, such as Tables.rowtable:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"DBInterface.execute(db, \"SELECT * FROM locations\") |> Tables.rowtable","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"A rowtable is a Vector of NamedTuples.","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"You can construct more complicated SQL queries:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"origins =\n DBInterface.execute(\n db,\n \"SELECT location FROM locations WHERE type = \\\"origin\\\"\",\n ) |> Tables.rowtable","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"But for our purpose, we just want the list of strings:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"origins = map(y -> y.location, origins)","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"We can compose these two operations to get a list of destinations:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"destinations =\n DBInterface.execute(\n db,\n \"SELECT location FROM locations WHERE type = \\\"destination\\\"\",\n ) |>\n Tables.rowtable |>\n x -> map(y -> y.location, x)","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"And a list of products from our products table:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"products =\n DBInterface.execute(db, \"SELECT product FROM products\") |>\n Tables.rowtable |>\n x -> map(y -> y.product, x)","category":"page"},{"location":"tutorials/linear/multi/#JuMP-formulation","page":"The multi-commodity flow problem","title":"JuMP formulation","text":"","category":"section"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"We start by creating a model and our decision variables:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"model = Model(HiGHS.Optimizer)\nset_silent(model)\n@variable(model, x[origins, destinations, products] >= 0)","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"One approach when working with databases is to extract all of the data into a Julia datastructure. For example, let's pull the cost table into a DataFrame and then construct our objective by iterating over the rows of the DataFrame:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"cost = DBInterface.execute(db, \"SELECT * FROM cost\") |> DataFrames.DataFrame\n@objective(\n model,\n Max,\n sum(r.cost * x[r.origin, r.destination, r.product] for r in eachrow(cost)),\n);\nnothing #hide","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"If we don't want to use a DataFrame, we can use a Tables.rowtable instead:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"supply = DBInterface.execute(db, \"SELECT * FROM supply\") |> Tables.rowtable\nfor r in supply\n @constraint(model, sum(x[r.origin, :, r.product]) <= r.supply)\nend","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"Another approach is to execute the query, and then to iterate through the rows of the query using Tables.rows:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"demand = DBInterface.execute(db, \"SELECT * FROM demand\")\nfor r in Tables.rows(demand)\n @constraint(model, sum(x[:, r.destination, r.product]) == r.demand)\nend","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"warning: Warning\nIterating through the rows of a query result works by incrementing a cursor inside the database. As a consequence, you cannot call Tables.rows twice on the same query result.","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"The SQLite queries can be arbitrarily complex. For example, here's a query which builds every possible origin-destination pair:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"od_pairs = DBInterface.execute(\n db,\n \"\"\"\n SELECT a.location as 'origin',\n b.location as 'destination'\n FROM locations a\n INNER JOIN locations b\n ON a.type = 'origin' AND b.type = 'destination'\n \"\"\",\n)","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"With a constraint that we cannot send more than 625 units between each pair:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"for r in Tables.rows(od_pairs)\n @constraint(model, sum(x[r.origin, r.destination, :]) <= 625)\nend","category":"page"},{"location":"tutorials/linear/multi/#Solution","page":"The multi-commodity flow problem","title":"Solution","text":"","category":"section"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"Finally, we can optimize the model:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"optimize!(model)\nsolution_summary(model)","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"and print the solution:","category":"page"},{"location":"tutorials/linear/multi/","page":"The multi-commodity flow problem","title":"The multi-commodity flow problem","text":"begin\n println(\" \", join(products, ' '))\n for o in origins, d in destinations\n v = lpad.([round(Int, value(x[o, d, p])) for p in products], 5)\n println(o, \" \", d, \" \", join(replace.(v, \" 0\" => \" . \"), \" \"))\n end\nend","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"EditURL = \"finance.jl\"","category":"page"},{"location":"tutorials/linear/finance/#Financial-modeling-problems","page":"Financial modeling problems","title":"Financial modeling problems","text":"","category":"section"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"This tutorial was generated using Literate.jl. Download the source as a .jl file.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"This tutorial was originally contributed by Arpit Bhatia.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Optimization models play an increasingly important role in financial decisions. Many computational finance problems can be solved efficiently using modern optimization techniques.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"In this tutorial we will discuss two such examples taken from the book Optimization Methods in Finance.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"This tutorial uses the following packages","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"using JuMP\nimport HiGHS","category":"page"},{"location":"tutorials/linear/finance/#Short-term-financing","page":"Financial modeling problems","title":"Short-term financing","text":"","category":"section"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Corporations routinely face the problem of financing short term cash commitments such as the following:","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Month Jan Feb Mar Apr May Jun\nNet Cash Flow -150 -100 200 -200 50 300","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Net cash flow requirements are given in thousands of dollars. The company has the following sources of funds:","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"A line of credit of up to $100K at an interest rate of 1% per month,\nIn any one of the first three months, it can issue 90-day commercial paper bearing a total interest of 2% for the 3-month period,\nExcess funds can be invested at an interest rate of 0.3% per month.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Our task is to find out the most economical way to use these 3 sources such that we end up with the most amount of money at the end of June.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"We model this problem in the following manner:","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"We will use the following decision variables:","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"the amount u_i drawn from the line of credit in month i\nthe amount v_i of commercial paper issued in month i\nthe excess funds w_i in month i","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Here we have three types of constraints:","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"for every month, cash inflow = cash outflow for each month\nupper bounds on u_i\nnonnegativity of the decision variables u_i, v_i and w_i.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Our objective will be to simply maximize the company's wealth in June, which say we represent with the variable m.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"financing = Model(HiGHS.Optimizer)\n\n@variables(financing, begin\n 0 <= u[1:5] <= 100\n 0 <= v[1:3]\n 0 <= w[1:5]\n m\nend)\n\n@objective(financing, Max, m)\n\n@constraints(\n financing,\n begin\n u[1] + v[1] - w[1] == 150 # January\n u[2] + v[2] - w[2] - 1.01u[1] + 1.003w[1] == 100 # February\n u[3] + v[3] - w[3] - 1.01u[2] + 1.003w[2] == -200 # March\n u[4] - w[4] - 1.02v[1] - 1.01u[3] + 1.003w[3] == 200 # April\n u[5] - w[5] - 1.02v[2] - 1.01u[4] + 1.003w[4] == -50 # May\n -m - 1.02v[3] - 1.01u[5] + 1.003w[5] == -300 # June\n end\n)\n\noptimize!(financing)\n\nobjective_value(financing)","category":"page"},{"location":"tutorials/linear/finance/#Combinatorial-auctions","page":"Financial modeling problems","title":"Combinatorial auctions","text":"","category":"section"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"In many auctions, the value that a bidder has for a set of items may not be the sum of the values that he has for individual items.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Examples are equity trading, electricity markets, pollution right auctions and auctions for airport landing slots.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"To take this into account, combinatorial auctions allow the bidders to submit bids on combinations of items.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Let M=12 ldots m be the set of items that the auctioneer has to sell. A bid is a pair B_j=left(S_j p_jright) where S_j subseteq M is a nonempty set of items and p_j is the price offer for this set.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"Suppose that the auctioneer has received n bids B_1 B_2 ldots B_n The goal of this problem is to help an auctioneer determine the winners in order to maximize his revenue.","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"We model this problem by taking a decision variable y_j for every bid. We add a constraint that each item i is sold at most once. This gives us the following model:","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"beginaligned\nmax sum_i=1^n p_j y_j \ntext st sum_j i in S_j y_j leq 1 forall i=12 ldots m \n y_j in01 forall j in12 ldots n\nendaligned","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"bid_values = [6 3 12 12 8 16]\nbid_items = [[1], [2], [3 4], [1 3], [2 4], [1 3 4]]\n\nauction = Model(HiGHS.Optimizer)\n@variable(auction, y[1:6], Bin)\n@objective(auction, Max, sum(y' .* bid_values))\nfor i in 1:6\n @constraint(auction, sum(y[j] for j in 1:6 if i in bid_items[j]) <= 1)\nend\n\noptimize!(auction)\n\nobjective_value(auction)","category":"page"},{"location":"tutorials/linear/finance/","page":"Financial modeling problems","title":"Financial modeling problems","text":"value.(y)","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"EditURL = \"https://github.com/GAMS-dev/GAMS.jl/blob/c5dee9f929e9d2f4433ae09fa92b8d872c9c43e0/README.md\"","category":"page"},{"location":"packages/GAMS/#GAMS.jl","page":"GAMS-dev/GAMS.jl","title":"GAMS.jl","text":"","category":"section"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"GAMS.jl provides a MathOptInterface Optimizer to solve JuMP models using GAMS.","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"GAMS comes with dozens of supported solvers. Among them are: ALPHAECP, ANTIGONE, BARON, CBC, CONOPT, CPLEX, DICOPT, GUROBI, IPOPT, KNITRO, LINDO, LINDOGLOBAL, MINOS, MOSEK, NLPEC, PATH, QUADMINOS, SBB, SHOT, SCIP, SNOPT, SOPLEX, XPRESS. Find a complete list here.","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"GAMS.jl supports the following JuMP features:","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"linear, quadratic and nonlinear (convex and non-convex) objective and constraints\ncontinuous, binary, integer, semi-continuous and semi-integer variables\nSOS1 and SOS2 sets\ncomplementarity constraints","category":"page"},{"location":"packages/GAMS/#Installation","page":"GAMS-dev/GAMS.jl","title":"Installation","text":"","category":"section"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"Download GAMS and obtain a GAMS license. Please note that GAMS also offers a free community license.\n(optional) Add the GAMS system directory to the PATH variable in order to find GAMS automatically.\nInstall GAMS.jl using the Julia package manager:\nusing Pkg\nPkg.add(\"GAMS\")","category":"page"},{"location":"packages/GAMS/#Usage","page":"GAMS-dev/GAMS.jl","title":"Usage","text":"","category":"section"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"Using GAMS as optimizer for your JuMP model:","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"using GAMS, JuMP\nmodel = Model(GAMS.Optimizer)","category":"page"},{"location":"packages/GAMS/#GAMS-System","page":"GAMS-dev/GAMS.jl","title":"GAMS System","text":"","category":"section"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"If the GAMS system directory has been added to the PATH variable (you can check this with print(ENV[\"PATH\"])), GAMS.jl will find it automatically. Otherwise, or if you like to switch between systems, the system directory can be specified by (one of the following):","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"set_optimizer_attribute(model, \"SysDir\", \"\")\nset_optimizer_attribute(model, GAMS.SysDir(), \"\")","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"Analogously, you can specify a working directory with \"WorkDir\" or GAMS.WorkDir(). If no working directory has been set, GAMS.jl will create a temporary one.","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"If you want to use the same GAMS workspace (same system and working directory) for multiple models, you can create a GAMSWorkspace first with either of the following","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"ws = GAMS.GAMSWorkspace()\nws = GAMS.GAMSWorkspace(\"\")\nws = GAMS.GAMSWorkspace(\"\", \"\")","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"and then pass it to your models:","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"model = Model(() -> GAMS.Optimizer(ws))","category":"page"},{"location":"packages/GAMS/#GAMS-Options","page":"GAMS-dev/GAMS.jl","title":"GAMS Options","text":"","category":"section"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"GAMS command line options can be specified by","category":"page"},{"location":"packages/GAMS/","page":"GAMS-dev/GAMS.jl","title":"GAMS-dev/GAMS.jl","text":"set_optimizer_attribute(model, \"

    &qCVKzq) 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 %ZjaMTg@b`I6Y-G4tnUjFw|xrs)x zoetJm42yvpu^w)J^bEy_+?%e;^sTE*-SmW%@O zMRxZwRRsSY_Q-^jfU1A~{`1g{{QgyGM=e+gqdRQiNBAvtv91UfLbhKKEF{v9af`Hn z(2Ofyps&@@NKeq=Q`9^DF{`RRAHP{0M~l*)6GOrbeY%=(Bj~d+R}gL(m58EW5s5t| zA|kd~SV15|T(|V-qI)VTDuxeWs=?d5Z^QV=M3va3R{VgtOwyg0^xQ}QV$bE;yK)hTc;U{u@}75DYtImℑpBzE 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 (c4Y9t4iMr#n{_j=$VRL-Ncbt_`k*B<}wl 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