virtual studio + cplex 初体验 求解01背包问题

这里写自定义目录标题

环境

Virtual Studio 2017 + cplex 12.8.0.0

解决问题

初次体验,解决一下最简单的MIP问题
这个数量级用dp也是很快的,哈哈 用着玩玩

#include <ilcplex/ilocplex.h>
ILOSTLBEGIN
int main(int argc, char** argv)
{
	int val[1001], vol[1001],N,V;
	cin >> N >> V;
	for (int i = 0; i < N; i++)
		cin >> vol[i] >> val[i];
	IloEnv env;
	try {
		IloModel model(env);
		IloNumVarArray x(env,N,0,1,ILOINT);
		IloExpr obj(env);
		for (int i = 0; i < N; i++) obj += x[i] * val[i];
		model.add(IloMaximize(env,obj));
		IloExpr lim(env);
		for (int i = 0; i < N; i++) lim += x[i] * vol[i];
		model.add(lim<=V);

		IloCplex cplex(model);
		if (!cplex.solve()) {
			env.error() << "Failed to optimize MIP." << endl;
			throw(-1);
		}
		IloNumArray vals(env);
		env.out() << "Solution status = " << cplex.getStatus() << endl;
		env.out() << "Solution value = " << cplex.getObjValue() << endl;
		cplex.getValues(vals, x);
		env.out() << "x = " << vals << endl;
	}
	catch (IloException& e) {
		cerr << "Concert exception caught: " << e << endl;
	}
	catch (...) {
		cerr << "Unknown exception caught" << endl;
	}
	env.end();
	return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值