<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Julia Community 🟣: tmigot</title>
    <description>The latest articles on Julia Community 🟣 by tmigot (@tmigot).</description>
    <link>https://forem.julialang.org/tmigot</link>
    <image>
      <url>https://forem.julialang.org/images/bzHV9D9csmlvvW-lrHpWE-zGsSczlGK_8YyMIqlR0xg/rs:fill:90:90/g:sm/mb:500000/ar:1/aHR0cHM6Ly9mb3Jl/bS5qdWxpYWxhbmcu/b3JnL3JlbW90ZWlt/YWdlcy91cGxvYWRz/L3VzZXIvcHJvZmls/ZV9pbWFnZS82OTQv/YmUyMmRhMGUtMzJm/MS00ZjViLWJlZDgt/NjVkOTg5MjFkMDRj/LnBuZw</url>
      <title>Julia Community 🟣: tmigot</title>
      <link>https://forem.julialang.org/tmigot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.julialang.org/feed/tmigot"/>
    <language>en</language>
    <item>
      <title>New JSO package: DCISolver.jl</title>
      <dc:creator>tmigot</dc:creator>
      <pubDate>Thu, 11 Aug 2022 17:40:00 +0000</pubDate>
      <link>https://forem.julialang.org/tmigot/new-jso-package-dcisolverjl-487l</link>
      <guid>https://forem.julialang.org/tmigot/new-jso-package-dcisolverjl-487l</guid>
      <description>&lt;p&gt;We are very happy to announce the publication in the Journal of Open Source Software of the paper &lt;strong&gt;DCISolver.jl: A Julia Solver for Nonlinear Optimization using Dynamic Control of Infeasibility&lt;/strong&gt;. It is accessible in open access &lt;a href="https://joss.theoj.org/papers/10.21105/joss.03991"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/JuliaSmoothOptimizers/DCISolver.jl"&gt;&lt;code&gt;DCISolver.jl&lt;/code&gt;&lt;/a&gt; is a new pure Julia implementation of the Dynamic Control of Infeasibility method (DCI), introduced by Bielschowsky and Gomes in 2008, for solving the equality-constrained nonlinear optimization problem&lt;/p&gt;

&lt;p&gt;&lt;a href="https://forem.julialang.org/images/faTACUhPMTeUmTQZzGNs8i709Q87cPEFZEIOnFrb2p8/w:880/mb:500000/ar:1/aHR0cHM6Ly9mb3Jl/bS5qdWxpYWxhbmcu/b3JnL3JlbW90ZWlt/YWdlcy91cGxvYWRz/L2FydGljbGVzL3Qw/ODQ4M3N0anhhZXBs/eHVtdTdiLnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://forem.julialang.org/images/faTACUhPMTeUmTQZzGNs8i709Q87cPEFZEIOnFrb2p8/w:880/mb:500000/ar:1/aHR0cHM6Ly9mb3Jl/bS5qdWxpYWxhbmcu/b3JnL3JlbW90ZWlt/YWdlcy91cGxvYWRz/L2FydGljbGVzL3Qw/ODQ4M3N0anhhZXBs/eHVtdTdiLnBuZw" alt="Image description" width="394" height="54"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;where  $f$ and  $h$ are twice continuously differentiable.&lt;br&gt;
DCI is an iterative method that aims to compute a local minimum using first and second-order derivatives.&lt;br&gt;
Our initial motivation for developing &lt;a href="https://github.com/JuliaSmoothOptimizers/DCISolver.jl"&gt;&lt;code&gt;DCISolver.jl&lt;/code&gt;&lt;/a&gt; is to solve PDE-constrained optimization problems, many of which have equality constraints only.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/JuliaSmoothOptimizers/DCISolver.jl"&gt;&lt;code&gt;DCISolver.jl&lt;/code&gt;&lt;/a&gt; is built upon the JuliaSmoothOptimizers (JSO) tools, and takes as input an &lt;a href="https://github.com/JuliaSmoothOptimizers/NLPModels.jl"&gt;&lt;code&gt;AbstractNLPModel&lt;/code&gt;&lt;/a&gt;, JSO's general model API defined in &lt;a href="https://github.com/JuliaSmoothOptimizers/NLPModels.jl"&gt;&lt;code&gt;NLPModels.jl&lt;/code&gt;&lt;/a&gt;, a flexible data type to evaluate objective and constraints, their derivatives, and to provide any information that a solver might request from a model. The user can hand-code derivatives, use automatic differentiation, or use JSO-interfaces to classical mathematical optimization modeling languages such as &lt;a href="https://github.com/JuliaSmoothOptimizers/AmplNLReader.jl"&gt;AMPL&lt;/a&gt;, &lt;a href="https://github.com/JuliaSmoothOptimizers/CUTEst.jl"&gt;CUTEst&lt;/a&gt;, or &lt;a href="https://github.com/JuliaSmoothOptimizers/NLPModelsJuMP.jl"&gt;JuMP&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We refer to the &lt;a href="https://juliasmoothoptimizers.github.io/DCISolver.jl/v0.2/"&gt;documentation&lt;/a&gt; and &lt;a href="https://JuliaSmoothOptimizers.github.io/"&gt;tutorials&lt;/a&gt; for examples and benchmarks.&lt;/p&gt;
&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;In the following example, we use &lt;a href="https://github.com/JuliaSmoothOptimizers/DCISolver.jl"&gt;&lt;code&gt;DCISolver.jl&lt;/code&gt;&lt;/a&gt; on two optimization problems modeled with &lt;a href="https://github.com/JuliaSmoothOptimizers/ADNLPModels.jl"&gt;&lt;code&gt;ADNLPModels.jl&lt;/code&gt;&lt;/a&gt; using automatic differentiation to compute the derivatives.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight julia"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="n"&gt;DCISolver&lt;/span&gt;&lt;span class="x"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ADNLPModels&lt;/span&gt;
&lt;span class="c"&gt;# Unconstrained Rosenbrock optimization&lt;/span&gt;
&lt;span class="n"&gt;nlp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ADNLPModel&lt;/span&gt;&lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="x"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="x"&gt;]&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="x"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="x"&gt;,&lt;/span&gt; &lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="x"&gt;;&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="x"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;stats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dci&lt;/span&gt;&lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nlp&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;
&lt;span class="c"&gt;# Constrained optimization&lt;/span&gt;
&lt;span class="n"&gt;nlp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ADNLPModel&lt;/span&gt;&lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="x"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="x"&gt;]&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="x"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="x"&gt;,&lt;/span&gt; &lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="x"&gt;;&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="x"&gt;],&lt;/span&gt;
                 &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="x"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="x"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="x"&gt;],&lt;/span&gt; &lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="x"&gt;],&lt;/span&gt; &lt;span class="x"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="x"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;stats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dci&lt;/span&gt;&lt;span class="x"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nlp&lt;/span&gt;&lt;span class="x"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Migot, T., Orban, D., &amp;amp; Siqueira, A. S.&lt;br&gt;
DCISolver. jl: A Julia Solver for Nonlinear Optimization using Dynamic Control of Infeasibility.&lt;br&gt;
Journal of Open Source Software, 7(70), 3991 (2022).&lt;br&gt;
&lt;a href="https://doi.org/10.21105/joss.03991"&gt;10.21105/joss.03991&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bielschowsky, R. H., &amp;amp; Gomes, F. A.&lt;br&gt;
Dynamic control of infeasibility in equality constrained optimization.&lt;br&gt;
SIAM Journal on Optimization, 19(3), 1299-1325 (2008).&lt;br&gt;
&lt;a href="https://doi.org/10.1007/s10589-020-00201-2"&gt;10.1007/s10589-020-00201-2&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Source: &lt;a href="https://juliasmoothoptimizers.github.io/news-and-blogposts/2022/2022-03-15-dcisolver/"&gt;https://juliasmoothoptimizers.github.io/news-and-blogposts/2022/2022-03-15-dcisolver/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>launch</category>
      <category>optimization</category>
      <category>package</category>
      <category>jso</category>
    </item>
  </channel>
</rss>
