【问题标题】:OPL TransportationOPL 运输
【发布时间】:2017-10-05 12:43:07
【问题描述】:

我正在为 IBM ILOG CPLEX Optimization Studio 中的一个简单运输问题编写代码。 这是代码 trans.mod(文件)

{string} Sources = ...;
{string} Destination = ...;
float Demand[Destination]= ...;
float Output[Sources]= ...;
float Shipcost[Sources][Destination]= ...;

assert sum(s in Sources) Output[s] == sum(d in Destination) Demand[d];
dvar int Ship[Sources][Destination] in 1..50;
minimize 
sum(s in Sources, d in Destination)
Shipcost[s][d]*Ship[s][d];
subject to 
{
forall( s in Sources , d in Destination )
sum(d in Destination)
Ship[s][d]<=Output[s];
forall( s in Sources , d in Destination )
sum(s in Sources)
Ship[s][d]>=Demand[d];
forall( s in Sources , d in Destination )
Ship[s][d]>=0;
}     
execute DISPLAY
{
writeln("Ship=",Ship)
}

它的数据文件如下 传输数据

Sources = {Source1 Source2 Source3};
Destination = {mumbai delhi vadodra kolkata};
Demand = #[
        mumbai: 80
        delhi: 65
        vadodra: 70
        kolkata: 85
        ]#;
Output = #[
        Source1: 75
        Source2: 125
        Source3: 100
        ]#;
Shipcost = #[
        Source1: #[
                    mumbai: 464
                    delhi: 513
                    vadodra: 654
                    kolkata: 867
                    ]#
        Source2 : #[
                    mumbai: 352
                    delhi: 416
                    vadodra: 690
                    kolkata: 791
                    ]#
        Source3 : #[
                    mumbai: 995
                    delhi: 682
                    vadodra: 388
                    kolkata: 685
                    ]#
            ]#;

问题是,当我在 TORA 上运行这个简单的运输问题时,它给了我 Optimal Solution 作为 152535 但是当我在 cplex 上运行这段代码时,它给了我最佳解决方案 156366 请让我知道我哪里出错了或者为什么我得到了 3831 的差异。 提前谢谢你。

【问题讨论】:

    标签: cplex opl


    【解决方案1】:

    第一个问题是,Tora 和 cplex 是否都给出了最佳结果?两者都没有差距吧?

    如果两者都是最佳结果,如果您错误地输入其中一个程序,请检查参数。

    检查并比较两个程序的决策变量,结果是否是最优解的最合乎逻辑的结果。

    【讨论】:

    • 我已经交叉检查了这些值。供您参考,我在给定的链接中附上了价值表。[drive.google.com/file/d/0BzbsKTQxAozfd2hTS1VzRmQxbE0/…@FatihCen。请让我知道我哪里出错了。
    • // 解决方案(最优),目标为 156366 Ship = [[29 14 19 13] [50 50 1 24] [1 1 50 48]];这是我在 CPLEX 中得到的结果。来自 tora drive.google.com/open?id=0BzbsKTQxAozfSGVfeUt0SzBJcWM
    • 我想我发现了你的错误。当我检查结果时,tora 给出了正确的解决方案,如果你检查 cplex 结果,它给出了从供应点到需求点的最大 50 值。您将决策变量的上限设置为 50。如果增加它,问题将得到解决。 dvar int Ship[Sources][Destination] in 1..50;
    • 谢谢@FatihCen,它起作用了我将变量范围从 0...100 更改了。
    • 如果我的答案有效,您能否将我的答案标记为解决方案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多