用于clp、cbc和cgl的python接口

cylp的Python项目详细描述



mehdi towhidi(mehdi.towhidi@gerad.ca)
多米尼克奥班(dominique.orban@gerad.ca) < BR>
作者邮箱:mehdi.towhidi@gerad.ca
许可证:公共许可证1.0版 < BR>
随附程序是根据本公众条款提供的
许可("协议")。程序的任何使用、复制或分发
表示接受方接受本协议。 < BR>
1。定义 < BR>
"出资"是指: < BR>
a)对于初始贡献者,初始代码和
根据本协议分发的文件,以及 < BR>
b)对于每个后续贡献者: < BR>
i)程序更改,以及 < BR>
ii)程序添加; < BR>
程序中的这些更改和/或添加源于
由特定贡献者分发。贡献"源于"
贡献者,如果它是由贡献者自己或任何人添加到程序中的
代表出资人行事。捐款不包括
程序,其:(i)是分布在
根据他们自己的许可协议与程序结合,以及(ii)不
程序的派生作品。 < BR>
"贡献者"是指分发程序的任何个人或实体。 < BR>
"许可专利"是指可由贡献者许可的专利权
单独使用或出售其出资必然受到侵犯,或
与程序结合。 < BR>
"计划"是指根据本协议分配的出资。 < BR>
"接收者"是指根据本协议接收计划的任何人,
包括所有贡献者。 < BR>
2。权利的授予 < BR>
a)根据本协议条款,各出资人特此授予
接受非排他性的、全球范围的、免版税的版权许可
复制、准备衍生作品、公开展示、公开表演,
分发和再授权此类贡献者的贡献(如有),以及
衍生作品,源代码和目标代码形式。 < BR>
b)根据本协议条款,各出资人特此授予
接受非排他性的、全球范围的、免版税的专利许可
制造、使用、出售、要约出售、进口和以其他方式转让
此类贡献者的贡献(如果有的话),以源代码和目标代码的形式。
本专利许可证适用于出资与
如果在贡献者添加贡献时,
贡献的增加导致该组合被
许可专利。专利许可证不适用于其他组合
包括捐款。本协议未授权任何硬件。 < BR>
c)接收者理解,尽管每个贡献者都授予许可证
对于本协议规定的出资,任何
撰稿人认为该程序不侵犯专利或其他知识产权
任何其他实体的产权。各出资人不承担任何责任
任何其他实体因侵犯
知识产权或其他。作为行使
本协议项下授予的权利和许可,每位接收者在此承担
有责任获得任何其他所需的知识产权(如有)。
例如,如果需要第三方专利许可证才能允许接收者
分发程序,接收者有责任获得该许可证
在分发程序之前。 < BR>
d)各贡献者表示,据其所知,其拥有足够的
其贡献的版权,如果有的话,授予版权许可证集
在本协议中。 < BR>
3。要求 < BR>
贡献者可以选择在
拥有许可协议,前提是: < BR>
a)符合本协议的条款和条件;以及 < BR>
b)其许可协议: < BR>
i)代表所有贡献者有效地否认所有保证和
明示和默示条件,包括所有权和
非侵权,以及适销性和
适合特定用途; < BR>
ii)有效地代表所有出资人排除所有责任
损害,包括直接、间接、特殊、附带和后果性损害
损害赔偿,如利润损失; < BR>
iii)声明提供与本协议不同的任何条款
仅由该出资人而非任何其他方提供;以及 < BR>
iv)声明程序的源代码可以从
贡献者,并通知被许可方如何在
通过通常用于软件交换的介质。 < BR>
当程序以源代码形式提供时: < BR>
a)必须根据本协议提供;以及 < BR>
b)本协议的副本必须包含在程序的每个副本中。 < BR>
贡献者不得删除或更改
程序。 < BR>
如果
任何,以合理的方式允许后续接收者识别
出资人。 < BR>
4。商业分销 < BR>
软件的商业分销商可以接受
尊重最终用户、业务合作伙伴等。而这个许可证是
旨在促进程序的商业使用,贡献者
在商业产品中包含该计划时,应以某种方式
这不会对其他贡献者造成潜在的责任。因此,如果
贡献者在商业产品中包括该计划,例如
出资人("商业出资人")特此同意进行辩护和赔偿。
所有其他出资人("受偿出资人")免受任何损失、损害
以及索赔、诉讼和其他法律诉讼产生的费用(统称为"损失")。
第三方对
该商业出资人在
与商业产品中程序分布的关系
提供。本节中的义务不适用于任何索赔或损失
与任何实际或指称的知识产权侵权有关。整齐
要获得资格,受偿出资人必须:a)立即通知商业
以书面形式提交索赔,以及b)允许商业出资人
在国防和任何
相关和解谈判。受偿供款人可参与
任何此类索赔均需自行承担费用。 < BR>
例如,贡献者可能会将程序包含在商业产品中
产品x。该贡献者是商业贡献者。如果
然后,商业贡献者提出性能索赔,或提供担保
与产品x有关的性能索赔和保证如下
仅商业贡献者的责任。在本节中,
商业出资人必须对另一方的索赔进行辩护
与这些履约索赔和保证相关的出资人,以及如果法院
要求任何其他出资人支付任何损害赔偿,因此, 康伯特投注者必须赔偿这些损失。 < BR>
5。无担保 < BR>
除本协议明确规定外,本计划在
"按现状"为基础,无任何形式的保证或条件,无论是明示的还是
包括但不限于任何担保或所有权条件,
非侵权性、适销性或特定用途的适用性。每个
接收者全权负责确定使用和
分发计划并承担与执行计划相关的所有风险
本协议项下的权利,包括但不限于
程序错误、遵守适用法律、数据损坏或丢失,
程序或设备,以及操作不可用或中断。 < BR>
6。免责声明 < BR>
除非本协议另有明确规定,否则接收方和任何
贡献者应对任何直接、间接、附带的,
特殊、惩戒性或后果性损害(包括但不限于损失
利润),无论是何种原因造成的,根据任何责任理论,无论是在合同中,
以任何方式产生的严格责任或侵权行为(包括疏忽或其他)
不使用或分发程序或行使任何权利
根据本协议授予,即使已告知此类损害的可能性。 < BR>< > 7。一般 < BR>
如果本协议的任何条款在适用范围内无效或不可执行
法律,不得影响
本协议的条款,在双方未采取进一步行动的情况下,
规定应进行必要的最低限度的改革
条款有效且可执行。 < BR>
如果接受方就
适用于软件的专利(包括
诉讼),则该贡献者授予该接收者的任何专利许可
根据本协议,应在此类诉讼提出之日终止。在
另外,如果接受方对任何实体提起专利诉讼
(包括诉讼中的交叉索赔或反索赔)声称
本身(不包括程序与其他软件或硬件的组合)
侵犯该接收者的专利,则该接收者根据
第2(b)条应自提起此类诉讼之日起终止。 < BR>
本协议项下的所有接收者权利如未能终止
遵守本协议的任何重要条款或条件,并且
在意识到这一点后,不能在合理的时间内纠正此类故障
此类不合规。如果本协议项下的所有接收者权利终止,
收件人同意在下列情况下立即停止使用和分发程序
合理可行。但是,接受方在本协议项下的义务
以及接受者授予的与项目有关的任何许可证应继续有效。
生存。 < BR>
允许所有人复制和分发本协议的副本,但是
为避免不一致,本协议受版权保护,且仅限于
按以下方式修改。协议管理员保留
不时发布本协议的新版本(包括修订版)。
除协议管理员外,任何人无权修改本协议。
IBM是最初的协议管理员。IBM可能会指派服务职责
作为合适的独立实体的协议管理人。每个新版本的
协议将给出一个可区别的版本号。程序(包括
捐款)可根据协议版本分发
根据它接收。另外,在新版本之后协议的签署
发布后,贡献者可以选择分发程序(包括
稿件)。除非在章节中明确说明
2(a)和2(b)以上,接收者不接受
本协议项下任何出资人的知识产权,无论
明示、暗示、禁止反言或其他。程序中的所有权利
保留根据本协议明确授予的权利。 < BR>
本协议受纽约州法律和
美利坚合众国的知识产权法。没有派对
本协议项下的法律诉讼将持续一年以上
在诉讼原因出现后。各方放弃其在
任何由此引发的诉讼。 < BR>
说明:重要注意事项
==================
为了符合PEP8,我们决定将软件包名称从cylp重命名为cylp,
这是早该做的。
它只影响包名,一个简单的替换可以使您的程序
使用新设置。
感谢您的理解。 < BR>< BR>
什么是赛普?
==============
cyp是一个python接口,用于coin-ors线性和混合整数程序求解器
(CLP、CBC和CGL)。cyps唯一的特点是你可以用它来改变
从python中解算器的解决过程。例如,你可以
定义割生成器、分支和定界策略以及原/对偶单纯形
完全使用python透视规则。 < BR>
您可以从mps文件中读取lp或使用cyps easy modeling
设施。请在文档中查找示例
<;http://mpy.github.io/cylpdoc/>;`。 < BR>
…注: < BR>
cylp提供有限数量的
投币者偿付者。如果有什么特别的
要在python中使用的clp、cbc和cgl中的类或方法
请不要犹豫,让我们知道;我们会尽力建立联系。
此外,如果您发现错误,我们将不胜感激
如果您通知我们。联系我们在Mehdi[点]Towhidi[点]Gerad[点]ca. < BR>< BR>
谁使用cyp
============== cylp正被广泛应用于实践和研究领域。一些用户包括: < BR>
pyart,python arm雷达工具包,用于大气辐射测量
(美国能源部)。https://github.com/arm-doe/pyart
波恩大学气象研究所。
舍布鲁克大学医院(舍布鲁克大学中心医院):cylp用于护士排班。
Maisonneuve Rosemont Hospital(L'Hopital HMR):cylp用于具有首选项的医师排班。
莱海大学:cyp用于教授混合整数切割。
IBM T.J.沃森研究中心
德国萨尔大学 < BR>< BR>< BR>
安装
============ < BR>
安装cylp的最简单方法是使用二进制文件。如果不是的话
可能您总是从源代码处编译它。 < BR>
要求
----- < BR>
cyp需要numpy(www.numpy.org)和scipy(www.scipy.org)。如果希望从源代码安装cylp,还需要编译cbc。此过程的详细信息如下所示。 < BR>
二进制安装
< BR>
如果安装了setuptools埃德,你可以跑: < BR>
$easy_安装cyp < BR>
如果二进制文件可用于您的体系结构,则将安装它。否则
您将看到一个错误,告诉您指定cbc安装的位置。
这是因为easy_install正在尝试编译源代码。在这种情况下
必须编译cbc并设置和环境变量指向它
再次调用easy_install之前。详情见"安装
来自源代码部分。 < BR>< BR>< BR>
从源安装
======================== < BR>
步骤1:
安装CBC(http://www.coin-or.org/download/source/cbc/)。
可以根据
CBC版本2.8.5。请转到安装目录并运行: < BR>
$。/配置
$制造
$make安装 < BR>
步骤2:
创建一个名为coin_install_dir的环境变量,指向
安装硬币。例如:: < BR>
$export coin_install_dir=/用户/mehdi/cbc-2.8.5 < BR>
您也可以将这一行添加到~/.bash\u rc或~/.profile中
它是持久的。 < BR>
步骤3:
安装气缸。转到cylp的根目录并运行: < BR>
$python setup.py安装 < BR>
步骤4(Linux):
在linux中,您可能还需要将coin的lib目录添加到
ld_library_路径如下: < BR>
$export ld_library_path=/path/到/cbc-2.8.5/lib:$ld_library_path" < BR>
可选步骤:
如果要运行doctests(即在"doc"目录中的"make doctest")。
您还应该定义: < BR>
$export cyp_source_dir=/path/to/cyp < BR>
现在可以在python代码中使用cyp。例如:: < BR>
>>>>来自cylp.cy导入周期示例
>>>;s=循环示例()
>>s.readmps('../input/netlib/adlittle.mps')
0
>>>s.初始解算()
"最佳"
>>>圆形(s.objectivevalue,3)
225494.963 < BR>
或者直接去赛尔普跑步: < BR>
$python-m unittest发现 < BR>
运行所有气缸单元测试。 < BR>< BR>< BR>
建模示例
================== < BR>
以下是如何使用cylp建模工具建模的示例: < BR>
将numpy导入为np
从cylp.cy导入cyclpsimplex
来自cylp.py.modeling.cylpmodel import cylparray < BR>
s=循环示例() < BR>
添加变量
x=s.addvariable('x',3)
y=s.addvariable('y',2) < BR>
创建系数和边界
a=np.矩阵([[1,2,0],[1,0,1.]])
b=np.矩阵([[1,0,0],[0,0,1.]])
d=np.矩阵([[1,2.],[0,1]])
a=圆柱面([5,2.5])
b=cylparray([4.2,3])
x_u=cylparray([2,3.5]) < BR>
添加约束
s+=a*x<;=a
s+=2<;=b*x+d*y<;=b
s+=y>;=0
s+=1.1<;=x[1:3]<;=x_ < BR>
设置目标函数
c=cylparray([1.,-2.,3.])
S.目标=C*X+2*Y.和() < BR>
用原单纯形求解
s.primal()
打印s.primarvariablesolution['x'] < BR>< BR>< BR>
文档
===============
您可以访问cyp的文档: < BR>
1.*在线*:请访问http://mpy.github.io/cylpdoc/ < BR>
2.*离线*:要在存储库中安装cylp的文档,您需要
狮身人面像(http://sphinx.pocoo.org/)。您可以通过
转到cylp/doc并运行"make html"或"make latex",然后访问
cylp/doc/build下的文档。您还可以运行"make doctest"来
执行所有doctest。 < BR>< BR>
…图片::https://d2weczhvl823v0.cloudfront.net/mpy/cylp/trend.png
:alt:bitdeli徽章
:目标:https://bitdeli.com/free < BR>
…图片::https://cuulle-carlota.pagodabox.com/f8efbddd4f44bb098d20dafdd0b9e897
:alt:githalytics.com
:目标:http://githalytics.com/mpy/cyp < BR>
平台:未知 < BR>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android:在ListView上使用setOnItemClickListener   使用Netbeans 7.0连接到SQL Server的java正在挂起   java Spring3依赖项注入不适用于mule   java Flink SQL结果字段与LocalDateTime上请求的类型错误不匹配   java找不到文件的结尾   考虑到NamingStrategy,java有没有办法将字符串转换为JsonNode?   使用Netbeans/ant部署java(命令行)应用程序   java如何修复Spring引导多部分上载中的“所需请求部分不存在”   java在应用程序启动时通过引用获取映射未知目标实体属性异常   java形状旋转问题Java2d   Weblogic服务器上的java ExecuteAndWaitInterceptor问题   JavaSpringBoot:project将图像保存在错误的路径中,并且在使用IDEIntellji打开时不显示图像   类向java接口添加方法   Swing组件上的Java 7泛型   sql server如何从java获取用户名。sql。联系   java如何检查该行是否与正则表达式(regex)冲突?   java如何在spring引导安全中为计数失败登录设置验证登录为false   图像如何在Java中使PNG的白色透明?