模拟退火算法求解旅行商问题:一场寻找最短路径的数字“旅行” - 哔哩哔哩 (bilibili.com)
在上面文章的代码的循环部分, 也就是寻找新的路径,然后根据温度等因素判断是否以一定概率采纳新的路径这一部分特别耗费时间, 能否写成一个bex函数来完成这个任务呢, 我们可以使用文心一言, 让它写一个mex函数(这个相当于我们的bex函数)
我们把这个函数的 mex 改成 bex, 把mx 改成bx , 名字取成 tuihuo.c , 然后用北太天元来编译
我用 bex("tuihuo.c") 来编译, 但是却看到无法找到bex.h , 看报错中出现的
gcc -o tuihuo.bexw64 -fPIC -shared -O3 -IC:\baltamatica\include
于是到 C:\baltamatica\include 下查看, 发现 bex.h 所在的位置是 C:\baltamatica\include\bex\bex.h
于是把 tuihuo.c 中的 #include "bex.h" 改成 #include "bex/bex.h"
经过上面的修改,再次运行 bex("tuihuo.c") , 已经编译成功, 如下图所示, 然后测试了一下,
现在计算的速度大大的加快了, 因此可以可以计算更多的目标点了, 例如 100个目标点
后面, 我再用个视频解释一下吧.
环境也许需要设置一下, 可以参考 北太天元/C++混合编程 - 哔哩哔哩 (bilibili.com)
最简混合编程-用北太天元吧_哔哩哔哩_bilibili 的视频网址如下:
https://www.bilibili.com/video/BV1r64y1H7QN/?share_source=copy_web&spm_id_from=333.976.0.0