[{"data":1,"prerenderedAt":209},["ShallowReactive",2],{"dev-\u002Fdeveloper\u002Fdocs\u002Fclients":3},{"id":4,"title":5,"body":6,"description":199,"extension":200,"faq":201,"meta":202,"navigation":203,"noindex":204,"path":205,"seo":206,"stem":207,"__hash__":208},"content\u002Fdeveloper\u002Fdocs\u002Fclients.md","Client libraries — Quicopt for Python, Julia, R and Ruby",{"type":7,"value":8,"toc":192},"minimark",[9,14,45,49,74,101,104,120,131,134,149,160,163,177,188],[10,11,13],"h1",{"id":12},"client-libraries","Client libraries",[15,16,17,18,22,23,22,26,29,30,33,34,38,39,44],"p",{},"Quicopt has an official client for ",[19,20,21],"strong",{},"Python",", ",[19,24,25],{},"Julia",[19,27,28],{},"R"," and ",[19,31,32],{},"Ruby",".\nAll four talk to the same service and read your key from the same environment\nvariable, ",[35,36,37],"code",{},"QUICOPT_API_KEY"," (see ",[40,41,43],"a",{"href":42},"\u002Fdeveloper\u002Fdocs\u002Fkeys","API keys","). The Python,\nJulia and R clients cover every problem class the service solves; the Ruby\nclient covers linear and quadratic models. All four are open source under\nApache 2.0.",[46,47,21],"h2",{"id":48},"python",[50,51,56],"pre",{"className":52,"code":53,"language":54,"meta":55,"style":55},"language-bash shiki shiki-themes github-dark","pip install quicopt\n","bash","",[35,57,58],{"__ignoreMap":55},[59,60,63,67,71],"span",{"class":61,"line":62},"line",1,[59,64,66],{"class":65},"svObZ","pip",[59,68,70],{"class":69},"sU2Wk"," install",[59,72,73],{"class":69}," quicopt\n",[15,75,76,77,80,81,84,85,89,90,89,96],{},"You write the model in a standard front-end: install ",[35,78,79],{},"quicopt[mathopt]"," for\nOR-Tools MathOpt or ",[35,82,83],{},"quicopt[pyomo]"," for Pyomo.\n",[40,86,88],{"href":87},"\u002Fdeveloper\u002Fdocs\u002Fquickstart","Quickstart"," ·\n",[40,91,95],{"href":92,"rel":93},"https:\u002F\u002Fquicopt.github.io\u002Fquicopt-python\u002F",[94],"nofollow","Reference ↗",[40,97,100],{"href":98,"rel":99},"https:\u002F\u002Fgithub.com\u002FQuicopt\u002Fquicopt-python",[94],"Source ↗",[46,102,25],{"id":103},"julia",[50,105,107],{"className":52,"code":106,"language":54,"meta":55,"style":55},"julia -e 'using Pkg; Pkg.add([\"QuicoptClient\", \"JuMP\"])'\n",[35,108,109],{"__ignoreMap":55},[59,110,111,113,117],{"class":61,"line":62},[59,112,103],{"class":65},[59,114,116],{"class":115},"sDLfK"," -e",[59,118,119],{"class":69}," 'using Pkg; Pkg.add([\"QuicoptClient\", \"JuMP\"])'\n",[15,121,122,123,89,127],{},"The client is in Julia's General registry and reads models written in JuMP,\nwhich this command installs alongside it.\n",[40,124,95],{"href":125,"rel":126},"https:\u002F\u002Fquicopt.github.io\u002FQuicoptClient.jl\u002F",[94],[40,128,100],{"href":129,"rel":130},"https:\u002F\u002Fgithub.com\u002FQuicopt\u002FQuicoptClient.jl",[94],[46,132,28],{"id":133},"r",[50,135,137],{"className":52,"code":136,"language":54,"meta":55,"style":55},"Rscript -e 'install.packages(\"quicopt\", repos = c(\"https:\u002F\u002Fquicopt.r-universe.dev\", \"https:\u002F\u002Fcloud.r-project.org\"))'\n",[35,138,139],{"__ignoreMap":55},[59,140,141,144,146],{"class":61,"line":62},[59,142,143],{"class":65},"Rscript",[59,145,116],{"class":115},[59,147,148],{"class":69}," 'install.packages(\"quicopt\", repos = c(\"https:\u002F\u002Fquicopt.r-universe.dev\", \"https:\u002F\u002Fcloud.r-project.org\"))'\n",[15,150,151,152,89,156],{},"The package comes from r-universe; the CRAN mirror supplies its dependencies.\nIt is plain R, so it needs no compiler.\n",[40,153,95],{"href":154,"rel":155},"https:\u002F\u002Fquicopt.github.io\u002Fquicopt-r\u002F",[94],[40,157,100],{"href":158,"rel":159},"https:\u002F\u002Fgithub.com\u002FQuicopt\u002Fquicopt-r",[94],[46,161,32],{"id":162},"ruby",[50,164,166],{"className":52,"code":165,"language":54,"meta":55,"style":55},"gem install quicopt\n",[35,167,168],{"__ignoreMap":55},[59,169,170,173,175],{"class":61,"line":62},[59,171,172],{"class":65},"gem",[59,174,70],{"class":69},[59,176,73],{"class":69},[15,178,179,180,89,184],{},"Needs Ruby 3.2 or newer. The Ruby client builds linear and quadratic models;\na cubic term, a division by a variable or a higher power raises an error where\nyou write it.\n",[40,181,95],{"href":182,"rel":183},"https:\u002F\u002Fquicopt.github.io\u002Fquicopt-ruby\u002F",[94],[40,185,100],{"href":186,"rel":187},"https:\u002F\u002Fgithub.com\u002FQuicopt\u002Fquicopt-ruby",[94],[189,190,191],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":55,"searchDepth":193,"depth":193,"links":194},2,[195,196,197,198],{"id":48,"depth":193,"text":21},{"id":103,"depth":193,"text":25},{"id":133,"depth":193,"text":28},{"id":162,"depth":193,"text":32},"Install the Quicopt client for Python, Julia, R or Ruby, and find each client's reference documentation and source.","md",null,{},true,false,"\u002Fdeveloper\u002Fdocs\u002Fclients",{"title":5,"description":199},"developer\u002Fdocs\u002Fclients","xVk13YbYjadnbWJTr0COxqssHAU5fkab1Z7Xuhl8rEc",1794337679387]