
Re: Optimization terminated: No feasible solution found.
Posted:
Jan 19, 2014 10:01 AM


"wan " <yg880221@126.com> wrote in message <jcpet4$6nu$1@newscl01ah.mathworks.com>... > Friends, > I try to run a program by fmincon,but I got an error:Optimization terminated: No feasible solution found.Search direction less than 2*options.TolX but constraints are not satisfied.and I don't know what is my mistake... > "myfun.m" > function f=myfun(x) > f=2.20*x(1)*(x(1)1)^2/(x(1)2)+2.20*x(1)*x(2)*(x(2)1)^2/(x(2)2)+2.42*x(1)*x(2)*x(3)*(x(3)1)^2/(x(3)2)+2.75*x(1)*x(2)*x(3)*x(4)*(x(4)1)^2/(x(4)2); > and "mycon2.m" > function[c,ceq]=mycon2(x) > g(1)=1(x(2)*(x(1)2)/(x(2)2))^1/3*(x(2)1)/(x(1)1); > g(2)=(x(2)*(x(1)2)/(x(2)2))^1/3*(x(2)1)/(x(1)1)1.2; > g(3)=1(1.1*x(3)*(x(2)2)/(x(3)2))^1/3*(x(3)1)/(x(2)1); > g(4)=(1.1*x(3)*(x(2)2)/(x(3)2))^1/3*(x(3)1)/(x(2)1)1.2; > g(5)=1(1.13636*x(4)*(x(3)2)/(x(4)2))^1/3*(x(4)1)/(x(3)1); > g(6)=(1.13636*x(4)*(x(3)2)/(x(4)2))^1/3*(x(4)1)/(x(3)1)1.2; > c=[g(1);g(2);g(3);g(4);g(5);g(6)]; > ceq=[1590.192x(1)*x(2)*x(3)*x(4)]; > command window: > >>x0=[7.2 7.2 7.5 4.09]; > >>lb=[4;5;5;4]; > >>ub=[8;8;8;5.6]; > >>options=optimset('largescale','off','maxfunevals',1000000); > >>[x,fval]=fmincon(@myfun,x0,[],[],[],[],lb,ub,@mycon2,options) > when I try to run the script, I get these messages errors: > Optimization terminated: No feasible solution found. > Search direction less than 2*options.TolX but constraints are not satisfied. > x = > > 15.7056 10.0989 2.7056 3.7056 > > > fval = > > 9.8284e+003 > Any help is very much appreciated.Wish you a nice day!
You seem desperate here, so I took a look.
Over the domain of interest defined by the lower and upper bounds you have posed, there are TWO inequality constraints that can apparently NEVER be satisfied. That is, g(2) and g(4) are always positive over that 4d hyperrectangle.
There are NO feasible solutions as you have posed it.
Period.
Wanting a solution to exist will not help. Trying harder will not suffice. Using a different optimizer will be a waste of time.
The only thing you can do is reformulate your problem, perhaps by arbitrarily widening the range of acceptability. For example, were you to widen the bound constraints to
lb = [3 3 3 4]; ub = [10 10 10 5.6];
this MIGHT be wide enough to allow a solution to exist. I've not looked more deeply to know if any feasible solution does exist in fact, since widening those ranges might result in a meaningless result.
John

