CPLEX-求解⼀个简单的模型
接下来我们⽤Java语⾔调⽤Cplex来求解下⾯的⼀个简单模型:
⾸先新建项⽬,将包导⼊项⽬中且配置好环境。
;
eption;
Var;
ex;
publicclasstest01{
publicstaticvoidmain(String[]args){
try{
IloCplexcplex=newIloCplex();//创建⼀个模型
doublelb[]={0.0,0.0,0.0};//三个变量的下界
doubleub[]={40.0,_VALUE,_VALUE};//三个变量的上界
IloNumVarx[]=Array(3,lb,ub);//三个变量
doubleobjvals[]={1.0,2.0,3.0};//⽬标函数的系数
imize(od(x,objvals));//⽬标函数
doublecoeff1[]={-1.0,1.0,1.0};//约束1的系数
doublecoeff2[]={1.0,-3.0,1.0};//约束2的系数
(od(x,coeff1),20.0);//约束1
(od(x,coeff2),30.0);//约束2
if(()){
().println("Solutionstatus="+tus());//解的状态
().println("Solutionvalue="+Value());//解的值
doubleval[]=ues(x);
for(inti=0;i<;i++){
().println("x"+(i+1)+"="+val[i]);//打印三个变量的值
}
}
();
}catch(IloExceptione){
n("Concertexceptioncaught:"+e);
}
}
}
运⾏结果:
注:
(1)cplex的java程序整体框架⼀般如下:
try{
}catch(IloExceptione){
n("Concertexceptioncaught:"+e);
}
(2)IloCplex类创建⼀个cplex模型,IloNumVar定义求解变量,IloNumExpr定义中间变量,od(x,y)不仅求xy,还求
它们的累加和,(a,b)表⽰a⼩于等于b,(a,b)表⽰a⼤于等于b,(a,b)表⽰a=b,
(3)()求解模型,()结束求解,().println()打印
(4)cplex的javaapi不⽀持加减乘除符号,加必须⽤sum⽅法,减必须⽤diff⽅法,乘除必须⽤prod⽅法
本文发布于:2022-12-27 12:54:41,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/40433.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |