nlopt 二次优化

/*
* main.c
*
* Created on: Oct 9, 2018
* Author: lgh
*/ #include <stdio.h>
#include <math.h>
#include "nlopt.h"
#define INF 1e10
int i = ; double step = ; //目标函数;
double utility(unsigned n, const double *x, double *grad, void *data)
{
if (grad) {
grad[] = (-1.0 + x[])*step;
grad[] = (-2.0 + x[])*step;
}
printf("迭代次数 i= %d, x[0]=%f, x[1]= %f,f(x1,x2)=%f\n",
i++, x[], x[], -x[] - * x[] + 0.5*x[] * x[] + 0.5*x[] * x[]);
return (-x[] - * x[] + 0.5*x[] * x[] + 0.5*x[] * x[]);
} //不等式限制条件;
double inconstraint_1(unsigned n, const double *x, double *grad, void *data)
{
if (grad) {
grad[] = 2.0*step;
grad[] = 3.0*step;
}
return ( * x[] + * x[] - );
} //不等式限制条件;
double inconstraint_2(unsigned n, const double *x, double *grad, void *data)
{
if (grad) {
grad[] = 1.0*step;
grad[] = 4.0*step;
}
return (x[] + * x[] - );
} //不等式限制条件;
double inconstraint_3(unsigned n, const double *x, double *grad, void *data)
{
if (grad) {
grad[] = 2.0*step;
grad[] = 6.0*x[] * step;
}
return ( * x[] + * x[] * x[] - );
} int main(int argc, char const *argv[])
{
double tol = 1e-;
double lb[] = { , }; //x1、x2的下边界;
double ub[] = { INF,INF };
double x[] = { , }; //给x1、x2赋予初始值;
double f_min; nlopt_opt opter = nlopt_create(NLOPT_LD_SLSQP/*NLOPT_LD_MMA*/, ); //设置自变量下限;
nlopt_set_lower_bounds(opter, lb); // 目标函数;
nlopt_set_min_objective(opter, utility, NULL); // 不等式约束;
nlopt_add_inequality_constraint(opter, inconstraint_1, NULL, tol);
nlopt_add_inequality_constraint(opter, inconstraint_2, NULL, tol);
nlopt_add_inequality_constraint(opter, inconstraint_3, NULL, tol); // 停止时需要的条件;
nlopt_set_xtol_rel(opter, tol); // 开始优化;
nlopt_result result = nlopt_optimize(opter, x, &f_min); if (result)
{
printf("极小值=%g, x=(%g,%g)\n", f_min, x[], x[]);
} //free
nlopt_destroy(opter);
getchar();
return ;
}
nlopt 二次优化的更多相关文章
- 12. 亿级流量电商系统JVM模型参数二次优化
亿级流量电商系统JVM模型参数预估方案,在原来的基础上采用ParNew+CMS垃圾收集器 一.亿级流量分析及jvm参数设置 1. 需求分析 大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该 ...
- paper 5:支持向量机系列二: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念。
paper 4中介绍了支持向量机,结果说到 Maximum Margin Classifier ,到最后都没有说“支持向量”到底是什么东西.不妨回忆一下上次最后一张图: 可以看到两个支撑着中间的 ga ...
- (转载)SVM-基础(二)
支持向量机: Support Vector by pluskid, on 2010-09-10, in Machine Learning 52 comments 本文是"支持向量机 ...
- 支持向量机(SVM)复习总结
摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略 ...
- Linq语言性能比较
我不只一次听到不少做技术的朋友随口一句,“linq性能是最差的”,由于缺少具体的数字比照也就没在意,但心里隐隐觉得事实应该不是这样的,我记得我第一次听到有人贬低C# 3.0是在我工作后不久的一个夏季, ...
- SVM系列之拉格朗日对偶
在学习SVM(Support Vector Machine) 支持向量机时,对于线性可分的分类样本求出的分类函数为: 其中,分类超平面可以表示为:
- PRML读书会第七章 Sparse Kernel Machines(支持向量机, support vector machine ,KKT条件,RVM)
主讲人 网神 (新浪微博: @豆角茄子麻酱凉面) 网神(66707180) 18:59:22 大家好,今天一起交流下PRML第7章.第六章核函数里提到,有一类机器学习算法,不是对参数做点估计或求其分 ...
- opencv7-ml之svm
因为<opencv_tutorial>这部分只有两个例子,就先暂时介绍两个例子好了,在refman中ml板块有:统计模型.普通的贝叶斯分类器.KNN.SVM.决策树.boosting.随机 ...
- Deep Learning in NLP (一)词向量和语言模型
原文转载:http://licstar.net/archives/328 Deep Learning 算法已经在图像和音频领域取得了惊人的成果,但是在 NLP 领域中尚未见到如此激动人心的结果.关于这 ...
随机推荐
- Android 滚动隐藏标题栏 和FAB按钮实现
主页面: package com.loaderman.samplecollect.hideonscroll; import android.content.Intent; import android ...
- std::wstring std::string w2m m2w
static std::wstring m2w(std::string ch, unsigned int CodePage = CP_ACP) { if (ch.empty())return L&qu ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_02-Eureka注册中心-搭建Eureka单机环境
我们先搭建单机环境 govern是治理的意思, 这样就把工程创建好了 创建包 创建SpringBoot的启动类. 在父工程里面已经确定了Spring Cloud的版本了.相当于锁定了版本 接下里只需要 ...
- CNCF基金会的Certified Kubernetes Administrator认证考试计划
关于CKA考试 CKA(Certified Kubernetes Administrator)是CNCF基金会(Cloud Native Computing Foundation)官方推出的Kuber ...
- 第二十四章 在线会话管理——《跟我学Shiro》
目录贴:跟我学Shiro目录贴 有时候需要显示当前在线人数.当前在线用户,有时候可能需要强制某个用户下线等:此时就需要获取相应的在线用户并进行一些操作. 本章基于<第十六章 综合实例>代码 ...
- OpenGL学习笔记 之三 (简单示例 太阳月亮地球)
#include<glut.h> // 太阳.地球和月亮 // 假设每个月都是30天 // 一年12个月,共是360天 ;//day的变化:从0到359 void myDisplay(vo ...
- TCP Socket + UDP Socket
小例子:http://soft.yesky.com/238/2035738.shtml 服务器程序: #include <iostream> #include <WinSock2.h ...
- 如何创建一个线程安全的Map?
1,使用普通的旧的Hashtable HashMap允许null作为key,而Hashtable不可以 2,使用Collections中同步化的包装方法synchronizedMap 3,使用conc ...
- Codis-proxy的配置和启动
生成配置文件,即将现有的配置文件输出到指定目录位置: ./codis-proxy --default-config | tee conf/proxy.toml 修改配置文件信息: vi conf/pr ...
- rewrite定义浏览器请求
搞过前端的估计都碰到最头疼的问题就是浏览器兼容性问题了,特别是针对IE浏览器.往往前端为了省事就搞一个页面提示用户升级浏览器或者显示简单的静态页面.那接下来就需要运维来配置nginx rewrite规 ...