首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Optano.Modeling不使用MipCL

Optano.Modeling不使用MipCL
EN

Stack Overflow用户
提问于 2018-07-09 20:17:41
回答 1查看 246关注 0票数 0

我刚刚开始测试optano.modeling库,并使用这些包创建了一个新的控制台应用程序:

  • Optano.Modeling
  • Optano.Modeling.Gurobi

我复制了Optano (primer.html)中显示的默认程序,一切都完美无缺。

这就是节目。

代码语言:javascript
复制
using System.Diagnostics;
using OPTANO.Modeling.Optimization;
using OPTANO.Modeling.Optimization.Enums;
using OPTANO.Modeling.Optimization.Solver.Gurobi80;

namespace optanodemo
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var scope = new ModelScope())
            {
                var model = new Model();
                var x = new Variable("x");
                var y = new Variable("y");
                model.AddConstraint(x + y >= 120);
                model.AddObjective(new Objective(2*x + 3*y));

                using (var solver = new GurobiSolver())
                {
                    var solution = solver.Solve(model);
                }
            }
        }
    }
}

在此之后,我决定将求解器(因为我现在不想支付Gurobi )更改为MipCL 1.41,代码如下:

代码语言:javascript
复制
using System.Diagnostics;
using OPTANO.Modeling.Optimization;
using OPTANO.Modeling.Optimization.Enums;
using OPTANO.Modeling.Optimization.Solver.MipCL141;

namespace optanodemo
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var scope = new ModelScope())
            {
                var model = new Model();
                var x = new Variable("x");
                var y = new Variable("y");
                model.AddConstraint(x + y >= 120);
                model.AddObjective(new Objective(2*x + 3*y));

                using (var solver = new MipCLSolver())
                {
                    var solution = solver.Solve(model);
                }
            }
        }
    }
}

代码编译,但当我运行它时,我收到了异常:

代码语言:javascript
复制
Unhandled Exception: System.TypeInitializationException: The type initializer for 
'OPTANO.Modeling.Optimization.Solver.MipCL141.WrapperCsharp.MipCL141WrapperCppPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'MipCL141WrapperCpp': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at OPTANO.Modeling.Optimization.Solver.MipCL141.WrapperCsharp.MipCL141WrapperCppPINVOKE.SWIGExceptionHelper.SWIGRegisterExceptionCallbacks_MipCL141WrapperCpp(ExceptionDelegate applicationDelegate, ExceptionDelegate arithmeticDelegate, ExceptionDelegate divideByZeroDelegate, ExceptionDelegate indexOutOfRangeDelegate, ExceptionDelegate invalidCastDelegate, ExceptionDelegate invalidOperationDelegate, ExceptionDelegate ioDelegate, ExceptionDelegate nullReferenceDelegate, ExceptionDelegate outOfMemoryDelegate, ExceptionDelegate overflowDelegate, ExceptionDelegate systemExceptionDelegate)
   at OPTANO.Modeling.Optimization.Solver.MipCL141.WrapperCsharp.MipCL141WrapperCppPINVOKE.SWIGExceptionHelper..cctor()
   --- End of inner exception stack trace ---
   at OPTANO.Modeling.Optimization.Solver.MipCL141.WrapperCsharp.MipCL141WrapperCppPINVOKE.SWIGExceptionHelper..ctor()
   at OPTANO.Modeling.Optimization.Solver.MipCL141.WrapperCsharp.MipCL141WrapperCppPINVOKE..cctor()
   --- End of inner exception stack trace ---
   at OPTANO.Modeling.Optimization.Solver.MipCL141.WrapperCsharp.MipCL141WrapperCppPINVOKE.new_CMIP__SWIG_0()
   at OPTANO.Modeling.Optimization.Solver.MipCL141.MipCLSolver.BuildSolverModelAdapterSpecific(Int32 prioLevel)
   at OPTANO.Modeling.Optimization.SolverBase.BuildConfigureAndSolveOnAdapter(Int32 prioLevel, Dictionary`2 variableValues, Boolean isResolve)
   at OPTANO.Modeling.Optimization.SolverBase.SolveNonNative(Dictionary`2 variableValues, Boolean isResolve)
   at OPTANO.Modeling.Optimization.SolverBase.Solve(Model model, Dictionary`2 variableValues)
   at optanodemo.Program.Main(String[] args) in C:\Temp\test\ConsoleApp1\ConsoleApp1\Program.cs:line 21

经过5个小时的努力,我决定写这里看看是否有类似的问题。这就是我试过的:

  • 我检查了我的应用程序文件夹,文件MipCL141WrapperCpp.dll在该文件夹中。
  • 我从MipCL下载了1.41版本的http://www.mipcl-cpp.appspot.com/download.html,并安装了几次。
  • 我将所有安装的MipCL文件复制到我的应用程序文件夹中。
  • 我将我的应用程序构建设置为x64,而不是任何
  • 我分解了MipCL141WrapperCpp.dll以检查任何其他可能的依赖项,并且我看到代码中有对mipcl.dll、VCRUNTIME140D.dll和ucrtbased.dll的引用。我还将这些文件复制到我的应用程序文件夹。

你觉得我还能尝试些什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-09 21:15:44

Visual 2017没有在windows\system32 32文件夹中安装文件ucrtbased.dll。它只安装文件ucrtbase.dll

我从互联网上下载了这个文件,并将它添加到应用程序文件夹中,一切都开始顺利进行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51253408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档