【问题标题】:CEIL in objective function CPLEX C++目标函数 CPLEX C++ 中的 CEIL
【发布时间】:2021-12-26 08:20:23
【问题描述】:

据我所知,有一个教程显示 ILOG 可以使用 ceil 函数 (here)。但是,当我尝试实现它以在 CPLEX C++(音乐会)中计算我的目标函数时,它失败了。我正在寻找的内容如下:

for (i=0; i<I; i++){
  for (j=0; j<J; j++){
      TO += ceil(DecisionVariable[i][j]/parameter[j]);
  }
}

任何建议将不胜感激。非常感谢。

最好的问候,

【问题讨论】:

    标签: c++ visual-studio cplex


    【解决方案1】:

    在 OPL 中我们有 ceil,但在 C++ 中,等效函数是 IloCeil。

    但我们需要记住,这个函数不是线性的。

    How to with OPL ? 我们可以阅读How to use ceil of a decision variable in a CPLEX constraint ?

    range r=1..4;
    
    float x[r]=[1.5,4.0,2.0001,5.9999];
    
    dvar int y[r];
    dvar float f[r] in 0..0.9999999;
    
    subject to
    {
    forall(i in r) y[i]==x[i]+f[i];
    
    
    }
    
    execute
    {
    writeln(x," ==> ",y);
    }
    
    assert forall(i in r) y[i]==ceil(x[i]);
    

    【讨论】:

    • 感谢@Alex Fleischer,它现在解决了我的问题
    • @Lizard White 感谢您对帮助感到满意。如果您的案例已经解决,请帮忙标记答案。
    【解决方案2】:

    你提到的文件内容太多了。我无法快速找到您引用的内容。请指出他们的位置。但据我所知,ceil是一个四舍五入的函数,请检查:

    1. 代码中是否包含ceil函数需要的头文件?

    2. ceil函数的参数设置是否正确?

    3. 如果使用函数作为参数,请确保函数的返回值是double。

    【讨论】:

    • 谢谢@YujianYao .. ceil 函数是从决策变量和参数派生的,从 IloExpr 到 double 的转换对我来说仍然有些问题.. 你能举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    相关资源
    最近更新 更多