调试日志Dec. 25, 2023——MATLAB+Yalmip/GUROBI求解错误,求解结果NaN

在MATLAB环境使用Yalmip/GUROBI求解MIP问题,设置求解器参数:

ops = sdpsettings('verbose',2,'solver','gurobi');

优化求解:

result = optimize(C,F_es,ops);
if result.problem == 0
    disp('求解成功!')
else
    disp('其他求解错误!')
end

得到“其他求解错误”,需要获得result.problem结果,可以参考yalmip官方提供yalmiperror报错细则:yalmiperror - YALMIP

result.problem

2023年12月25日,报错结果为9,即未知错误(若出现其他错误,可以找到对应文档进行debug)

在sdpsettings中添加debug(调试未知错误 - YALMIP

ops = sdpsettings('verbose',2,'solver','gurobi','debug',1);

错误代码:10009,查看GUROBI Error Codes(Error Codes - Gurobi Optimization

明确是License到期导致的求解错误,重新向GUROBI官方获得License(上一个只有6个月的期限:2023年6月-2023年12月),反正注意环境配置就行,重新求解模型,求解成功。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于GurobiMATLAB的使用教程,我可以为您提供一些基本的指导。 首先,您需要安装MATLABGurobi软件。Gurobi提供了一个免费的学术许可证,可以在其官方网站上申请。安装好Gurobi后,您需要将其与MATLAB连接起来。您可以通过在MATLAB命令窗口输入以下命令来测试是否成功连接: ``` gurobi_test() ``` 如果您看到一些关于Gurobi的信息,那么就说明连接成功了。 接下来,您可以使用YALMIP来建模和求解TSP问题。YALMIP是一个MATLAB工具箱,可以帮助您轻松地建模各种优化问题。以下是一个使用YALMIPGurobi求解TSP问题的示例代码: ```matlab % 生成TSP问题的数据 n = 5; % 城市数量 x = randn(n,1); y = randn(n,1); % 定义变量 u = sdpvar(n,1); v = binvar(n,n); % 定义目标函数 obj = sum(sum(v.*repmat(sqrt((x-x').^2+(y-y').^2),1,1))); % 添加约束条件 con = [sum(v,2)==1, sum(v,1)==1, u(1)==1, 2<=u<=n+1]; for i = 2:n con = [con, 2 <= u(i) <= n+1, u(i) <= u(find(v(i,:))) + (n-2)*(1-v(i,:)))]; end % 求解问题 ops = sdpsettings('solver','gurobi'); sol = optimize(con,obj,ops); % 输出结果 if sol.problem == 0 disp('Optimal solution found'); disp(value(obj)); else disp('Error'); end ``` 上述代码,我们首先生成了一个包含5个城市的TSP问题的数据,然后定义了变量和目标函数。接下来,我们添加了约束条件来确保每个城市只能被访问一次,并且每个城市都必须在一条路径出现。最后,我们使用Gurobi求解了该问题,并输出了最优解。 希望这个简单的示例可以帮助您入门GurobiMATLAB的使用。如果您需要更多的帮助,请随时联系我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值