第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 doopl 的 opl.set_input() 作為參數(shù)(而不是元組)的正確方法

使用 doopl 的 opl.set_input() 作為參數(shù)(而不是元組)的正確方法

HUWWW 2024-01-27 16:08:43
我正在嘗試在 Python 中運(yùn)行 CPLEX .mod 文件。有關(guān)如何執(zhí)行此操作的講師位于以下鏈接中:如何使用 python 運(yùn)行 .mod 文件 (CPLEX)?但似乎(也許)只有元組從 Python 發(fā)送到 CPLEX。就我而言,CPLEX .mod 文件中有一個(gè)循環(huán),如下所示:for (var i = lowerBound; i <= upperBound; i++) {...} 我想將參數(shù) lowerBound 和 upperBound 從 Python 發(fā)送到 CPLEX .mod 文件。為此,我在 CPLEX .mod 文件內(nèi)、for 循環(huán)之前定義了一個(gè)變量,如下所示:var lowerBound = ...;var upperBound = ...;然后,我在 Python 中使用以下命令:from doopl.factory import *with create_opl_model(model="model.mod") as opl:    opl.set_input("upperBound", 50)    opl.set_input("lowerBound", 1)    opl.run()但出現(xiàn)以下錯(cuò)誤:ERROR at 17:18 model.mod: Scripting parser error: missing expression.我想說(shuō)的是,在 CPLEX .mod 中,第 17 行和第 18 行是:var lowerBound = ...; var upperBound = ...;問(wèn)題:我想知道是否只發(fā)送元組opl.set_input ()?為了理解這一點(diǎn),我做了如下的事情:CPLEX .mod 內(nèi)部:tuple bounds {        int lowerBound;        int upperBound;            }    for (var i = lowerBound; i <= upperBound; i++) {    ...}Python 內(nèi)部:from doopl.factory import *Bounds = [    (1, 50),    ]with create_opl_model(model=" model.mod") as opl:    opl.set_input("bounds", Bounds)    opl.run()但這一次,出現(xiàn)了如下錯(cuò)誤:ERROR at 20:7 model.mod: Scripting parser error: missing ';' or newline between statements.我想說(shuō)的是,在 CPLEX .mod 文件中,第 20 行與元組邊界的定義相關(guān),即:tuple bounds {        int lowerBound;        int upperBound;            }有什么辦法可以解決這個(gè)問(wèn)題?
查看完整描述

1 回答

?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

你需要使用元組集,但在


tuple bounds {

        int lowerBound;

        int upperBound;

        

    }

那不是你所做的。


你應(yīng)該寫(xiě)


tuple typebounds {

        int lowerBound;

        int upperBound;

        

    }


{typebounds} bounds=...;

在你的 .mod 文件中


讓我分享一個(gè)完整的例子:


from doopl.factory import *

# Data


Buses=[

        (40,500),

        (30,400)

        ]


MinAndMax=[(1,5)]


# Create an OPL model from a .mod file

with create_opl_model(model="zootuplesetwithminandmax.mod") as opl:

    # tuple can be a list of tuples, a pandas dataframe...

    opl.set_input("buses", Buses)

    opl.set_input("singletonMinAndMax", MinAndMax)


    # Generate the problem and solve it.

    opl.run()


    # Get the names of post processing tables

    print("Table names are: "+ str(opl.output_table_names))


    # Get all the post processing tables as dataframes.

    for name, table in iteritems(opl.report):

        print("Table : " + name)

    for t in table.itertuples(index=False):

            print(t)


    # nicer display

    for t in table.itertuples(index=False):

        print(t[0]," buses ",t[1], "seats")

與zootuplesetwithminandmax.mod


int nbKids=300;


// a tuple is like a struct in C, a class in C++ or a record in Pascal

tuple bus

{

key int nbSeats;

float cost;

}


// This is a tuple set

{bus} buses=...;


tuple minandmax

{

int m;

int M;

}


{minandmax} singletonMinAndMax=...;


int minBuses=first(singletonMinAndMax).m;

int maxBuses=first(singletonMinAndMax).M;



// asserts help make sure data is fine

assert forall(b in buses) b.nbSeats>0;

assert forall(b in buses) b.cost>0;


// decision variable array

dvar int+ nbBus[buses] in minBuses..maxBuses;


// objective

minimize

 sum(b in buses) b.cost*nbBus[b];

 

// constraints

subject to

{

 sum(b in buses) b.nbSeats*nbBus[b]>=nbKids;

}


tuple solution

{

  int nbBus;

  int sizeBus;

}


{solution} solutions={<nbBus[b],b.nbSeats> | b in buses}; 


查看完整回答
反對(duì) 回復(fù) 2024-01-27
  • 1 回答
  • 0 關(guān)注
  • 256 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)