| 查看: 1368 | 回复: 0 | ||
ysp24铁杆木虫 (小有名气)
|
[求助]
C# 调用CPlex 关于冲突检测RefineConflict的问题?急死了!
|
|
如题,在网上查到的代码如下(用户手册中内容与此差不多): if (cplex.RefineConflict(constraints,prefs)) { Cplex.ConflictStatus[] conflicts = cplex.GetConflict(constraints); for (int i = 0; i < conflicts.Length;i++ ) { if (conflicts==Cplex.ConflictStatus.Member) System.Console.WriteLine(" Proved : " + constraints); else if (conflicts==Cplex.ConflictStatus.PossibleMember) System.Console.WriteLine(" Possible : " + constraints); } } 上述代码中的constraints,prefs怎么定义,以及其值是什么,我没弄明白。参考上述代码,我自己写的冲突检测代码一直有误,输出结果全部是Possible的类型。具体代码如下,请大家帮忙: INumVar[][] var = new INumVar[1][];//用于求解后调用或查看结果 IRange[][] rng = new IRange[1][];//用于求解后调用或查看松弛程度 private string[] xt; INumVar[] x; 建立优化目标: xt = new string[i_Dvar]; var[0] = new INumVar[i_Dvar]; for (int i = 0; i < xt.Length; i++) { xt = NumVarType.Float.ToString(); } x = cplex.NumVarArray(i_Dvar, intArr_Object_Lower, intArr_Object_Upper, xt);//添加决策变量 var[0] = x;//加引用(指针变化),两个可以等同 cplex.AddMinimize(cplex.ScalProd(x, intArr_Object));//添加优化目标 建立约束: rng[0] = new IRange[i_Num_le_eq];//i_Num_le_eq为约束总数 for (int j = 0; j < A1_le.Length; j++)//不等式约束 { rng[0][j] = (cplex.AddLe(cplex.ScalProd(x, A1_le[j]), b1_le[j])); } ...... 冲突检测: IConstraint[] constraints = new IConstraint[rng[0].Length]; double[] prefs = new double[constraints.Length]; //一直不清楚prefs 做什么用的 constraints = rng[0]; if (cplex.RefineConflict(constraints,prefs)) { Cplex.ConflictStatus[] conflicts = cplex.GetConflict(constraints); for (int i = 0; i < conflicts.Length; i++) { if (conflicts == Cplex.ConflictStatus.Member) { System.Console.WriteLine(" Proved : " + constraints); } else if (conflicts == Cplex.ConflictStatus.PossibleMember) { System.Console.WriteLine(" Possible : " + constraints); } } } 检测输出的结果是所有的约束全部输出,且都属于Possible 。肯定是不对了。但自己调好久一直没成功,很着急,请大家帮忙呀!!!!!谢谢!! |
» 猜你喜欢
表哥与省会女结婚,父母去帮带孩子被省会女气回家生重病了
已经有12人回复
依托企业入选了国家启明计划青年人才。有无高校可以引进的。
已经有14人回复
江汉大学解明教授课题组招博士研究生/博士后
已经有3人回复
AI 太可怕了,写基金时,提出想法,直接生成的文字比自己想得深远,还有科学性
已经有11人回复
依托企业入选了国家启明计划青年人才。有无高校可以引进的。
已经有11人回复













回复此楼