不懂0和1 2024-04-16 23:15 采纳率: 41.2%
浏览 3
已结题

C#调用cplex时如何直接克隆已有cplex模型

想直接深拷贝已有cplex模型但总是失败,百度给的例子始终不对。无论是用getclone还是makeclone都不对,无论是直接克隆cplex模型还是把它转换成IModel接口,都不对。会提示下面两个错误。如果在括号内加入cplex之类的参数,会报错说需要强制转换,强制转换后不报错,但运行起来会说找不到方法。求指点迷津!

img

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-16 23:15
    关注

    引自免费微信小程序:皆我百晓生

    在C#中使用CPLEX进行模型复制,你需要正确地使用ICloneable接口来进行深拷贝。这里有一个例子,展示了如何创建一个Cplex对象的副本。

    首先,确保你的项目包含了CPLEX的相关引用,并且已经导入了相关的命名空间。然后,我们可以定义一个方法来复制Cplex模型。下面是完整的代码示例:

    using ILOG.Concert;
    using System;
    
    namespace CPlexCloningExample
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 创建原始Cplex对象
                var originalCplex = new Cplex();
                
                // 假设你在originalCplex上设置了一些约束和变量等...
    
                // 使用GetClone方法复制Cplex对象
                var copiedCplex = copyCplex(originalCplex);
    
                // 现在copiedCplex是一个独立的Cplex实例,可以独立于originalCplex进行操作
            }
    
            public static Cplex copyCplex(Cplex originalCplex)
            {
                // 获取原始Cplex的模型
                IloEnv env = originalCplex.Env;
                IloModel originalModel = originalCplex.Model;
    
                // 创建新的Cplex环境和模型
                IloEnv cloneEnv = new IloEnv(env);
                IloModel cloneModel = new IloModel(cloneEnv);
    
                // 将原始模型导入到新模型中
                originalModel.Import(cloneModel);
    
                // 创建并返回新的Cplex对象,关联到复制后的模型
                return new Cplex(cloneEnv, cloneModel);
            }
        }
    }
    

    这段代码首先创建了一个新的Cplex环境(env)和模型(model),然后将原始模型导入到新模型中,最后根据新的环境和模型创建一个新的Cplex对象。这样就实现了Cplex模型的深拷贝。

    注意,由于CPLEX库的设计,直接通过ICloneable接口复制Cplex对象可能会导致一些问题,因此推荐采用上述方法。如果你有其他具体的问题或错误,欢迎继续提问,我会尽力帮助解决。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月18日
  • 修改了问题 4月16日
  • 创建了问题 4月16日

悬赏问题

  • ¥15 labelme生成的json有乱码?
  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 关于#c++#的问题:(2)运算二叉树·表达式一般由一个运算符和两个操作数组成:(相关搜索:二叉树遍历)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时
  • ¥45 求17位带符号原码乘法器verilog代码
  • ¥20 PySide6扩展QLable实现Word一样的图片裁剪框
  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统