云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 最优化实例和matlab源程序

最优化实例和matlab源程序

  • 62 次阅读
  • 3 次下载
  • 2025/7/4 2:10:59

实用标准文档

最优化平时作业

一、目标规划

1、题目:见书中例题P110例4 2、解题方法:利用Lingo求解 3、具体步骤

(1).对应于第一优先等级,建立线性规划问题: model: min=-d1;

5*x1+10*x2<=60;

x1-2*x2+d1_-d1=0; end

运行结果: -d1=0

(2)对应于第二优先等级,将-d1=0作为约束条件,建立线性规划问题: min=d2_;

5*x1+10*x2<=60; x1-2*x2+d1_-d1=0; 4*x1+4*x2+d2_-d2=36; -d1=0; end

运行结果:d2=0;

(3).对应于第三优先等级,将-d1=0, -d1=0作为约束条件,建立线性规划问题: min=d3_;

5*x1+10*x2<=60; x1-2*x2+d1_-d1=0; 4*x1+4*x2+d2_-d2=36; 6x1+8*x2+d3_-d3=48; -d1=0; d2=0; end

运行结果: d3=0;

X1 4.800000 X2 2.400000

二、动态规划之0-1背包问题

1、题目:给定n种物品和一背包。物品i的重量是Wi,其价值为Vi,背包的容量是c,问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大。 2、解题方法与思路:利用java求解,.思想方法是回溯思想 3、需求分析

对于给定n种物品和一背包。在容量最大值固定的情况下,要求装入的物品价值最大化 4、java源程序及运行结果 BackTrace.java

文案大全

实用标准文档

* To change this template, choose Tools | Template Manager * and open the template in the editor. */

package sunfa;

import java.util.Date;

public class BackTrace {

/**

* @param args */

public static void main(String[] args) { double w[]={2,2,6,5,4}; double v[]={6,3,5,4,6}; int n=5; double c=10; knapsack(v,w,c);

System.out.println(bestp); }

//比较两个元素大小的类

private static class Element implements Comparable{ int id; double d;

private Element(int idd,double dd){ id=idd; d=dd; }

public int compareTo(Object x){ double xd=((Element)x).d; if(d

public boolean equals(Object x){ return d==((Element)x).d; } }

static double c; //背包容量 static int n;//物品数

static double[]w;//物品重量数组

文案大全

实用标准文档

static double[]p; //物品价值数组 static double cw;//当前重量 static double cp;//当前价值

static double bestp; //当前最优值 static int [] x;//解

static int [] sortX;//排好序之后的解 static int [] bestX;//最有解

static Date date = null; // @jve:decl-index=0:

public static double knapsack(double[]pp,double[]ww,double cc){

c=cc;

n=pp.length-1; cw=0.0; cp=0.0; bestp=0.0;

Element[]q=new Element[n]; //q为单位重量价值数组 for(int i=1;i<=n;i++)

q[i-1]=new Element(i,pp[i]/ww[i]);

MergeSort.mergeSort(q);

p=new double[n+1]; w=new double[n+1]; x=new int[n+1]; sortX=new int[n+1]; bestX=new int[n+1]; for(int i=1;i<=n;i++){ p[i]=pp[q[n-i].id]; w[i]=ww[q[n-i].id]; sortX[i]=q[n-i].id; }

backtrack(1);//回溯搜索

return bestp; }

private static void backtrack(int i){ if(i>=n){

if(cp>bestp){ bestp=cp;

文案大全

实用标准文档

for(int j=1;j<=n;j++){ bestX[j]=x[j]; } }

return; }

//搜索子树 if(cw+w[i]<=c){

//进入左子树 x[sortX[i]]=1; cw+=w[i]; cp+=p[i];

backtrack(i+1); cw-=w[i]; cp-=p[i]; }

if(bound(i+1)>bestp) x[sortX[i]]=0;

backtrack(i+1);//进入右子树 }

//计算上界

private static double bound(int i){ double cleft=c-cw; double bound=cp;

//以物品重量价值递减顺序装入物品 while(i<=n&&w[i]<=cleft){ cleft-=w[i]; bound+=p[i];i++; }

//装满背包 if(i<=n)

bound+=p[i]/w[i]*cleft; return bound; }

public static String getX(){

String solution=String.valueOf(bestX[1]); for(int i=2;i

solution+=String.valueOf(bestX[i]); }

return solution; }

public static double getBestValue(){

文案大全

搜索更多关于: 最优化实例和matlab源程序 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

实用标准文档 最优化平时作业 一、目标规划 1、题目:见书中例题P110例4 2、解题方法:利用Lingo求解 3、具体步骤 (1).对应于第一优先等级,建立线性规划问题: model: min=-d1; 5*x1+10*x2<=60; x1-2*x2+d1_-d1=0; end 运行结果: -d1=0 (2)对应于第二优先等级,将-d1=0作为约束条件,建立线性规划问题: min=d2_; 5*x1+10*x2<=60; x1-2*x2+d1_-d1=0; 4*x1+4*x2+d2_-d2=36; -d1=0; end 运行结果:d2=0; (3).对应于

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com