{"id":26124724,"url":"https://github.com/ampl/gokestrel","last_synced_at":"2025-12-07T08:02:59.708Z","repository":{"id":66176697,"uuid":"416006697","full_name":"ampl/gokestrel","owner":"ampl","description":"Kestrel AMPL client for all platforms","archived":false,"fork":false,"pushed_at":"2024-03-15T17:18:35.000Z","size":26,"stargazers_count":0,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-03-25T20:51:02.318Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://dev.ampl.com/solvers/kestrel/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ampl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-10-11T16:32:57.000Z","updated_at":"2024-03-15T17:20:30.000Z","dependencies_parsed_at":"2023-02-20T17:46:03.887Z","dependency_job_id":null,"html_url":"https://github.com/ampl/gokestrel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ampl%2Fgokestrel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ampl%2Fgokestrel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ampl%2Fgokestrel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ampl%2Fgokestrel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ampl","download_url":"https://codeload.github.com/ampl/gokestrel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242889291,"owners_count":20201947,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-10T16:49:58.857Z","updated_at":"2025-12-07T08:02:54.675Z","avatar_url":"https://github.com/ampl.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GoKestrel: Kestrel AMPL client for all platforms\n\nThis project replicates https://github.com/NEOS-Server/Kestrel-AMPL-Linux/ in Go in order to produce binaries that can be easily distributed for various platforms without requiring Python to be installed.\n\nProtocol: [NEOS XML-RPC protocol](https://neos-server.org/neos/xml-rpc.html)\n\nDownlaod from: https://portal.ampl.com/user/ampl/download/list\n\n## Usage\n\n### Solving directly\n\n```bash\nampl: model diet.mod;\nampl: data diet.dat;\nampl: option solver kestrel;\nampl: option email \"***@***.***\";\nampl: option kestrel_options \"solver=cplex\";\nampl: option cplex_options \"display=2\";\nampl: solve;\nConnecting to: neos-server.org:3333\nJob XXXX submitted to NEOS, password='xxxx'\nCheck the following URL for progress report:\nhttps://neos-server.org/neos/cgi-bin/nph-neos-solver.cgi?admin=results\u0026jobnumber=XXXX\u0026pass=xxxx\nJob XXXX dispatched\npassword: xxxx\n---------- Begin Solver Output -----------\nCondor submit: 'neos.submit'\nCondor submit: 'watchdog.submit'\nJob submitted to NEOS HTCondor pool.\nCPLEX 20.1.0.0: optimal solution; objective 88.2\n1 dual simplex iterations (0 in phase I)\n```\n\n### Using commands for asyncronous submissions\n\nThe command files `kestrelsub`, `kestrelret`, and `kestrelkill` are available at [commands/](commands/). To insure that AMPL will find the scripts, place them in the directory (or folder) that will be current when you execute AMPL, or set option `ampl_include` to specify the directory where the script can be found.\n\n```bash\n$ ampl\nampl: model diet.mod;\nampl: data diet.dat;\nampl: option email \"***@***.***\";\nampl: option kestrel_options \"solver=cplex\";\nampl: commands kestrelsub;\nConnecting to: neos-server.org:3333\nSubmitting model at kmodel.nl\nJob XXXX submitted to NEOS, password='xxxx'\nCheck the following URL for progress report:\nhttps://neos-server.org/neos/cgi-bin/nph-neos-solver.cgi?admin=results\u0026jobnumber=XXXX\u0026pass=xxxx\nampl: commands kestrelret;\nConnecting to: neos-server.org:3333\nWritting solution to kmodel.sol\nCPLEX 20.1.0.0: optimal solution; objective 88.2\n0 simplex iterations (0 in phase I)\nampl: option kestrel_options 'job=XXXX password=xxxx';\nampl: commands kestrelkill;\nConnecting to: neos-server.org:3333\nJob XXXX is finished\n```\n\n### Using shell for asyncronous submissions\n\nIf the folder containing AMPL and all solvers including kestrel is in the environment variable PATH,\nit may be more convenient to submit/retrieve/kill jobs invoking kestrel directly instead of using commands as follows:\n\n```bash\n$ ampl\nampl: model diet.mod;\nampl: data diet.dat;\nampl: option ampl_id (_pid); # get a submission queue (first-in-first-out) for this AMPL session\nampl: option email \"***@***.***\"; # required by NEOS\nampl: option kestrel_options \"solver=cplex\"; # solver to use on NEOS\nampl: option kestrel_stub \"kmodel\"; # stub file used by kestrel submit/retrieve\nampl: write bkmodel; # write model to kmodel.nl\nampl: shell \"kestrel submit\"; # submit the job\nConnecting to: neos-server.org:3333\nSubmitting model at kmodel.nl\nJob XXXX submitted to NEOS, password='xxxx'\nCheck the following URL for progress report:\nhttps://neos-server.org/neos/cgi-bin/nph-neos-solver.cgi?admin=results\u0026jobnumber=XXXX\u0026pass=xxxx\nampl: shell \"kestrel retrieve\"; # retrieve the job\nConnecting to: neos-server.org:3333\nWritting solution to kmodel.sol\nampl: solution kmodel.sol; # load the solution\nCPLEX 20.1.0.0: optimal solution; objective 88.2\n1 dual simplex iterations (0 in phase I)\nampl: shell \"kestrel kill XXXX xxxx\"; # to kill a job\nConnecting to: neos-server.org:3333\nJob XXXX is finished\n```\n\n### Authenticated submissions\n\nFor authenticated submissions set `neos_username` and `neos_user_password` as follows:\n```bash\nampl: option neos_username 'username';\nampl: option neos_user_password 'password';\n```\n\n### Priority\n\nJobs submitted with the priority of long can run for at most 8 hours. Jobs submitted with the priority short can run for at most 5 minutes. Results for long jobs do not stream. You can control the priority as follows:\n```bash\nampl: option kestrel_options \"solver=xxx priority=short\";\n```\nor\n```bash\nampl: option kestrel_options \"solver=xxx priority=long\";\n```\nIn this driver we set the default priority to short so that we can retrieve output from the solver.\n\n## License\n\nBSD-3\n\n***\nCopyright © 2021 AMPL Optimization inc. All rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fampl%2Fgokestrel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fampl%2Fgokestrel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fampl%2Fgokestrel/lists"}