%global _empty_manifest_terminate_build 0 Name: python-swiglpk Version: 5.0.8 Release: 1 Summary: swiglpk - Simple swig bindings for the GNU Linear Programming Kit License: GPL v3 URL: https://github.com/biosustain/swiglpk Source0: https://mirrors.nju.edu.cn/pypi/web/packages/1e/c5/19eb970b1ccbc048e76960cb608726b52dd4826eabebb335333a458154c9/swiglpk-5.0.8.tar.gz %description *Plain python bindings for the GNU Linear Programming Kit (GLPK)* |PyPI| |License| |Build Status| Why? ~~~~ *swiglpk* is not a high-level wrapper for GLPK (take a look at `optlang `__ if you are interested in a python-based mathematical programming language). It just provides plain vanilla `swig `__ bindings to the underlying C library. In constrast to other GLPK wrappers for python (e.g. `PyGLPK `__, `Python-GLPK `__, `ctypes-glpk `__, `ecyglpki `__ etc.) it is fairly version agnostic: it will try to guess the location of the glpk.h header file (using ``which glpsol``) and then compile the extension for your particular GLPK installation. Furthermore, swiglpk provides binary wheels for all major platforms, which are always up-to-date with the most recent GLPK version (swiglpk versions follow GLPK versioning in the major and minor version digits to emphasize that). Please show us some love by staring this repo if you find swiglpk useful! Installation ~~~~~~~~~~~~ pip install swiglpk That's it. swiglpk comes with binary wheels for Windows, Mac, and Linux. No installation of third-party dependencies necessary. Example ~~~~~~~ Running the following (slightly adapted) example from the `GLPK manual `__ ... from swiglpk import * ia = intArray(1+1000); ja = intArray(1+1000); ar = doubleArray(1+1000); lp = glp_create_prob(); glp_set_prob_name(lp, "sample"); glp_set_obj_dir(lp, GLP_MAX); glp_add_rows(lp, 3); glp_set_row_name(lp, 1, "p"); glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0); glp_set_row_name(lp, 2, "q"); glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0); glp_set_row_name(lp, 3, "r"); glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0); glp_add_cols(lp, 3); glp_set_col_name(lp, 1, "x1"); glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 1, 10.0); glp_set_col_name(lp, 2, "x2"); glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 2, 6.0); glp_set_col_name(lp, 3, "x3"); glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 3, 4.0); ia[1] = 1; ja[1] = 1; ar[1] = 1.0; # a[1,1] = 1 ia[2] = 1; ja[2] = 2; ar[2] = 1.0; # a[1,2] = 1 ia[3] = 1; ja[3] = 3; ar[3] = 1.0; # a[1,3] = 1 ia[4] = 2; ja[4] = 1; ar[4] = 10.0; # a[2,1] = 10 ia[5] = 3; ja[5] = 1; ar[5] = 2.0; # a[3,1] = 2 ia[6] = 2; ja[6] = 2; ar[6] = 4.0; # a[2,2] = 4 ia[7] = 3; ja[7] = 2; ar[7] = 2.0; # a[3,2] = 2 ia[8] = 2; ja[8] = 3; ar[8] = 5.0; # a[2,3] = 5 ia[9] = 3; ja[9] = 3; ar[9] = 6.0; # a[3,3] = 6 glp_load_matrix(lp, 9, ia, ja, ar); glp_simplex(lp, None); Z = glp_get_obj_val(lp); x1 = glp_get_col_prim(lp, 1); x2 = glp_get_col_prim(lp, 2); x3 = glp_get_col_prim(lp, 3); print("\nZ = %g; x1 = %g; x2 = %g; x3 = %g\n" % (Z, x1, x2, x3)) glp_delete_prob(lp); examples/example.py): GLPK Simplex Optimizer, v4.52 3 rows, 3 columns, 9 non-zeros * 0: obj = 0.000000000e+00 infeas = 0.000e+00 (0) * 2: obj = 7.333333333e+02 infeas = 0.000e+00 (0) OPTIMAL LP SOLUTION FOUND Z = 733.333; x1 = 33.3333; x2 = 66.6667; x3 = 0 Pretty ugly right? Consider using `optlang `__ for formulating and solving your optimization problems. Documentation ~~~~~~~~~~~~~ You can find documentation on GLPK's C API `here `__ Development ~~~~~~~~~~~ You still want to install it from source? Then you'll need to install the following dependencies first. - GLPK - swig If you're on OS X, swig and GLPK can easily be installed with `homebrew `__. brew install swig glpk If you're using ubuntu linux, you can install swig and GLPK using ``apt-get``. apt-get install glpk-utils libglpk-dev swig If you're on Windows, you are on your own (checkout the `appveyor.yml `_ config file for directions). Then clone the repo and run the following. python setup.py install %package -n python3-swiglpk Summary: swiglpk - Simple swig bindings for the GNU Linear Programming Kit Provides: python-swiglpk BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip BuildRequires: python3-cffi BuildRequires: gcc BuildRequires: gdb %description -n python3-swiglpk *Plain python bindings for the GNU Linear Programming Kit (GLPK)* |PyPI| |License| |Build Status| Why? ~~~~ *swiglpk* is not a high-level wrapper for GLPK (take a look at `optlang `__ if you are interested in a python-based mathematical programming language). It just provides plain vanilla `swig `__ bindings to the underlying C library. In constrast to other GLPK wrappers for python (e.g. `PyGLPK `__, `Python-GLPK `__, `ctypes-glpk `__, `ecyglpki `__ etc.) it is fairly version agnostic: it will try to guess the location of the glpk.h header file (using ``which glpsol``) and then compile the extension for your particular GLPK installation. Furthermore, swiglpk provides binary wheels for all major platforms, which are always up-to-date with the most recent GLPK version (swiglpk versions follow GLPK versioning in the major and minor version digits to emphasize that). Please show us some love by staring this repo if you find swiglpk useful! Installation ~~~~~~~~~~~~ pip install swiglpk That's it. swiglpk comes with binary wheels for Windows, Mac, and Linux. No installation of third-party dependencies necessary. Example ~~~~~~~ Running the following (slightly adapted) example from the `GLPK manual `__ ... from swiglpk import * ia = intArray(1+1000); ja = intArray(1+1000); ar = doubleArray(1+1000); lp = glp_create_prob(); glp_set_prob_name(lp, "sample"); glp_set_obj_dir(lp, GLP_MAX); glp_add_rows(lp, 3); glp_set_row_name(lp, 1, "p"); glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0); glp_set_row_name(lp, 2, "q"); glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0); glp_set_row_name(lp, 3, "r"); glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0); glp_add_cols(lp, 3); glp_set_col_name(lp, 1, "x1"); glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 1, 10.0); glp_set_col_name(lp, 2, "x2"); glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 2, 6.0); glp_set_col_name(lp, 3, "x3"); glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 3, 4.0); ia[1] = 1; ja[1] = 1; ar[1] = 1.0; # a[1,1] = 1 ia[2] = 1; ja[2] = 2; ar[2] = 1.0; # a[1,2] = 1 ia[3] = 1; ja[3] = 3; ar[3] = 1.0; # a[1,3] = 1 ia[4] = 2; ja[4] = 1; ar[4] = 10.0; # a[2,1] = 10 ia[5] = 3; ja[5] = 1; ar[5] = 2.0; # a[3,1] = 2 ia[6] = 2; ja[6] = 2; ar[6] = 4.0; # a[2,2] = 4 ia[7] = 3; ja[7] = 2; ar[7] = 2.0; # a[3,2] = 2 ia[8] = 2; ja[8] = 3; ar[8] = 5.0; # a[2,3] = 5 ia[9] = 3; ja[9] = 3; ar[9] = 6.0; # a[3,3] = 6 glp_load_matrix(lp, 9, ia, ja, ar); glp_simplex(lp, None); Z = glp_get_obj_val(lp); x1 = glp_get_col_prim(lp, 1); x2 = glp_get_col_prim(lp, 2); x3 = glp_get_col_prim(lp, 3); print("\nZ = %g; x1 = %g; x2 = %g; x3 = %g\n" % (Z, x1, x2, x3)) glp_delete_prob(lp); examples/example.py): GLPK Simplex Optimizer, v4.52 3 rows, 3 columns, 9 non-zeros * 0: obj = 0.000000000e+00 infeas = 0.000e+00 (0) * 2: obj = 7.333333333e+02 infeas = 0.000e+00 (0) OPTIMAL LP SOLUTION FOUND Z = 733.333; x1 = 33.3333; x2 = 66.6667; x3 = 0 Pretty ugly right? Consider using `optlang `__ for formulating and solving your optimization problems. Documentation ~~~~~~~~~~~~~ You can find documentation on GLPK's C API `here `__ Development ~~~~~~~~~~~ You still want to install it from source? Then you'll need to install the following dependencies first. - GLPK - swig If you're on OS X, swig and GLPK can easily be installed with `homebrew `__. brew install swig glpk If you're using ubuntu linux, you can install swig and GLPK using ``apt-get``. apt-get install glpk-utils libglpk-dev swig If you're on Windows, you are on your own (checkout the `appveyor.yml `_ config file for directions). Then clone the repo and run the following. python setup.py install %package help Summary: Development documents and examples for swiglpk Provides: python3-swiglpk-doc %description help *Plain python bindings for the GNU Linear Programming Kit (GLPK)* |PyPI| |License| |Build Status| Why? ~~~~ *swiglpk* is not a high-level wrapper for GLPK (take a look at `optlang `__ if you are interested in a python-based mathematical programming language). It just provides plain vanilla `swig `__ bindings to the underlying C library. In constrast to other GLPK wrappers for python (e.g. `PyGLPK `__, `Python-GLPK `__, `ctypes-glpk `__, `ecyglpki `__ etc.) it is fairly version agnostic: it will try to guess the location of the glpk.h header file (using ``which glpsol``) and then compile the extension for your particular GLPK installation. Furthermore, swiglpk provides binary wheels for all major platforms, which are always up-to-date with the most recent GLPK version (swiglpk versions follow GLPK versioning in the major and minor version digits to emphasize that). Please show us some love by staring this repo if you find swiglpk useful! Installation ~~~~~~~~~~~~ pip install swiglpk That's it. swiglpk comes with binary wheels for Windows, Mac, and Linux. No installation of third-party dependencies necessary. Example ~~~~~~~ Running the following (slightly adapted) example from the `GLPK manual `__ ... from swiglpk import * ia = intArray(1+1000); ja = intArray(1+1000); ar = doubleArray(1+1000); lp = glp_create_prob(); glp_set_prob_name(lp, "sample"); glp_set_obj_dir(lp, GLP_MAX); glp_add_rows(lp, 3); glp_set_row_name(lp, 1, "p"); glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0); glp_set_row_name(lp, 2, "q"); glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0); glp_set_row_name(lp, 3, "r"); glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0); glp_add_cols(lp, 3); glp_set_col_name(lp, 1, "x1"); glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 1, 10.0); glp_set_col_name(lp, 2, "x2"); glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 2, 6.0); glp_set_col_name(lp, 3, "x3"); glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 3, 4.0); ia[1] = 1; ja[1] = 1; ar[1] = 1.0; # a[1,1] = 1 ia[2] = 1; ja[2] = 2; ar[2] = 1.0; # a[1,2] = 1 ia[3] = 1; ja[3] = 3; ar[3] = 1.0; # a[1,3] = 1 ia[4] = 2; ja[4] = 1; ar[4] = 10.0; # a[2,1] = 10 ia[5] = 3; ja[5] = 1; ar[5] = 2.0; # a[3,1] = 2 ia[6] = 2; ja[6] = 2; ar[6] = 4.0; # a[2,2] = 4 ia[7] = 3; ja[7] = 2; ar[7] = 2.0; # a[3,2] = 2 ia[8] = 2; ja[8] = 3; ar[8] = 5.0; # a[2,3] = 5 ia[9] = 3; ja[9] = 3; ar[9] = 6.0; # a[3,3] = 6 glp_load_matrix(lp, 9, ia, ja, ar); glp_simplex(lp, None); Z = glp_get_obj_val(lp); x1 = glp_get_col_prim(lp, 1); x2 = glp_get_col_prim(lp, 2); x3 = glp_get_col_prim(lp, 3); print("\nZ = %g; x1 = %g; x2 = %g; x3 = %g\n" % (Z, x1, x2, x3)) glp_delete_prob(lp); examples/example.py): GLPK Simplex Optimizer, v4.52 3 rows, 3 columns, 9 non-zeros * 0: obj = 0.000000000e+00 infeas = 0.000e+00 (0) * 2: obj = 7.333333333e+02 infeas = 0.000e+00 (0) OPTIMAL LP SOLUTION FOUND Z = 733.333; x1 = 33.3333; x2 = 66.6667; x3 = 0 Pretty ugly right? Consider using `optlang `__ for formulating and solving your optimization problems. Documentation ~~~~~~~~~~~~~ You can find documentation on GLPK's C API `here `__ Development ~~~~~~~~~~~ You still want to install it from source? Then you'll need to install the following dependencies first. - GLPK - swig If you're on OS X, swig and GLPK can easily be installed with `homebrew `__. brew install swig glpk If you're using ubuntu linux, you can install swig and GLPK using ``apt-get``. apt-get install glpk-utils libglpk-dev swig If you're on Windows, you are on your own (checkout the `appveyor.yml `_ config file for directions). Then clone the repo and run the following. python setup.py install %prep %autosetup -n swiglpk-5.0.8 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-swiglpk -f filelist.lst %dir %{python3_sitearch}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Apr 25 2023 Python_Bot - 5.0.8-1 - Package Spec generated