码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Nlopt在matlab中的配置教程


    step1:克隆代码并编译

    编译的前提是已经安装好MinGW64

    # 使用镜像加速
    git clone https://gitclone.com/github.com/stevengj/nlopt
    
    cd nlopt
    mkdir build
    cd build
    cmake -G="MinGW Makefiles" ..
    cmake --build .
    
    # 注意此处博主在mingw安装目录将mingw32-make重命名成了make
    make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    nlopt将被自动安装至C:/Program Files (x86)/nlopt下。

    在这里插入图片描述

    step2:编译mex文件

    1. 将nlopt项目目录下的nlopt\src\octave\nlopt_optimize-mex.c拷贝到C:\Program Files (x86)\nlopt\lib\matlab,并重命名为nlopt_optimize.c
    2. 在nlopt安装目录下,将include\nlopt.h和bin\libnlopt.dll拷贝到lib\matlab目录下
    3. matlab工作目录切至lib\matlab,终端中执行:
       mex -v nlopt_optimize.c ../libnlopt.dll.a
      
      • 1
    4. 将C:\Program Files (x86)\nlopt\lib\matlab添加到matlab路径中
      在这里插入图片描述

    至此已完成Nlopt在matlab中的配置

    step3:测试
    clc,clear,close all
    
    opt.algorithm = NLOPT_LD_MMA;
    opt.lower_bounds = [-inf, 0];
    opt.min_objective = @myfunction;
    opt.fc = { (@(x) myconstraint(x,2,0)), (@(x) myconstraint(x,-1,1)) };
    opt.fc_tol = [1e-8, 1e-8];
    opt.xtol_rel = 1e-4;
    [xopt, fmin, retcode] = nlopt_optimize(opt, [1.234 5.678])
    
    % 目标函数
    function [val, gradient] = myfunction(x)
        val = sqrt(x(2));
        if (nargout > 1)
            gradient = [0, 0.5 / val];
        end
    end
    
    % 约束函数
    function [val, gradient] = myconstraint(x,a,b)
        val = (a*x(1) + b)^3 - x(2);
        if (nargout > 1)
            gradient = [3*a*(a*x(1) + b)^2, -1];
        end
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    参考链接:

    • https://nlopt.readthedocs.io/en/latest/NLopt_Matlab_Reference/
    • https://blog.csdn.net/jialing678/article/details/120415359
  • 相关阅读:
    面试计算机网络八股文十问十答第十期
    SpringCloud-01 Rest学习环境搭建笔记
    AH8691-60V降压至3.3V电源芯片:ESOP8封装解决方案
    JAVA工作经验1年面试题
    6000多万铲屎官,捧得出一个国产主粮的春天吗?
    LVGL---基础对象(lv_obj)
    在Ubuntu中创建Ruby on Rails项目并搭建数据库
    八股文之jdk源码分析
    rabbitmq4
    常见的反爬手段和解决思路(爬虫与反爬虫)
  • 原文地址:https://blog.csdn.net/weixin_43455581/article/details/133783571
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号