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 领域中尚未见到如此激动人心的结果.关于这 ...
随机推荐
- Redis搭建集群
- C# 将文本写入到文件
将字符串数组写入到文件,每个元素为一行 string[] lines = { "First line", "Second line", "Third ...
- vue 实现返回上一页不请求数据keep-alive
常规操作: 我们通常会将通过接口请求数据的方法放在==created== 或者 ==mounted==这两个生命周期中的一个里面调用. 但是我们知道,不管是我们刚进入这个页面还是从其他页面返回这个页面 ...
- Pattern 和 Matcher
作用:应用这个 Pattern 和 Matcher 可以完成字符串获取功能 使用: // 获取模式器对象 Pattern p = Pattern.compile("a*b") ; ...
- Syste类
System类的概述 System 类包含一些有用的类字段和方法.它不能被实例化. 成员方法 public static void gc() 运行垃圾回收器. public static void ...
- JavaScript箭头函数(Lambda表达式)
箭头函数也叫lambda表达式 据说其主要意图是定义轻量级的内联回调函数 栗有: 1 var arr = ["wei","ze","yang" ...
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_19-微服务之间认证-Feign 拦截器
4.2 Feign 拦截器 4.2.1 定义Feign拦截器 微服务之间使用feign进行远程调用,采用feign拦截器实现远程调用携带JWT. 在common工程添加依赖: <dependen ...
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_16-细粒度授权-我的课程细粒度授权-测试
重启课程管理服务 刷新页面,令牌到期需要先登陆 首先拿到company的id 测试2号公司
- (十二)class文件结构:魔数和版本
一.java体系结构 二.class格式文件概述 class文件是一种8位字节的二进制流文件, 各个数据项按顺序紧密的从前向后排列, 相邻的项之间没有间隙, 这样可以使得class文件非常紧凑, 体积 ...
- MySQL创建及删除临时表
示例SQL: drop temporary table if exists testdb.tmp_test_table; create temporary table testdb.tmp_test_ ...