Cplex C++配置以及一个例程

Cplex C++配置以及一个例程
Why Cplex
环境配置
如何配置
error 2760
小例程
问题描述:求无权无向图的最小顶点覆盖
程序函数
其他参考资料
Why Cplex
论文需要使用线性规划,导师推荐使用Cplex。学习掌握未来使用场景还是很多的。

环境配置
编译器我选的是vs2017,使用的是Cplex C++ 12.6的api()。

如何配置
参考
导入#include 看是否可以编译。
宏命令ILOSTLBEGIN,可以用来调用C++的STL。
error 2760
描述:error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
解决方法:配置属性 > C/C++ > 语言 > 符合模式改成否
小例程
问题描述:求无权无向图的最小顶点覆盖
Cplex C++配置以及一个例程_第1张图片
程序函数

在这里插入代码片void    VertexCoverLP() {
	IloEnv          env;//定义环境
	IloModel        model(env);//定义模型

	IloIntVar       Ud(env, 0, SIZE);//定义Ud的范围,我这里整形运算
	IloIntVarArray  a(env, SIZE, 0, 1);//定义变量a[1..n],范围[0,1]为整数
	IloRangeArray   constraints(env, EdgeNum, 1, 2);//添加边约束,范围为[1,2]

	model.add(constraints);//添加约束

	IloExpr expr=Ud;//IloExpr 一定要初始化
	for (int i = 0; i < SIZE; i++) {
		expr += a[i];
	}
	model.add(IloMinimize(env, expr));//添加最小约束

	for (int i = 0; i < EdgeSIZE; i++) {//添加边约束
		IloExpr expr = a[edges[i].head] + a[edges[i].tail];
		constraints[i].setExpr(expr);
	}

	IloCplex Solver(model);//定义解题器
	Solver.setOut(env.getNullStream());//不输出求解日志
	Solver.solve();

	for (int i = 0; i < SIZE; i++) {
		if (Solver.getValue(a[i]) == 1) vertices[i].state = 0;
		else  vertices[i].state = 1;
	}
	env.end();
}


其他参考资料
[1]C++调用Cplex例子(程序基本来源于getting started with Cplex)

你可能感兴趣的:(Cplex C++配置以及一个例程)