-
Notifications
You must be signed in to change notification settings - Fork 0
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
Finish the AMPL interface #1
Comments
include the option --AMPL in ibexopt (but we need the option -AMPL) Need more test with ampl
just add the following option before solving: " option solver ibexopt; " Now we need to interface the option of ibexopt with AMPL (rel_eps, abs_eps, timeout,...)
You can directly call ibexopt from AMPL
Bonjour, ça y est IBEXOPT est completement compatible avec AMPL Il suffit de copier ou mettre un lien vers "ibexopt" dans le dossier de Amplide et on peut appeler ibexopt et récupérer la solution dans l'IDE de AMPL. exemple:var x {1..3} >= 1, <= 5; display x; option ibexopt_options " trace=0 rigor=0 rel_eps_f=1.e-5 abs_eps_f=1.e-6 eps_h=1.e-8 eps_x=1.e-8 initial_loup=20 timeout=10"; display x; |
Il me faudrait une relecture sur les messages de retour et sur les noms des options |
Si on ne met pas de "ibexopt_options" c'est les options par default de ibexopt. J'ai fait en sorte que rien ne change en apparence avec ibexopt. Un peu de relecture est NEOS nous tend les bras ;-) |
Super boulot Jordan, merci ! On a quelques questions pour bien comprendre :)
On souhaite faire des tests sur l'ensemble des benchs. L'idée serait de prendre un fichier mbx, de le ré-écrire en ampl, d'utiliser le plugin pour le relire encore une fois, et finalement de comparer les deux sorties du solver. Comme tu es à fond dans AMPL, voudrais-tu bien écrire la fonction System::to_AMPL() membre de la classe System et qui écrit fichier AMPL dans une chaîne de caractère? Tu pourrais fortement t'inspirer de System::minibex() qui est très simple... De notre coté, on ferait l'exécutable qui lit, converti, résout et compare les sorties. Gilles aimerait au final inclure cela dans les tests unitaires du plugin, ca serait super !
Que faut-il relire? Merci encore ! Alex (& Gilles) |
oui c'est ça. Mais, j'ai du bien modifié les script d'install de AMPL pour que ça marche (bug dans les option, rename des librairies, ajoute d'option PREFIX,....)
On peut faire les deux.
et la résolution s'affiche
pas bien 👎 :-D
oui ça peut se faire. là je suis en train de récupérer les noms de variable depuis le .nl pour les avoir dans le System Ibex pour corriger le bug ibex-team/ibex-lib#351 Pour la relecture, je ne suis pas entierement satisfait des noms des options, ce n'est pas très compatible avec ce que font les autres (voir le dossier doc dans amplide lorsque l'on installe la version gratuite ). a+ |
J'ai ajouté la récupération des nom de variables, de contraintes et de fonction objectif. |
J'ai commencé System::toAmpl(). Les variables et definition générale du problème ont besoin d'être testé... |
Bonjour,
Dans la branche "ampl", j'ai fait un update du code.
Je mets ici une todo liste du travail qu'il reste à faire
l'installateur cmake de la libraire ASL pour lire les fichiers .nl
Mais je pense que l'on peut s'inspirer de ce qui est fait ici:
https://github.com/ampl/mp/blob/master/src/asl/CMakeLists.txt
Attention, j'ai modifié le fichier "configure" et "makefile" dans amplsolvers.tar.gz par rapport à l'original http://ampl.com/netlib/ampl
J'ai corrigé aussi un bug dans le fichier dtoa1.c. Lorsque l'on compile avec Gaol, il faut compiler Ampl avec l'option -DNo_dtoa et un bug apparait:
Error with the option -DNo_dtoa ampl/mp#126
Il reste à écrire la fonction "writeSolution" de ibex_AmplInterface.cpp
Cette fonction doit créer le fichier ou le message qui est stocké dans le fichier .sol que lit Ampl.
IIl faut certainement utiliser la fonction de Ampl:
void write_sol(char *msg, real *x, real *y, Option_Info *oi);
voir la doc ici: https://github.com/ibex-team/ibex-lib/blob/ampl/plugins/ampl/3rd/hooking3.pdf
Dans l'exécutable "ibexopt" du pluggin "optim", si l'option " -AMPL " est présente alors il faut écrire un fichier .sol en utilisant writeSolution. Cette simple option rend possible l'appel de ibexopt directement dans Ampl.
A+
The text was updated successfully, but these errors were encountered: