环境的搭建在上一篇博文中已经详细描述。
使用Java调用lpsolve求解混合线性最优化问题,由于lpsolve的说明文档模糊,仅提供了一个Demo说明如何调用,以及API文档,并且API文档说明非常简陋!固下面记录下使用 的具体步骤:
创建LpSolve对象
添加目标函数
添加不等式约束
添加等式约束
设置参数是否为整数(默认为实数)
设置参数的上限值
(可选)打印具体的矩阵
进行求解
提取出最优结果
提取出最优结果对应的参数值
下面是一个我编写的一个比较通用的类:
public class Optimator {
private static LpSolve problem;
/**
* 求解整数规划问题
* @param goal目标函数矩阵,由于LpSolve读取数组时从下标1开始读取,数据需从下标1开始填充,0-1的放前面,有上限的放后面
* @param stIeMatrix不等式约束方程矩阵,由于LpSolve读取数组时从下标1开始读取,内层数据需从下标1开始填充
* @param stEqMatrix等式约束方程矩阵,由于LpSolve读取数组时从下标1开始读取,内层数据需从下标1开始填充
* @param stIeRest不等式约束条件矩阵,每次传入的是单个数字,不需要从1开始填充
* @param stEqRest等式约束条件矩阵,每次传入的是单个数字,不需要从1开始填充