3.29 作业

package com.qiku.yrc.work22;

import java.io.Serializable;
import java.util.Objects;

/**
 * 1、定义学生类Student ,属性:姓名,学号,年龄,成绩
 * 提供:无参和全参构造器,生成get和set方法,重写toString ,equals ,hashCode
 *
 * 使用全参构造器创建3个学生对象,放入集合中
 *
 * 使用对象流将这个学生集合写入到本地
 *
 * 使用对象流从本地文件把学生信息读出来,并打印
 */

public class Student implements  Serializable {
    private String name;
    private int studentNum;
    private int age;
    private int score;

    public Student() {
    }



    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", studentNum=" + studentNum +
                ", age=" + age +
                ", score=" + score +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return studentNum == student.studentNum && age == student.age && score == student.score && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, studentNum, age, score);
    }

    public Student(String name, int studentNum, int age, int score) {
        this.name = name;
        this.studentNum = studentNum;
        this.age = age;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getStudentNum() {
        return studentNum;
    }

    public void setStudentNum(int studentNum) {
        this.studentNum = studentNum;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}
package com.qiku.yrc.work22;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class StudentOutPutStreamTest {
    public static void main(String[] args) throws Exception {
        Student s1=new Student("张三",2222,19,88);
        Student s2=new Student("张四",2223,12,89);
        Student s3=new Student("杨六",2228,39,98);
        List<Student> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        list.add(s3);
        System.out.println(list);
        FileOutputStream fos = new FileOutputStream("student.list");
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        oos.writeObject(list);
        oos.close();

    }
}
package com.qiku.yrc.work22;


import java.io.FileInputStream;

import java.io.ObjectInputStream;
import java.util.List;

public class StudentInputStreamTest {
    public static void main(String[] args) throws Exception {
       FileInputStream fis= new FileInputStream("student.list");
       ObjectInputStream ois=new ObjectInputStream(fis);

        Object o = ois.readObject();
        if (o instanceof  List){
            List list= (List) o;
            System.out.println(list);
        }
        ois.close();
    }

}
package com.qiku.yrc.work22;

public class MyThread extends  Thread{
    public MyThread() {
    }

    public MyThread(String name) {
        super(name);
    }

    /**
     * 2、分别使用继承,实现接口,匿名内部类的方式创建线程,并启动
     * 自己定义线程的run方法,并体会线程的执行过程
     */



    @Override
    public void run() {
        super.run();
        for (int i = 0; i < 66; i++) {
            System.out.println(this.getName()+":"+i);
        }
    }
}
class MyThreadTest{
    public MyThreadTest() {
    }


    public static void main(String[] args) {
        MyThread mt=new MyThread();//若都是 有参构造器 则start仅执行一次??????
        mt.start();
        MyThread mt2=new MyThread("md2");
        mt2.start();

        //创建该类的对象作为实参来构造    Thread类型的 对象
        //然后使用  Thread 调用start方法
        MyThreadTest mt01 = new MyThreadTest();

    }



}

package com.qiku.yrc.work22;

public class ThreadW2 implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i < 78; i++) {
            System.out.println(i);
        }
    }
    //自定义类 实现 Runnable 接口 重写run方法
}
class  ThreadW2Test{
    public static void main(String[] args) {

        //创建该类的对象作为实参来构造    Thread类型的 对象
        //然后使用  Thread 调用start方法
    ThreadW2 t1 = new ThreadW2();
    Thread t11= new Thread(t1,"lalal");

    ThreadW2 t2 = new ThreadW2();
    Thread t22= new Thread(t2,"lalalda ");
    t11.start();
    t22.start();

        System.out.println(t11.getName());
        System.out.println(t22.getName());

}}

package com.qiku.yrc.day22;

public class ThreadW3 {
    public static void main(String[] args) {
        //使用匿名内部类的方式来创建和启动线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    System.out.println(i);
                    Thread.currentThread().getName();

                }
            }
        }).start();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个典型的渔业资源管理问题,可以采用动态系统模型来求解。下面是一个简化的数学模型: 设$t$为年份,$n_1(t),n_2(t),n_3(t),n_4(t)$分别为1龄、2龄、3龄和4龄鱼的数量(单位为亿条),$H(t)$为产卵量(单位为万个),$F_3(t),F_4(t)$分别为对3龄和4龄鱼的捕捞强度系数,$r=0.8$为自然死亡率,$k=1.22\times 10^{11}$为1龄鱼的成活率系数。 则可以列出如下的动态系统方程组: $$ \begin{aligned} \frac{dn_1}{dt}&=k\frac{H(t-1)}{1+kH(t-1)}n_4(t-1)-r n_1(t)\\ \frac{dn_2}{dt}&=k\frac{H(t-1)}{1+kH(t-1)}n_3(t-1)-r n_2(t)\\ \frac{dn_3}{dt}&=k\frac{H(t-1)}{1+kH(t-1)}\frac{1}{2}n_4(t-1)-r n_3(t)-F_3(t)n_3(t)\\ \frac{dn_4}{dt}&=k\frac{H(t-1)}{1+kH(t-1)}n_4(t-1)-r n_4(t)-F_4(t)n_4(t)\\ H(t)&=\begin{cases} 0&\text{if }\mathrm{mod}(t,12)\in\{1,2,3,4\}\\ 1.109\times 10^5n_4(t-1)&\text{if }\mathrm{mod}(t,12)\in\{9,10,11,12\} \end{cases} \end{aligned} $$ 其,$\mathrm{mod}(t,12)$表示$t$除以12的余数,即$t$所在的月份。 初始条件为$n_1(0)=122,n_2(0)=29.7,n_3(0)=10.1,n_4(0)=3.29$。 为了求解最优策略,需要定义一个目标函数,比如总收获量的期望值。假设每年的捕捞收益为捕捞强度系数与对应年龄组鱼群数量的乘积之和,即: $$ \text{捕捞收益}=F_3(t)n_3(t)+F_4(t)n_4(t) $$ 则总收获量的期望值为: $$ \begin{aligned} E(\text{总收获量})&=\sum_{t=1}^5\text{捕捞收益}\times \text{成活率}\\ &=\sum_{t=1}^5(F_3(t)n_3(t)+F_4(t)n_4(t))\times \frac{k}{k+n_1(t-1)} \end{aligned} $$ 其,$n_1(t-1)$为上一年1龄鱼的数量,成活率的分母表示1龄鱼所产生的竞争压力。 最优策略的求解可以采用动态规划或者遗传算法等方法。这里我们采用遗传算法来进行求解,具体步骤如下: 1. 定义个体编码:我们将捕捞强度系数作为个体的基因,每个个体由5个基因组成,分别代表5年的捕捞强度系数。 2. 定义适应度函数:我们将总收获量的期望值作为适应度函数,目标是使适应度函数最大化。 3. 初始化种群:随机生成一定数量的个体,作为初始种群。 4. 进化过程:采用标准的遗传算法,包括选择、交叉和变异等操作,进行迭代优化。具体地,我们采用轮盘赌选择算法、单点交叉算法和高斯变异算法,设置合适的参数进行优化。 5. 输出结果:最终输出的个体即为最优策略,对应的捕捞强度系数即为每年的最大收获量。 需要注意的是,在实际应用还需要考虑一些实际因素,比如资源保护、经济效益、社会影响等。因此,上述模型仅为一个初步的参考,具体应用时需要结合实际情况进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值