资源

农场规划(mpex08)

/***************************************************************//*                                                             *//*S A S S A M P L E L I B R A R Y*//*                                                             *//*名称:mpex08*//*标题:农场规划(mpex08)*//*产品:或*//*系统:所有*//*程序:OPTMODEL*//*数据:*//*                                                             *//*支持:更新:*//*参考:*//*MISC:数学程序设计中的示例08*//*示例手册*//*                                                             *//***************************************************************/数据cow_data;do年龄=0至11岁;init_num_cows=10;如果年龄<2岁,则进行;acres_needed=2/3;年损失=0.05;公牛产量=0;母牛产量=0;milk_resentation=0;grain_req=0;sugar_beet_req=0;labour_req=10;other_costs=50;结束;否则;acres_needed=1;年度损失=0.02;牛市收益率=1.1/2;母牛产量=1.1/2;地点=370;grain_req=0.6;sugar_beet_req=0.7;劳动力_req=42;其他成本=100;结束;产出;结束;运行;数据粒度数据;输入组$英亩产量;数据线;第1组20 1.1第2组30 0.9第3组20 0.8第4组10 0.65;%设num_years=5;%设num_a英亩=200;%设bullock_rescence=30;%让heifer_rescence=40;%让dairy_cow_selling_age=12;%让dairy_cow_selling_rescence=120;%设max_num_cows=130;%设sugar_beet_yield=1.5;%设grain_cost=90;%让grain_revenue=75;%设grain_labour_req=4;%设grain_other_costs=15;%设sugar_beet_cost=70;%设sugar_beet_revenue=58;%设sugar_beet_labour_req=14;%设sugar_beet_other_costs=10;%设nominal_labour_cost=4000;%设nominal_labour_hours=5500;%设excess_labour_cost=1.2;%设capital_outlay_unit=200;%设num_loan_years=10;%设年利息率=0.15;%设max_deecrease_ratio=0.50;%设max_increase_ratio=0.75;过程操作模型;设置AGES;num init_num_cows{AGES};num acres_needed{AGES};num年损失{AGES};num公牛产量{AGES};数头母牛产量{AGES};num milk_rescence{AGES};num grain_req{AGES};num sugar_beet_req{AGES};数量cow_labour_req{AGES};num cow_other_costs{AGES};将数据cow_data读入AGES=[age]init_num_cows acres_need annual_loss bullock_yield heifermilk_reference grain_req sugar_beet_req cow_labour_req=劳动力_reqcow_other_costs=其他成本;num num_years=&num_years;设置YEARS=1..num_YEARS;设置YEARS0={0}联合YEARS;var NumCows{AGES联合{&dairy_cow_selling_age},YEARS0}>=0;对于{AGES中的年龄},修复NumCows[age,0]=init_num_cows[age];修复NumCows[&dairy_cow_selling_age,0]=0;var NumBullocksSeld{YEARS}>=0;var NumHeifersSeld{YEARS}>=0;设置<str>GROUPS;num英亩(组);num grain_yield{GROUPS};var GrainAcres{组,年}>=0;将数据grain_data读入GROUPS=[group]{年份}<GrainAcres[group,year].ub=英亩>grain_yield=产量;var GrainBought{YEARS}>=0;var GrainSold{YEARS}>=0;var甜菜英亩{年}>=0;var SugarBeetBought{YEARS}>=0;var SugarBeetSold{YEARS}>=0;var NumExcessLabourHours{YEARS}>=0;var资本支出{年}>=0;num年_贷款_付款=-财务('pmt',&annual_interest_rate,&num_loan_years,&资本输出单位);打印年度贷款付款;impvar收入{年}=&bullock_resentation*售出的bullocks数量[年]+&heifer_respection*小母牛销售量[年]+&dairy_cow_selling_residence*奶牛数量[&dairy _cow_silling_age,year]+总和{AGES中的年龄}milk_rescence[年龄]*NumCows[年龄,年份]+&grain_revenue*粮食售出[年]+&sugar_beet_revention*甜菜已售出[年];impvar成本{以年为单位}=&grain_cost*购买粮食[年]+&sugar_beet_cost*购买的甜菜[年]+&名义劳动力成本+&excess_labour_cost*超出工时数[年]+总和{AGES中的年龄}cow_other_costs[age]*NumCows[age,year]+sum{GROUPS}中的组&grain_other_costs*GrainAcres[group,year]+&sugar_beet_other_costs*甜菜英亩[年]+sum{y in YEARS:y<=year}yearly_loan_payment*资本支出[y];impvar利润{year in YEARS}=收入[年]-成本[年];最大总利润=总和{YEARS in YEARS}(利润[年]-年_贷款_付款*(num_years-1+年)*资本支出[年]);con Num_acres_con{年份}:总和{AGES中的年龄}acres_needed[age]*NumCows[age,year]+sum{组中的组}GrainAcres[group,year]+甜菜英亩[年]<=&num_a英亩;con Aging{AGES diff中的年龄{&dairy_cow_selling_age},YEARS0中的年份diff{num_years}}:NumCows[age+1,year+1]=(1-年度损失[age])*NumCows[age,year];con NumBullocksFold_def{年份}:牛市售出数量[年]=总和{年龄(AGES)}公牛产量[年龄]*奶牛数量[年龄,年];con NumHeifersFold_def{年份}:数字奶牛[0,year]=总和{AGES中的年龄}小母牛产量[age]*NumCows[age,year]-小母牛数量【年份】;con Max_num_cows_def{年份}:sum{age in AGES}奶牛数量[年龄,年份]<=&max_num_cows+年总和{y:y<=year}资本支出[y];impvar GrainGrown{group in GROUPS,year in YEARS}(impvar谷物生长{组中的组,年份中的年份})=grain_yield[组]*GrainAcres[组,年];con Grain_req_def{年份}:sum{AGES中的年龄}grain_req[age]*NumCows[age,year]<=总和{组中的组}谷物生长[group,year]+购买粮食[年]-出售粮食[年];impvar甜菜生长{年份}=&sugar_beet_yield*甜菜英亩数[年];con Sugar_beet_req_def{年份}:sum{AGES中的年龄}sugar_beet_req[age]*NumCows[age,year]<=【年份】生长的甜菜+【年份】购买的甜菜-【年份】出售的甜菜;con Labour_req_def{年份}:sum{AGES中的年龄}cow_labour_req[age]*NumCows[age,year]+sum{GROUPS}中的组&grain_labour_req*GrainAcres[group,year]+&sugar_beet_labour_req*甜菜英亩[年]<=&nominal_labour_hours+NumExcessLabourHours[年];con现金流{年}:利润[年]>=0;con Final_dairy_cow范围:1-最大增加比率(&M)<=(总和{AGES中的年龄:年龄>=2}奶牛数量[age,num_years])/(总和{AGES中的年龄:年龄>=2}init_num_cows[age])<=1+&max_increase_ratio;解决;打印NumCows NumBullocks小母牛旧资本支出超额劳动小时数收入成本利润;打印GrainAcres;打印GrainGrown;打印粮食购买粮食出售甜菜英亩甜菜生长甜菜购买甜菜销售;打印Num_acres_con.body最大Num_cows_def.body Final_dairy_cows_range.body;从[age]=AGES创建数据sol_data1{年份}<col('NumCows_year'||year)=NumCows[age,year].sol>;从[group year]GrainAcres GrainGrown创建数据sol_data2;从[year]创建数据sol_data3牛群数量小母牛数量小资本支出超出工时数收入成本利润谷物购买谷物出售甜菜亩甜菜种甜菜买甜菜卖甜菜;退出;