[Machine learning 实验4]linear programming
来源:互联网 发布:js event对象详解 编辑:程序博客网 时间:2024/05/19 17:07
#include "stdio.h"int main(void){ /*float constrain_set[3][7]={ {-3,-6,-2,0,0,0,0}, //x0-3x1-6x2-2x3=0 object function {3,4,1,1,0,2,0}, //0x0+3x1+4x2+x3+x4=2 constrain 1 {1,3,2,0,1,1,0} //0x0+x1+3x2+2x3+x5=1 constrain 2 }; int b = 5; int beta = 6; int row=3;*/ float constrain_set[][7]={ //add the last column to store beta,no use for problem defination {-4,-3,0,0,0,0 ,0},//x0-4x1-3x2=0 { 3, 4,1,0,0,12,0},//0x0+3x1+4x2+x3=12 { 3, 3,0,1,0,10,0},//0x0+3x1+3x2+x4=10 { 4, 2,0,0,1,8,0}, //0x0+4x1+2x2+x5=8 }; int b=5; int beta=6; int row=4; bool quit = false; for(;!quit;) { //find the min_value && negative, define column float min_value = 0.0; int min_column = 0; for(int i=0;i<b;++i) { if(constrain_set[0][i] < min_value) { min_value = constrain_set[0][i] ; min_column = i; } } if(min_value>=0.0) { break; } //find the min_beta ,define row for(int i=1;i<row;++i) { constrain_set[i][beta] = constrain_set[i][b]/constrain_set[i][min_column]; } float min_beta = constrain_set[1][beta]; int min_row = 1; for(int i=1;i<row;++i) { if(constrain_set[i][beta]<min_beta) { min_beta = constrain_set[i][beta]; min_row = i; } } float c = constrain_set[min_row][min_column]; for(int i=0;i<=b;++i) { constrain_set[min_row][i] /= c; } for(int i=0;i<row;++i) { if(i==min_row)continue; c = constrain_set[i][min_column]; for(int j=0;j<=b;++j) { constrain_set[i][j]-=constrain_set[min_row][j]*c; } } printf("maxz:%f\n",constrain_set[0][b]); } return 0;}
以上代码分别为解如下两个线性规划的例题:第一个来自来自参考文献1,第二个来自参考文献2,算法主要受到参考文献2的启发
max z = 3x1+6x2+2x3
constrain:
3x1+4x2+x3 <= 2
x1+3x2+2x3 = 1
x1>=0,x2>=0,x3>=0
和
max z=4x1+3x2
constrain:
3x1+4x2<=12
3x1+3x2<=10
4x1+2x2<=8
x1>=0,x2>=0
确定换入基的原则是,
该列的系数为负值,且最小,例如-6. 表明这个系数对优化结果的影响是正面的,且看上去是最大的。
该行的beta为最小,这是为了保证变化后优化目标的系数均大于0.
参考文献
1)《组合数学》第四版 卢开澄
2)Optimization Techniques An introduction L.R.Foulds 1981 by Springer-Verlag New York Inc
- [Machine learning 实验4]linear programming
- [Machine learning 实验4]linear programming
- Programming Exercise 1: Linear Regression Machine Learning
- Machine Learning week 2 quiz: programming assignment-Linear Regression
- 【machine learning】linear regression
- Machine Learning—Linear Regression
- stanford machine learning, linear regression
- Machine Learning #Lab1# Linear Regression
- Machine Learning 2 --- Linear regerssion
- Machine Learning Notes - Linear Regression
- Machine Learning - Regularized Linear Regression
- Machine Learning week 6 quiz: programming assignment-Regularized Linear Regression and Bias/Variance
- Coursera Machine Learning 第二周 quiz Programming Exercise 1: Linear Regression
- Coursera Machine Learning 第六周 Programming Exercise 5: Regularized Linear Regression and Bias
- Programming Exercise 5: Regularized Linear Regression and Bias v.s. Variance Machine Learning
- Programming Exercise 4: Neural Networks Learning Machine Learning
- Machine Learning Notes ——Linear Regression
- Stanford Machine Learning: (1). Linear Regression
- 信息首页ConversationList
- http-equiv是什么意思(转载)
- 鹰眼
- 推荐10个ICON网站,程序员必备!
- js中文注释导致的悲剧 JScript global code Microsoft JScript 运行时错误: 未定义
- [Machine learning 实验4]linear programming
- Lucene 最新版代码使用实例之【搜索index】
- Avd2.3 - 线程中更新UI
- Linux教程 字典
- [USACO 1.5.1] Number Triangles
- Internet——Code之发送邮件
- grep 命令使用总结
- iphone获取每次输入的textfiled里的文字的委托方法。
- 禽类的眼睛