? ? ? ? 约束和目标函数均为线性,但变量值为整数。实际应用有去和不去、取和不取等01决策问题和物品不可拆分、所求人数等要求变量为整数的问题。
????????????????
????????????????每个任务指派一个人
????????????????每个人只做一项任务
? ? ? ? 从任意城市出发,每个城市只经过依次,任意两个城市之间通过有费用,问最终回到出发城市的最小费用。
????????????????
????????????????,避免绕环
????????????????
????????????????
?????????指只进入一次,即的入度为1
?????????指从只出去一次,即的出度为1
? ? ? ? 有个互斥的不等式约束,每次满足一个即可。
????????????????
? ? ? ? 将不等式都化为同类型,则
????????????????
?????????????????或?
????????????????
? ? ? ? ?有个等式和个双端不等式,将个等式放在个双端不等式中
????????????????
????????????
?????????单端不等式可以转为双端不等式
????????????????
????????????????
? ? ? ? ? ? ? ? ? ?
? ? ? ? ?工厂生产产品有种方式,问生产一批产品所用的最小成本。
? ? ? ? ?定义:
? ? ? ???????????表示采用第种方式生产的产品个数
????????????????表示采用第种方式生产每件产品的变动成本(即额外成本)
????????????????表示采用第种方式生产的固定成本(即必需成本)
? ? ? ? 则每种生产方式对应的成本为
????????????????
? ? ? ? 分段函数,有两个互相排斥的约束,用01决策转化,则
????????????????
????????????????
????????
????????????????
????????10个站点,在站点上建立网点进行网络覆盖 。一个网点可以覆盖到与它距离小于等于10的站点,且一个网点最多只能覆盖5个站点。问如何建立最少的网点实现全覆盖。
????????数据如下
竖着为一个站点坐标
9.4888 8.7928 11.5960 11.5643 5.6756 9.8497 9.1756 13.1385 15.4663 15.5464
5.6817 10.3868 3.9294 4.4325 9.9658 17.6632 6.1517 11.8569 8.8721 15.5868
????????
clc,clear,close all
c=load("data1.txt");
d=dist(c);
disp(d);
prob=optimproblem();
y=optimvar("y",10,10,"Type","integer","LowerBound",0,"UpperBound",1);
prob.Objective=sum(diag(y));
prob.Constraints.con1=sum(y,1)>=1;
prob.Constraints.con2=sum(y,2)<=5;
con3=[];con4=[];con5=[];
for i=1:10
for j=1:10
con3=[con3;d(i,j)*y(i,j)<=10];
con4=[con4;y(i,i)>=y(i,j)];
end
end
prob.Constraints.con3=con3;
prob.Constraints.con4=con4;
[s,v]=solve(prob);
disp(s.y);
disp(v);
?可满足的方案有多种,但最小网点数为2
????????