Skip to content
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

Optimizer: no way to check for infeasibility! #8

Closed
gchabert opened this issue Jul 5, 2014 · 7 comments
Closed

Optimizer: no way to check for infeasibility! #8

gchabert opened this issue Jul 5, 2014 · 7 comments
Assignees

Comments

@gchabert
Copy link
Contributor

gchabert commented Jul 5, 2014

When the optimizer returns, how the user can be informed that infeasibility occurred (no feasible point at all)?

@bneveu
Copy link
Contributor

bneveu commented Jul 10, 2014

It is reported in Optimizer::report
there are 2 possibilities

1/ the problem is infeasible
it is reported " infeasible problem"
2/ no feasible point has been found, but the problem may be feasible
cout << " no feasible point found " << endl;

maybe the optimize function itself should return a status object and not void.

@gchabert
Copy link
Contributor Author

Yes, that was my point. It would be nice to have a return code (or some other status function) to check infeasibility programatically.
Gilles

gchabert pushed a commit that referenced this issue Sep 18, 2014
@gchabert
Copy link
Contributor Author

OK c'est fait par contre ce serait bien que tu y jettes un coup d'oeil.
En particulier, on déclarait un problème "infeasible" dans report() si uplo_of_epsboxes =+oo et loup==+oo. Je pense que la condition (uplo_of_epsboxes =+oo) suffit et cela me permet ainsi de prendre en compte le cas où une borne initiale est donnée par l'utilisateur et que celle-ci s'avère en deça du minimum global réel (cette borne impose du coup un loup < +oo). Voir les commentaires de optimize() dans le header Optimizer.h.
Merci de valider...

@bneveu
Copy link
Contributor

bneveu commented Sep 18, 2014

On 18/09/2014 10:47, Gilles Chabert wrote:

OK c'est fait par contre ce serait bien que tu y jettes un coup d'oeil.
En particulier, on déclarait un problème "infeasible" dans report() si
uplo_of_epsboxes =+oo et loup==+oo. Je pense que la condition
(uplo_of_epsboxes =+oo) suffit et cela me permet ainsi de prendre en
compte le cas où une borne initiale est donnée par l'utilisateur et
que celle-ci s'avère en deça du minimum global réel (cette borne
impose du coup un loup < +oo). Voir les commentaires de optimize()
dans le header Optimizer.h.
Merci de valider...


Reply to this email directly or view it on GitHub
#8 (comment).

le report() ne marche plus si tu enlèves la condition loup==+oo

il trouve infeasible tout problème qui finit bien.
si loup différent de +oo sert à une borne donnée par l'utilisateur et
n'indique plus qu'aucune solution n'a été trouvée ,
il faut un autre indicateur pour cela (en particulier savoir si
loup_point est une solution);

../build/examples/optimizer04
../benchs/benchs-optim/coconutbenchmark-library1/ex2_1_9.bch acidhc4 xn
smearsumrel 1.e-8 1.e-8 1000 1

avec trace =1
...
simplex1] loup update -0.375000007218 loup point (0 ; 0 ; 0 ;
0.249993311176 ; 0.250017558483 ; 0.249993939414 ; 0.24999520083 ; 0 ; 0
; 0)
ymax=-0.375000017218 uplo= -0.37500008873
[simplex1] loup update -0.375000007218 loup point (0 ; 0 ; 0 ;
0.249993311176 ; 0.250017558483 ; 0.249993939414 ; 0.24999520083 ; 0 ; 0
; 0)
ymax=-0.375000017218 uplo= -0.375000084636
infeasible problem
cpu time used 4.82119800001s.
number of cells 1822
Automatic cleanup of gaol... done

A +,

Bertrand.

@bneveu bneveu reopened this Sep 18, 2014
@gchabert
Copy link
Contributor Author

Ah oui c'est à cause du upperbounding j'imagine... on peut du coup trouver des points faisables et n'avoir aucune boîte epsilonesques -> uplo_of_epsboxes=+oo.
C'est ça?

@bneveu
Copy link
Contributor

bneveu commented Sep 18, 2014

On 18/09/2014 14:55, Gilles Chabert wrote:

Ah oui c'est à cause du upperbounding j'imagine... on peut du coup
trouver des points faisables et n'avoir aucune boîte epsilonesques ->
uplo_of_epsboxes=+oo.
C'est ça?


Reply to this email directly or view it on GitHub
#8 (comment).

oui, c'est que la condition d'arrêt sur l'objectif s'est déclenchée : on
a trouvé un point faisable et loup-uplo < eps_obj
avant d'avoir des boîtes epsilonesques , ce qui arrive la plupart du
temps (heureusement) .

Bertrand.

@gchabert
Copy link
Contributor Author

J'ai rajouté du coup la condition (loup==initial_loup) qui généralise simplement l'ancienne (loup==+oo).
En effet, on accepte un nouveau loup-point que s'il diminue strictement le loup (donc il ne peut pas y avoir de loup-point avec loup=initial_loup).
A priori ça devrait être bon pour toi, du coup je ferme le ticket.
Gilles

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants