- Xint >= lb
- Xint <= ub
- Aeq*Xint' = beq
- A*Xint' <= b
- f.Ineq(Xint) <= 0
How Can I improve the result of Surrogateopt Optimization?
7 次查看(过去 30 天)
显示 更早的评论
Hi all, I have a mixed integer nonlinear problem with a lot of constraints and used surrogateopt to find the minimum cost function. It gives a result but It doesn't acceptable one. I changed some default parameters like MaxFunctionEvaluations, MinSampleDistance or MinSurrogatePoints. At the same time, I have added InitialPoints but the result didn't change. I solved the same problem with fmincon without using integer constraints and found a good solution. I modified this result as initialpoints for the surrogate optimization but It still gives the same bad result. It didn't consider the initial points. When I call the function with intialpoints, It gives a better result. For example;
opts = optimoptions('surrogateopt','PlotFcn','surrogateoptplot','InitialPoints',Xint,'MaxFunctionEvaluations',6000);
rng default
[x1,fval,exitflag,output] = surrogateopt(f,LB,UB,intcon,A,b,Aeq,beq,opts);
fval= 1000 $
fval_new=f(Xint) = 800$
So, why can't the surrogate find a good result at least as good as the intial points I gave? How can I improve my result?
0 个评论
回答(2 个)
Alan Weiss
2022-2-14
Is your initial point Xint feasible? In other words, does it satisfy
If Xint satisfies all of those constraints then I would be surprised that surrogateopt returns a worse solution thant Xint.
Alan Weiss
MATLAB mathematical toolbox documentation
3 个评论
Alan Weiss
2022-2-16
I would appreciate seeing your code. I cannot understand how surrogateopt would return a worse solution than a feasible initial point.
Alan Weiss
MATLAB mathematical toolbox documentation
Mehmet Türker TAKCI
2022-2-16
编辑:Mehmet Türker TAKCI
2022-3-2
2 个评论
Alan Weiss
2022-2-18
I believe that the issue arises because your initial point Xint is not feasible, as you will see if you execute
max(abs(AeqXint - beq))
You get a value of 0.0027, which is large enough for the solver to deem the point infeasible. To examine the issue further, execute
[rr ss] = max(abs(AeqXint - beq)) % ss is the index where it occurs
AeqXint(ss)
beq(ss)
Alan Weiss
MATLAB mathematical toolbox documentation
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surrogate Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!