【Java+Cplex】Java调cplex常用的求解参数设置、求解信息获取

一、求解前参数设置
1. 求解时间上限设置

        设置时间单位为秒,以下示例模型求解时间上限为1个小时。

cplex.setParam(IloCplex.DoubleParam.TimeLimit, 3600);
2.关闭求解过程展示
cplex.setOut(null);
3. 模型求解搜索策略

(1)默认自动搜索策略

        自动搜索策略会根据问题的特性自动选择合适的搜索策略CPLEX将根据问题的规模、结构和其他因素动态地选择最佳的搜索策略。这种策略通常是默认设置,因为它能够在大多数情况下提供较好的性能。

cplex.setParam(IloCplex.Param.MIP.Strategy.Search, IloCplex.MIPSearch.Auto);

         或

cplex.setParam(IloCplex.Param.MIP.Strategy.Search, 0);

(2)传统分支定界搜索策略

        传统分支定界搜索策略是一种经典的搜索方法,它按照分支定界树的方式来探索解空间。在每一步,它选择一个变量进行分支,并根据某些规则来搜索最优解。这种策略在一些问题上可能会很有效,但对于某些复杂的问题,可能会导致搜索空间过大而难以解决。

cplex.setParam(IloCplex.Param.MIP.Strategy.Search, IloCplex.MIPSearch.Traditional);

           或

cplex.setParam(IloCplex.Param.MIP.Strategy.Search, 1);

(3)动态搜索策略

        动态搜索策略是一种结合了自动搜索和传统分支定界搜索的方法。它会根据问题的特性在自动搜索和传统分支定界搜索之间进行动态切换,以找到最佳的搜索策略。这种策略可以在不同类型的问题中提供更好的性能,并且可以在解决过程中根据需要进行调整。

cplex.setParam(IloCplex.Param.MIP.Strategy.Search, IloCplex.MIPSearch.Dynamic);

        或

cplex.setParam(IloCplex.Param.MIP.Strategy.Search, 2);


4.其他

// model.setParam(IloCplex.IntParam.NodeSel, 0); // 选择节点的策略,1表示深度优先搜索,0表示最佳优先搜索
// model.setParam(IloCplex.Param.MIP.Strategy.Search, 2); //动态搜索策略
// model.setParam(IloCplex.Param.MIP.Tolerances.UpperCutoff, 1000.0); // 设置最优解的上界
// model.setParam(IloCplex.Param.MIP.Tolerances.LowerCutoff, -Double.MAX_VALUE); // 设置最优解的下界为负无穷
// model.setParam(IloCplex.Param.MIP.Tolerances.LowerCutoff, 0); // 设置最优解的下界为0

二、求解后模型相关信息的获取
1.获取模型的目标函数值
double obj = cplex.getObjValue();
2.获取决策变量的值
double value = cplex.getValue(x)
3.获取模型的gap值
double gap = cplex.getMIPRelativeGap();
4.输出模型的lp文件
String path = "C:\\Users\\12068\\Desktop\\...\\model.lp";  //保存路径
cplex.exportModel(path);

  • 23
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值