lpsolve常见问题FRQ

Lpsolve常见问题集
译者:李松
Email:lisong20020715@yahoo
目录
1.前言 (2)
2.在哪里能到lp-solve最新的源码? (2)
3.我可以在商业用途的代码中使用lp-solve吗? (2)
4.能否解释一下GNU 较宽松公共许可证(LGPL)的确切含义?我看不明白。 (2)
5.我需要花多少钱才能使用lp-solve? (3)
6.我在使用lp-solve的时候,如何声明其版权信息? (3)
7.对于变量,其缺省(默认)的上下限是多少? (3)
8.变量的下限能否是负数? (3)
9.能否将变量的下限设为负无穷大? (3)
10.我在调用API函数solve()的时候,在屏幕上会打印出很多信息。我能否屏蔽掉这些信息? (4)
11.Lp-solve不能求解我的模型或求解时间过长。怎么办? (4)
12.Lp-solve能求解非线性公式吗? (4)
13.Lp-solve将输出信息打印在屏幕上。能不能也存到文件中? (4)
14.我有一个限制是x < 2,但Lp-solve得到的解中有 x = 2,这是怎么回事? (4)
15.在求解我的模型时,Lp-solve出现了堆栈溢出/core dump/保护错误。请问怎么回事? (4)
16.在求解我的模型时,版本4比版本3还要慢。我该怎么办? (5)
17.在使用API接口创建模型时,花费了很长时间。尤其是add_constraint,add_constraintex,str_add_constraint这几个函数似乎很慢。怎么才能使它快一点? (5)
18.Lp-solve能不能输出“单纯形表格”? (5)
19.Lp-solve能处理的行/列的最大数目是多少? (5)
20.我所使用的编程语言不在Lp-solve的支持列表之内,或者没有相应的例子。那么我能在里面调用lp-solve吗? (5)
21.那个Windows例子不能用。在运行时会报错。有些动态库不到。 (5)
22.Lp_solve的LP格式中支持注释吗? (6)
1.前言
本人译自lpsolve参考手册( lp-solve reference ),供参考。
最新的源码??
2.在哪里能到lp-solve最新的源码
我们有一个Yahoo用户(groups.yahoo/group/lp_solve/),里面含有lp-solve社区的大量活动。你需要注册才能访问,但注册是免费的。在这里,你会到最新的源码,示例和手册。
3.我可以在商业用途的代码中使用lp-solve吗?
可以,但是你需要遵守GNU 较宽松公共许可证(LESSER GENERAL PUBLIC LICENSE),详见文件。
我看不明白。。
的确切含义??我看不明白
较宽松公共许可证((LGPL)的确切含义
4.能否解释一下GNU 较宽松公共许可证
LGPL的确对允许什么,不允许什么,什么是商业说得很难懂。通常,我们使用如下的表格来帮助我们判断LGPL是否适用于某个应用场合(到目前为止,尚未有人提出异议):
是否以编译库的方式来使用lp-solve?
LGPL决策表
是不是
是B1 B2
是否修改lp-solve的源代码?
不是  A B3
A:你的工作使用了lp-solve库。
B:你的工作是基于lp-solve库。
情况A:对lp-solved的代码没有改动,只是使用了根据原发布包中的代码生成的库,这种情况下,你只需在显著位置声明版权信息,并标明lp-solve源码的链接地址即可。你自己的源代码不必公开,你可以按照自己的意愿保护其版权。
情况B1:你所修改过的lp-solve库的全部源代码必须公开,并适用LGPL或GPL许可。你自己的源代码不必公开,你可以按照自己的意愿保护其版权。
情况B2:你所修改过的lp-solve库的全部源代码以及你自己的源代码都必须公开,并适用LGPL或GPL许可。
情况B3:既然lp-solve的源代码没有被修改,只需在显著位置声明版权信息,并标明lp-solve源码的链接地址;同时,你自己的源代码都必须公开,并适用LGPL或GPL许可。
你可以据此进行判断。如果你的应用情况属于B2或B3,但是你(或者你所在的公司)不愿意遵守上述规定,那么按照LGPL的要求,你需要和lp-solve的版权所有人进行协商,达成某些授权使用(付费)的协议。
5.我需要花多少钱才能使用lp-solve?
在LGPL许可条件下,lp-solve是完全免费的。
如果在LGPL以外的情况下使用lp-solve,需要和lp-solve的版权所有人联系并取得授权。
的时候,,如何声明其版权信息
如何声明其版权信息??
6.我在使用lp-solve的时候
lp-solve的引用声明:
----------------------
Description    : Open source (Mixed-Integer) Linear Programming system
Language        : Multi-platform, pure ANSI C / POSIX source code, Lex/Yacc based parsing
Official name  : lp_solve (alternatively lpsolve)
Release data    : Version 5.1.0.0 dated 1 May 2004
Co-developers  : Michel Berkelaar, Kjell Eikland, Peter Notebaert
Licence terms  : GNU LGPL (Lesser General Public Licence)
Citation policy : General references as per LGPL
Module specific references as specified therein
上述信息也可以在文件中到。
默认))的上下限是多少
的上下限是多少??
对于变量,,其缺省
7.对于变量
其缺省((默认
和所有其它的线性规划算法(至少对于单纯形法的算法这样)一样,变量的缺省下限为0,上限为无穷大。
8.变量的下限能否是负数
变量的下限能否是负数??
当然可以。
能否将变量的下限设为负无穷大??
9.能否将变量的下限设为负无穷大
可以。
值得注意的是,如果此时这个变量的上限为正数或无穷大,则lp-solve会自动将这个变量分割为两个变量,这样,模型会变大,花费的运算时间也较长。因此,最好只在必要的时候才进行这样的设置。
10.我在调用API函数solve()的时候
我能否屏蔽掉这些信息??
在屏幕上会打印出很多信息。。我能否屏蔽掉这些信息
的时候,,在屏幕上会打印出很多信息
请使用API函数set_verbose。默认值是NORMAL(4)。如果改为IMPORTANT(3),很多信息就会被屏蔽掉。
不能求解我的模型或求解时间过长。。怎么办
怎么办??
11.Lp-solve不能求解我的模型或求解时间过长
Lp-solve有很多选项,请考虑以下选项,看是否有所改善:
(1) 使用LUSOL bfp进行分解。这将会显著地提高速度,改进算法的数值稳定性。在后续的版本中,bfp可能会成为默认选项。
(2) 使用scaling。这将会显著地改进算法的数值稳定性,可能也会提高速度。
(3) 使用预处理presolve。Presolve能尽可能的消掉变量和限制,这样会使得模型变小,因此求解时间缩短。但是,presolve本身也会费一些时间。因此,总体时间是否会缩短,往往随模型的不同而不同。
(4) 如果模型中含有整数变量,要注意一下分支的选项和允许误差。具体的说,有以下函数:set_mip_gap, set_break_at_first, set_break_at_value, set_bb_floorfirst, set_bb_depthlimit, set_solutionlimit, set_bb_rule
能求解非线性公式吗??
12.Lp-solve能求解非线性公式吗
不能,lp-solve只能处理线性限制。但是,它支持整数和半连续变量。一些非线性的模型可以先转换成线性模型,再用lp-solve求解。
能不能也存到文件中??
将输出信息打印在屏幕上。。能不能也存到文件中
13.Lp-solve将输出信息打印在屏幕上
可以,你可以使用重定向功能。在文件名前使用重定向符“〉”
比如:  lp_solve input.lp &
这是怎么回事??
14.我有一个限制是x < 2,但Lp-solve得到的解中有 x = 2,这是怎么回事
< 和 <= 是一样的,
同样,> 和 >= 也是一样的。这样更合乎情理。从数学上来说,1.9999999999999999999999999999是比2小,但是,和2有实质性的差别吗?因为在运算中,总是存在舍入误差的…… 如果变量是整数,你可以将限制写成 x <= 1
请问怎么回事??
保护错误。。请问怎么回事
15.在求解我的模型时
在求解我的模型时,,Lp-solve出现了堆栈溢出/core dump/保护错误
如果你的模型中含有整数/0,1变量/半连续/SOS变量,那么你可以换用版本5来解决这一问题。在版本4中,在实现分支定界算法时,将分支放在了栈上,如果模型比较复杂,可能会导致栈溢出。在版本5中,分支信息不再存放在栈中,也就不会再发生这样的错误了。
16.在求解我的模型时在求解我的模型时,,版本4比版本3还要慢还要慢。。我该怎么办我该怎么办??
有些模型在版本4中会更慢一些。版本5做了较大的增强,更快,更稳定。版本4会计算敏感度信息,而先前的版本都没有,因此这会增加一些运算时间。在版本5中,只有用户要求计算敏感度时才会计算,因此又变得快起来了。
17.在使用API 接口创建模型时接口创建模型时,,花费了很长时间花费了很长时间。。尤其是add_constraint ,add_constraintex ,str_add_constraint 这几个函数似乎很慢个函数似乎很慢。。怎么才能使它快一点怎么才能使它快一点??
版本5中有一个新函数set_add_rowmode ,能够使得add_constraint 和str_add_constraint 更加快。
如果模型是逐列逐列地创建的,建议你使用add_columnex ,不要使用add_column 。因为add_column
ex 可以只提供那些非零值,这对于稀疏矩阵(有很多0值的矩阵)特别有用。
如果模型是逐行逐行地创建的,建议你使用add_constraintex ,不要使用add_constraint 。因为add_constraintex 可以只提供那些非零值,这对于稀疏矩阵(有很多0值的矩阵)特别有用。
18.Lp-solve 能不能输出能不能输出““单纯形表格单纯形表格””?
版本5中有一个新函数print_tableau ,能够输出这一信息。
19.Lp-solve 能处理的行/列的最大数目是多少列的最大数目是多少??
没有限制。只受物理内存的限制。
20.我所使用的编程语言不在Lp-solve 的支持列表之内的支持列表之内,,或者没有相应的例子或者没有相应的例子。。那么我能在里面调用lp-solve 吗?
只要该编程语言允许调用C 动态库的函数就行。
21.那个Windows 例子不能用例子不能用。。在运行时会报错在运行时会报错。。有些动态库不到有些动态库不到。。
这个例子会调用包含有lp-solve 函数的动态库。这个动态库叫做lpsolve*.dll ,必须放在应用程序所在的目录或者系统路径所指定的某一个文件夹下。
这个动态库可以在windows 二进制发布包中到。

本文发布于:2024-09-22 01:31:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/486137.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   使用   变量   信息   求解   不能   时间   版本
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议