资源

市场份额(mpex13)

/***************************************************************//*                                                             *//*S A S S A M P L E L I B R A R Y*//*                                                             *//*名称:mpex13*//*标题:市场份额(mpex13)*//*产品:或*//*系统:所有*//*程序:OPTMODEL*//*数据:*//*                                                             *//*支持:更新:*//*参考:*//*MISC:数学编程示例13*//*示例手册*//*                                                             *//***************************************************************/数据零售商数据;输入地区石油输送酒精增长$;数据线;1 9 11 34安1 13 47 411安1144482安1 17 25 157 B118 10 5安119 26 183安1 23 26 14 B1 21 54 215 B2 9 18 102 B2 11 51 21安2 17 20 54 B2 18 105 0 B2 18 7 6 B2 17 16 96 B2 22 34 118安2 24 100 112亿2 36 50 535磅2 43 21 8亿3 6 11 53亿3 15 19 28安3 15 14 69亿3 25 10 65亿3 39 11 27亿;数据划分数据;输入目标;数据线;0.400.60;%设公差=0.05;过程操作模型;设置零售商;num区域{RETAILERS};num油{零售商};num交付{零售商};num精神{零售商};str增长{零售商};将数据retailer_data读取到RETAILERS=[_N_]区域石油输送精神成长;设置REGIONS init{};设置RETAILERS_region{REGIONS}初始化{};数量r;设置<str>GROUPS初始化{};设置RETAILERS_group{GROUPS}初始化{};字符串;为{RETAILERS}中的零售商做;r=地区[零售商];REGIONS=REGIONS联合{r};RETAILERS_region[r]=RETAILES_region[r]联盟{零售商};g=增长[零售商];GROUPS=群联合{g};RETAILERS_group[g]=RETAILES_group[g]联盟{零售商};结束;设置DIVISIONS;num目标{DIVISIONS};将数据division_data读入DIVISIONS=[_N_]目标;num容差=&tolerance;var分配{RETAILERS,DIVISIONS}二进制;con Assign_con{零售商中的零售商}:sum{division in DIVISIONS}分配[retailer,division]=1;set CATEGORIES={'交货','精神'}联合(区域中的{reg}“油”||reg集合)union(组中{group的集合}“增长”||group);var市场共享{类别,分区};var剩余{类别,分区}>=0<=公差;var松弛{类别,分区}>=0<=公差;最小目标1=sum{CATEGORIES中的category,DIVISIONS}中的division(剩余[类别,划分]+松弛[类别,分割]);con Delivery_con{划分}:市场份额[“配送”,部门]=(总额{零售商}交货[零售商]*分配[零售商、部门])/(总额{零售商}交货[零售商]);con Spirit_con{划分}:市场份额[“精神”,部门]=(总和{零售商中的零售商}精神[零售商]*分配[零售商、部门])/(总和{零售商}精神[零售商]中的零售商);con Oil_con{reg in REGIONS,division in DIVISIONS}(地区中的con Oil con{reg,部门中的部门):市场共享['oil'||reg,division]=(总和{RETAILERS_region[reg]}中的零售商油[零售商]*分配[零售商,部门])/(总额{RETAILERS_region[reg]}油[零售商]中的零售商);con Growth_con{GROUPS中的group,DIVISIONS}中的division:市场份额['growth'||集团,部门]=(总和{RETAILERS_group[group]}中的零售商分配[retailer,division])/卡(RETAILERS_group[组]);con Abs_dev_con{CATEGORIES中的category,DIVISIONS中的division}:市场份额[类别、部门]-盈余[类别,划分]+松弛[类别,分割]=目标[部门];num sum_abs_dev数=sum{CATEGORIES中的category,DIVISIONS}中的divisionabs(MarketShare[category,division].sol-目标[division]);最大数量_磅_秒=max{CATEGORIES中的category,DIVISIONS}中的divisionabs(MarketShare[category,division].sol-目标[division]);求解obj Objective1;打印sum_abs_dev max_abs_dev;打印分配;打印MarketShare剩余松弛;var最小值>=0 init max_abs_dev;最小目标2=最小最大值;con MinMax_con{CATEGORIES中的category,DIVISIONS}中的division:最小最大值>=剩余[类别,划分]+松弛[类别,分割];用MILP/primalin求解obj Objective2;打印sum_abs_dev max_abs_dev;打印分配;打印MarketShare剩余松弛;退出;