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

来源:互联网 发布:漫画制作软件 编辑:程序博客网 时间:2024/06/03 09:16
 //添加变量思路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);}