package com.ruoyi.platform.domain;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

@Data
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@ApiModel(description = "自动超参数寻优")
public class Ray {
    private Long id;

    @ApiModelProperty(value = "实验名称")
    private String name;

    @ApiModelProperty(value = "实验描述")
    private String description;

    @ApiModelProperty(value = "数据集")
    private String dataset;

    @ApiModelProperty(value = "数据集挂载路径")
    private String model;

    @ApiModelProperty(value = "代码配置")
    private String codeConfig;

    @ApiModelProperty(value = "镜像")
    private String image;

    @ApiModelProperty(value = "主函数代码文件")
    private String mainPy;

    @ApiModelProperty(value = "总实验次数")
    private Integer numSamples;

    @ApiModelProperty(value = "参数")
    private String parameters;

    @ApiModelProperty(value = "手动指定需要运行的参数")
    private String pointsToEvaluate;

    @ApiModelProperty(value = "保存路径")
    private String storagePath;

    @ApiModelProperty(value = "搜索算法")
    private String searchAlg;

    @ApiModelProperty(value = "调度算法")
    private String scheduler;

    @ApiModelProperty(value = "指标")
    private String metric;

    @ApiModelProperty(value = "指标最大化或最小化，min or max")
    private String mode;

    @ApiModelProperty(value = "搜索算法为ASHA，HyperBand时传入，每次试验的最大时间单位。测试将在max_t时间单位后停止。")
    private Integer maxT;

    @ApiModelProperty(value = "搜索算法为MedianStopping时传入，计算中位数的最小试验数。")
    private Integer minSamplesRequired;

    private String resource;

    private Integer computingResourceId;

    private Integer state;

    private String createBy;

    private String updateBy;

    private Date createTime;

    private Date updateTime;

    @ApiModelProperty(value = "状态列表")
    private String statusList;
}
