<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p></p>
<div class="IVILX2C-ed-a" style="margin: 0px 0px 0px 44px; padding: 0px 0px 0px 5px; border: 0px;">
<div tabindex="0" class="IVILX2C-tb-P" style="margin: 0px; padding: 0px; border: 0px; color: rgb(34, 34, 34); line-height: normal;">
<div style="margin: 0px; padding: 0px; border: 0px;">
<div style="margin: 0px; padding: 0px; border: 0px; overflow: auto;">
<div style="margin: 0px; padding: 0px; border: 0px; max-height: 10000px;">
<div dir="ltr" style="margin: 0px; padding: 0px; border: 0px;">Hello,
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;">I am researching in nlp applied to optimal control, specifically in an very simple electric point mass vehicle model based in the ampl example provide by Ipopt source code and defined by the next dae:</div>
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;">
<div style="margin: 0px; padding: 0px; border: 0px;"># min tf</div>
<div style="margin: 0px; padding: 0px; border: 0px;"># dx/dt = v</div>
<div style="margin: 0px; padding: 0px; border: 0px;"># dv/dt = u - R*v^2</div>
<div style="margin: 0px; padding: 0px; border: 0px;"># x(0)=0; x(tf)=L</div>
<div style="margin: 0px; padding: 0px; border: 0px;"># v(0)=0; v(tf)=0</div>
<div style="margin: 0px; padding: 0px; border: 0px;"># -3 <= u <= 1 (engine constraint)</div>
<div style="margin: 0px; padding: 0px; border: 0px;">#</div>
<div style="margin: 0px; padding: 0px; border: 0px;">#          {v <= 7m/s ===> u < 1</div>
<div style="margin: 0px; padding: 0px; border: 0px;"># u <= {                                                (electric car constraint)</div>
<div style="margin: 0px; padding: 0px; border: 0px;">#          {v >  7m/s ===> u < 1*7/v</div>
<div style="margin: 0px; padding: 0px; border: 0px;">#</div>
<div style="margin: 0px; padding: 0px; border: 0px;"># -1.5 <= dv/dt <= 0.8 (comfort constraint -> smooth driving)</div>
<div style="margin: 0px; padding: 0px; border: 0px;"># -0.5 <= d2v/dt2 <= 0.5 (comfort constraint -> jerk)</div>
<div style="margin: 0px; padding: 0px; border: 0px;"># v <= Vmax (40 kmh[0-500m] + 25 kmh(500-1000m])</div>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;">As you can see, the acceleration provided by the electric engine (the only control variable, by the way) must be modelled as a piecewise equation, because it is define by constant acceleration until reaching
 a specific speed, and then by a constant power hyperbola depending of the vehicle speed (a state variable). Something close happens with the maximum allowed speed constraint, it is a piesewise constraint depending of the distance run by the vehicle (another
 state variable)</div>
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;">I could model that easily in AMPL, but I would like to migrate to an open source library, so I first tried Pyomo, but it does not work due that this kind of constraints are not allowed by it, due that constrain
 are not defined as callbacks that are called by the solver in every iteration, but as a container filler called once at model creation, so I wonder if I could use Ipopt c++ interface directly.</div>
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;">1) If so, I have not found anything even close to this in the examples repository, could someone show me how to do it using some code example?</div>
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;">2) Does retaping be used for solving this issue?</div>
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;">Thanks in advance,</div>
<div style="margin: 0px; padding: 0px; border: 0px;">Pablo</div>
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;"><br>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;"></div>
<div style="margin: 0px; padding: 0px; border: 0px;"></div>
</div>
<div style="margin: 0px; padding: 0px; border: 0px;">
<div class="IVILX2C-ed-a" style="margin: 0px 0px 0px 44px; padding: 0px 0px 0px 5px; border: 0px;">
</div>
</div>
<div class="IVILX2C-tb-b" style="margin-top: 0px; margin-right: 0px !important; margin-bottom: 0px; margin-left: 39px; padding: 0px 0px 0px 5px; border: 0px;">
<div class="IVILX2C-tb-a IVILX2C-tb-cb" style="margin: 0px; padding: 4px 0px; border: 0px; position: relative;">
<div style="margin: 0px; padding: 0px; border: 0px;">
<div style="margin: 0px; padding: 0px; border: 0px; color: rgb(34, 34, 34); font-family: Arial, Helvetica, sans-serif; font-size: 13px; display: inline-block;">
</div>
<span style="color: rgb(34, 34, 34); font-family: Arial, Helvetica, sans-serif; font-size: 13px;"></span>
<div class="IVILX2C-md-a" style="margin: 4px 0px 0px; padding: 0px; border: 0px; position: relative; height: 34px; color: rgb(34, 34, 34); font-family: Arial, Helvetica, sans-serif; font-size: 13px;">
</div>
</div>
</div>
</div>
<br>
<p></p>
</div>
</body>
</html>