Nicolas
Posts:
16
Registered:
4/9/08


Re: Preventing negative values in fmincon
Posted:
May 23, 2008 12:30 PM


"John D'Errico" <woodchips@rochester.rr.com> wrote in message <g16p8v$5ee$1@fred.mathworks.com>... > "Mike " <michael.gerstREMOVE@yale.edu> wrote in message > <g16n7a$9m8$1@fred.mathworks.com>... > > Bruno and John, thanks for the tip. > > > > If I understand you correctly, the following simple LP problem > > > > Obj = a*X1 + a*X2 + a*X3 > > subject to: X1 + X2 + X3 =< b > > > > would transform to > > > > Obj = a*sqrt(X1^2) + b*sqrt(X2^2) + c*sqrt(X3^2) > > subject to: sqrt(X1^2) + sqrt(X2^2) + sqrt(X3^2) =< b > > > > Is this the basic idea? > > Not exactly. Have the optimizer vary a vecotr > with three unknowns in it [Y1,Y2,Y3]. Inside > the objective function, transform your > variables so that > > X1 = Y1^2 > X2 = Y2^2 > X3 = Y3^2 > > So now X1, X2, X3 are assured to be positive. > > When the optimization is done, and it returns > the vector [Y1, Y2, Y3], just square the elements > to recover [X1, X2, X3]. > > There are similar strategies to deal with variables > that have both upper and lower bounds. > > John
If these strategies are not adapted to the problem, you may also try knitro through the ktrlink function of the toolbox. Indeed, knitro has a "feasible" mode that guarantees that it stays in the feasible domain once it has found a feasible solution.
I can provide you with a onemonth test licence if needed. Just send an email to supportknitro@artelys.com.
Nicolas.

