lpsolve初次使用

**

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/

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
在 Spring Boot 中使用 lpsolve 需要先将 lpsolve 库文件添加到项目中。可以将 lpsolve 库文件拷贝到项目的 lib 目录下,并在项目的 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>org.jblas</groupId> <artifactId>jblas</artifactId> <version>1.2.4</version> </dependency> ``` 然后,在需要使用 lpsolve 的地方,可以创建一个 LpSolve 实例,并使用 LpSolve 提供的方法来定义和解决线性规划问题。以下是一个简单的示例: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import lpsolve.*; @RestController public class LpSolveController { @GetMapping("/solve") public String solve(@RequestParam double[] c, @RequestParam double[][] A, @RequestParam double[] b) { try { int Ncol = c.length; int Nrow = A.length; LpSolve lp = LpSolve.makeLp(Nrow, Ncol); lp.setVerbose(0); // 设置目标函数 lp.setObjFn(c); // 添加约束 for (int i = 0; i < Nrow; i++) { lp.addConstraint(A[i], LpSolve.LE, b[i]); } // 求解线性规划问题 lp.setMaxim(); lp.solve(); // 输出结果 StringBuilder sb = new StringBuilder(); sb.append("Objective value: ").append(lp.getObjective()).append("\n"); double[] vars = new double[Ncol]; lp.getVariables(vars); for (int i = 0; i < Ncol; i++) { sb.append("x").append(i+1).append(": ").append(vars[i]).append("\n"); } lp.deleteLp(); return sb.toString(); } catch (LpSolveException e) { e.printStackTrace(); return "Failed to solve the linear programming problem!"; } } } ``` 在上述示例中,我们定义了一个 solve 方法,接收三个参数:目标函数的系数 c,约束条件的系数矩阵 A 和约束条件的右侧常数 b。在方法中,我们先创建了一个 LpSolve 实例,然后使用 LpSolve 提供的方法来设置目标函数和约束条件,并调用 solve 方法解决线性规划问题。最后,我们将最优解和变量值输出为字符串,并在方法中返回。 注意,在使用 LpSolve 的时候,需要处理 LpSolveException 异常。另外,LpSolve 的 API 和 lpsolve 库的 C API 类似,可以参考 lpsolve 的官方文档来了解更多细节。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值