Excel 将CPLEX解算器集成到VBA中

Excel 将CPLEX解算器集成到VBA中,excel,vba,shell,command-line,cplex,Excel,Vba,Shell,Command Line,Cplex,我正在使用VBA编写线性规划解决方案,并使用CPLEX解算器进行求解。我可以通过VBA编写LP文件手动连接这些步骤,在CPLEX中求解,写出解决方案,并通过VBA的另一个子例程读取该解决方案以进行进一步处理。然而,我的新研究需要多次重复这些步骤,即写LP文件,用CPLEX求解,写解,用VBA处理解以释放新的LP文件,然后用CPLEX求解,等等。 每次调用CPLEX时,我需要输入的3个命令是: Read (name).lp Optimize write (name).sol 我尝试了shell函

我正在使用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)运行良好)。有人能帮我解决这个问题吗?任何想法都非常感谢,甚至建议我使用另一种语言

我不确定您是否可以从VBA使用它,但为什么不使用可以从VB访问的CPLEX.Net API呢


有很多示例(例如,在C:\Program Files\IBM\ILOG\CPLEX\u Studio1251\CPLEX\examples\src\vb中)展示了如何使用API。

是的,这似乎是一个很好的解决方案。一个小问题是,我需要将VBA中的所有代码转换为VB。我找到了另一个解决方案,即使用SendInput模块()。我可以调用CPLEX并将命令传递给它,但CPLEX无法识别位于同一文件夹中的任何数据文件(例如,读取lp文件,但显示、帮助等其他命令正常工作)。但是,当我直接运行CPLEX.exe(即双击它)时,它仍然可以正常工作。你知道如何解决这个问题吗?也许可以尝试使用文件的完整路径-可能是CPLEX默认为它自己的本地文件夹,其中存储着CPLEX.exe?