cplex求解整数规划示例-按行添加

使用java+cplex实现对整数规划问题进行求解,使用or-tools的解决方法可以查看这篇文章【or-tools求解整数规划】

问题介绍

在这里插入图片描述

数据定义

//    数据参数定义
class Data{
    //        目标系数
    double[] objectiveCoefficient={7, 8, 2, 9, 6};
    //        约束系数
    double[][] constraintCoefficient={{5, 7, 9, 2, 1}, {18, 4, -9, 10, 12}, {4, 7, 3, 8, 5}, {5, 13, 16, 3, -7}};
    //        约束值
    double[] constraintValue={250, 285, 211, 315};
    //        变量数量
    int variableNumber=5;
    //        约束数量
    int constrainNumber=4;
}

问题建模

//使用cplex求解整数规划
public class IntegerProgrammingDemo {
//    定义数据
    Data data;
    public IntegerProgrammingDemo(Data data){
        this.data=data;
    }
//    定义cplex内部对象
    IloCplex model;
//    定义变量
    public IloNumVar[] x;

//    求解函数
    public void solve() throws IloException{
        if(model.solve()==false){
//            模型不可解
            System.out.println("模型不可解");
            return;
        }
        else{
            System.out.println("目标值:"+model.getObjValue());
            for(int i=0;i<data.variableNumber;i++){
                System.out.println("变量值x["+(i+1)+"]:"+model.getValue(x[i]));
            }
        }
    }
//    根据数学模型建立求解模型
    public void BuildModel() throws IloException{
//        model
        model = new IloCplex();
        model.setOut(null);
//        variables
        x = new IloNumVar[data.variableNumber];
//        定义cplex变量x的数据类型及取值范围
        for(int i=0;i<data.variableNumber;i++){
            x[i]=model.numVar(0,1e15, IloNumVarType.Int,"x["+i+"]");
        }
//        设置目标函数
        IloNumExpr  obj = model.numExpr();
        for(int i=0;i<data.variableNumber;i++){
            obj=model.sum(obj,model.prod(data.objectiveCoefficient[i],x[i]));
        }
        model.addMaximize(obj);
//        添加约束
        for(int k=0;k<data.constrainNumber;k++){
            IloNumExpr expr = model.numExpr();
            for(int i=0;i<data.variableNumber;i++){
                expr=model.sum(expr,model.prod(data.constraintCoefficient[k][i],x[i]));
            }
            model.addLe(expr,data.constraintValue[k]);
        }
    }

问题求解

public static void main(String[] args)throws IloException{
        Data data =new Data();
        IntegerProgrammingDemo lp=new IntegerProgrammingDemo(data);
        lp.BuildModel();
        lp.solve();

    }

求解结果

在这里插入图片描述

========================================
今天到此为止,后续记录其他cplex技术的学习过程。
以上学习笔记,如有侵犯,请立即联系并删除!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南音小榭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值