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 领域中尚未见到如此激动人心的结果.关于这 ...
随机推荐
- Nginx设置黑名单
date: 2019-07-04 14:35:56 author: headsen chen notice: 个人原创 1,在分域名下面设置: [root@pro-nginx:/usr/local/ ...
- main方法的详解
格式 * public static void main(String[] args) {} 针对格式的解释 public 被jvm调用,访问权限足够大. static 被jvm调用,不用创建对象,直 ...
- 【转载】 迁移学习(Transfer learning),多任务学习(Multitask learning)和端到端学习(End-to-end deep learning)
--------------------- 作者:bestrivern 来源:CSDN 原文:https://blog.csdn.net/bestrivern/article/details/8700 ...
- web自动化-selenium+Chrome驱动国内下载地址+驱动对应Chrome版本号
selenium各版本下载地址 http://selenium-release.storage.googleapis.com/index.html 国内下载:http://npm.taobao.org ...
- LeetCode_190. Reverse Bits
190. Reverse Bits Easy Reverse bits of a given 32 bits unsigned integer. Example 1: Input: 000000101 ...
- js面向对象写法及栈的实现
function Stack() { this.dataStore = []; this.top = 0; //指向栈顶的位置 this.push = push; this.pop = pop; th ...
- [简短问答]LODOP如何查看用LODOP打印设计的代码
该博文为图文简短问答,具体详细介绍可查看本博客的相关博文,生成JS代码相关详细博文:Lodop打印设计(PRINT_DESIGN)介绍.Lodop打印设计.维护.预览.直接打印简单介绍.Lodop打印 ...
- Python----数据预处理代码实例
为方便收藏学习,转载自:https://www.jb51.net/article/158168.htm 本文实例为大家分享了Python数据预处理的具体代码,供大家参考,具体内容如下 1.导入标准库 ...
- vue的依赖注入provide和inject
一.解决的场景问题: 根父组件A有一个方法getMap,该组件A下的所有子组件B,子组件C,子组件D,或者子组件B下的子组件E等层层嵌套情况下,在某种情况下,都需要访问父组件的getMap方法,那么常 ...
- zookeeper 操作命令
简介 查阅了网上相关资料,介绍zookeeper客户端命令并不是非常全面,大多数都是简单介绍ls.get.set.delete.stat这几个简单命令的,下面我把help中的所有命令简单介绍一下以供参 ...