不懂0和1 2024-04-30 14:48 采纳率: 41.2%
浏览 4
已结题

C#调用cplex如何获得决策变量取值

如题,可以用getvalues的方法,但为什么我这里提示括号后需要填写的是ILPMatrix,而我始终无法得到这个ILPMatrix。

img

并不存在一个getlpmatrix的方法,只有一个getlpmatrixenumerator的方法。但该方法总是输出空值。

  • 写回答

3条回答 默认 最新

  • 专家-皆知 2024-04-30 14:52
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    在使用C#调用IBM ILOG CPLEX Optimization Studio时,获取决策变量的取值通常涉及几个步骤。从您的描述来看,您可能在尝试直接通过枚举器获取矩阵然后传递给GetValues方法,但遇到了一些困难,因为直接从枚举器得到的ILPMatrix可能不是您预期的形式,特别是如果您发现它输出空值。

    下面是一个更标准的流程来获取决策变量的值:

    1. 构建模型:首先确保您的模型已经被正确构建,并且已经求解。

    2. 获取决策变量:在CPLEX中,您需要有对决策变量的引用。这通常是通过变量对象集合完成的。

    3. 求解模型:在获取变量值之前,确保您调用了solve()方法。

    4. 获取变量值:使用Solution属性来访问变量的值。

    以下是一个简化的示例代码,展示了如何正确地获取决策变量的值:

    using ILOG.CPLEX;
    using System;
    
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 初始化CPLEX实例
                using (var cplex = new Cplex())
                {
                    // 假设您已经定义了模型和决策变量...
                    // 例如,定义一个简单的线性规划问题的变量x
                    Variable x = cplex.NewVariable(0, Double.PositiveInfinity, "x");
    
                    // 定义您的目标函数和约束(这里省略具体实现细节)
    
                    // 解决问题
                    cplex.Solve();
    
                    // 获取决策变量的值
                    if (cplex.Status == SolutionStatus.Optimal)
                    {
                        // 使用Solution.Value属性获取变量的值
                        double xValue = cplex.GetSolution(x);
                        Console.WriteLine($"变量x的值为: {xValue}");
                    }
                    else
                    {
                        Console.WriteLine("问题没有找到最优解。");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"发生错误: {ex.Message}");
            }
        }
    }
    

    关于您提到的GetLPMatrixEnumerator和ILPMatrix,这些通常用于访问模型的内部结构,而不是直接用于获取变量值。在大多数情况下,直接通过GetSolution方法或变量的Solution.Value属性获取决策变量的值更为直接和简便。

    如果您的需求涉及到更复杂的模型结构分析,可能需要深入理解CPLEX提供的接口和数据结构,但获取变量值的基本方法如上所示。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月30日
  • 创建了问题 4月30日

悬赏问题

  • ¥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图书管理系统
  • ¥15 Questasim Error: (vcom-13)