**
0.lpsolve安装讲解
**
下载地址https://sourceforge.net/projects/lpsolve/files/lpsolve/版本随便跳,我下的是lp_solve_5.5.2.0_dev_win32版本。解压出文件里面有
vs2010建个工程,然后项目->属性->VC++目录的包含目录和库目录填写文件所在位置。
然后在程序里添加三个静态库(我也不知道哪个没有用,反正都添加了)
#pragma comment(lib, "liblpsolve55d")
#pragma comment(lib, "liblpsolve55")
#pragma comment(lib, "lpsolve55")
**
1. lpsolve实例
**
一个例子
max 4x1 + 2x2 + x3
2x1 + x2 <= 1
x1 + 2x3 <= 2
x1 + x2 + x3 = 1
0 <= x1 <= 1
0 <= x2 <= 1
0 <= x3 <= 2
代码
#include <stdio.h>
#include "lp_lib.h"
#pragma comment(lib, "liblpsolve55d")
#pragma comment(lib, "liblpsolve55")
#pragma comment(lib, "lpsolve55")
int main()
{
lprec *lp;
REAL row[1 + 3]; /* must be 1 more then number of columns ! */
lp = make_lp(0,3);
if(lp == NULL){
fprintf(stderr, "Unable to create new LP model\n");
return(1);
}
set_add_rowmode(lp, TRUE);//相当于设置开关,打开
set_maxim(lp);//求解最大
row[1] = 4;
row[2] = 2;
row[3] = 1;
set_obj_fn(lp, row); /* construct the obj: 4 x1 + 2 x2 + x3 */
row[1] = 2;
row[2] = 1;
row[3] = 0;
add_constraint(lp, row, LE, 1);//约束1
row[1] = 1;
row[2] = 0;
row[3] = 2;
add_constraint(lp, row, LE, 2);//约束2
row[1] = 1;
row[2] = 1;
row[3] = 1;
add_constraint(lp, row, EQ, 1);//约束3
set_bounds(lp, 1, 0.0, 1.0);//设置上下限
set_bounds(lp, 2, 0.0, 1.0);//默认下限是0,其实可以用set_upbo
set_bounds(lp, 3, 0.0, 2.0);
set_add_rowmode(lp, FALSE);//开关关闭
solve(lp);//求解
print_solution(lp, 1);
delete_lp(lp);
return 0;
}
2 中间可能出的错误和解决方案
链接的时候,出现了这个错误
然后百度了一番,解决如下:
项目->属性->C/C++->代码生成->运行库。然后从多线程调试DLL(/MDd)切换成多线程调试(/MTd)
然后编译链接运行OK
x1 = 0.5, x2 = 0, x3 = 0.5;
第一次使用,很多细节也没了解,还要继续学习!
api:http://lpsolve.sourceforge.net/5.5/