xiaoxiong's Blog

Happy coding

Matlab 0-1规划之bintprog的 用法

x = bintprog(f)
x = bintprog(f, A, b)
x = bintprog(f, A, b, Aeq, beq)
x = bintprog(f, A, b, Aeq, beq, x0)
x = bintprog(f, A, b, Aeq, Beq, x0, options)
[x, fval] = bintprog(...)
[x,fval, exitflag] = bintprog(...)
[x, fval, exitflag, output] = bintprog(...)


这里x是问题的解向量
f是由目标函数的系数构成的向量
A是一个矩阵,b是一个向量
A,b和变量x={x1,x2,…,xn}一起,表示了线性规划中不等式约束条件
A,b是系数矩阵和右端向量。
Aeq和Beq表示了线性规划中等式约束条件中的系数矩阵和右端向量。
X0是给定的变量的初始值
options为控制规划过程的参数系列。
返回值中fval是优化结束后得到的目标函数值。
exitflag=0表示优化结果已经超过了函数的估计值或者已声明的最大迭代次数;
exitflag>0表示优化过程中变量收敛于解X,
exitflag<0表示计算不收敛。
output有3个分量,
iterations表示优化过程的迭代次数,
cgiterations表示PCG迭代次数,
algorithm表示优化所采用的运算规则。
在使用linprog()命令时,系统默认它的参数至少为1个,
但如果我们需要给定第6个参数,则第2、3、4、5个参数也必须给出,否则系统无法认定给出的是第6个参数。遇到无法给出时,则用空矩阵“[]”替代。



例如

max=193*x1+191*x2+187*x3+186*x4+180*x5+185*x6; %f由这里给出

st.

x5+x6>=1;
x3+x5>=1;
x1+x2<=1;
x2+x6<=1;
x4+x6<=1;
%a、b由不等关系给出,如没有不等关系,a、b取[]

x1+x2+x3+x4+x5+x6=1; aeq beq由等式约束给出

代码如下
f=[-193;-191;-187;-186;-180;-185;];
a=[0 0 0 0 -1 -1;0 -1 0 0 -1 0;1 1 0 0 0 0;0 1 0 0 0 1;0 0 0 1 0 1];
b=[-1,-1,1,1,1]';
aeq=[1 1 1 1 1 1];
beq=[3];
x=bintprog(f,a,b,aeq,beq)

注意
目标值为最大值时应乘以-1化为求最小值;
不等约束为>=时应乘以-1化为<=;

 

转自  http://blog.sina.com.cn/s/blog_687a516d0100x8o3.html

怎么保存matlab中的一个变量和怎么再次使用

比如,你已经输入了一些变量,现在执行一个save命令(例如存在D盘底下):
        save('d:\a.mat');

然后当你使用的时候,只需要执行load命令就能够将原来的数据加载上:
        load('d:\a.mat');

matlab添加工具箱的两种方法

第一种方法是 敲命令 ,首先把 工具箱 比如 bnt 工具箱 放到安装目录的 toolbox 这个文件夹下,然后启动matlab,敲入

   1   addpath(genpath('path'));

   2   savepath;

第二种方法是 界面操作,

     首先把主界面调出来,有两种方式,一种是在命令窗口输入pathtool,另一种是在matlab菜单调用(File -> Set Path…)。打开主界面后,相信不用太多解释了。Add Folder… 或者 Add with subfolders… 就可以了,添加完毕后,如果需要保存该路径,则在close前save一下就可以了。这种方式的好处是如果路径有问题,matlab会马上报错, 告诉用户添加失败。

原文链接 http://blog.sina.com.cn/s/blog_002e203101012kmx.html