我正在使用VBA编写线性编程解决方案并通过CPLEX解算器解决它。我可以通过VBA编写LP文件手动连接这些步骤,在CPLEX中解决,写出解决方案并通过VBA的另一个子例程读取该解决方案以进行进一步处理。但是,我的新研究需要多次重复这些步骤,即编写LP文件,通过CPLEX解决,编写解决方案,通过VBA处理解决方案以发布新的LP文件,然后通过CPLEX解决等问题。 我需要在每次调用CPLEX时输入3个命令:
Read (name).lp
Optimize
write (name).sol
我试过shell函数:
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
wsh.Run "C:\cplex.exe /S /K read 1.lp", windowStyle, waitOnReturn
此代码可以调用cplex但无法实现该命令(但是,它适用于其他可执行文件,如cmd.exe)。谁能帮我解决这个麻烦?非常感谢任何想法,甚至建议我使用另一种语言。
答案 0 :(得分:0)
我不确定您是否可以从VBA使用它,但为什么不使用可从VB访问的CPLEX .Net API?
有很多示例(例如在C:\ Program Files \ IBM \ ILOG \ CPLEX_Studio1251 \ cplex \ examples \ src \ vb中),它们展示了如何使用API。