-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LINCOA doesn't adhere to upper and lower bounds #178
Comments
Hi, See #42 In brief, this is known. It is not a bug. It is how Powell designed LINCOA and COBYLA. We optimization people call them "infeasible algorithms", which means that they are allowed to visit infeasible points, although they are supposed to achieve feasibility asymptotically. Such algorithms are common and non-strange. Nevertheless, as mentioned in #42, I do understand that bound constraints are often inviolable. Therefore, I plan to improve the algorithms to ensure they always respect bounds. However, I do not think I will have time for that within a few months.
Which interface are you using? The MATLAB interface should be able to continue the optimization even if the evaluation of the objective/constraint function fails. Thanks. Zaikun |
My own, score, function crashes when the parameter is out of bounds. I
would like to prevent that and used bounds checking inside the objective
function but would prefer for it to be done by the algorithm itself -
incorporate the given bounds in its calculation. The *xl* and *xu* options are not respected by LINCOA as I can see.
regards,
Zarko Asen
***@***.***
…On Sat, Mar 23, 2024 at 5:43 PM Zaikun ZHANG ***@***.***> wrote:
See #42 <#42>
Which interface are you using? The MATLAB interface should be able to
continue the optimization even if the evaluation of the
objective/constraint function fails.
Thanks.
—
Reply to this email directly, view it on GitHub
<#178 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACS4YPLKT6OMZAKQXXJPRQLYZWWLXAVCNFSM6AAAAABFEYNLFWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMJWGU2DGNRRGM>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
I fully understand the situation. This is a known issue. Although this is not a bug, it will be fixed when I have time. See below (again).
In addition, may I know whether you are using LINCOA through any interface?
Thanks. |
That would be great, thanks. I use PrimaC - the C interface to the Fortran library in a multithreaded C++ project (G++ 13). |
Thank you for the information. |
I have the same problem. I use LINCOA in C# via CSNumerics. Even for trivial X values, it seems to fail sometimes. For example if I have these As and Bs:
it tells me "LINCOA has made the initial X feasible by increasing part(s) of B." Is there an easy fix here? |
Hi @mcmillab , Thank you for your message. Could you provide a minimal working example?
We don't provide PRIMA in C#. If it is not an interface provided by us, I am afraid that there is not much we can help with. Thank you. Zaikun |
Hi, Zaikun I found the bug yesterday, sorry for the delayed response and it
was in my code, not in yours. I apologize for alarming you for no reason. I
create a macro algorithm using your library that starts several optimizers
in parallel at even parameter distances and selects the best ones at
several points in time. This way I am able to boost the precision of the
result by a significant amount (sacrificing computational resources). If
you are interested I can contribute the code back to you so you will
integrate it in Prima. I named it PPrima, stands for Parallel Prima, and it
provides a C plus plus interface to Prima-C. Thanks for understanding, Žarko
regards,
Zarko Asen
***@***.***
…On Mon, Jun 17, 2024 at 6:31 AM Zaikun ZHANG ***@***.***> wrote:
Hi @mcmillab <https://github.com/mcmillab> ,
Thank you for your message. Could you provide a minimal working example?
I use LINCOA in C# via CSNumerics.
We don't provide PRIMA in C#. If it is not an interface provided by us, I
am afraid that we will have little to do.
Thank you.
Zaikun
—
Reply to this email directly, view it on GitHub
<#178 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACS4YPPVCXPTGHR4PCW2H5TZHZRCHAVCNFSM6AAAAABJNFZUHGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNZSGIYTMOJSHE>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
I noticed running LINCOA will make it regularly underrun set lower bound for a parameter, and cause my program to stop. Is LINCOA supposed to be bounds checked? If not, can you add the feature of bounds for LINCOA?
The text was updated successfully, but these errors were encountered: