CPLEX 解决大规模计算 变量 约束 添加方法


 //添加变量思路
add_var_XX(IloModel f_model, IloNumVarArray f_var, IloRangeArray f_cons, data_input *f_data);
  //添加变量
{
    //获取环境
	IloEnv f_env = f_model.getEnv();
	//向环境中添加变量
	//IloNumVar(const IloEnv env, IloNum lb=0, IloNum ub=IloInfinity, IloNumVar::Type type=Float, const char * name=0)
	f_var.add(IloNumVar(f_env, lp, up, ILOFLOAT));
	//统计当前变量位置,采用分段数组,统计位置,个数一个意思
	num_cal(XX, current_num, start_index, m_var_num);
}
//添加约束条件思路
add_con_dtm_powerbalance(IloModel f_model, IloNumVarArray f_var, IloRangeArray f_cons, data_input *f_data);
{
	//获取环境变量
	IloEnv f_env = f_model.getEnv();
	//此处往往需要统计出变量个数,方便下一步的添加
	//定义表达式
	IloExpr f_expr1(f_env);
	//表达式的表述
	for (index_j = 0; index_j < _num; index_j++)
	{
		f_expr1 += f_var[i];//从变量中提取
	}
	//范围
	//IloRange(const IloEnv env, IloNum lhs, const IloNumExprArg expr, IloNum rhs=IloInfinity, const char * name=0)
	IloRange temp_range1(f_env, lp, f_expr1, up);
	//添加约束
	f_cons.add(temp_range1);
	//模型添加约束
	f_model.add(f_cons);
}
<pre name="code" class="cpp">//定义cplex 对象
IloCplex cplex(env);
//set_cplex_parameters(cplex, ptrdata);
//gen_callback_cuts(env, cplex, var, ptrdata, ptrluc);
//向cplex 对象中添加模型
cplex.extract(mip_model);
//cplex 调用求解函数
cplex.solve();
//获得结果
IloNumArray vals(env);
cplex.getValues(vals, var);


void set_cplex_parameters(IloCplex f_cplex, data_input *f_data)
{
	// setting parameters
	f_cplex.setParam(IloCplex::EpGap, ii);
	f_cplex.setParam(IloCplex::EpInt, ii);
	f_cplex.setParam(IloCplex::TiLim, ii);

	f_cplex.setParam(IloCplex::AggInd, 0);

	f_cplex.setParam(IloCplex::AggInd, 0);

	f_cplex.setParam(IloCplex::Threads, 1);
	f_cplex.setParam(IloCplex::MIPSearch, IloCplex::Traditional);
	
}

                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值