您的位置:首页 > 其它

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

2013-10-05 23:27 267 查看
//添加变量思路
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);
}
//定义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 parametersf_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);}
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐